Custom asic combining VoIP and security IP

Abstract
A custom Application-Specific Integrated Circuit (“ASIC”) that simultaneously processes data packets and multimedia packets, including Voice over Internet Protocol (“VoIP”) packets, that are transmitted by a plurality of clients connected to a central server over a network, such as the Internet, and that are also transmitted by the central server to the plurality of servers. The custom ASIC may be configured to restrict the receipt of both the multimedia and the data packets to selected, predetermined clients connected to the central server and prevent the receipt of such packets by non-authorized clients. A method of processing data packets and multimedia packets, including VoIP packets, and a system utilizing the custom ASIC are also provided.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

The invention can be better understood with reference to the following figures. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. In the figures, like reference numerals designate corresponding parts throughout the different views.



FIG. 1 shows a block diagram illustrating the basic network elements of a conventional MMP gaming system.



FIG. 2 shows a block diagram illustrating the basic network elements of an example implementation of an MMP gaming system that includes a custom ASIC that provides VoIP capability to the gaming system, together with IP security for voice communications.



FIG. 3 shows a block diagram illustrating an example implementation of a custom ASIC combining VoIP and IP security.



FIG. 4 shows a flowchart illustrating an example of a method for integrating VoIP capability into an online gaming system using a custom ASIC that is used in a user's device, such as a PC, workstation or game console, that gives the user access to a network.





DETAILED DESCRIPTION

In the following description of various alternative implementations, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration a specific implementation in which the invention may be practiced. It is to be understood that other implementations may be utilized and structural changes may be made without departing from the spirit and scope of this invention.


The invention is described with reference to various functional block diagrams, which illustrate possible applications of and embodiments of the invention from a functional perspective. These functional block diagrams should not be interpreted to imply or otherwise require a particular physical architecture in accordance with the partitioning of the functionality depicted therein. Instead, it will be appreciated by one of ordinary skill in the art that various alternative physical architectures (whether hardware, software or a combination thereof) may be used to implement the described functionality. For example, the invention may be implemented using various hardware and software components, including, for example, using a semiconductor integrated circuit (e.g., a chip) or a combination of semiconductor integrated circuits (e.g., a chipset or multi-chip module), or in associated circuitry, or in the software, firmware, protocol stacks, libraries, algorithms or other processes operating thereon (or in any configuration of one or more of the foregoing). The chip or chipset implementation may include an integrated circuit, including, for example, any of the following alone or in combination: an application specific integrated circuit (“ASIC”), a digital signal processor (“DSP”), or another general-purpose or specific-purpose processor, and associated circuitry (e.g., memory, co-processors, busses, etc.).


In general, a custom Application-Specific Integrated Circuit (“ASIC”) for embedding VoIP packets into streaming data packets for transmission to a central server hosting an MMP game application utilized in a VoIP/gaming system is disclosed. The custom ASIC may be also configured to receive VoIP packets embedded with streaming data packets from the central server and to filter the VoIP packets so that only certain predetermined users are able to receive and hear voice communications from the other players. As an example implementation, the custom ASIC may be embedded in a video gaming card used in a PC or may be a separate component used in a PC or a game console. In another example implementation, the custom ASIC may be a component in a configurable System-On-a-Chip (“SoC”) platform, such as a set-top box (“STB”), a device configured to process concurrent streams of audio and video data associated with broadband multimedia services, as well as network packets processed in support of high-speed Internet access.


As an example of the processes that may be performed by the custom ASIC, it may include an integrator module that acts as an interface and receives both data and voice packets from a user and integrates these streams for transmission to a central server. The custom ASIC may also include a routing module that acts as an interface to the central server and receives voice packets embedded into a stream of data packets from the central server over an Internet connection, another module that determines the type of packet received, and if a voice packet is found, then determines through a unique identifier code if the voice packet is intended for its user, and either accepts or rejects the voice packets responsive to this determination. The custom ASIC may also contain an outgoing module that encodes voice packets for transmission to the central server with a unique identifier, as well as ranking the priority of the various packets and scheduling their transmission according to certain predetermined priorities.


