The present invention relates generally to a system for reducing packet congestion for multiple devices that need to communicate over a network, such as the Internet. The subject matter of this application is related to my previously-filed U.S. application Ser. No. 10/697,103, now U.S. Pat. No. 7,339,923, entitled “Endpoint Packet Scheduling System,” filed on Oct. 31, 2003.
Ethernet and packet-switched Internet Protocol (IP) networks are systems for transmitting data between different points. These systems are known as “contention-based” systems. That is, all transmitters contend for network resources. All transmitters may transmit simultaneously. If they do, then network resources may be oversubscribed. When this happens, data may be delayed or lost, resulting in network impairment.
As shown in
When endpoint 101 sends packets destined for the WAN, the packets are sent through LAN switch 105, which also handles packets from other LAN endpoints. If too many packets are simultaneously transmitted by the other endpoints to LAN switch 105, LAN switch 105 may have a queue overflow, causing packets to be lost. Similarly, WAN router 106 may have a queue overflow, causing packets to be lost at that point.
The net result is that congestion due to contention among local transmitters causes data to be lost.
The word “packets” will be used to refer to datagrams in a LAN or Wide Area Network (WAN) environment. In a LAN environment, packets are sometimes called “frames.” In a packet-switched WAN environment, packet-switching devices are normally referred to as “routers.” In some systems, the LAN switching and WAN routing functions can be combined into a single device.
The invention provides a method for transmitting packets in a network by eliminating contention among local transmitters in the network. A device comprises a CPU and other components that accept input from various transmitting data sources. The device processes signals from the various transmitting sources and converts these signals to packets, before they are output via a LAN and/or WAN interface, thus avoiding contention on the LAN, since only one device produces the packets from many signal sources. This device may initiate and receive connections via the WAN and begin transmitting over the Ethernet to the WAN at agreed-upon rates, without contention.
Device 301 also includes a plurality of modules 303 through 312 that are coupled to a backplane bus 307. The backplane bus may comprise for example a 32-bit wide bus operating at 33 MHz. The modules coupled to the bus may include one or more of the following. A timing system 303 provides clock and interval signals to and from other modules as shown in more detail in
A parallel data card 304 accepts parallel data from one or more modules and presents the data to CPU 302 via backplane bus 307. Examples of parallel data include parallel ports on page printers, scientific instruments and memory loading and CPU emulation devices. Asynchronous data card 305 accepts asynchronous data from one or more devices and presents the data to CPU 302 via backplane bus 307. Examples of such data include serial device controllers, communications interfaces to display terminals, keyboards, teletype devices, IR remote control devices, etc. As with the other devices described below, in one embodiment data card 305 can also transmit asynchronous data to one or more devices from the backplane bus 307.
Ethernet data card 306 accepts Ethernet data frames (e.g., ad hoc computer data) and presents the data to CPU 302 via backplane bus 307. Video data card 308 accepts video analog or digital signals from one or more video devices (e.g., video cameras or the like), converts this into digital data, and may compress the digital data before presenting the data to CPU 302 via backplane bus 307. Stereo card 309 accepts stereo analog or digital signals from one or more sources (e.g., CD players, radios, or the like), and may convert the stereo signals to digital data and presents the data to CPU 302 via backplane bus 307. Analog card 310 converts analog data (e.g., voice, measurements, or other analog data) into digital form and presents the data to CPU 302 via backplane bus 307. T1/E1 card 311 receives data in T1/E1 format from one or more sources and presents it to CPU 302 via backplane bus 307. Synchronous data card 312 accepts synchronous data from various sources and presents it to CPU 302 via backplane 307. The various modules shown in
In one embodiment, CPU 302 organizes the work that is done by the modules connected to backplane bus 307. CPU 302 detects the presence of data at one or more of the modules; retrieves the data in a format suitable for the particular module; reformats the data into Ethernet packet frames; and transmits each packet via Ethernet to an Ethernet LAN switch 314 to a WAN network router 313, or via Ethernet directly to a WAN network router 313. The data can be transmitted over the bus using DMA techniques; interrupts; or other methods. Because only one CPU handles the processing, there is no contention for resources. CPU 302 is also responsible for executing any call establishment protocols. These protocols can include MGCP, H.323, Session Initiation Protocol (SIP), etc. These protocols are used to perform call set up and disconnect.
The master device responds in step 602 with a transmission map showing what time slots are available for transmission to LAN switch 505 or, alternatively, what time slots have already been allocated. In step 603, the slave sends a proposed transmission schedule indicating what time slots it proposes to use in order to carry data sufficient to support the various devices it is serving. In step 604, the master device agrees to the proposed schedule or proposes an alternate schedule.
In step 605, the slave device uses the assigned time slots to schedule packets for transmission over the Ethernet to and from LAN switch 505. In step 606, the slave ends transmission when the connection is no longer needed. In step 607, the slave signals the master to indicate that no further transmission will be required. In step 608, the master removes the slave from the transmission map, freeing up the time slots for other slaves.
As an alternative to a proposed transmission map, each slave device could request a bandwidth and receive from the master a proposed schedule taking into account the proposed bandwidth. When a slave device receives a request from a distant device to initiate a communications flow, the slave device will begin the process illustrated in
Suppose that a virtual connection is to be established between two nodes on the network to support a telephone voice connection. A voice-over-IP connection may require a 64 kilobits per second transfer rate. This rate could be accomplished by transmitting one 80-byte payload packet every 10 milliseconds. In a like manner, a video stream could also be established. A video stream would typically impose higher bandwidth requirements on the network. For instance, an MPEG-2 encoded video flow could typically require 8 megabytes per second transfer rate. This could be accomplished on an Ethernet LAN, each packet could comprise up to 1,500 bytes of payload. The video could be transmitted using approximately 13 packets, sent every 10 milliseconds.
Each device repeatedly transmits to the intended recipient according to the agreed delivery schedule. To support a voice-over-IP connection, for example, the transmitter could transmit an 80-byte packet every 10 milliseconds. It could also transmit a 160 byte packet, at 20 millisecond intervals. For a streaming video connection, more packets are required. In this case the transmitter would transmit larger packets, and groups of them, at a more frequent rate.
While the invention has been described with respect to specific examples including presently preferred modes of carrying out the invention, those skilled in the art will appreciate that there are numerous variations and permutations of the above described systems and techniques that fall within the spirit and scope of the invention as set forth in the appended claims. Any of the method steps described herein can be implemented in computer software and stored on computer-readable medium for execution in a general-purpose or special-purpose computer, and such computer-readable media is included within the scope of the intended invention. The invention extends to not only the method but also to computer nodes programmed to carry out the inventive principles. Numbering associated with process steps in the claims is for convenience only and should not be read to imply any particular ordering or sequence.
Number | Name | Date | Kind |
---|---|---|---|
4745593 | Stewart | May 1988 | A |
4821259 | DeBruler et al. | Apr 1989 | A |
5271000 | Engbersen et al. | Dec 1993 | A |
5373504 | Tanaka et al. | Dec 1994 | A |
5408465 | Gusella et al. | Apr 1995 | A |
5432775 | Crayford | Jul 1995 | A |
5455865 | Perlman | Oct 1995 | A |
5477531 | McKee et al. | Dec 1995 | A |
5517620 | Hashimoto et al. | May 1996 | A |
5541921 | Swenson et al. | Jul 1996 | A |
5563875 | Hefel et al. | Oct 1996 | A |
5610903 | Crayford | Mar 1997 | A |
5734656 | Prince et al. | Mar 1998 | A |
5774668 | Choquier et al. | Jun 1998 | A |
5781534 | Perlman et al. | Jul 1998 | A |
5859835 | Varma et al. | Jan 1999 | A |
5859979 | Tung et al. | Jan 1999 | A |
5917822 | Lyles et al. | Jun 1999 | A |
5974056 | Wilson et al. | Oct 1999 | A |
6047054 | Bayless et al. | Apr 2000 | A |
6058117 | Ennamorato et al. | May 2000 | A |
6067572 | Jensen et al. | May 2000 | A |
6088361 | Hughes et al. | Jul 2000 | A |
6134589 | Hultgren | Oct 2000 | A |
6141355 | Palmer et al. | Oct 2000 | A |
6208666 | Lawrence et al. | Mar 2001 | B1 |
6240084 | Oran et al. | May 2001 | B1 |
6247061 | Douceur et al. | Jun 2001 | B1 |
6272131 | Ofek | Aug 2001 | B1 |
6359885 | Kim et al. | Mar 2002 | B1 |
6373822 | Raj et al. | Apr 2002 | B1 |
6377579 | Ofek | Apr 2002 | B1 |
6385198 | Ofek et al. | May 2002 | B1 |
6426814 | Berger et al. | Jul 2002 | B1 |
6426944 | Moore | Jul 2002 | B1 |
6487593 | Banks | Nov 2002 | B2 |
6496477 | Perkins et al. | Dec 2002 | B1 |
6502135 | Munger et al. | Dec 2002 | B1 |
6529480 | Stewart et al. | Mar 2003 | B1 |
6556564 | Rogers | Apr 2003 | B2 |
6560222 | Pounds et al. | May 2003 | B1 |
6574193 | Kinrot | Jun 2003 | B1 |
6611519 | Howe | Aug 2003 | B1 |
6618360 | Scoville et al. | Sep 2003 | B1 |
6618761 | Munger et al. | Sep 2003 | B2 |
6628629 | Jorgensen | Sep 2003 | B1 |
6633544 | Rexford et al. | Oct 2003 | B1 |
6711137 | Klassen et al. | Mar 2004 | B1 |
6731600 | Patel et al. | May 2004 | B1 |
6778536 | Ofek et al. | Aug 2004 | B1 |
20010033565 | Rogers | Oct 2001 | A1 |
20010033649 | Rogers | Oct 2001 | A1 |
20020010792 | Border et al. | Jan 2002 | A1 |
20020054611 | Seta | May 2002 | A1 |
20020080719 | Parkvall et al. | Jun 2002 | A1 |
20020086641 | Howard | Jul 2002 | A1 |
20020110129 | Matsuoka et al. | Aug 2002 | A1 |
20020186660 | Bahadiroglu | Dec 2002 | A1 |
20020191592 | Rogers et al. | Dec 2002 | A1 |
20030058880 | Sarkinen et al. | Mar 2003 | A1 |
20030067903 | Jorgensen | Apr 2003 | A1 |
20030107991 | Tezuka et al. | Jun 2003 | A1 |
20030117959 | Taranov | Jun 2003 | A1 |
20030188188 | Padmanabhan et al. | Oct 2003 | A1 |
20030219029 | Pickett | Nov 2003 | A1 |
20040008655 | Park et al. | Jan 2004 | A1 |
20040014491 | Weigand | Jan 2004 | A1 |
20040024550 | Doerken et al. | Feb 2004 | A1 |
20040160340 | Thomson et al. | Aug 2004 | A1 |
20040179530 | Verbesselt et al. | Sep 2004 | A1 |
Number | Date | Country |
---|---|---|
0827307 | Mar 1998 | EP |
04056322 | Feb 2004 | JP |
WO 0028705 | May 2000 | WO |
WO 0028706 | May 2000 | WO |
WO 0147162 | Jun 2001 | WO |
WO 0150146 | Jul 2001 | WO |
WO 0159994 | Aug 2001 | WO |
WO 0160029 | Aug 2001 | WO |
WO 0241505 | May 2002 | WO |
WO 02100023 | Dec 2002 | WO |
WO 02100023 | Dec 2002 | WO |
WO 03084137 | Oct 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20050111357 A1 | May 2005 | US |