Apparatus and method for improving throughput on a data network
First Claim
1. A communication system for coupling to and enabling an application to communicate over a data network with a remote system, said communication system comprising:
- a first module which interfaces with the application, said first module including a protocol selector;
a second module in communication with the first module, said second module implementing a communications protocol stack which enables the first module to communicate over the network with the remote system, said second module including a transport layer module implementing a plurality of selectable transport layer protocols for use in the communications protocol stack, wherein in response to the first module receiving a request to establish communication with the remote system using a first transport layer protocol, the protocol selector queries one or more sources of information about the remote system and based on results of that query selects one of the plurality of selectable transport layer protocols for establishing the requested communication with the remote system, wherein said selected transport layer protocol is a second transport layer protocol that is different from the first transport layer protocol if the query establishes that the remote system is accessible using the second transport layer protocol and even though the application is requesting to communicate with the remote system using the first transport layer protocol.
7 Assignments
0 Petitions
Accused Products
Abstract
A communication system for improving communication over a data network between an application and remote systems where each of the remote systems is configured to communicate using at least one of multiple transport layer communication protocols. The communication system accepts a request from the application to communicate with one of the remote systems, selects a transport layer communication protocols for communicating with the requested remote system, and communicates using the selected transport protocol with the requested system. In addition, the system may select one of multiple network layer communication protocols to communicate with the requested remote system. The application may be configured to communicate using a first of the transport protocols and request to communicate with a remote system using that first protocol, while the selected protocol may be another protocol. Furthermore, in one feature, the selected transport layer protocol supports selective retransmission while the requested protocol does not support selective retransmission. In another feature, the selected communication protocol supports transmission rate control while the requested protocol does not support transmission rate control.
244 Citations
50 Claims
-
1. A communication system for coupling to and enabling an application to communicate over a data network with a remote system, said communication system comprising:
-
a first module which interfaces with the application, said first module including a protocol selector;
a second module in communication with the first module, said second module implementing a communications protocol stack which enables the first module to communicate over the network with the remote system, said second module including a transport layer module implementing a plurality of selectable transport layer protocols for use in the communications protocol stack, wherein in response to the first module receiving a request to establish communication with the remote system using a first transport layer protocol, the protocol selector queries one or more sources of information about the remote system and based on results of that query selects one of the plurality of selectable transport layer protocols for establishing the requested communication with the remote system, wherein said selected transport layer protocol is a second transport layer protocol that is different from the first transport layer protocol if the query establishes that the remote system is accessible using the second transport layer protocol and even though the application is requesting to communicate with the remote system using the first transport layer protocol. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
an interpreter which during operation parses and interprets a request for information from the application; and
a means for determining if the requested information is stored in the prefetch buffer.
-
-
8. The communication system of claim 1 wherein the first transport layer protocol is TCP (Transmission Control Protocol).
-
9. The communication system of claim 1 wherein the second transport layer protocol is XTP (express Transport Protocol).
-
10. The communication system of claim 1 wherein the first transport layer protocol is TCP (Transmission Control Protocol) and the second transport layer protocol is XTP (express Transport Protocol).
-
11. The communication system of claim 1 wherein the first module comprises an in-table which is used to store the identity of a plurality of remote communication entities which are known to be accessible using the second transport layer protocol, and wherein the in-table is among the one or more sources of information which are queried by said protocol selector.
-
12. The communication system of claim 11 wherein the in-table stores an association between said plurality of remote communication entities which are known to be accessible using the second transport layer protocol and a second plurality of remote communication systems which are directly accessible using the second transport layer protocol and through which corresponding ones of said plurality of remote communication entities are accessible.
-
13. The communication system of claim 1 wherein the first module further comprises an out-table which is used to store the identity of a second plurality of remote servers which are known not to be accessible using the second transport layer protocol, and wherein the out-table is among the one or more sources of information which are queried by said protocol selector.
-
14. The communication system of claim 1 wherein the second module also implements a plurality of network layer protocols and wherein when the protocol selector selects one of the plurality of selectable transport layer protocols for establishing the requested communication with the remote system, it also selects a corresponding one of the plurality of network layer protocols, wherein not all of said plurality of transport layer protocols have the same network layer protocol corresponding thereto.
-
15. A method for communicating from an application to a remote system over a data network, said method comprising:
-
receiving a request from the application to communicate with the remote system using a first transport layer protocol;
querying one or more sources of information about the remote system, based on results of that query, selecting one of a plurality of selectable transport layer protocols for establishing the requested communication with the remote system, wherein said selected transport layer protocol is a second transport layer protocol that is different from the first transport layer protocol if the query establishes that the remote system is accessible using the second transport layer protocol and even though the application is requesting to communicate with the remote system using the first transport layer protocol; and
communicating with the remote system over the data network using the second transport layer protocol. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34)
prefetching information from the remote system prior to receiving a request for that information from the application; and
storing the prefetched information in a buffer.
-
-
21. The method of claim 20 further comprising:
-
determining if a subsequent request from the application for information from the remote system can be satisfied through prefetched data in the buffer; and
if it is determined that said subsequent request for information from the remote system can be satisfied through prefetched data in the buffer, retrieving relevant data from the buffer and sending it to the application.
-
-
22. The method of claim 15 wherein the first transport layer protocol is TCP (Transmission Control Protocol).
-
23. The method of claim 15 wherein the second transport layer protocol is XTP (express Transport Protocol).
-
24. The method of claim 15 wherein the first transport layer protocol is TCP (Transmission Control Protocol) and the second transport layer protocol is XTP (express Transport Protocol).
-
25. The method of claim 15 further comprising maintaining an in-table storing the identity of a first plurality of remote communicatioin entities which are known to be accessible using the second transport layer protocol, and wherein the step of querying one or more sources of information involves querying said in-table.
-
26. The method of claim 25 further comprising storing in said in-table an association between said plurality of remote communication entities which are known to be accessible using the second transport layer protocol and a second plurality of remote communication systems which are directly accessible using the second transport layer protocol and through which corresponding ones of said plurality of remote communication entities are accessible.
-
27. The method of claim 15 further comprising maintaining an out-table which is used to store the identity of a second plurality of remote servers which are known not to be accessible using the second transport layer protocol, and wherein the step of querying one or more sources of information involves querying said out-table.
-
30. The software of claim 27 wherein the second transport layer protocol supports selective retransmission and the first transport layer protocol does not support selective retransmission.
-
31. The software of claim 27 wherein the selected communication protocol supports transmission rate control and the first transport layer protocol does not support transmission rate control.
-
32. The software of claim 27 wherein said instructions further cause the computer to perform the functions of multiplexing information received from the application into a single outbound data stream for transmission to the remote system using the second transport layer protocol.
-
33. The software of claim 27 wherein said instructions further cause the computer to perform the functions of:
-
prefetching information from the remote system prior to receiving a request for that information from the application; and
storing the prefetched information in a buffer.
-
-
34. The software of claim 27 wherein said instructions further cause the computer to perform the functions of:
-
determining if a subsequent request from the application for information from the remote system can be satisfied through prefetched data in the buffer; and
if it is determined that said subsequent request for information from the remote system can be satisfied through prefetched data in the buffer, retrieving relevant data from the buffer and sending it to the application.
-
-
28. Software stored on a computer-readable medium, said software comprising instructions for causing a computer to perform the functions of:
-
receiving a request from the application to communicate with the remote system using a first transport layer protocol;
querying one or more sources of information about the remote system;
based on results of that query, selecting one of a plurality of selectable transport layer protocols for establishing the requested communication with the remote system, wherein said selected transport layer protocol is a second transport layer protocol that is different from the first transport layer protocol if the query establishes that the remote system is accessible using the second transport layer protocol and even though the application is requesting to communicate with the remote system using the first transport layer protocol; and
communicating with the remote system over the data network using the second transport layer protocol. - View Dependent Claims (29, 35, 36, 37, 38, 39, 40)
maintaining an in-table storing the identity of a first plurality of remote communication entities which are known to be accessible using the second transport layer protocol, and wherein the function of querying one or more sources of information involves querying said in-table.
-
-
39. The software of claim 38 wherein said instructions further cause the computer to perform the functions of storing in said in-table an association between said plurality of remote communication entities which are known to be accessible using the second transport layer protocol and a second plurality of remote communication systems which are directly accessible using the second transport layer protocol and through which corresponding ones of said plurality of remote communication entities are accessible.
-
40. The software of claim 28 wherein said instructions further cause the computer to perform the functions of:
maintaining an out-table which is used to store the identity of a second plurality of remote servers which are known not to be accessible using the second transport layer protocol, and wherein the function of querying one or more sources of information involves querying said out-table.
-
41. A server communication system for enabling a client communication system to couple over a data communication network to a one or more server applications, the server communication system comprising:
-
a transport layer module which during operation implements a plurality of transport layer protocols for communicating with the client communication system and the one or more server applications; and
a call handler module coupled to the transport layer module and configured (1) to establish a first transport layer communication stream between the sever communication system and the client communication system using a first one of said plurality of transport layer protocols, (2) to accept requests over the first communication stream from client communication system to communicate with a specified one of said one or more server applications, (3) to establish a second transport layer communication stream between the sever communication system and the specified server application using a second one of said plurality of transport layer protocols, and (4) to pass information between the client communication system and the specified server application over the first and second transport layer communication streams, wherein said first and second transport layer protocols are different and said first and second transport layer communication streams exist concurrently. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50)
-
Specification