Method and apparatus for improving efficiency of TCP/IP protocol over high delay-bandwidth network
First Claim
1. A method of communicating over a link, comprising:
- receiving, at a source gateway, incoming packets directed to a destination address, in a first protocol;
at the source gateway, modifying the destination address to that of a source gateway application, the packets being forwarded to the source gateway application in the first protocol;
upon receipt of a first of the packets at the source gateway application, forwarding original source and destination address information of said packet to a destination gateway application;
at the destination gateway application, storing the forwarded original source and destination address information, and associating a channel identifier with said address information;
from the source gateway application, forwarding the packets in a second protocol over the link to the destination gateway application, address information being removed from the packets and the associated channel identifier being appended to the packets;
forwarding the packets from the destination gateway application to the destination address, based on the stored address information associated with the appended channel identifier; and
restoring the original source address to the packets forwarded from the destination gateway application, based on the stored address information.
3 Assignments
0 Petitions
Accused Products
Abstract
A method of communicating over a satellite or other high delay-bandwidth link comprises receiving, at a source or client gateway, incoming packets directed to a destination address, in a first protocol, preferably transmission control protocol (TCP) over Internet protocol (IP), or TCP/IP. The destination address is modified by replacing the destination address in a received packet with an address of the source gateway application so that the packets are forwarded to the source gateway application. Packets are forwarded from the source gateway application in a second protocol over the link to a destination gateway application. The original destination address is restored at the destination gateway application and the packets are forwarded to the destination address in the first protocol. Packets may be transmitted or forwarded over the link by first fragmenting them into smaller packets, and are reconstructed at the other end of the link. Preferably, in the second protocol, upon an automatic repeat request (ARQ) from the destination gateway application, only packets which are incorrectly received by the destination gateway application are retransmitted from the source gateway application. The packets may arrive at the destination gateway application in scrambled order, and thus are reordered, in the destination gateway application, into their original order. To reduce acknowledgment traffic, acknowledgments are sent over the high delay-bandwidth link only periodically. Only a list containing the first sequence number and the last sequence number of a series of contiguously received packets is sent back to the source gateway application.
484 Citations
66 Claims
-
1. A method of communicating over a link, comprising:
-
receiving, at a source gateway, incoming packets directed to a destination address, in a first protocol;
at the source gateway, modifying the destination address to that of a source gateway application, the packets being forwarded to the source gateway application in the first protocol;
upon receipt of a first of the packets at the source gateway application, forwarding original source and destination address information of said packet to a destination gateway application;
at the destination gateway application, storing the forwarded original source and destination address information, and associating a channel identifier with said address information;
from the source gateway application, forwarding the packets in a second protocol over the link to the destination gateway application, address information being removed from the packets and the associated channel identifier being appended to the packets;
forwarding the packets from the destination gateway application to the destination address, based on the stored address information associated with the appended channel identifier; and
restoring the original source address to the packets forwarded from the destination gateway application, based on the stored address information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
in the source gateway application, fragmenting a forwarded packet in the first protocol into smaller packets in the second protocol for transmission over the link to maintain a low susceptibility to transmission errors; and
in the destination gateway application, reconstructing the fragmented packet from the smaller packets.
-
-
4. The method of claim 3 further comprising:
-
in the second protocol, upon an automatic repeat request from the destination gateway application to the source gateway application, retransmitting from the source gateway application only packets which are incorrectly received by the destination gateway application, wherein the packets may arrive at the destination gateway application in scrambled order relative to an original order; and
reordering, in the destination gateway application, the received packets into the original order in which they were received from the source.
-
-
5. The method of claim 3 wherein an incorrectly received packet is retransmitted a number of times, the number of retransmissions depending on link bit error rate to insure that the packet is correctly received within one round trip time.
-
6. The method of claim 1 wherein the first protocol comprises transmission control protocol (TCP) over Internet protocol (IP).
-
7. The method of claim 6 further comprising the step of terminating a TCP connection at the source gateway, wherein acknowledgments are transmitted from the source gateway back to a source.
-
8. The method of claim 6 further comprising:
-
in the second protocol, upon an ARQ (automatic repeat request) from the destination gateway application to the source gateway application, retransmitting from the source gateway application only packets which are incorrectly received by the destination gateway application, wherein the packets may arrive at the destination gateway application in scrambled order relative to an original order; and
reordering, in the destination gateway application, the received packets into the original order in which they were received from the source.
-
-
9. The method of claim 8 wherein an incorrectly received packet is retransmitted a number of times, the number of retransmissions depending on the link bit error rate to insure that the packet is correctly received within one round trip time.
-
10. The method of claim 1 wherein the link is a high delay-bandwidth link.
-
11. The method of claim 10 wherein the high delay-bandwidth link is a satellite link.
-
12. The method of claim 11 wherein the satellite link provides a connection between TCP nodes using a non-TCP protocol.
-
13. The method of claim 1, wherein the step of forwarding to the source gateway application comprises replacing the destination address in a received packet with an address of the source gateway application.
-
14. The method of claim 13, wherein the step of forwarding to the source gateway application further comprises, at the destination gateway application, restoring the original destination address.
-
15. The method of claim 10, further comprising:
sending acknowledgments over the high delay-bandwidth link only periodically to reduce acknowledgment traffic.
-
16. The method of claim 15, wherein only a list containing the first sequence number and the last sequence number of a series of contiguously received packets is sent back to the source gateway application.
-
17. The method of claim 1 wherein a gateway application serves as a transparent proxy.
-
18. The method of claim 1 wherein a gateway application serves as a firewall.
-
19. A system of communicating over a link, comprising:
-
a source gateway which receives, in a first protocol, incoming packets directed to a destination address, modifies the destination address and forwards the packets in the first protocol;
a source gateway application which receives the forwarded packets, establishes a connection over the link, using a second protocol, with a destination gateway application, forwards packet addressing information to the destination gateway application, and further forwards the packets, without the packet addressing information, in the second protocol over the link; and
a destination gateway application which receives the forwarded packets over the link, restores the packet addressing information to the packets and further forwards the packets to the destination address.
-
-
20. A system of communicating over a link, comprising:
-
a source gateway at a first end of the link, which receives incoming packets from a source, the packets being in a first protocol, each incoming packet comprising an original source address and an original destination address;
a source address translator on the source gateway, the source address translator replacing the original destination address with an address of a source gateway application, the packet being redirected to the source gateway application, and forwarding the original destination address to the source gateway application;
said source gateway application, executing on the source gateway;
a destination gateway at a second end of the link;
a destination gateway application, which executes on the destination gateway, the source and destination gateway applications establishing a connection over the link using a second protocol which ensures that the link is error-free and ordered, to communicate from the source gateway application to the destination gateway application, the original destination address upon receipt of a first packet from the source to the destination, and packet data, source and destination addresses having been removed from the packets, the destination gateway application forwarding the original source address received from the source gateway application to a destination address translator, and forwarding the packets to the original destination address using the first protocol, according to which the address of the destination gateway application is appended to the packets as a source address; and
said destination address translator on the destination gateway which replaces the destination -gateway application'"'"'s address in the packets with the original source address.
-
-
21. A method for transparently improving the performance of network applications over a transmission medium, comprising:
-
receiving, at a first gateway, a request for a communications session sent-by a first end-user to a second end-user in a first protocol;
at the first gateway, modifying the original addressing information of the first protocol to cause the request to be processed by the first gateway;
at the first gateway, establishing, with the first end-user, a first communications session utilizing the first protocol;
at the first gateway, establishing, with a second gateway, a second communications session utilizing a second protocol, wherein the second communications session is over the transmission medium, and, responsive to the request, forwarding addressing information for the requested communications session to the second gateway;
at the second gateway, establishing, with the second end-user, a third communications session utilizing the first protocol;
at the second gateway, restoring the request'"'"'s original addressing informnation;
on the first communications session, forwarding packets from the first end-user to the first gateway, and restoring original addressing information on and forwarding packets from the first gateway to the first end-user, using the first protocol and modifying addressing information when necessary;
on the second communications session, forwarding packets from the first gateway to the second gateway, and from the second gateway to the first gateway, using the second protocol, the packets having had addressing information removed; and
on the third communications session, restoring original addressing information on and forwarding packets from the second gateway to the second end-user, and forwarding packets from the second end-user to the second gateway, using the first protocol and modifying addressing information when necessary. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
receiving, at the address translation module, an incoming packet which is destined for the second end-user;
checking a list of rules to determine whether the addressing information in the incoming packet needs to be changed;
modifying the addressing information if a rule is matched; and
storing the original addressing information of the packet.
-
-
26. The method of claim 24 wherein the first protocol comprises the Transmission Control Protocol (TCP) over the Internet Protocol (IP).
-
27. The method of claim 26 wherein the address translation module is inserted into a protocol stack of the first gateway below an IP module and is configured to change source IP address and TCP port, destination IP address and TCP port, and TCP and IP checksums of the packets.
-
28. The method of claim 27, wherein the address translation module is configured by a protocol translator running on the first gateway.
-
29. The method of claim 27, wherein the address translation module changes the addressing information of packets sent to particular TCP ports at the second end-user.
-
30. The method of claim 21, wherein a protocol translator on the first gateway receives packets via the first communications session and sends them over the second communications session.
-
31. The method of claim 30, further comprises the steps of:
-
receiving, at the protocol translator, a start of the first communications session;
sending, from the protocol translator, a message requesting from the address translation module on the first gateway, addressing information of the second end-user;
establishing a second communications session with a second gateway and sending the addressing information of the first and second end-users to the second gateway;
receiving data packets on the first communications session, processing the packets, and sending the packets on the second communications session; and
receiving data packets on the second communications session, processing the packets, and sending the packets on the first communications session.
-
-
32. The method of claim 31 wherein processing comprises any or all of data compression, data decompression, encryption, decryption, prioritization and billing.
-
33. The method of claim 31 wherein the protocol translator receives all packets modified by the address translation module on one particular TCP port.
-
34. The method of claim 21 wherein a second protocol translator on the second gateway receives packets via the second communications session and sends them on the third communications session.
-
35. The method of claim 34 further comprising the steps of:
-
on the second communications session, receiving, at the second protocol translator, the original addressing information of the first and second end-users;
opening a new socket to a new TCP port that will be used to communicate with the second end-user;
sending, from the second protocol translator, a message informing a second address translation module on the second gateway that the source addressing information of packets sent from the new socket should be changed to that of the first end-user;
establishing a third communications session between the second protocol translator and the second end-user;
receiving data packets on the second communications session, processing the packets, and sending the packets on the third communications session; and
receiving data packets on the third communications session, processing the packets, and sending the packets on the second communications session.
-
-
36. The method of claim 35 wherein processing comprises any or all of data compression, data decompression, encryption, decryption, prioritization and billing.
-
37. The method of claim 21 wherein the second protocol is non-TCP.
-
38. The method of claim 21 wherein the second session uses a reliable, connection-oriented link layer.
-
39. The method of claim 38, further comprising, at the link layer:
-
fragmenting an original packet into smaller packets; and
recomposing the smaller packets into the original packet.
-
-
40. The method of claim 38, further comprising, at the link layer, using an automatic repeat request (ARQ) algorithm to maintain reliability.
-
41. The method of claim 40 wherein the ARQ algorithm is such that an ARQ sender conveys its entire receive buffer state to an ARQ receiver.
-
42. The method of claim 40 wherein the ARQ algorithm determines whether to send an ARQ message based on sequence numbers of messages received.
-
43. The method of claim 40 wherein the ARQ algorithm determines whether to send an ARQ message based on a period of time.
-
44. The method of claim 38 wherein the link layer maintains one receive buffer for all sessions between the first gateway and the second gateway.
-
45. The method of claim 21 wherein only packets using the first protocol have their addressing information changed.
-
46. The method of claim 21 wherein forward and return paths of the second communications session use different physical networks and/or physical media.
-
47. The method of claim 21 wherein an end-user and its associated gateway are the same computer.
-
48. The method of claim 21 wherein the transmission medium is wireless.
-
49. A method for improving the performance of network applications over a transmission medium, comprising:
-
receiving, at a first gateway, a request for a communications session sent by a first end-user to a second end-user in a first protocol;
at the first gateway, establishing with the first end-user, a first communications session utilizing the first protocol;
at the first gateway, establishing with a second gateway, a second communications session utilizing a second protocol, wherein the second communications session is over the transmission medium, and responsive to the request, forwarding addressing information of the requested communications session to the second gateway;
at the second gateway, establishing, with the second end-user, a third communications session utilizing the first protocol;
on the first communications session, forwarding packets from the first end-user to the first gateway, and restoring original addressing information on and forwarding packets from the first gateway to the first end-user using the first protocol;
on the second communications session, forwarding packets from the first gateway to the second gateway, and from the second gateway to the first gateway using the second protocol, the packets having had addressing information removed; and
on the third communications session, restoring original addressing information on and forwarding packets from the second gateway to the second end-user, and from the second end-user to the second gateway using the first protocol. - View Dependent Claims (50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66)
receiving, at the protocol translator, the start of the first communications session;
establishing a second communications session with a second gateway and sending the addressing information of the second end-user to the second gateway;
receiving data packets on the first communications session, processing the packets, and sending the packets on the second communications session; and
receiving data packets on the second communications session, processing the packets, and sending the packets on the first communications session.
-
-
54. The method of claim 53 wherein processing comprises any or all of data compression, data decompression, encryption, decryption, prioritization and billing.
-
55. The method of claim 49 wherein a second protocol translator on the second gateway receives packets via the second communications session and sends the packets on the third communications session.
-
56. The method of claim 55, further comprises the steps of:
-
on the second communications session, receiving, at the protocol translator, the original addressing information of the second end-user;
opening a new socket to a new TCP port for communicating with the second end-user;
setting up a third communications session with second end-user;
receiving data packets on the second communications session, processing the packets, and sending the packets on the third communications session; and
receiving data packets on the third communications session, processing the packets, and sending the packets on the second communications session.
-
-
57. The method of claim 56 wherein processing comprises any or all of data compression, data decompression, encryption, decryption, prioritization and billing.
-
58. The method of claim 49 wherein the second session uses a reliable, connection-oriented link layer.
-
59. The method of claim 58, further comprising, at the link layer:
-
fragmenting an original packet into smaller packets;
sending the smaller packets on the second session; and
recomposing the smaller packets into the original packet.
-
-
60. The method of claim 58, further comprising, at the link layer, using an automatic repeat request (ARQ) algorithm to maintain reliability.
-
61. The method of claim 60 wherein the ARQ algorithm is such that the ARQ sender conveys its entire receive buffer state to the ARQ receiver.
-
62. The method of claim 60 wherein the ARQ algorithm determines whether to send an ARQ message based on sequence numbers of messages received.
-
63. The method of claim 60 wherein the ARQ algorithm determines whether to send an ARQ message based on a period of time.
-
64. The method of claim 58 wherein the link layer maintains one receive buffer for all sessions between the first gateway and the second gateway.
-
65. The method of claim 49 wherein forward and return paths of the second communications session use different physical networks and/or physical media.
-
66. The method of claim 49 wherein an end-user and its associated gateway are the same computer.
Specification