The present invention relates generally to a system for allowing devices connected to a network to collaborate with each other so as to transmit and receive data packets without impairment on the network.
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
Another solution, proposed in my previous U.S. application Ser. No. 10/663,378, involves scheduling the transmission of packets by the originating endpoints based on an empirical evaluation of network congestion conditions. A transmission interval is partitioned into discrete frames and subframes, and each endpoint schedules packets for delivery during time slots in the subframes corresponding to empirically determined conditions of minimal network congestion. That scheme relies on the existence of multiple priority levels for packets in the network, such that packets can be sent using a lower-level “discovery” priority level to perform the empirical determination without affecting the higher-priority data traffic.
Some networks and devices cannot support multiple priority levels for data packets. For example, some packet switches may support only one level of packet priority (i.e., two queues: one for prioritized packets and another for non-prioritized packets), making such a scheme difficult to implement. Consequently, the present invention proposes a different solution to using a contention-based network, such as an Ethernet LAN or a WAN packet switching network, to transmit time-sensitive data such as streaming video.
The invention provides a method for transmitting packets in a network by scheduling them for delivery based on an agreement between the transmitting node and the receiving node as to a delivery schedule.
A transmitting node transmits a query to the intended receiving node. The receiving node responds with a reception map indicating what transmission time slots have already been allocated by other transmitting nodes (or, alternatively, what transmission time slots are available). The transmitting node then proposes a transmission map to the receiving node, taking into account any time slots previously allocated to other transmitting nodes. The receiving node either accepts the proposed transmission map or proposes an alternate transmission map. Upon agreement between the nodes, the transmitting node begins transmitting according to the proposed transmission map, and the receiving node incorporates the proposed transmission map into its allocation tables. Because the proposed delivery schedule has been agreed to between the two endpoints, uncoordinated contention that might otherwise overflow network switches near the endpoints is avoided. Because the schedule is determined by the two endpoints, no network arbiter is needed to coordinate among network resources.
In another variation, a transmitting node transmits a bandwidth requirement to an intended recipient node, indicating the bandwidth it requires to support a proposed transmission (e.g., streaming video packets). The intended recipient node, after evaluating time slots previously allocated to other transmitters, responds with a proposed delivery schedule indicating time slots during which the transmitter should transmit packets in order to avoid contention with other previously scheduled packets while maintaining the necessary bandwidth for the transmitter. The transmitter thereafter transmits packets according to the proposed delivery schedule.
In yet another variation, a transmitting node transmits a proposed delivery schedule to an intended recipient, indicating time slots corresponding to times during which it proposes to transmit packets. The intended recipient either agrees to the proposed delivery schedule, or proposes an alternate delivery schedule that takes into account the transmitter's bandwidth requirements. Upon agreement between the nodes, transmission occurs according to the agreed-upon delivery schedule. The schedule can be released at the end of the transmission.
Turning briefly to
Depending on the packet size and underlying network bandwidth, some varying fraction of each time slot would be actually used to transmit a packet. Assuming a packet size of 125 bytes (1,000 bits) and a 10BaseT Ethernet operating at 10 mbps, a single 100-microsecond time slot would be used to transmit each packet. Assuming a packet size of 1,500 bytes, twelve of the 100-microsecond intervals would be consumed by each packet transmission.
According to one variation of the invention, the scheduled delivery scheme applies to prioritized packets in the network; other non-prioritized packets are not included in this scheme. Therefore, in a system that supports only priority traffic and non-priority traffic, the scheduled delivery scheme would be applied to all priority traffic, and ad-hoc network traffic would continue to be delivered on a nonpriority basis. In other words, all priority traffic would be delivered before any nonpriority traffic is delivered.
The delivery schedule of
Suppose that a transmitting node needs to support a voice connection over the network. For a single voice-over-IP connection, a bandwidth of 64 kilobits per second might be needed. Assuming a packet size of 80 bytes or 640 bits, this would mean that 100 packets per second must be transmitted, which works out to (on average) one packet every 10 milliseconds. In the example of
Returning to
A reception map (see
In step 302, the intended receiving node responds with a reception map such as that shown in
In step 303, the transmitter sends a proposed transmission map to the intended receiving node. The proposed transmission map preferably takes into account the allocated time slots received from the intended receiving node, so that previously allocated time slots are avoided. The transmitter allocates enough time slots to support the required bandwidth of the transmission while avoiding previously allocated time slots.
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 64 kilobits per second transfer rate using 80-byte packet payloads (not including packet headers). A video stream would typically impose higher bandwidth requirements on the network. On an Ethernet LAN, each packet would comprise up to 1,500 bytes, which (at 10BaseT rates) could be transmitted in approximately 12 100-microsecond periods or slots. A voice-over-IP connection could be established by transmitting one 80-byte payload packet every 10 milliseconds.
In step 304, the intended recipient reviews the proposed transmission map and agrees to it, or proposes an alternate transmission map. For example, if the intended recipient had allocated some of the proposed time slots to another transmitter during the time that the transmitter was negotiating for bandwidth, the newly proposed delivery schedule might present a conflict. In that situation, the intended recipient might propose an alternate map that maintained the bandwidth requirements of the transmitter.
In step 305, the transmitter 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. For a streaming video connection, the transmitter could transmit at a more frequent rate. Finally, in step 306 the receiver's map is deallocated when the transmitter no longer needs to transmit.
Note that for two-way communication, two separate connections must be established: one for node A transmitting to node B, and another connection for node B transmitting to node A. Although the inventive principles will be described with respect to a one-way transmission, it should be understood that the same steps would be repeated at the other endpoint where a two-way connection is desired.
In step 403, the transmitter agrees to the proposed transmission map, causing the intended receiver to “lock in” the agreed time slots (this step could be omitted), and in step 404 the transmitter transmits packets according to the agreed-upon schedule. Finally, in step 405 the transmission map is deallocated upon termination of the connection.
In step 503, the transmitter transmits packets according to the agreed-upon delivery schedule, and in step 504 the transmission map is deallocated upon termination of the transmission.
In another variation, a transmitter may request bandwidth (e.g., one 1000-byte packet every 10 milliseconds) and the receiver responds with a placement message (e.g., start it at the 75th 100-microsecond slot). The receiver could also respond with multiple alternatives (e.g., start it at the 75th, the 111th, or the 376th time slot). The transmitter would respond with the time slot that it intended to use (e.g., the 111th), and begin transmission. This variation is intended to be within the scope of sending “transmission maps” and “reception maps” as those terms are used herein.
In order for each transmitter and receiver to agree on a delivery schedule, it is desirable or necessary to develop and maintain some time synchronization between the nodes.
As shown in
The clock pulses may comprise a pulse according to an agreed-upon interval (e.g., one second) that is used by each node to generate time slots that are synchronized to the beginning of the pulses. Alternatively, the clock source may generate a high-frequency signal that is then divided down into time slots by each node. Other approaches are of course possible. As yet another alternative, each node may contain its own clock source that is synchronized (via GPS or other means) to a common reference signal, such as a radio signal transmitted by the U.S. Government. Wire 805 may comprise a coaxial cable or other means of connecting the clock source to the nodes. In one variation, the connection is of a short enough distance (hundreds of feet) so that transmission effects and delays are avoided. Any of these means for synchronizing may be used independently of the others.
Another way or means of synchronizing time slots and delivery schedules among the nodes is to have one node periodically transmit (e.g., via multicast) a synchronization packet on the node on the network. Each node would receive the packet and use it to synchronize an internal clock for reference purposes. As an alternative to the multicast approach, one network node can be configured to individually send synchronization packets to each participating network node, taking into account the stagger delay involved in such transmission. For example, a synchronization node would transmit a synchronization packet to a first node on the network, then send the same packet to a second node on the network, which would be received later by the second node. The difference in time could be quantified and used to correct back to a common reference point. Other approaches are of course possible.
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 | 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 |
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 |
6330236 | Ofek et al. | Dec 2001 | B1 |
6353618 | Hung et al. | Mar 2002 | 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 |
6480506 | Gubbi | Nov 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 |
6657959 | Chong et al. | Dec 2003 | B1 |
6711137 | Klassen et al. | Mar 2004 | B1 |
6731600 | Patel et al. | May 2004 | B1 |
6778536 | Ofek et al. | Aug 2004 | B1 |
6788702 | Garcia-Luna-Aceves et al. | Sep 2004 | B1 |
6973067 | Haartsen | Dec 2005 | 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 | Thornson et al. | Aug 2004 | A1 |
20040160916 | Vukovic et al. | Aug 2004 | A1 |
20040179530 | Verbesselt et al. | Sep 2004 | A1 |
20050058083 | Rogers | Mar 2005 | A1 |
20050058137 | Carlson et al. | Mar 2005 | A1 |
20050086362 | Rogers | Apr 2005 | 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 03084137 | Oct 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20050094642 A1 | May 2005 | US |