In FIG. 2, a block diagram illustrating the basic network elements of a MMP gaming system that includes VoIP capability integrated into the gaming system, is shown. As in FIG. 1, 3 players or “gamers” are online and playing on MMP gaming system 200. The workstations 102, 104, and 106 of the 3 players connect to the Internet 120 via links 112, 114, and 116, respectively. From the Internet 120, a connection 124 is made to the central gaming server 122. The central gaming server 122 may be in signal communication via bus 130 with a game history server 126 that may store game histories from all games presently being hosted by the central gaming server 122. The clients 102, 104, and 106 communicate only with the central gaming server 122 and the central gaming server 122 executes client actions and notifies other clients accordingly.


In MMP gaming system 200, a VoIP capability is integrated into the gaming system. IP telephony may be implemented in several ways. In one such configuration, the Internet connection, link 112, is to broadband router 202, and from the broadband router 202, there are connections to the workstation 102 and an IP telephone 204, which will act and perform like a regular PSTN phone. In an alternative configuration, using a so-called “softphone,” software may be downloaded into workstations 104 and 106 that may, for example, have an interface that includes a telephone keypad displayed on the monitor. Rather than an IP telephone, the user may speak into and listen over a computer headset with a microphone 206 and 208.


In an example of operation of MMP gaming system 200, the users of workstations 102 and 106 may be on the same team. Therefore, these 2 users will be able to communicate over the MMP gaming system 200 with each other, without the user of workstation 104 being able to hear their communications. Conversely, the user of workstation 104 may be a member of a competing team with other users (not shown) and the voice communications between these team members will also be secure and not accessible to non-members.


In FIG. 3, a block diagram illustrating an example of an implementation of a custom ASIC 300 combining streaming data and streaming VoIP, together with IP security for the streaming VoIP, for use in an online gaming environment is shown. In general, the custom ASIC combining VoIP and IP security (“ASIC-VoIP”) 300 processes streaming data packets together with VoIP packets for use in the online gaming environment. In FIG. 3, ASIC-VoIP 300 is in signal communication with the user who may be participating in an MMP online game, through communication links 302 and 304. In general, the data packets generated by the user's internet device (e.g., a PC or a game console) and VoIP packets are received at the ASIC-VoIP 300, processed and then transmitted to a central server (not shown) via communication link 326.


Whenever the user interacts with game, e.g., inputs responses through a mouse or a game console, packets of data (streams) pass over communication link 302 to integrator module 304 of the ASIC-VoIP 300, which acts as an interface to the user. At the same time, the user may also communicate with a team member over a headset while playing the game, in which case VoIP packets also pass over communication link 304 to integrator module 306.


Thus, in general the integrator module 306 is configured to enable the ASIC-VoIP 300 to receive packets of data (streams) that may originate from various multimedia and data sources, including IP telephony. From the integrator module 306, the data packets and the VoIP packets are transmitted to the encoding/decoding module 310 via communication link 308. The encoding/decoding module 310 may be configured to encode the packets with identifiers that differentiate each packet from the others based on predetermined criteria. As an example of operation, the encoding/decoding module 310 may attach an identifier, such as the IP address of the user's IP telephone, to any VoIP packets being transmitted through the encoding/decoding module 310. Thus when the VoIP packet arrives at the central server (not shown), the central server, which may be configured to identify the user sending the VoIP packet using stored data, may then determine the other users authorized to receive the VoIP packet and in turn transmit the VoIP packet to the appropriate user.


Additionally, there may be levels of communication between team members. That is, each team may be further subdivided into two or more levels where the receipt of messages are further restricted within levels of the team, which may be configured through the entry of parameters into the key module 314. It is also appreciated by those skilled in the art that the restriction of the transmission of data packets may also be implemented by attaching keys or codes to headers on the packets, based on criteria input into the ASIC-VoIP 300 that may be stored in either the key module 314 or the optional log module 318.


