Increased throughput across data network interface by dropping redundant packets
First Claim
Patent Images
1. A method for increasing the throughput of data through a device providing an interface between a first network and a second network, comprising the steps of:
- receiving a packet from a source of data at said interface, said packet transported along said first network;
determining if said packet either contains data previously forwarded across said interface and onto said second network for transmission to a recipient of said packet, or else data already received in said device but not yet forwarded;
dropping said packet if said packet contains data either previously forwarded across said interface or already received but not yet forwarded;
placing packets en route from said source of data on said first network to said recipient in a first queue in said device, said packets in said first queue having a packet sequence number;
placing packets en route from said recipient to said source of data in a second queue in said device, said packets en route from said recipient to said source of data containing an acknowledge sequence number;
determining a highest acknowledge sequence number for all of said packets in said second queue;
comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
determining whether to drop a packet from said first queue, the step of dropping being performed if a packet in said first queue has a packet sequence number lower than said highest acknowledge sequence number.
6 Assignments
0 Petitions
Accused Products
Abstract
In a typical remote access application, such as access from the home to a packet-switched high speed network such as the Internet, the low-speed dial up connection to a network access is the main bottleneck in terms of the bandwidth and efficiency of transfer of data across the network access server. The present invention increases throughput through the network access server by identifying and dropping redundant, e.g., retransmitted, packets en route from the LAN or WAN to the remote terminal, thereby preserving precious bandwidth.
-
Citations
50 Claims
-
1. A method for increasing the throughput of data through a device providing an interface between a first network and a second network, comprising the steps of:
-
receiving a packet from a source of data at said interface, said packet transported along said first network;
determining if said packet either contains data previously forwarded across said interface and onto said second network for transmission to a recipient of said packet, or else data already received in said device but not yet forwarded;
dropping said packet if said packet contains data either previously forwarded across said interface or already received but not yet forwarded;
placing packets en route from said source of data on said first network to said recipient in a first queue in said device, said packets in said first queue having a packet sequence number;
placing packets en route from said recipient to said source of data in a second queue in said device, said packets en route from said recipient to said source of data containing an acknowledge sequence number;
determining a highest acknowledge sequence number for all of said packets in said second queue;
comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
determining whether to drop a packet from said first queue, the step of dropping being performed if a packet in said first queue has a packet sequence number lower than said highest acknowledge sequence number. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 50)
checking the packet sequence number of said packets in said first queue; and
deleting packets in said first queue which have the same packet sequence number.
-
-
7. The method of claim 1, wherein said interface further comprises a network layer protocol software module processing a network layer protocol for said packets, and a link layer protocol software module processing a link layer protocol for said packets, and
wherein said network layer protocol software performs said steps of determining and dropping prior to processing of said link layer protocol by said link layer protocol software module. -
8. The method of claim 7, wherein said network layer protocol software module comprises an IP stack and wherein said link layer protocol software module comprises a PPP stack.
-
9. The method as claimed in any one of claim 1, 5, or 6, wherein said method is performed in a network access server and wherein said first network comprises a packet-switched network and said second network comprises a public switched telephone network.
-
10. The method as claimed in any one of claims 1, 5 and 6, wherein said method is performed in a network access server and wherein said first network comprises a packet-switched network and said second network comprises a public switched telephone network, and wherein said network access server performs said method simultaneously for a plurality of different communications sessions between a plurality of different recipients and a plurality of different sources of data on said packet switched network, thereby increasing the throughput of said communications sessions.
-
50. The method claimed as in any one of claims 2, 4, 1, 13, 17, and 25-35 and 37-44, wherein the method is implemented in an application specific integrated circuit installed in a communications device providing an interface between a first network and a second network.
-
11. A method for increasing the throughput of data through a device providing an interface between a first network and a second network, comprising the steps of:
-
receiving a packet from a source of data at said interface, said packet transported along said first network;
determining if said packet either contains data previously forwarded across said interface and onto said second network for transmission to a recipient of said packet, or else data already received in said device but not yet forwarded; and
dropping said packet if said packet contains data either previously forwarded across said interface or already received but not yet forwarded, wherein said method is performed in a network access server comprising a telephone line interface module providing an interface to a public switched telephone network, and a gateway module providing an interface to said first network, wherein said first network comprises a packet switched network, and wherein said network access server drops packets that are retransmitted from said source of data to said recipient so as to reduce the amount of data transmitted to said recipient over said public switched telephone network, and wherein said method further comprises the steps of;
(a) placing packets en route from said source of data on said packet switched network to said recipient in a first queue, said packets in said first queue having a packet sequence number;
(b) placing packets en route from said recipient to said source of data in a second queue, said packets en route from said recipient to said source of data containing an acknowledge sequence number indicating the receipt of a packet from said source of data;
(c) determining a highest acknowledge sequence number for all of said packets in said second queue;
(d) comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
(e) determining whether to drop a packet from said first queue, the step of dropping performed if a packet from said first queue has a packet sequence number lower than or equal to said highest acknowledge sequence number. - View Dependent Claims (12)
(f) checking the packet sequence number of said packets in said first queue; and
(g) deleting packets in said first queue which have the same packet sequence number.
-
-
13. A method for increasing the throughput of data through a device providing an interface between a first network and a second network, comprising the steps of:
-
receiving a first packet at said interface, said packet generated by a source of data connected to said first network and directed to a remote terminal connected to said second network, said first packet having a packet sequence number;
receiving a second packet at said interface, said packet generated by said remote terminal and destined for said source of data, said second packet comprising an acknowledge sequence number indicating the receipt of a packet from said source of data;
comparing said acknowledge sequence number with said packet sequence number; and
dropping said first packet if said comparison of said acknowledge sequence number with said packet sequence number indicates that data in said first packet has been received by said remote terminal, wherein said second packet is placed in a queue along with a plurality of other packets from said remote terminal, and wherein said step of comparing comprises the steps of determining a highest acknowledge sequence number for all of said packets in said queue and dropping said first packet if said packet sequence number indicates that data in said first packet has been received by said remote terminal. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
placing packets en route from said first network to said second network in a queue;
checking the packet sequence number of said packets in said queue; and
dropping packets from said queue which have the same packet sequence number.
-
-
21. The method of claim 13, wherein said device further comprises a network layer protocol software module processing a network layer protocol for said packets, and a link layer protocol software module processing a link layer protocol for said packets, and
wherein said network layer protocol software performs said steps of comparing and dropping prior to processing of said link layer protocol by said link layer protocol software module. -
22. The method of claim 21, wherein said network layer protocol software module comprises an IP stack and wherein said link layer protocol software module comprises a PPP stack.
-
23. The method of claim 13, wherein said steps of receiving a first packet, receiving a second packet, comparing and dropping are performed substantially continuously during the duration of a communication session between said source of data and said remote terminal.
-
24. The method of claim 13, wherein said method is performed in a network access server and wherein said first network comprises a packet-switched network and said second network comprises a public switched telephone network, and wherein said network access server performs said method simultaneously for a plurality of different communications sessions between a plurality of different remote terminals and a plurality of different sources of data on said packet switched network, thereby increasing the throughput of said communications sessions.
-
25. A method for increasing the throughput of data through a device providing an interface between a first network and a second network, comprising the steps of:
-
(1) receiving a plurality of data packets at said interface and placing said packets in a first queue, said plurality of packets including a first packet, said packets of data generated by a source of data connected to said first network and directed to a remote terminal connected to said second network, each of said packets of data having a packet sequence number;
(2) setting an expected transmission sequence number for said first queue equal to the lowest packet sequence number of all of said packets in said first queue; and
(3) processing said first packet to determine whether data in said first packet has already been transmitted to said remote terminal, said step of processing comprising the steps of;
(a) comparing the packet sequence number of said first packet with said expected transmission sequence number, and (b) dropping data from said first packet if said first packet has a packet sequence number equal to said expected transmission sequence number and if another packet is present in said first queue with a packet sequence number equal to said expected transmission sequence number. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
(4) placing packets en route from said remote terminal to said source of data in a second queue in said device, said packets en route from said remote terminal to said source of data containing an acknowledge sequence number indicating the receipt of a packet from said source of data;
(5) determining a highest acknowledge sequence number for all of said packets in said second queue;
(6) comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
(7) determining whether to drop a packet from said first queue, the step of dropping performed if a packet in said first queue has a packet sequence number lower than said highest acknowledge sequence number.
-
-
30. The method of claim 25, wherein said steps are performed substantially continuously during the duration of a communication session between said source of data and said remote terminal.
-
31. The method of claim 25, wherein said interface further comprises a network layer protocol software module processing a network layer protocol for said packets, and a link layer protocol software module processing a link layer protocol for said packets, and
wherein said network layer protocol software performs said steps of dropping prior to processing of said link layer protocol by said link layer protocol software module. -
32. The method of claim 31, wherein said network layer protocol software module comprises an IP stack and wherein said link layer protocol software module comprises a PPP stack.
-
33. The method of claim 25, wherein said method is performed in a network access server comprising a telephone line interface module providing an interface to a public switched telephone network, and a gateway module providing an interface to said first network, wherein said first network comprises a packet-switched network, and wherein said network access server drops packets that are retransmitted from said source of data to said remote terminal so as to reduce the amount of data transmitted to said remote terminal over said public switched telephone network, and wherein the method further comprises the steps of:
-
placing packets en route from said remote terminal to said source of data in a second queue, said packets en route from said remote terminal to said source of data containing an acknowledge sequence number indicating the receipt of a packet from said source of data;
determining a highest acknowledge sequence number for all of said packets in said second queue;
comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
determining whether to drop a packet from said first queue, the step of dropping performed if a packet from said first queue has a packet sequence number lower than said highest acknowledge sequence number.
-
-
34. The method as claimed in claim 29, wherein said method is performed in a network access server and wherein said first network comprises a packet-switched network and said second network comprises a public switched telephone network, and wherein said network access server performs said method simultaneously for a plurality of different communications sessions between a plurality of different remote terminals and a plurality of different sources of data on said packet switched network, thereby increasing the throughput of said communications sessions.
-
35. The method of claim 25, wherein said steps of receiving, setting and processing said first packet are performed substantially continuously during the duration of a communication session between said source of data and said remote terminal.
-
36. A method for increasing the throughput of data through a device providing an interface between a first network and a second network, comprising the steps of:
-
receiving a plurality of data packets at said interface and placing said packets in a queue, said packets generated by a source of data connected to said first network and directed to a remote terminal connected to said second network, each of said packets having a packet sequence number;
processing said queue to drop retransmitted packets, said step of processing comprising the steps of;
(a) comparing said packet sequence numbers of said packets in said queue; and
(b) dropping a packet in said queue if said packet has a packet sequence number that is the same as a packet sequence number of another packet in said queue;
placing packets en route from said remote terminal to said source of data in a second queue in said device, said packets en route from said remote terminal to said source of data containing an acknowledge sequence number indicating the receipt of a packet from said source of data;
determining a highest acknowledge sequence number for all of said packets in said second queue;
comparing said packet sequence numbers of said packets in said queue with said highest acknowledge sequence number; and
determining whether to drop a packet from said queue, the step of dropping performed if a packet in said queue has a packet sequence number lower than said highest acknowledge sequence number. - View Dependent Claims (37, 38, 39, 40, 41, 42)
-
-
43. A machine-readable storage media containing a set of 1instructions for processing packets in transit through a network access server from a source of data on a first network to a remote terminal on a second network, said packets in transit placed in a first queue and each having a packet sequence number, said set of instructions comprising:
-
a routine for determining a highest acknowledge sequence number for packets in a second queue in said network access server, said packets en route from said remote terminal to said source of data;
a routine for comparing said highest acknowledge sequence number with the packet sequence numbers of said packets in said first queue; and
a drop routine for dropping packets in said first queue, said drop routine dropping a packet in said first queue if said packet has a packet sequence number lower than said highest acknowledge sequence number.
-
-
44. A machine-readable storage media comprising a set of instructions for a communications device providing an interface between a first network and a second network, the set of instructions, when executed, provide for the communications device to perform the following functions:
-
(1) receiving a plurality of data packets at said interface and placing said packets in a first queue, said plurality of packets including a first packet, said packets of data generated by a source of data connected to said first network and directed to a remote terminal connected to said second network, each of said packets of data having a packet sequence number;
(2) setting an expected transmission sequence number for said first queue equal to the lowest packet sequence number of all of said packets in said first queue; and
(3) processing said first packet to determine whether data in said first packet has already been transmitted to said remote terminal, said step of processing comprising the steps of;
(a) comparing the packet sequence number of said first packet with said expected transmission sequence number; and
(b) dropping data from said first packet if said first packet has a packet sequence number equal to said expected transmission sequence number and if another packet is present in said queue with a packet sequence number equal to said expected transmission sequence number;
(4) placing packets en route from said remote terminal to said source of data in a second queue in said device, said packets en route from said remote terminal to said source of data containing an acknowledge sequence number indicating the receipt of a packet from said source of data;
(5) determining a highest acknowledge sequence number for all of said packets in said second queue;
(6) comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
(7) determining whether to drop a packet from said first queue, the step of dropping performed if a packet in said first queue has a packet sequence number lower than said highest acknowledge sequence number. - View Dependent Claims (45)
-
-
46. An application specific integrated circuit for installation in a communications device providing an interface between a first network and a second network, said application specific integrated circuit comprising:
-
circuitry receiving a plurality of data packets at said interface and placing said packets in a first queue, said plurality of packets including a first packet, said packets of data generated by a source of data connected to said first network and directed to a remote terminal connected to said second network, each of said packets of data having a packet sequence number;
circuitry setting an expected transmission sequence number for said first queue equal to the lowest packet sequence number of all of said packets in said first queue;
circuitry processing said first packet to determine whether data in said first packet has already been transmitted to said remote terminal, said step of processing comprising the steps of;
comparing the packet sequence number of said first packet with said expected transmission sequence number; and
dropping data from said first packet if said first packet has a packet sequence number equal to said expected transmission sequence number and if another packet is present in said queue with a packet sequence number equal to said expected transmission sequence number;
circuitry placing packets en route from said remote terminal to said source of data in a second queue in said device, said packets en route from said remote terminal to said source of data containing an acknowledge sequence number indicating the receipt of a packet from said source of data;
circuitry determining a highest acknowledge sequence number for all of said packets in said second queue;
circuitry comparing said packet sequence numbers of said packets in said first queue with said highest acknowledge sequence number; and
circuitry determining whether to drop a packet from said first queue, the step of dropping performed if a packet in said first queue has a packet sequence number lower than said highest acknowledge sequence number.
-
-
47. In a communications device providing an interface between a relatively high speed packet switched network and a relatively low speed communications medium, the improvement comprising:
-
a first system queue for holding packets en route through network access server from a host source of data on said packet switched network to a remote terminal;
a second system queue for holding packets en route through said network access server from said remote terminal to said network access server; and
a packet processing means for processing packets in said first system queue and dropping redundant packets which may be present in said first system queue, wherein said packet processing means comprises;
a routine for determining a highest acknowledge sequence number for packets in a second queue in said network access server, a routine for comparing said highest acknowledge sequence number with the packet sequence numbers of said packets in said first queue; and
a drop routine for dropping packets in said first queue, said drop routine dropping a packet in said first queue if said packet has a packet sequence number the same as or lower than said highest acknowledge sequence number. - View Dependent Claims (48)
a compare routine for comparing packet sequence number for packets in said first queue; and
a drop routine for dropping packets in said first queue if more than one of said packets in said queue have the same packet sequence number.
-
-
49. The improvement of claim 57, wherein said packets comprise a header portion and a data portion and wherein said drop routine drops the data portion of said packets but does not drop said header portion.
Specification