The ASIC-VoIP 300 may also contain an optional outgoing/routing module 324 that receives data and VoIP packets via connection link 320 and transmits the data and VoIP packets to the central server (not shown) via connection link 326. As an alternative to the central server receiving and routing VoIP packets, the outgoing/routing module 324 may generate additional VoIP packets using data prestored in the key module 314. As an example of operation, the key module 314, which may be in signal communication with the encoding/decoding module 310 via communication link 312, may contain unique identifiers that apply to the user's other team members and a separate VoIP packet may be generated for each such member. The outgoing/routing module 324 may also be configured so that while all data packets must go directly to the central server for processing, with the proper responses being returned to the appropriate users, VoIP packets may bypass the central server and be routed directly to each designated user. It will be appreciated by one of ordinary skill in the art that other functions may be performed by the outgoing/routing module 324, such as assigning priorities to packets, storing packets in cache, and re-sequencing the transmission of the packets.


Incoming packets from the central sever (not shown) may be received and transmitted as appropriate to the user's PC or game console, as the case may be, or to the user's IP phone. As noted above, the ASIC-VoIP 300 may be configured to classify and restrict the transmission of data and VoIP packets, in which case the incoming packets may be transmitted to the encoding/decoding module 310 for a determination of the ultimate source of the packets. In an example implementation, codes and identifiers may have been attached to the packets when they were transmitted to the ASIC-VoIP 300, in which case, incoming packets may be examined by the encoding/decoding module 310 to determine the type of packet, e.g., the intended recipient, the classification level of the data, etc. In other implementations, codes and identifiers may also have been inserted by the central server and may also be decoded by the encoding/decoding module 310. The ASIC-VoIP 300 may also contain an optional log module 318 in signal communication with the encoding/decoding module 310 via communication link 316. Log module 318 may store game histories, team member information, and any other data or information that may need to be saved and retrieved for later sessions.


In FIG. 4, a flowchart illustrating an example of a method for integrating VoIP capability into an online gaming system using a custom ASIC is shown. In an example implementation, an ASIC-VoIP may be embedded in a user's device, such as a PC, workstation or game console, that gives the user access to a network. The ASIC-VoIP may be a separate component or may be attached to a video or game card as an additional component on a chipset or a System-on-a-Chip (“SoC”). In general, each ASIC-VoIP may perform the same basic functions as described above, but each ASIC-VoIP may also be customized to interface with the available platforms used in online gaming, e.g., PCs with various operating systems, PlayStation2™, Xbox 360™, GameCube™, etc. Additionally, some of these basic functions may be implemented in modules that are present on the central server, thus reducing the number of transmissions made in the distributed system.


The example process 400 starts in step 402. In decision step 404, a check is made to see if there are any packets to be processed by the ASIC-VoIP 300, FIG. 3. If there are none, the process ends in step 430. Otherwise, in decision step 406, a determination is made as to whether the packet to be processed is an incoming or an outgoing packet.


In the case of an incoming packet from a central server, i.e., data or VoIP packets received by the Outgoing/Routing module 324 of ASIC-VoIP 300, FIG. 3, via communication link 326, its processing begins in step 416. In decision step 418, a determination is made as to whether the packet is a data packet or a VoIP packet. In the case of a VoIP packet, in decision step 420, a determination is made whether the IP address in the VoIP packet matches the IP address of the user of this particular ASIC-VoIP 300. If it does, the VoIP is the transmitted to the receiver of the user's IP telephone. Otherwise, the VoIP packet is bypassed and the process returns to decision step 404.


In the case of an outgoing packet to the central server, in decision step 408, a determination is again made as to whether the packet is a data packet or a VoIP packet. In the case of a VoIP packet, in step 412, the IP address of the user's IP telephone may be embedded, for example, in a header attached to the VoIP packet, together with the IP addresses of the user's team members taken from the Key module 314, FIG. 3, and in step 414, the VoIP packet may be transmitted to the user's IP telephone transmitter. In the case of a data packet, this packet may be transmitted directly to the central server to which the user is connected in step 410. In another example of an implementation, the VoIP packets may also be transmitted to the central server, which may then either broadcast or multicast these VoIP packets to the appropriate users. Thereafter, the process returns to step 404 to check for additional packets to be processed. When there are no further packets, the process ends at step 430.


While the foregoing description refers to the use of a custom ASIC in an online MMP gaming environment wherein VoIP capability is seamlessly integrated into an MMP online game, the subject matter is not limited to the use of the custom ASIC in the gaming environment only. Any online, real-time multiple-user distributed system that could benefit from the functionality provided by the custom ASIC described above may be implemented to include the custom ASIC to combine VoIP capability with any distributed system that may benefit from the added VoIP capability.


Persons skilled in the art will also understand and appreciate that one or more processes, sub-processes, or process steps described above may be performed by hardware and/or software. Additionally, the system may be implemented completely in software that would be executed within a microprocessor, a general purpose processor, a combination of processors, a digital signal processor (“DSP”), and/or one or more ASICs. If the process is performed by software, the software may reside in software memory in the controller. The software in software memory may include an ordered listing of executable instructions for implementing logical functions (i.e., “logic” that may be implemented either in digital form such as digital circuitry or source code or in analog form such as analog circuitry or an analog source such as an analog electrical, sound or video signal), and may selectively be embodied in any computer-readable (or signal-bearing) medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that may selectively fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” and/or “signal-bearing medium” is any means that may contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium may selectively be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples, but nonetheless a non-exhaustive list, of computer-readable media would include the following: an electrical connection (electronic) having one or more wires; a portable computer diskette (magnetic); a RAM (electronic); a read-only memory “ROM” (electronic); an erasable programmable read-only memory (EPROM or Flash memory) (electronic); an optical fiber (optical); and a portable compact disc read-only memory “CDROM” (optical). Note that the computer-readable medium may even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.


While various preferred and alternative embodiments of the present intention are described herein, it will be apparent to one of ordinary skill in the art after reading this description that there are various modifications and extensions of the above described technology that may be implemented using these teachings without departing from the spirit and scope of the present invention, the breadth and scope of which shall be defined by following claims.

Claims
  • 1. A custom Application-Specific Integrated Circuit (“ASIC”) configured to transmit and receive data and Voice over Internet Protocol (“VoIP”) packets over a network having a plurality of clients in signal communication with a central server utilizing network devices, the custom ASIC comprising: an integrator module in signal communication with an at least one network device connecting a client of the plurality of clients to the network, the integrator module configured to receive data packets and VoIP packets from the at least one network device;an encoding and decoding module in signal communication with the integrator module, where the encoding and decoding module is configured to encode the data packets and the VoIP packets received from the integrator module; andan outgoing and routing module in signal communication with the encoding and decoding module and the central server, where the outgoing and routing module is configured to transmit the encoded data and VoIP packets to the central server.
  • 2. The custom ASIC of claim 1, where: the outgoing and routing module is further configured to receive data packets and VoIP packets from the central server and to transmit the received data and VoIP packets to the encoding and decoding module; andthe encoding and decoding module is further configured to decode the data and the VoIP packets received from the integrator module, and to transmit the decoded data packets and the decoded VoIP packets responsive to the decoding.
  • 3. The custom ASIC of claim 2, where the at least one network device includes a game console or personal computer (“PC”) whereby the client is enabled to communicate with other clients over the network utilizing the data packets transmitted from the custom ASIC to the central server, and the data packets transmitted from the central server to the custom ASIC.
  • 4. The custom ASIC of claim 3, where the at least one network device further includes an Internet Protocol (“IP”) telephone in signal communication with the client whereby the client is enabled to communicate with other clients over the network utilizing the VoIP packets transmitted from the custom ASIC to the central server, and the VoIP packets transmitted from the central server to the custom ASIC.
  • 5. The custom ASIC of claim 4, where the IP telephone is configured to communicate with other IP telephones connected to the network utilizing VoIP packets transmitted from the custom ASIC to other custom ASICs connected to the network, and VoIP packets received from the other custom ASICs.
  • 6. The custom ASIC of claim 4, further including a key module in signal communication with the encoding and decoding module, where the key module is configured to store identifiers utilized by the encoding and decoding module in the encoding and decoding of the data packets and the VoIP packets.
  • 7. The custom ASIC of claim 6, where each of the identifiers stored in the key module is uniquely assigned to an IP telephone connected to the network, and each IP telephone is associated with at least one other identifier assigned to another IP telephone, whereby the associated identifiers designate IP telephones configured to receive VoIP packets from each other.
  • 8. The custom ASIC of claim 7, where the custom ASIC is configured to be programmed by the entry of the identifiers into the key module and the modification of identifiers stored in the key module, and to filter VoIP packets utilizing the identifiers stored in the key module.
  • 9. The custom ASIC of claim 6, where the identifiers stored in the key module are Internet Protocol (“IP”) addresses.
  • 10. The custom ASIC of claim 4, further including a log module in signal communication with the encoding and decoding module, where the log module is configured to store data that is capable of being retrieved and utilized by the encoding and decoding module in the encoding and decoding of the data packets and the VoIP packets.
  • 11. The custom ASIC of claim 3, where the game console is selected from a group consisting of a PlayStation2™, an Xbox 360™, and a GameCube™.
  • 12. A method of exchanging data packets and Voice over Internet Protocol (“VoIP”) packets in a client-server network, the method comprising the steps of: receiving data packets at a custom Application-Specific Integrated Circuit (“ASIC”) in signal communication with a network device connecting a client to the network;receiving VoIP packets at the custom ASIC from an Internet Protocol (“IP”) telephone in signal communication with the client;integrating the data packets and the VoIP packets into an outgoing data stream for transmission to a central server in the network;transmitting the outgoing data stream to the central server;receiving an incoming data stream from the central server at the custom ASIC, where the incoming date stream includes data packets and VoIP packets intended to be received by the network device and the IP telephone, respectively;decoding the incoming data packets and the incoming VoIP packets;transmitting the incoming data packets to the network device; andtransmitting the incoming VoIP packets to the IP telephone.
  • 13. The method of claim 12, further including the step of encoding the VoIP packets by inserting a transmitting identifier that uniquely identifies the client transmitting the VoIP packets.
  • 14. The method of claim 13, further including the steps of: predetermining an at least one other IP telephone designated to receive VoIP packets from the client transmitting the VoIP packets;assigning an identifier to each of the at least one other IP telephones;associating the identifiers assigned to the at least one other IP telephones with the transmitting identifier; andstoring the transmitting identifier and the associated identifiers in the custom ASIC.
  • 15. The method of claim 14, where the step of encoding the VoIP packets further includes inserting an at least one receiving identifier into the VoIP packets that uniquely identifies an at least one predetermined client designated to receive the VoIP packets.
  • 16. The method of claim 15, where the transmitting identifier and the at least one receiving identifier are Internet Protocol (“IP”) addresses.
  • 17. The method of claim 15, where the step of decoding the incoming VoIP packets includes comparing the transmitting identifier in each of the incoming VoIP packets with the associated identifiers stored in the custom ASIC.
  • 18. The method of claim 17, further including the step of blocking the incoming VoIP packet if the transmitting identifier does not match any of the associated identifiers stored in the custom ASIC.
  • 19. A client-server network system utilizing data and Voice over Internet Protocol (“VoIP”) communications by way of data and voice packets, respectively, the system comprising: a plurality of network devices, where each network device is in signal communication with a single custom Application-Specific Integrated Circuit (“ASIC”);a plurality of Internet Protocol (“IP”) telephones, where each IP telephone is in signal communication with the corresponding single custom ASIC; anda central server in signal communication over a network with each of the single custom ASICs, where each of the single custom ASICs is configured to receive data packets from the network device in signal communication with the custom ASIC and VoIP packets from the IP telephone in signal communication with the custom ASIC, and to transmit the received data packets and the received VoIP packets to the central server.
  • 20. The client-server network system of claim 19, where each of the single custom ASICs is further configured to transmit VoIP packets to other custom ASICs in the client-server network system, and to receive VoIP packets from other custom ASICs in the client-server network system.
  • 21. The client-server network system of claim 19, where each of the single custom ASICs is further configured to receive data packets and VoIP packets from the central server.
  • 22. The client-server network system of claim 21, where each of the single custom ASICs is further configured to encode VoIP packets with identifiers that identify the IP telephone transmitting the VoIP packets, and other identifiers that identify at least one other IP telephone connected to the network designated to receive the transmitted VoIP packets.
  • 23. The client-server network system of claim 22, where each of the single custom ASICs is further configured to decode VoIP packets received from the central server by matching identifiers in the received VoIP packets with identifiers stored in the single custom ASIC and to route the received VoIP packets responsive to the decoding.