Method and system for adaptively applying performance enhancing functions
Summary by NHIP
Adaptive VPN Performance Tuning
The method receives packets and establishes a VPN tunnel between peers before a proxy determines network characteristics like latency, round trip time, throughput, or available bandwidth. Based on these metrics, the system selectively creates a connection and adaptively applies performance enhancing functions to transport data over the tunnel.
Claim Score by NHIP
Abstract
An approach for adaptively providing network performance enhancing functions in a secure environment, such as a virtual private network, is disclosed. Traffic, for example, Internet Protocol (IP) packets, is received for transport over an access network (e.g., satellite network). Next, characteristics (e.g., latency) of the access network are determined. A connection (which supports the performance enhancing functions) is selectively established based on the determined characteristics for transport the received packets over the access network. An encrypted tunnel is provided over the established connection to transmit the received packets.

Term
Term ended
Expired 5 November 2024, 1.9 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
29 claims: 3 independent, 26 dependent
- 1A method for communicating in a secure environment, the method comprising:receiving a plurality of packets for transport over a network that includes a first Virtual Private Network (VPN) peer and a second VPN peer;establishing a VPN tunnel by the first VPN peer to the second VPN peer over the network;receiving, at a first performance enhancing proxying (PEP) peer, status information about the VPN tunnel from the first VPN peer;determining characteristics of the network;and selectively establishing, by the first PEP peer, a connection, based on the status information, to transport the received packets over the VPN tunnel to a second PEP peer, wherein the first PEP peer adaptively applies a PEP function to the connection to improve performance of the network according to the determined characteristics.
- 13A network device for supporting security in a communications network, the device comprising:a terminal having a communication interface configured to receive a plurality of packets for transport over the network;a Virtual Private Network (VPN) peer for establishing a VPN tunnel with another VPN peer over the network;means for determining characteristics of the network;a performance enhancing proxying (PEP) peer for receiving status information about the VPN tunnel from the VPN peer, wherein the PEP peer establishes a connection, based on the status information, to transport the received packets over the VPN tunnel to another PEP peer, wherein the PEP peer adaptively applies a PEP function to the connection to improve performance of the network according to the determined characteristics.
- 21Broadest claimClaim Score 60, broad(NHIP)A method for communicating within a virtual private network environment including an access network, the method comprising:establishing a Virtual Private Network (VPN) tunnel by a first VPN peer to a second VPN peer;receiving, at a first performance enhancing proxying (PEP) peer, status information about the VPN tunnel from the first VPN peer;determining characteristics of the access network;and establishing, by the first PEP peer, a connection to a second PEP peer over the access network according to a mechanism for enhancing performance of the network if the status information indicates that the VPN tunnel is up, wherein the connection is adaptively tuned based on the determined characteristics.
Independent claims3
169 paragraphs in 6 sections, as filed
RELATED APPLICATIONS
0001The present invention claims the benefit of priority under 35 U.S.C. § 119(e) of U.S. Provisional Patent Application Ser. No. 60/352,462 filed on Jan. 28, 2002 and U.S. Provisional Patent Application Ser. No. 60/392,943 filed on Jul. 1, 2002, the entire contents of both of which are hereby incorporated by reference.
FIELD OF THE INVENTION
0002The present invention relates to secure communications over a communications system, and more particularly to enhancing network performance in a Virtual Private Network (VPN) environment.
BACKGROUND OF THE INVENTION
0003Communications service providers face the continual task of designing high performance and secure networks. The emergence of Virtual Private Networks (VPNs) has provided network users with secure communications to their private network from remote sites. A private network is a network that allows multiple locations of a network to privately communicate; that is, to the exclusion of unauthorized users. In the past, private networks were implemented by using “leased line” communications circuits, as shown in <figref idref="DRAWINGS">FIG. 18</figref>. Private sites <b>1801</b>, <b>1803</b>, <b>1805</b>, <b>1807</b> are interconnected by leased lines <b>1809</b>, which are typically dedicated circuits supplied by a service provider. Within each of the sites <b>1801</b>, <b>1803</b>, <b>1805</b>, <b>1807</b>, multiple hosts are connected to the leased lines <b>1809</b> via a router. Security of the leased lines <b>1809</b> is ensured mainly by wire-tapping laws and the integrity of the service provider that supplies the leased lines.
0004By contrast, a virtual private network (VPN) permits an enterprise to communicate securely across a public network in such a way that the public network operates as one or more private communications links. <figref idref="DRAWINGS">FIG. 19</figref> is a diagram of a conventional VPN, in which multiple private network sites <b>1901</b>, <b>1903</b>, <b>1905</b>, <b>1907</b> are connected to a public network <b>1917</b>, such as the Internet or a carrier's Internet Protocol (IP) internetwork. The packets originating from one private network site to another are encrypted and often cryptographically authenticated to provide security. In particular, the packets that are forwarded from one individual site to another are encrypted and carried in the payload of one or more packets traversing the public network. This placing of packets within another packet is referred to as tunneling. A VPN tunnel refers to two sites that securely exchange packets with one another by carrying encrypted versions of those packets within other packets using an agreed upon set of encryption algorithms and keys. With respect to routing within the Virtual Private Network, a tunnel operates, in concept, like the leased lines of the private network of <figref idref="DRAWINGS">FIG. 18</figref>.
0005Each private network site <b>1901</b>, <b>1903</b>, <b>1905</b>, <b>1907</b> has a VPN server <b>1909</b>, <b>1911</b>, <b>1913</b>, <b>1915</b>, which performs the tunneling of VPN packets along with the associated cryptographic functions. A VPN client <b>1919</b> has the capability to establish a secure connection with any one of the VPN servers <b>1909</b>, <b>1911</b>, <b>1913</b>, <b>1915</b>.
0006Virtual private networks are attractive because the cost of one connection per site to a public network (which may be needed in order for the site's users to access hosts on the public network) is more economical than a leased line type connection into a private network. In addition, given today's security concerns, users are finding VPNs to be a reliable security solution, in large part, because VPN protocols (such as IPSEC) provide significantly higher security using advanced encryption technology than what is supplied by conventional private networks. VPN tunnels do not allow the service providers to view the packets within the VPN tunnel; in contrast, “leased line” service providers can examine the data carried over the leased line.
0007For interoperability reasons, private networks are often implemented using the TCP/IP (Transmission Control Protocol/Internet Protocol) protocol suite. However, this popular protocol suite possesses a number of drawbacks. The performance short-comings relate to the TCP protocol itself, which was designed during the infancy of data communications in which the data network were unreliable. These drawbacks include TCP Slow Start, TCP Connection Establishment, limited Maximum Window Size, Go-Back-N ARQ (Automatic Repeat Request), and Discarded Packet Congestion Control. TCP Slow Start is a congestion avoidance algorithm that limits TCP throughput on connections that have recently been established. TCP Connection Establishment has the drawback of requiring a full-round trip prior to allowing user data to flow. The default maximum window size (which is typically 64 KB) limits peak throughput of a TCP connection. The lost packet recovery algorithm uses a Go-Back-N scheme, which has significant negative performance impact when operating on a high-bandwidth delay connection. In addition, most TCP/IP networks handle congestion by discarding packets, which results in very inefficient Go-Back-N retransmissions; and the TCP implementations severely restrict their window sizes on discovering packet loss, thereby severely reduces throughput.
0008Furthermore, TCP operates relatively inefficiently, with respect to bandwidth utilization. These inefficiencies include Excessive ACK (Acknowledgement) Packets, and lack of compression. Most TCP implementations provide a TCP ACK for either every received TCP segment or for every other TCP received segment. The ACK traffic, thus, consumes a significant amount of bandwidth. Furthermore, because TCP does not provide data compression, greater bandwidth is needed. The above performance hindrances are particularly pronounced over high-bandwidth high-delay networks, such as geosynchronous communication satellite networks and over highly asymmetric networks.
0009In addition, given the diversity of network design, the characteristics (e.g., latency, throughput, utilization, etc.) of modern networks can vary significantly. These continually changing characteristics are difficult to track, in part, because network components are frequently updated and the networks are scaled to accommodate growth. Thus, with respect to a particular network, these characteristics are seldom taken into proper account, for example, during communication between hosts or network elements that are not apart of the particular network.
0010Accordingly, there is a clear need for improved approaches for enhancing the performance of private networks to support secure communications. There is also a need for an approach to adaptively provide performance enhancing functions. There is also a need to minimize development and implementation costs. There is also a further need to interoperate with existing standards and protocols.
SUMMARY OF THE INVENTION
0011The present invention addresses the above stated needs by providing an approach for integrating Virtual Private Network (VPN) and Performance Enhancing Proxying (PEP) functionalities, such that the PEP functions are adaptively applied. The PEP functions, as supported between two PEP peers (or end points) can be automatically tuned based on the characteristics (e.g., latency) of a particular network, or through explicit notifications. According to one embodiment of the present invention, a hub terminal can supply the explicit notifications relating to flow control to a remote terminal of a satellite network. A PEP peer can include any combination of the following components: a routing module, a firewall module, a buffer management module, an event management module, a parameter management module, a Transmission Control Protocol (TCP) spoofing kernel, a backbone protocol kernel, a prioritization kernel, a path selection kernel, a data compression kernel, and a data encryption kernel. The PEP peers can establish a PEP connection to support the PEP function. Additionally, the PEP connection can be carried over an encrypted tunnel (e.g., VPN tunnel). This approach advantageously supports secure communications, while enhancing network performance.
0012According to one aspect of the present invention, a method for adaptively providing performance enhancing functions in a secure environment is disclosed. The method includes receiving a plurality of packets for transport over a network. The method also includes determining characteristics of the network, and selectively establishing a connection, based on the determined characteristics, to transport the received packets over the network. The connection supports a performance enhancing mechanism to improve performance of the network. Further, the method includes providing of an encrypted tunnel over the established connection to transmit the received packets.
0013According to another aspect of the present invention, a network device for supporting security in a communications network is disclosed. The device includes a communication interface configured to receive a plurality of packets for transport over the network. Also, the device includes means for determining characteristics of the network, and means for selectively establishing a connection, based on the determined characteristics, to transport the received packets over the network. The connection supports a performance enhancing mechanism to improve performance of the network. The device further includes means for providing of an encrypted tunnel over the established connection to transmit the received packets.
0014According to yet another aspect of the present invention, a method for adaptively providing performance enhancing functions within a virtual private network environment including an access network is disclosed. The method includes determining characteristics of the access network. The method also includes establishing a connection to a peer over the access network according to a mechanism for enhancing performance of the network. The connection is tuned based on the determined characteristics, and the peer is configured to establish an encrypted tunnel over the connection.
0015Still other aspects, features, and advantages of the present invention are readily apparent from the following detailed description, simply by illustrating a number of particular embodiments and implementations, including the best mode contemplated for carrying out the present invention. The present invention is also capable of other and different embodiments, and its several details can be modified in various obvious respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawing and description are to be regarded as illustrative in nature, and not as restrictive.
BRIEF DESCRIPTION OF THE DRAWINGS
0016The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
0017<figref idref="DRAWINGS">FIG. 1</figref> is a diagram of Virtual Private Network (VPN) peers integrated with respective Performance Enhancing Proxying (PEP) peers, according to an embodiment of the present invention;
0018<figref idref="DRAWINGS">FIG. 2</figref> is a flowchart of a process for establishments of a PEP connection and VPN connection, according to an embodiment of the present invention;
0019<figref idref="DRAWINGS">FIG. 3</figref> is a diagram of an exemplary communications system capable of employing integrated VPN and PEP technologies, according to an embodiment of the present invention;
0020<figref idref="DRAWINGS">FIG. 4</figref> is a diagram of an exemplary access network utilized in the system of <figref idref="DRAWINGS">FIG. 3</figref>;
0021<figref idref="DRAWINGS">FIG. 5</figref> is a diagram of exemplary PEP functionality employed in the system of <figref idref="DRAWINGS">FIG. 1</figref>, according to one embodiment of the present invention;
0022<figref idref="DRAWINGS">FIG. 6</figref> is a diagram of exemplary PEP and VPN functionality integration in the system of <figref idref="DRAWINGS">FIG. 1</figref>, according to one embodiment of the present invention;
0023<figref idref="DRAWINGS">FIG. 7</figref> is a diagram of a system capable of deploying PEP functions, according to one embodiment of the present invention;
0024<figref idref="DRAWINGS">FIG. 8</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which the access terminal has integrated VPN and PEP functionalities and communicates with the Value-added VPN server, according to an embodiment of the present invention;
0025<figref idref="DRAWINGS">FIG. 9</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which the access terminal has integrated VPN and PEP functionalities and communicates with the VPN server and the PEP gateway, according to an embodiment of the present invention;
0026<figref idref="DRAWINGS">FIG. 10</figref> is a diagram of a communication system in which a VPN client resides in a host served by a terminal having an integrated PEP and VPN function for communication over an access network, according to various embodiment of the present invention;
0027<figref idref="DRAWINGS">FIG. 11</figref> is a diagram of a communication system in which VPN clients reside in multiple hosts served by a terminal having an integrated PEP and VPN function for communication over an access network, according to various embodiment of the present invention;
0028<figref idref="DRAWINGS">FIG. 12</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which the access terminal has integrated VPN and PEP functionalities and is capable of dynamically selecting PEP backbone connections, according to an embodiment of the present invention;
0029<figref idref="DRAWINGS">FIG. 13</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which a host has integrated VPN and PEP functionalities, according to an embodiment of the present invention;
0030<figref idref="DRAWINGS">FIG. 14</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which a host has integrated VPN and PEP functionalities with separate PEP and VPN driver bindings, according to an embodiment of the present invention;
0031<figref idref="DRAWINGS">FIG. 15</figref> is a diagram of a packet flow in the system of <figref idref="DRAWINGS">FIG. 14</figref>, according to an embodiment of the present invention;
0032<figref idref="DRAWINGS">FIG. 16</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which a host has integrated VPN and PEP functionalities and is capable of dynamically selecting PEP backbone connections, according to an embodiment of the present invention;
0033<figref idref="DRAWINGS">FIG. 17</figref> is a diagram of a computer system that can perform the various processes associated with providing integrated VPN and PEP functionalities, in accordance with an embodiment of the present invention;
0034<figref idref="DRAWINGS">FIG. 18</figref> is a diagram of a conventional private network employing commercial leased lines; and
0035<figref idref="DRAWINGS">FIG. 19</figref> is a diagram of a conventional virtual private network (VPN).
DESCRIPTION OF THE PREFERRED EMBODIMENT
0036A system, method, device, and software for providing integrated VPN and PEP components are described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It is apparent, however, to one skilled in the art that the present invention can be practiced without these specific details or with an equivalent arrangement. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
0037Although the various embodiments of the present invention are described with respect to an IP (Internet Protocol)-based network and a satellite network, it is recognized that other equivalent networks can be employed. In addition, it is contemplated that various network acceleration techniques, other than PEP functions, can be applied.
I. Integrated VPN and Network Acceleration
0038<figref idref="DRAWINGS">FIG. 1</figref> is a diagram of Virtual Private Network (VPN) peers integrated with respective Performance Enhancing Proxying (PEP) peers, according to an embodiment of the present invention. Enterprises, such as a large business or organization, rely on VPN technology for interconnecting multiple sites and hosts to their networks. Additionally, these enterprises may require use of specialized access networks, such as geosynchronous satellite networks, which can conveniently interconnect sites without much concern over geographic location or availability of terrestrial networking infrastructure. These enterprises further seek to obtain the benefits of the PEP mechanism, which are detailed below with respect to <figref idref="DRAWINGS">FIGS. 5 and 6</figref>. As noted previously, this goal cannot be readily realized with conventional configurations, in part, because the VPN technology encrypts the packets (including their headers), such that the PEP technology residing within the access network, for example, within its terminals and the access gateway, is no longer able to interpret or edit those packets.
0039An enterprise network <b>100</b>, according to one embodiment of the present invention, supports integration of PEP technology with VPN technology. In this example, private network site A of the enterprise network <b>100</b> includes a PEP peer (or end-point) <b>101</b> interacting with a VPN peer <b>103</b> to provide an integrated PEP and VPN function. The VPN peer <b>103</b> has a corresponding peer, VPN peer <b>105</b> within private network site B; similarly, a PEP peer <b>107</b> corresponds to the PEP peer <b>101</b> of the private network site A. As arranged, the PEP peers <b>101</b>, <b>107</b> have access to the packets prior to encryption by VPN peers <b>103</b>, <b>105</b> (as shown in <figref idref="DRAWINGS">FIG. 1</figref>). Alternatively, the PEP peers <b>101</b>, <b>107</b> can reside between the VPN peers <b>103</b>, <b>105</b>. As shown, PEP peer <b>101</b> and VPN peer <b>103</b> are situated within private network site A, while their respective peers are located at private network site B.
0040The VPN peers <b>103</b>, <b>105</b> “tunnel” the PEP connections <b>109</b>, <b>111</b> by establishing an encrypted tunnel <b>113</b> (e.g., VPN tunnel) to encrypt the private network packets carried by the PEP connections <b>109</b>,<b>111</b> over the access network <b>115</b> and a public network <b>117</b> (e.g., the Internet). The packets are completely protected in that they only appear in the clear within the customer's premises (at the private network sites A and B), and thus are not viewable by any network element between the VPN peers <b>103</b>, <b>105</b>, including the access network and public network providers.
0041As discussed, the PEP functionality (via the PEP peers <b>101</b>, <b>107</b>) can be implemented at the private network site “outside” of the VPN tunnel <b>113</b>, in accordance with an embodiment of the present invention. “Outside” in this context means that packets leaving the site are processed by the respective PEP peers <b>101</b>, <b>107</b> prior to being encrypted by the VPN peers <b>103</b>, <b>105</b> and that packets entering the site are processed by the PEP peer <b>101</b>, <b>107</b> after these packets have been decrypted by the VPN peers <b>103</b>, <b>105</b>.
0042The PEP peer to VPN tunnel routing is performed, in an exemplary embodiment, by a routing table, where this routing table identifies the VPN tunnel and its VPN peer's IP address and provides one or more IP address masks such that one of which matches the IP address of the PEP peer. This routing table thus is able to route PEP backbone packets through the appropriate tunnel to the PEP peer. Additionally, the routing information can be dynamically created as part of the VPN tunnel establishment or can be completely configured by an operator and loaded into the VPN peers <b>103</b>, <b>105</b> or adjusted by an operator directly via an operator interface or can be partially configured and the address masks dynamically learned by a routing protocol.
0043Fixed, “always on” connectivity can be supported by the enterprise network <b>100</b>, such that both the VPN connections and the PEP connection(s) <b>109</b>, <b>111</b> between the sites A and B are not torn down once established; that is, these connections are created when the PEP peers <b>101</b>, <b>107</b> and the VPN peers <b>103</b>, <b>105</b> are activated and are pinned-up so long as the PEP peers <b>101</b>, <b>107</b> and the VPN peers <b>103</b>, <b>105</b> are “ON” and are able to communicate with each other.
0044In the event of a network failure or the failure of one of the components <b>101</b>, <b>103</b>, <b>105</b>, <b>107</b>, which implements an end point of the VPN connection or PEP connection, the components <b>101</b>, <b>103</b>, <b>105</b>, <b>107</b> immediately and continuously attempt to bring back up the connections upon detection of the failure. Under this scenario, coordination between bringing up the VPN connection and the PEP connection is not strictly required, as these activities can be independent. However, attempting to bring up the PEP connection prior to the establishment of the VPN connection can waste processor resources and, potentially, network bandwidth resources, in that sending PEP messages to re-establish the PEP connection is futile until the VPN connection is established.
0045The integration of the PEP and VPN functionality, as provided by an embodiment of the present invention, minimizes waste of these resources. According to one embodiment of the present invention, the VPN function, as supported by the VPN peers <b>103</b>, <b>105</b>, provides status information to the PEP function (PEP peers <b>101</b>, <b>107</b>) whenever the state (e.g., connection up, or connection down) of the VPN connection changes. At startup, the PEP peers <b>101</b>, <b>107</b> do not attempt to bring up the PEP connections <b>109</b>, <b>111</b> until informed by the VPN peers <b>103</b>, <b>105</b> that the VPN connection has been successfully established. In addition, if the VPN connection fails, for example, because communication between the two sites A and B is interrupted by a network failure (either in the access network <b>115</b> or the public network <b>117</b>), the PEP peers <b>101</b>, <b>107</b> bring down the PEP connections <b>109</b>, <b>111</b> when the VPN peers <b>103</b>, <b>105</b> provides notification of the VPN connection failure. In addition to preventing waste of resources by futile attempts to send PEP messages, this approach also allows the PEP function to gracefully terminate any TCP connections being carried by the PEP connections <b>109</b>, <b>111</b>. Without this integration of the PEP and VPN functionality, termination would be delayed, whereby a user's applications may be suspended until a PEP connection timeout occurs, signaling the detection of the failed communication path.
0046As shown, the private network site B can utilize a firewall <b>119</b> that is integrated with the PEP peer <b>107</b>. Irrespective of whether the site B behaves as a VPN client or server, it is recognized that the PEP functionality needs to be situated between the VPN peer <b>105</b> and the firewall <b>119</b>, thereby ensuring that the firewall <b>119</b> can access the unencrypted data. This arrangement also permits the firewall <b>119</b> to have access to the data after the packet has been restored back to native TCP so that the firewall <b>119</b> can properly provide access control checking on the restored TCP connections and packets. Specifically, the firewall <b>119</b> controls the types of packets entering and leaving the PEP peer <b>101</b>, using a number of methods, including packet filtering, proxy service, and stateful inspection, for example. The firewall <b>119</b> can apply various filters, which can be based on IP address, domain name, communication protocol, and port, for example.
0047It is noted that fixed, “always on” connectivity can be provided for administrative or resource reasons, such that it is desirable for the PEP connection <b>109</b>, <b>111</b> to not be “always on,” even though the VPN connection is “always on.” An exemplary scenario in which such an arrangement is desirable is shown in <figref idref="DRAWINGS">FIG. 4</figref> and involves a Very Small Aperture Terminal (VSAT) satellite network with a hub terminal (or hub site) that supports thousands (or even hundreds of thousands) of remote terminals (or remote sites). Permanent PEP connections between the hub site and all of the remote sites require sufficient resources at the hub site to support all of these PEP connections at the same time. However, a remote site may only be active (i.e., passing traffic across the network) at different times and only some of the time. In such a case, it is desirable (e.g., for cost reasons) to limit the resources required for PEP connections at the hub site to only sufficient resources to support the maximum number of remote sites that may be active at the same time. In support of this requirement, the PEP function, as performed by the PEP peers <b>101</b>, <b>107</b>, supports the ability to bring up the PEP connection when triggered by the need to carry a TCP connection (session or stream) between the two sites over a secure (or encrypted) tunnel, as described below in <figref idref="DRAWINGS">FIG. 2</figref>.
0048<figref idref="DRAWINGS">FIG. 2</figref> shows a flowchart of a process for establishments of a PEP connection and VPN connection, according to an embodiment of the present invention. It is noted that network acceleration can be performed without the need for a secure environment. That is, not every PEP connection has to be carried over a VPN tunnel. In step <b>201</b>, a determination is made whether a particular PEP connection is supported over a VPN connection by consulting, for example, a routing table. Use of the routing table is more fully described later with respect to <figref idref="DRAWINGS">FIG. 12</figref>. With the integration of the PEP function and VPN function provided by an embodiment of the present invention, the PEP function, prior to actually attempting to bring up the PEP connection, checks the current status of the VPN connection, as in step <b>203</b>. Next, the PEP peer <b>101</b>, <b>107</b> determines whether a VPN connection exists (step <b>205</b>). If no VPN connection exists, then the PEP peer <b>101</b>, <b>107</b> waits for notification from the VPN <b>103</b>, <b>105</b> that a successful VPN connection has been established (step <b>207</b>). If the VPN connection is up, the PEP connection is established, per step <b>209</b>.
0049Continuing with the example of a VSAT network, if a remote is not always active, the likely scenario is a desire to also not have the VPN connection active when it is not needed since VPN connections also consume network and computing resources. In support of this option, the present invention, according to one embodiment, also includes the capability for the PEP function to trigger the setting up of the VPN connection, similar to the way traffic triggers the setting up of the PEP connection. The network <b>100</b>, in an exemplary embodiment, has the capability to selectively configure the VPN peers <b>103</b>, <b>105</b> and the PEP peers <b>101</b>, <b>107</b> to support a permanent VPN connection and/or a permanent PEP connection. It is noted that a permanent PEP connection cannot be truly permanent unless the VPN connection is permanent. Configuring the PEP connection as permanent, however, even when the VPN connection is not permanent allows the network <b>100</b> to effectively implement the capability of the PEP function to be triggered by the VPN function. Therefore, if no VPN connection exists, then, per step <b>207</b>, the PEP peer <b>101</b>, <b>107</b> waits for the VPN peer <b>103</b>, <b>105</b> to notify it of the success or failure of VPN connection establishment via a status query mechanism; when the VPN connection is successfully established, the PEP function proceeds to establish the PEP connection. In other words, for example, the VPN peer <b>103</b> can communicate status information to the PEP peer <b>101</b> continually (on an automatic basis) or upon submission of a query by the PEP peer <b>101</b>. This flexibility advantageously permits the service provider to trade the cost of the infrastructure required to support permanent VPN and PEP connections against the potential increase in service revenue possible by providing the permanent connections to eliminate the initial latency experienced by the user when the user first becomes active.
0050When a PEP connection <b>109</b>, <b>111</b> is not ready when user traffic starts, either because the PEP connection <b>109</b>, <b>111</b> is not permanent or because the PEP function is waiting for the VPN connection to establish, the network <b>100</b> can make use of the PEP functionality, for example, to spoof the TCP three-way handshake, if desired. Accordingly, this mechanism prevents a host (e.g., user's PC (Personal Computer) or other client, such as a Personal Digital Assistant (PDA)) from timing out, while the VPN (if necessary) and PEP connections are being established.
0051<figref idref="DRAWINGS">FIG. 3</figref> is a diagram of a communications system capable of employing integrated VPN and PEP technologies, according to an embodiment of the present invention. As seen in the figure, a host <b>301</b> attaches to a local network <b>303</b>, which has connectivity to a terminal <b>305</b>. The terminal <b>305</b> serves an access terminal to an access network <b>307</b>. A gateway <b>309</b> exists to connect the access network <b>307</b> to the Internet <b>311</b> (or any public packet switched network). The Internet supports a server <b>313</b>, which can be a web server, for example.
0052A VPN server <b>315</b>, which provides VPN functionalities, communicates with a performance enhancing proxying (PEP) gateway <b>317</b>. The VPN server <b>315</b> can support multiple VPN tunnels; typically, one tunnel is employed per private network site. In an exemplary embodiment, the VPN server <b>315</b> can be integrated with a router to connect to the Internet <b>311</b> for routing packets across one or more VPN tunnels over the Internet <b>311</b>.
0053The PEP gateway <b>317</b> has connectivity to an intranet <b>319</b>, in which a server <b>321</b> is a part of the network <b>319</b>. Additionally, a value-added VPN server <b>323</b> supports one or more value-added services, such as PEP, quality-of-service (QoS), policy control, etc., as detailed with respect to <figref idref="DRAWINGS">FIG. 8</figref>. The value-added VPN server <b>323</b> is attached to an intranet <b>325</b>, which has a server <b>327</b> storing content that may be of interest to the host <b>301</b>.
0054In addition, a variety of host-to-host connectivity configurations can be supported by the system of <figref idref="DRAWINGS">FIG. 3</figref>, for example, including VPN and PEP functionality in each host; VPN and PEP functionality in the terminals in front of each host; and VPN and PEP functionality in one host and in the terminal of the other host. As will be explained more fully in <figref idref="DRAWINGS">FIGS. 7-16</figref>, the PEP function and the VPN function can be implemented in numerous ways among the network elements.
0055The PEP gateway <b>317</b> and the VPN server <b>315</b> can support PEP and VPN connections that are not “always on.” For example, a “hot spot” access point (e.g., a wireless local area network <b>328</b>), provided as a service in public areas such as airport lobbies, libraries, etc., can be used by a mobile host <b>329</b> (e.g., user's PC or other client) to login in across the access network <b>307</b> to the user's company intranet <b>319</b> to retrieve information from the server <b>321</b>. Connectivity to the access point can be wireless. In such a case, security can be provided from the mobile host <b>329</b> back to the company intranet <b>319</b>. Because the user's traffic is exposed by the wireless network (<b>328</b>), security cannot just be provided from the access point to the intranet <b>319</b>. And, even in the case of a wired connection, because the access point is located in a public place, the user has no assurance that the “wire” is not tapped or otherwise compromised. However, because the mobile host <b>329</b> can be equipped with VPN functionality, the communication is secured, irrespective of whether the access is wired or wireless.
0056By integrating the PEP function and the VPN function, the present invention, according to one embodiment, can employ the PEP function into the mobile host <b>329</b> (e.g., PC, PDA, etc.), essentially external to the VPN connection. Under this arrangement, the user's traffic remains secure, as the PEP function does not need to expose the user traffic to gain the benefit of VPN functionality.
0057In this environment, both the VPN and PEP connections will not be permanent, by definition. The integration of the PEP function and the VPN function provides several options for configuring the method used to establish the PEP and VPN connections. One method, which is consistent with how VPN connections are traditionally established, involves the user explicitly requesting that the VPN connection be established, for example, by starting up the VPN client on the mobile host <b>329</b>. According to one embodiment of the present invention, this functionality is extended to also bring up the PEP connection after the VPN connection has been established, as explained earlier with respect to <figref idref="DRAWINGS">FIG. 2</figref>.
0058An alternative method of establishing the PEP and VPN connections involves the user generating traffic to automatically invoke the PEP function as to trigger the creation of the VPN connection and the PEP connection. Conventionally, this approach is not viable because the user's connection will time out while waiting for the VPN connection to establish. The TCP connection spoofing provided by the PEP function according to an embodiment of the present invention, however, will keep the TCP connection from timing out while the VPN and PEP connections are established.
0059Exemplary VPN standards include IPSEC (IP Security Protocol), Layer 2 Tunneling Protocol (L2TP), and Point-to-Point Tunneling Protocol (PPTP). IPSEC is a standard for Virtual Private Networking, which has been developed by the Internet Engineering Task Force (IETF) and has been endorsed by many industry experts as providing a high level of security. The IPSEC protocol encompasses a number of standards and Request for Comments (RFCs) by the Internet Engineering Task Force (IETF). For instance, these RFCs include RFC 2401-2411 and 2451 (which are incorporated herein by reference in their entireties). Notably, IPSEC introduces new headers between the IP header and the Transmission Control Protocol (or User Datagram Protocol): an Authentication header (AH), and an Encapsulating Security Payload (ESP). The high level of security stems, for example, from the fact a network service provider is not able to view the data and other encryption protocol standards are less mature (i.e., have not been well studied or tested).
II. Satellite Access Network
0060<figref idref="DRAWINGS">FIG. 4</figref> is a diagram of an exemplary access network utilized in the system of <figref idref="DRAWINGS">FIG. 3</figref>. An access network <b>307</b> provides individual hosts <b>405</b> (of which only a single host is shown) or whole sites with connectivity to a public network <b>409</b> (and the hosts <b>411</b> accessible on that network), such as the Internet. It is recognized that when the access network <b>307</b> is configured as a wireless network, the network <b>307</b> provides direct communication from terminal to terminal, but typically routes data destined for the public network <b>409</b> through a gateway-type device. In the case of a VSAT system, the access network <b>307</b> provides connectivity via a satellite <b>401</b> between a remote terminal <b>403</b> and a hub terminal <b>407</b>. The hub terminal <b>407</b>, in this example, serves as a gateway to the public network <b>409</b>.
0061Under this satellite environment, use of the integrated PEP and VPN functions permits a PEP connection to be “always on” to minimize the impact of the latency of the network <b>307</b>, even though no VPN connection is established (as discussed earlier).
0062The network <b>307</b> can be implemented as other wireless systems (e.g., radio networks, cellular networks, etc.). For example, the network <b>307</b> can be a third generation mobile phone system; in this scenario, host <b>405</b>, which executes a TCP/IP stack to access the public network <b>309</b> can be integrated with the terminal <b>403</b>. Alternatively, a local area network (not shown) can provide connectivity for one or more hosts <b>405</b> to the terminal <b>403</b>.
0063Furthermore, the host <b>405</b>, according to another embodiment of the present invention, can be connected to the terminal <b>403</b> via a peripheral interface such as a Universal Serial Bus (USB) interface or an RS-232 interface in a manner that the terminal <b>403</b> is a peripheral of the host <b>405</b>.
0064The access network <b>307</b>, in an exemplary embodiment, supports internetworking using the TCP/IP stack. Given the many drawbacks that inhere in TCP, a Performance Enhancing Proxying (PEP) mechanism is utilized to reduce or minimize these drawbacks, particularly in a satellite communication system.
III. Network Acceleration Functions
0065<figref idref="DRAWINGS">FIG. 5</figref> is a diagram of exemplary PEP functionality employed in the system of <figref idref="DRAWINGS">FIG. 1</figref>, according to one embodiment of the present invention. In this embodiment, the PEP peer <b>101</b> (as well as the PEP peer <b>107</b> of <figref idref="DRAWINGS">FIG. 1</figref>) is implemented, for example, in a platform environment, which includes the hardware and software operating system. The PEP peer <b>101</b> uses a network interface <b>501</b> to exchange TCP packets with the host <b>301</b> (<figref idref="DRAWINGS">FIG. 3</figref>). Also, the PEP peer <b>101</b> utilizes the interface <b>503</b> to establish and maintain backbone connections, for instance, with the value-added VPN server <b>323</b> via the VPN peer <b>103</b>. The PEP peer <b>101</b> uses the network interface <b>501</b> to exchange TCP packets with the host <b>301</b> (<figref idref="DRAWINGS">FIG. 3</figref>). Also, the PEP peer <b>101</b> utilizes the VPN interface <b>503</b> to establish and maintain backbone connections, for instance, with the value-added VPN server <b>323</b> via the VPN peer <b>103</b>. The PEP peer <b>101</b> can be deployed strictly as a software (or firmware) module, encompassing some or all of the following components, which are detailed below: a routing module <b>505</b>, a buffer management module <b>507</b>, an event management module <b>509</b>, a parameter management module <b>511</b>, a TCP spoofing kernel <b>513</b>, a backbone protocol kernel <b>515</b>, a prioritization kernel <b>517</b>, a path selection kernel <b>519</b>, and a data compression kernel <b>521</b>.
0066The PEP peer <b>101</b> intercepts a TCP connection's packet and locally acknowledges that packet and then transports the packet to its PEP peer <b>107</b> via a protocol which is designed in such a way as to overcome and/or reduce the limitations of conventional TCP/IP networks. The optimized protocol is referred to as a “backbone protocol” and a “backbone connection” (or PEP connection) refers to this protocol connecting a pair of PEP peers <b>101</b>, <b>107</b>. As used herein, “backbone” connection denotes a PEP connection over an access network (e.g., network <b>307</b>) that can serve as a backbone network; however, because a PEP connection can be established between PEP peers <b>101</b>, <b>107</b> over any type of network, the term “PEP connection” is used synonymously with “PEP backbone connection” or “backbone connection.”
0067The optimized protocol can be a protocol that resembles TCP, but which relaxes TCP's performance inhibitors, such as TCP slow start, default small window size, and frequent sending of acknowledgement packets. This approach is detailed in U.S. Pat. No. 6,161,141 to Dillon, entitled “Network System with TCP/IP protocol Spoofing,” which is incorporated herein in its entirety. In such a case, each TCP connection corresponds to a single PEP backbone connection.
0068Alternatively the optimized protocol can differ from TCP and include capabilities not present in TCP, such as compression, selective retransmission and etc. In this arrangement, a single PEP backbone connection can be assigned to each TCP connection, or a single backbone connection can multiplex data from multiple TCP connections.
0069Under certain circumstances, more than one backbone connection exists between two PEP peers and is used to prioritize TCP connections so that higher-priority TCP connections can receive a preferred throughput or response time quality of service compared to lower-priority connections. Optimization of PEP connections that traverse different types of networks can be achieved via configuration or via dynamic determination of network characteristics, such as latency and maximum throughput, by the PEP peers <b>101</b>, <b>107</b>.
0070A. Automatic Tuning to Network Characteristics
0071According to an embodiment of the present invention, the PEP functions of the PEP peers (or end points) <b>101</b>, <b>107</b> can be performed adaptively. As noted, the performance of PEP is controlled by several parameters, including backbone protocol window size, TCP window size, ACK delay and retransmission delay. These parameters can be configured in advance. However, if multiple connections are to be supported, the memory is shared between the connections. The memory can either be statically allocated to a pre-configured maximum number of connections, or dynamically allocated to connections as needed. For the purposes of explanation, the adaptive capability of the PEP functions is described with respect to window sizes. Window size determines maximum throughput and is dependent on the available memory in the end points.
0072Dynamic allocation is more complex and can potentially lead to over-commitment of resources and loss of data. The ACK delay helps to reduce the number of acknowledgements and thus the bandwidth required for acknowledgements. However, increasing the delay increases the end-to-end latency. The retransmission delay depends on queue latency and end-to-end latency and helps to determine when the link has failed. If it is too large, the application will seem slow when packets are lost because of the long period before retransmission. However, the delay should be of sufficient duration to account for the end-to-end latency including the ACK delay.
0073If the PEP peers <b>101</b>, <b>107</b> are implemented in a well-defined network, e.g., a satellite network of <figref idref="DRAWINGS">FIG. 4</figref> with a fairly static number of hosts or users at each end point, the PEP parameters can be calculated and statically configured. That is, since the channel throughput and approximate number of users is known, the expected number of connections can be estimated and the window size can be calculated and configured. The network latency is known and so the ACK delay and retransmission interval can be calculated.
0074If PEP is implemented in a (mobile) host or in the end point of a network with unknown delay and unknown throughput, it may be difficult to configure the PEP parameters. It is particularly hard to pre-configure delay parameters if the delay is unknown and may be highly variable; e.g., in a mobile host that is used at different times on satellite networks and terrestrial networks. Therefore, in this scenario the parameters need to be controlled automatically by the end point based on measurements of the network, or explicit notifications from the network. The algorithm needs to know the throughput and round trip time (RTT). RTT can be estimated, for example, at connection start up or constantly monitored throughout the connection. Throughput can be estimated by the user or measured and then parameters adjusted.
0075Alternatively, if the network can indicate RTT and throughput (or bandwidth) through a Quality-of-Service (QoS) indication, these can be used to configure the parameters. An appropriate protocol can be implemented to allow the PEP peer <b>101</b> to query the network for information about the communication path, for example, RTT and throughput. If the network supports this protocol, it responds. Otherwise the PEP peer <b>101</b> will not receive a response and so falls back to a default configuration after some timeout expires.
0076After an initial value is determined, the RTT can be estimated during data transfer by a number of methods. The most recent RTT estimate can be used to adjust PEP parameters as necessary, e.g. increase the window as RTT increases.
0077The PEP peer <b>101</b> starts with an estimation of throughput—either based on explicit notification from the network in the response message, or based on a default value, or a user controlled value, e.g. when the user knows the configuration of the network. The transmitter can probe to see if the available throughput is higher than the current estimate, i.e., try to push more data. If congestion occurs, e.g. the actual bandwidth is lower, or the network indicates congestion; the transmitter “shrinks” its backbone connection window. This is similar to the operation of TCP, which uses a mechanism called “multiplicative decrease.” If data is lost, it assumes this is due to congestion and it reduces its window (congestion window) by half.
0078Alternatively receiver based tuning can be performed to enhance the network performance. The receiver can control the PEP backbone protocol receive window. Again the window is initially set based on either explicit notification from the network in the response message, or based on a default value, or a user controlled value. The receiver can increase the window in an attempt to increase throughput and shrink the window it if congestion is detected. The receiver can use information provided by the network, e.g., queue latency indication from the network as implemented in a satellite gateway, or explicit congestion notification (ECN) from network routers. IETF RFC 2481, which is incorporated herein by reference in its entirety, describes a technique for adding Explicit Congestion Notification (ECN) to IP, whereby routers set a bit called Congestion Encountered (CE) in the Type Of Service (TOS)/Differentiated Services (DS) field of the IP header to indicate congestion. This can be forwarded on to the receiver by routers in the network.
0079It may be advantageous to have the receiver perform congestion control rather than the transmitter. In certain network configurations, there may not be a path back to the transmitter; e.g., one-way or asymmetric networks. In a VPN environment, there may be a security issue where the server side might not accept information from the network. With explicit congestion notification (ECN), the receiver may have a better indication of congestion than the transmitter. It is recognized that the receiver should pass the indication back to the transmitter, but clearly the receiver has the better view. Different PEP peers may be running different versions of software with various functions, such that the transmitter might not support these functions.
0080The selection of receiver based tuning or transmitter based tuning can be negotiated by the PEP peers <b>101</b>, <b>107</b> when the PEP connection is established. Each PEP peer <b>101</b> can indicate whether it has access to congestion information to help decide. Depending on the network, the PEP peers <b>101</b>, <b>107</b> could use the methods concurrently, singly, or in combination.
0081The above tuning operation as described focuses on the window sizes. However other parameters such as ACK delay and retransmission delay could also be tuned as necessary based on the estimation of RTT and detection of congestion.
0082While various embodiments of the present invention have been explained with respect to the TCP protocol, other protocols can similarly have their performance or efficiency improved by a suitable PEP. Another protocol that can be “PEPed” for performance improvement is the Point-to-Point Protocol (PPP) (with the performance enhancement of its connection establishment) when operating over IP via protocols such as the Point-to-Point Tunneling Protocol (PPTP) and the Layer 2 Tunneling Protocol (L2TP). Compression, in particular, is applicable to many protocols. Accordingly, the various embodiments of the present invention are not limited to TCP PEP. Moreover, it is noted that the advantages of PEP, and network acceleration in general, stems from the recognition that the network acceleration technique needs to be “outside” of the VPN tunnel.
0083For example, in the system of <figref idref="DRAWINGS">FIG. 3</figref>, if the terminal <b>305</b> includes the PEP and VPN functionality, the terminal <b>305</b> establishes TCP connections with the IP host <b>301</b>, via the network interface <b>501</b>, and can establish backbone connection(s) with the value-added VPN server <b>323</b> via the network interface <b>503</b>. The PEP peer platform environment <b>101</b> also can include general functional modules, such as routing module <b>505</b>, buffer management module <b>507</b>, event management module <b>509</b>, and parameter management module <b>511</b>.
0084As illustrated in <figref idref="DRAWINGS">FIG. 5</figref>, the PEP peer <b>101</b> also includes a TCP spoofing kernel <b>513</b>, a backbone protocol kernel <b>515</b>, a prioritization kernel <b>517</b>, and a path selection kernel <b>519</b>. These four kernels constitute the basic functionalities of the PEP peers <b>101</b>, <b>107</b>.
0085Although not shown, the PEP peer <b>101</b> performs a number of functions beyond the modules and kernels shown, such as shielding the various PEP kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b> from implementation specific constraints. That is, the PEP peer <b>101</b> performs functions that the various PEP kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b> cannot perform directly because the implementation of the function is platform specific. This arrangement has the advantageous effect of hiding platform specific details from the PEP kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b>, making the PEP kernels more portable.
0086An example of a platform specific function is the allocation of a buffer. In some platforms, buffers are created as they are needed, while in other platforms, buffers are created at start-up and organized into linked lists for later use. It is noted that platform specific functions are not limited to functions generic to all of the kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b>. A function specific to a particular kernel, for example, the allocation of a control block for TCP spoofing, can also be implemented in the PEP peer platform environment <b>101</b> to hide platform specific details from the kernel.
0087Additionally, the PEP peer <b>101</b> can provide the task context in which the PEP kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b> run. In one exemplary embodiment, all PEP kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b> can run in the same task context for efficiency. However, this is not required.
0088Furthermore, the PEP peer platform environment <b>101</b>, in an exemplary embodiment, provides an interface between the PEP functionality (embodied in kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b>) and the other functionality of the network components. The PEP peer platform environment <b>101</b> can provide the interface between the PEP functionality and the routing module <b>505</b>, as seen in <figref idref="DRAWINGS">FIG. 5</figref>. It is noted that the platform specific functions illustrated in <figref idref="DRAWINGS">FIG. 5</figref> are examples and are not considered an exhaustive list. It is further noted that the PEP kernels shown adjacent to each other (<b>513</b>, <b>515</b> and <b>517</b>, <b>519</b>) in <figref idref="DRAWINGS">FIG. 5</figref> can have a direct procedural interface to each other. Further, the kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b> can include direct interfaces to improve performance, as opposed to routing everything through the PEP peer platform environment <b>101</b>. In addition to the PEP kernels <b>513</b>, <b>515</b>, <b>517</b>, and <b>519</b>, the PEP peer <b>101</b> can utilize a data compression kernel <b>521</b> to improve bandwidth efficiency. These kernels <b>513</b>, <b>515</b>, <b>517</b>, <b>519</b>, and <b>521</b>, as described above, facilitate communication between the two groups of hosts, by performing a variety of performance enhancing functions, either singly or in combination. These performance enhancing functions include selective TCP spoofing, three-way handshake spoofing, local data acknowledgement, TCP connection to backbone connection multiplexing, data compression/encryption, prioritization, and path selection. Selective TCP Spoofing is performed by the TCP spoofing kernel <b>513</b> and includes a set of user configurable rules that are used to determine which TCP connections should be spoofed.
0089B. TCP Spoofing
0090Selective TCP spoofing improves performance by not tying up TCP spoofing-related resources, such as buffer space, control blocks, etc., for TCP connections for which the user has determined that spoofing is not beneficial or required and by supporting the use of tailored parameters for TCP connections that are spoofed.
0091In particular, the TCP spoofing kernel <b>513</b> discriminates among the various TCP connections based on the applications using them. That is, TCP spoofing kernel <b>513</b> discriminates among these TCP connections to determine which connection should be spoofed as well as the manner in which the connection is spoofed; e.g., whether to spoof the three-way handshake, the particular timeout parameters for the spoofed connections, etc. TCP spoofing is then performed only for those TCP connections that are associated with applications for which high throughput or reduced connection startup latency (or both) is required. As a result, the TCP spoofing kernel <b>513</b> conserves TCP spoofing resources for only those TCP connections for which high throughput or reduced connection startup latency (or both) is required. Further, the TCP spoofing kernel <b>513</b> increases the total number of TCP connections which can be active before running out of TCP spoofing resources, since any active TCP connections which do not require high throughput are not allocated resources.
0092One criterion for identifying TCP connections of applications for which TCP spoofing should and should not be performed is the TCP port number field contained in the TCP packets being sent. In general, unique port numbers are assigned to each type of application. Which TCP port numbers should and should not be spoofed can be stored in the TCP spoofing kernel <b>513</b>. The TCP spoofing kernel <b>513</b> is also re-configurable to allow a user or operator to reconfigure the TCP port numbers which should and should not be spoofed. The TCP spoofing kernel <b>513</b> also permits a user or operator to control which TCP connections are to be spoofed based on other criteria. In general, a decision on whether to spoof a TCP connection can be based on any field within a TCP packet. The TCP spoofing kernel <b>513</b> permits a user to specify which fields to examine and which values in these fields identify TCP connections that should or should not be spoofed. Another example of a potential use for this capability is for the user or operator to select the IP address of the TCP packet in order to control for which users TCP spoofing is performed. The TCP spoofing kernel <b>513</b> also permits a user to look at multiple fields at the same time. As a result, the TCP spoofing kernel <b>513</b> permits a user or operator to use multiple criteria for selecting TCP connections to spoof. For example, by selecting both the IP address and the TCP port number fields, the system operator can enable TCP spoofing for only specific applications from specific users.
0093The user configurable rules can include five exemplary criteria which can be specified by the user or operator in producing a selective TCP spoofing rule: Destination IP address; Source IP address; TCP port numbers (which can apply to both the TCP destination and source port numbers); TCP options; and IP type of service (TOS)/differentiated services (DS) field. However, as indicated above, other fields within the TCP packet can be used.
0094As discussed above, in addition to supporting selective TCP spoofing rules for each of these criterion, AND and OR combination operators can be used to link criteria together. For example, using the AND combination operator, a rule can be defined to disable TCP spoofing for FTP data received from a specific host. Also, the order in which the rules are specified can be significant. It is possible for a connection to match the criteria of multiple rules. Therefore, the TCP spoofing kernel <b>513</b> can apply rules in the order specified by the operator, taking the action of the first rule that matches. A default rule can also be set which defines the action to be taken for TCP connections which do not match any of the defined rules. The set of rules selected by the operator can be defined in a selective TCP spoofing selection profile.
0095As an example, assuming sufficient buffer space has been allocated to spoof five TCP connections, if four low speed applications (i.e., applications which, by their nature, do not require high speed) bring up connections along with one high speed application, the high speed connection has access to only ⅕ of the available spoofing buffer space. Further, if five low speed connections are brought up before the high speed connection, the high speed connection cannot be spoofed at all. Using the TCP spoofing kernel <b>513</b> selective spoofing mechanism, the low speed connections are not allocated any spoofing buffer space. Therefore, the high speed connection always has access to all of the buffer space, improving its performance with respect to an implementation without the selective TCP spoofing feature of the TCP spoofing kernel <b>513</b>.
0096The TCP spoofing kernel <b>513</b> also facilitates spoofing of the connection establishment three-way handshake. Three-Way Handshake Spoofing involves locally responding to a connection request to bring up a TCP connection in parallel with forwarding the connection requests across a backbone link through the VPN tunnel <b>113</b>. This allows the originating IP host (for example, <b>301</b>) to reach the point of being able to send the data it must send at local speeds, i.e., speeds that are independent of the latency of the backbone link. Three-way Handshake Spoofing allows the data that the IP host <b>301</b> needs to send to be sent to the destination IP host (e.g. the server <b>327</b>) without waiting for the end-to-end establishment of the TCP connection. For backbone links with high latency, this significantly reduces the time it takes to bring up the TCP connection and, more importantly, the overall time it takes to get a response (from an IP host) to the data the IP host <b>301</b> sends.
0097A specific example in which this technique is useful relates to an Internet web page access application. With three-way handshake spoofing, an IP host's request to retrieve a web page can be on its way to a web server (e.g., the server <b>327</b>) without waiting for the end-to-end establishment of the TCP connection, thereby reducing the time it takes to download the web page.
0098With Local Data Acknowledgement, the TCP spoofing kernel <b>513</b> locally acknowledges data segments received from the IP host <b>301</b>. This allows the sending IP host <b>301</b> to send additional data immediately. More importantly, TCP uses received acknowledgements as signals for increasing the current TCP window size. As a result, local sending of the acknowledgements allows the sending IP host <b>301</b> to increase it TCP window at a much faster rate than supported by end to end TCP acknowledgements. The TCP spoofing kernel <b>513</b> (e.g., the spoofer) takes on the responsibility for reliable delivery of the data that it has acknowledged.
0099In the backbone protocol kernel <b>515</b>, multiple TCP connections are multiplexed onto and carried by a single backbone connection. This improves system performance by allowing the data for multiple TCP connections to be acknowledged by a single backbone connection acknowledgement (ACK), significantly reducing the amount of acknowledgement traffic required to maintain high throughput across the backbone link. In addition, the backbone protocol kernel <b>515</b> selects a backbone connection protocol that is optimized to provide high throughput for the particular link. Different backbone connection protocols can be used by the backbone protocol kernel <b>515</b> with different backbone links without changing the fundamental TCP spoofing implementation. The backbone connection protocol selected by the backbone protocol kernel <b>515</b> provides appropriate support for reliable, high speed delivery of data over the backbone link, hiding the details of the impairments (for example high latency) of the link from the TCP spoofing implementation.
0100The multiplexing by the backbone protocol kernel <b>515</b> allows for the use of a backbone link protocol which is individually tailored for use with the particular link and provides a technique to leverage the performance of the backbone link protocol with much less dependency upon the individual performance of the TCP connections being spoofed than conventional methods. Further, the ability to tailor the backbone protocol for different backbone links makes the present invention applicable to many different systems.
0101The PEP peer <b>101</b> can optionally include a data compression kernel <b>521</b> for compressing TCP data, which advantageously increases the amount of data that can be carried across the backbone connection. Different compression algorithms can be supported by the data compression kernel <b>521</b> and more than one type of compression can be supported at the same time. The data compression kernel <b>521</b> can optionally apply compression on a per TCP connection basis, before the TCP data of multiple TCP connections is multiplexed onto the backbone connection or on a per backbone connection basis, after the TCP data of multiple TCP connections has been multiplexed onto the backbone connection. Which option is used is dynamically determined based on user configured rules and the specific compression algorithms being utilized. Exemplary data compression algorithms are disclosed in U.S. Pat. Nos. 5,973,630, and 5,955,976, the entire contents of which are hereby incorporated by reference.
0000C. Connection Prioritization
0102The prioritization kernel <b>517</b> provides prioritized access to the backbone link capacity. For example, the backbone connection can actually be divided into N (N>1) different sub-connections, each having a different priority level. In one exemplary embodiment, four priority levels can be supported. The prioritization kernel <b>517</b> uses user-defined rules to assign different priorities, and therefore different sub-connections of the backbone connection, to different TCP connections. It should be noted that prioritization kernel <b>517</b> can also prioritize non-TCP traffic (e.g., UDP (User Datagram Protocol) traffic) before sending the traffic across the backbone link.
0103The prioritization kernel <b>517</b> also uses user-defined rules to control how much of the backbone link capacity is available to each priority level. According to one embodiment of the present invention, multiple PEP backbone connections can be utilized and respectively mapped to different priority levels by the prioritization kernel <b>517</b>. Exemplary criteria which can be used to determine priority include the following: Destination IP address; Source IP address; IP protocol; TCP port numbers (which can apply to both the TCP destination and source port numbers); UDP port numbers (which can apply to both the UDP destination and source port numbers); and IP type of service (TOS)/differentiated services (DS) field. The type of data in the UDP or TCP data packets can also be used as a criterion. For example, video data could be given highest priority. Mission critical data could also be given high priority. As with selective TCP spoofing, any field in the IP packet can be used by prioritization kernel <b>517</b> to determine priority.
0104As mentioned above, in addition to supporting selective prioritization rules for each of these criteria, AND and OR combination operators can be used to link criteria together. For example, using the AND combination operator, a rule can be defined to assign a priority for SNMP data received from a specific host. Also, the order in which the rules are specified can be significant. It is possible for a connection to match the criteria of multiple rules. Therefore, the prioritization kernel <b>517</b> can apply rules in the order specified by the operator, taking the action of the first rule that matches. A default rule can also be set which defines the action to be taken for IP packets which do not match any of the defined rules. The set of rules selected by the operator can be defined in a prioritization profile.
0105For prioritization to operate effectively with the VPN function, information regarding prioritization of a packet needs to be visible to the terminal <b>305</b> (<figref idref="DRAWINGS">FIG. 3</figref>), as the terminal <b>305</b> is responsible for scheduling that packet's transmission across the access network <b>307</b>. In one embodiment of the present invention, the PEP peer <b>101</b> provides an indication of the priority of a backbone connection to the VPN peer <b>103</b> so that the VPN peer <b>103</b> can encode this priority information in the unencrypted header of the backbone's tunneled packets. This approach allows the terminal <b>305</b> to determine the priority of the packets and to honor this prioritization when forwarding the packets across the access network <b>307</b>. In an exemplary embodiment, the prioritization is encoded in the Type Of Service (TOS) bits of the backbone packet's IP header field. IETF RFCs <b>1340</b> and <b>1349</b>, which are incorporated herein in their entireties, provide details regarding how prioritization can be encoded in this field. The VPN peer <b>103</b> copies a packet's TOS field into the tunneled packet's outer, unencrypted IP header's TOS field, thereby making the prioritization available to the terminal <b>305</b> in a standards-compliant fashion.
0106Alternatively, the DS field can be used to capture prioritization information. Differentiated Services functions are more fully described in IETF RFCs <b>2475</b> and <b>2474</b>, which are incorporated herein in their entireties.
0107In regards to the path selection functionality, the path selection kernel <b>519</b> is responsible for determining which path an IP packet should take to reach its destination. The path selected by the path selection kernel <b>519</b> can be determined by applying path selection rules. The path selection kernel <b>519</b> also determines which IP packets should be forwarded using an alternate path and which IP packets should be dropped when one or more primary paths fail. Path selection parameters can also be configured using profiles. The path selection rules can be designed to provide flexibility with respect to assigning paths while making sure that all of the packets related to the same traffic flow (e.g., the same TCP connection) take the same path (although it is also possible to send segments of the same TCP connection via different paths, this segment “splitting” can have negative side effects). Exemplary criteria that can be used to select a path include the following: priority of the IP packet as set by the prioritization kernel <b>517</b> (should be the most common criterion); Destination IP address; Source IP address; IP protocol; TCP port numbers (which can apply to both the TCP destination and source port numbers); UDP port numbers (which can apply to both the UDP destination and source port numbers); and IP type of service (TOS)/differentiated services (DS) field. Similar to selective TCP spoofing and prioritization, the path selection kernel <b>517</b> can determine a path by using any field in the IP packet.
0108As with the prioritization criteria (rules) the AND and OR combination operators can be used to link criteria together. For example, using the AND combination operator, a rule can be defined to select a path for SNMP data received from a specific host. Also, the order in which the rules are specified can be significant. It is possible for a connection to match the criteria of multiple rules. Therefore, the path selection kernel <b>519</b> can apply rules in the order specified by the operator, taking the action of the first rule that matches. A default rule can also be set which defines the action to be taken for IP packets which do not match any of the defined rules. The set of rules selected by the operator can be defined in a path selection profile.
0109By way of example, a path selection rule can select the path based on any of the following path information in which IP packets match the rule: a primary path, a secondary path, and a tertiary path. The primary path is be specified in any path selection rule. The secondary path is used only when the primary path has failed. If no secondary path is specified, any IP packets that match the rule can be discarded when the primary path fails. The tertiary path is specified only if a secondary path is specified. The tertiary path is selected if both the primary and secondary paths have failed. If no tertiary path is specified, any IP packets that match the rule can be discarded when both the primary and secondary paths fail. Path selection can be generalized such that the path selection rule can select up to N paths where the Nth path is used only if the (N−1)th path fails. The example above where N=3 is merely illustrative, although N is typically a fairly small number.
0110By way of example, the operation of the system of <figref idref="DRAWINGS">FIG. 1</figref> is described as follows. First, a backbone connection is established between the PEPs <b>101</b>, <b>107</b> of two network sites (i.e., the two spoofers), located at each end of the backbone link for which TCP spoofing is desired. Whenever an IP host <b>301</b> initiates a TCP connection, the TCP spoofing kernel <b>513</b> of the PEP peer <b>101</b> local to the respective IP host checks its configured selective TCP spoofing rules. If the rules indicate that the connection should not be spoofed, the PEP peer <b>101</b> allows the TCP connection to flow end-to-end unspoofed. If the rules indicate that the connection should be spoofed, the spoofing PEP peer <b>101</b> locally responds to the IP host's TCP three-way handshake. In parallel, the spoofing PEP peer <b>101</b> sends a message across the backbone link to its peer <b>107</b> asking it to initiate a TCP three-way handshake with the other IP host on its side of the backbone link. Data is then exchanged between the IP hosts with the PEP peer <b>101</b> locally acknowledging the received data and forwarding it across the backbone link via the high speed backbone connection, compressing the data as appropriate based on the configured compression rules. The priority of the TCP connection is determined when the connection is established. The backbone protocol kernel <b>515</b> can multiplex the connection with other received connections over a single backbone connection, the prioritization kernel <b>517</b> determines the priority of the connection and the path selection kernel <b>519</b> determines the path the connection is to take.
0111The PEP peer <b>101</b>, as described above, advantageously, improves network performance by allocating TCP spoofing-related resources, such as buffer space, control blocks, etc., only to TCP connections for which spoofing is beneficial; by spoofing the three-way handshake to decrease data response time; by reducing the number of ACKs which are transmitted by performing local acknowledgement and by acknowledging multiple TCP connections with a single ACK; by performing data compression to increase the amount of data that can be transmitted; by assigning priorities to different connections; and by defining multiple paths for connections to be made. Further details of the operation of the PEP peer <b>101</b> is described in co-pending U.S. patent application filed on Jul. 12, 2001 (Ser. No. 09/903,832), entitled “Method and System for Improving Network Performance Using a Performance Enhancing Proxy Architecture.”
0112As mentioned previously, in addition to PEP functionalities, other network acceleration techniques can also be integrated with VPN. For example, a different proxy architecture supports HyperText Transfer Protocol (HTTP) prefetching, Domain Name Service (DNS) caching, and Layer 4 (L4) switching to improve user response time. To appreciate these network acceleration techniques, it is instructive to describe the operation of web content retrieval.
0113Web pages are formatted according to the Hypertext Markup Language (HTML) standard which provides for the display of high-quality text (including control over the location, size, color and font for the text), the display of graphics within the page and the “linking” from one page to another, possibly stored on a different web server. The host <b>301</b>, for example, is loaded with a web browser (e.g., MICROSOFT Internet Explorer, NETSCAPE Navigator) to access the web pages that are resident on a web server <b>313</b>; collectively the web pages and the web server <b>313</b> denote a “web site.” A terminal <b>305</b> may be provided to increase system performance by supporting such functions as HyperText Transfer Protocol (HTTP) proxying and Domain Name Service (DNS) proxying. HTTP is an application level protocol that is employed for information transfer over the Internet <b>311</b>. RFC (Request for Comment) <b>2618</b> specifies this protocol and is incorporated herein in its entirety. As with PEP, these proxies are executed in the clear.
0114The user enters or specifies a URL to the web browser of the host <b>301</b>, which in turn requests a URL from the web server <b>313</b>. The host <b>301</b> may need to retrieve an Internet Protocol (IP) address corresponding to a domain name of the URL from a domain name service (DNS) server <b>117</b>. Such a domain name lookup conventionally requires a traversal of the access network <b>307</b> which introduces additional delay. The web server <b>313</b> returns an HTML page, which contains numerous embedded objects (i.e., web content), to the web browser.
0115Upon receiving the HTML page, the web browser parses the page to retrieve each embedded object. The retrieval process requires the establishment of separate communication sessions (e.g., TCP (Transmission Control Protocol) connections) to the web server. That is, after an embedded object is received, the TCP connection is torn down and another TCP session is established for the next object. Given the richness of the content of web pages, it is not uncommon for a web page to possess over <b>30</b> embedded objects; thereby consuming a substantial amount of network resources, but more significantly, introduces delay to the user. The establishment of the TCP connection takes one access network <b>307</b> round trip traversal and then the requesting of the URL and receiving its response takes another round trip traversal. Delay is of a particular concern in the system <b>100</b> if the access network <b>307</b>, in an exemplary embodiment, is a satellite network, in that the network latency of the satellite network is conventionally longer than terrestrial networks. To minimize such delay, the system <b>100</b> supports HTTP proxying and/or DNS proxying.
0116The web browser of the host <b>301</b> may be configured to either access URLs directly from the web server <b>313</b> or from the terminal <b>305</b>, which acts as a HTTP proxy. As discussed above, a URL specifies an address of an “object” in the Internet <b>311</b> by explicitly indicating the method of accessing the resource.
0117The terminal <b>305</b> acts as an intermediary between one or more browsers and many web servers (e.g., server <b>313</b>). The web browser requests a URL from the terminal <b>305</b> which in turn “gets” the URL from the addressed web server <b>313</b>. When the browser is configured to access URLs via a terminal <b>305</b>, the browser does not need to perform a DNS lookup of the URL's web server because it is requesting the URL from the proxy server and need only be able to contact the proxy server. The terminal <b>305</b> can cache the most frequently accessed URLs. When the web server <b>313</b> delivers a URL to the terminal <b>305</b>, the web server <b>313</b> may deliver along with the URL an indication of whether the URL should not be cached and an indication of when the URL was last modified.
0118Under this non-PEP network acceleration scheme, the terminal <b>305</b> supports two proxy agents: a HTTP Proxy and a DNS proxy, and can include a Layer 4 (LA) switch. As used herein, Layer 4 refers to the transport layer of the OSI (Open Systems Interconnection) model; it is recognized, however, that Layer 4 may denote any equivalent protocol. The DNS Proxy receives and processes DNS requests. The DNS Proxy handles identically such requests whether they come directly from a client or transparently via the L4 switch. When the DNS Proxy receives a request, the DNS Proxy looks up the domain name in its cache. If the DNS proxy is unable to service the request from this DNS cache, the DNS Proxy sends out a DNS request to the configured DNS server (not shown) and provides the response to the requestor (e.g., host <b>301</b>). The DNS proxy then updates the entry in the cache.
0119Further, the terminal <b>305</b> utilizes, in an exemplary embodiment, a TCP/IP stack as well as a network address translation (NAT) function layer. The NAT layer provides address translation between a private network (i.e., a stub domain), such as a local area network (LAN) <b>303</b>, and a public network, such as the Internet <b>311</b>. Address translation is necessary when the LAN <b>303</b> utilizes unregistered IP addresses, for example. The NAT functions are detailed in Internet Engineering Task Force (IETF) Request for Comment (RFC) <b>1631</b>, entitled “The IP Network Address Translator (NAT),” which is incorporated herein by reference in its entirety.
0120The Layer 4 switch function, which can be included in a LAN driver (e.g., Ethernet driver), routes all domain name server lookups (i.e., DNS requests) and HTTP requests traversing the driver up through the stack to their respective proxies. The Layer 4 switch function identifies these requests by examining the port number of the packets, and modifies the addresses and ports to redirect the request packets to the appropriate proxy. It performs a similar function of modifying packet address and port fields of response packets from the proxies to route those responses back to the browser. To accomplish this, the Layer 4 switch function also maintains the TCP connection control block. This operation by the Layer 4 switch function is more fully described in U.S. Provisional Patent Application entitled “Transparent Proxying Enhancement” (Ser. No. 60/271,405), which is incorporated herein by reference in its entirety.
0121<figref idref="DRAWINGS">FIG. 6</figref> is a diagram of the PEP and VPN functionality integration of <figref idref="DRAWINGS">FIG. 1</figref>, according to one embodiment of the present invention. The PEP peer <b>101</b> that has connectivity to the PEP peer <b>107</b> via a backbone connection <b>535</b><i>a </i>and <b>535</b><i>b </i>over encrypted tunnel <b>113</b> provided by VPN peers <b>103</b> and <b>105</b>. By way of example, PEP peers <b>101</b> and <b>107</b> handle IP packets. PEP peer <b>101</b> includes an internal IP packet routing module <b>505</b><i>a </i>that receives local IP packets <b>525</b><i>a </i>and exchanges these packets with a TCP spoofing kernel <b>513</b><i>a </i>and a backbone protocol kernel <b>515</b><i>a</i>. Similarly, the remote PEP peer <b>107</b> includes an internal IP packet routing module <b>505</b><i>b </i>that is in communication with a TCP spoofing kernel <b>513</b><i>b </i>and a backbone protocol kernel <b>515</b><i>b. </i>
0122For traffic from the host <b>301</b> destined for the access network <b>307</b> (i.e., egress traffic), the PEP peer <b>101</b> receives IP packets <b>525</b><i>a </i>from its network interface <b>501</b>. Non-TCP IP packets can be forwarded (as appropriate) to the interface <b>503</b>. TCP segments <b>527</b><i>a </i>are internally forwarded to TCP spoofing kernel <b>513</b><i>a</i>. TCP segments <b>529</b><i>a </i>which belong to connections that are not to be spoofed are passed back by the spoofing kernel <b>513</b><i>a </i>to the routing module <b>505</b><i>a </i>to be forwarded unmodified to the interface <b>503</b>. For spoofed TCP connections, the TCP spoofing kernel <b>513</b><i>a </i>locally terminates the TCP connection. TCP data <b>531</b><i>a </i>that is received from a spoofed connection is passed from the spoofing kernel <b>513</b><i>a </i>to the backbone protocol kernel <b>515</b><i>a</i>, and then multiplexed data <b>533</b><i>a </i>is provided onto the appropriate backbone protocol connection. The backbone protocol kernel <b>515</b><i>a </i>ensures that the data <b>533</b><i>a </i>is delivered across the access network <b>307</b> as IP packets <b>535</b><i>a </i>via the VPN peer <b>103</b>.
0123For traffic from the access network <b>307</b> (ingress traffic), the PEP peer <b>107</b> receives IP packets from its interface <b>503</b>. IP packets that are not addressed to the end point <b>107</b> are simply forwarded (as appropriate) to the network interface <b>501</b>. IP packets <b>535</b><i>b </i>addressed to the end point <b>107</b>, which have a protocol header type of “PBP” (PEP Backbone Protocol) are forwarded as data <b>533</b><i>b </i>to the backbone protocol kernel <b>515</b><i>b</i>. The backbone protocol kernel <b>515</b><i>b </i>extracts the TCP data and forwards the extracted data <b>531</b><i>b </i>to the TCP spoofing kernel <b>513</b><i>b </i>for transmission as data <b>527</b><i>b </i>on the appropriate spoofed TCP connection. In addition to carrying TCP data, the backbone protocol connection is used by the TCP spoofing kernel <b>513</b><i>a </i>to send control information to its peer TCP spoofing kernel <b>513</b><i>b </i>in the remote PEP peer <b>107</b> to coordinate connection establishment and connection termination.
0124Prioritization “P” can be applied at four points in the system of <figref idref="DRAWINGS">FIG. 6</figref> within routing module <b>505</b><i>a </i>and TCP spoofing kernel <b>513</b><i>a </i>of PEP peer <b>101</b>, and within routing module <b>505</b><i>b</i>, and TCP spoofing kernel <b>513</b><i>b </i>of PEP peer <b>107</b>. With egress traffic, priority rules are applied to the packets of individual TCP connections at the entry point to the TCP spoofing kernel <b>513</b><i>a</i>. These rules allow a user (e.g., customer) to control which spoofed applications have higher and lower priority access to spoofing resources. Egress prioritization is also applied before forwarding packets to the access network <b>307</b>. This allows a customer to control the relative priority of spoofed TCP connections with respect to unspoofed TCP connections and non-TCP traffic (as well as to control the relative priority of these other types of traffic with respect to each other). On the ingress side, prioritization is used to control access to buffer space and other resources in the PEP peer <b>107</b>, generally and with respect to TCP spoofing. The PEP peers <b>101</b> and <b>107</b> and the corresponding VPN functions <b>103</b> and <b>105</b> can be implemented at various components within the system of <figref idref="DRAWINGS">FIG. 3</figref>, according to various embodiments.
0125The architecture of <figref idref="DRAWINGS">FIGS. 5 and 6</figref> provides a number of advantages. First, TCP spoofing can be accomplished for both ingress and egress traffic. Additionally, the system supports spoofing of TCP connection startup, and selective TCP spoofing with only connections that can benefit from spoofing actually spoofed. Further, the system enables prioritization among spoofed TCP connections for access to TCP spoofing resources (e.g., available bandwidth and buffer space). This prioritization is utilized for all types of traffic that compete for system resources.
0126With respect to the backbone connection, the system is suitable for application to a satellite network as the WAN (shown in <figref idref="DRAWINGS">FIG. 4</figref>). That is, the backbone protocol is optimized for satellite use in that control block resource requirements are minimized, and efficient error recovery for dropped packets are provided. The system also provides a feedback mechanism to support maximum buffer space resource efficiency. Further, the system provides reduced acknowledgement traffic by using a single backbone protocol ACK to acknowledge the data of multiple TCP connections.
0127As previously described with respect to <figref idref="DRAWINGS">FIG. 1</figref>, a pair of PEP peers <b>101</b>, <b>107</b> can be located at the edge of a network that requires enhancement in performance and/or efficiency. These PEP peers <b>101</b>, <b>107</b> can be located in devices or network elements in such a way that they can intercept a TCP connection's packets, as illustrated below in <figref idref="DRAWINGS">FIG. 7</figref>.
0128<figref idref="DRAWINGS">FIG. 7</figref> is a diagram of a system capable of deploying PEP functions, according to one embodiment of the present invention. PEP functionality, as shown, can be deployed in a number of network elements. In this scenario, a terminal <b>701</b> supports PEP functions in communicating over an access network <b>703</b> to a PEP peer within a gateway <b>705</b>. The PEP function of the gateway <b>705</b> can also interact with a PEP function within a host <b>707</b> that interfaces with a terminal <b>709</b> for access to the network <b>703</b>. Additionally, the PEP function can reside in a terminal <b>711</b>, which serves the host <b>713</b>. In this manner, the PEP peers within the network elements <b>701</b>, <b>707</b>, <b>711</b> can establish PEP connections (i.e., PEP backbone connections) to the gateway <b>705</b>, which permits access to the Internet <b>715</b>. For example, the host <b>713</b> can retrieve information from server <b>717</b> (e.g., web server) over the PEP connection between the PEP peers within the terminal <b>711</b> and the gateway <b>705</b> with minimal delay over the access network <b>703</b>.
0129Likewise, hosts <b>719</b>, which are connected via a local network <b>721</b>, can access the web server <b>717</b> off the Internet <b>715</b> without great impact from the latency of the access network <b>703</b> over the PEP connection established by the terminal <b>701</b> to the gateway <b>705</b>. The PEP peer within the terminal is transparent to the local network <b>721</b>, and thus, the hosts <b>719</b>.
IV. Exemplary VPN and PEP Configurations
0130<figref idref="DRAWINGS">FIG. 8</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which the access terminal has integrated VPN and PEP functionalities and communicates with the Value-added VPN server, according to an embodiment of the present invention. To implement PEP, the PEP function requires access to the packets to be “PEPed”, that is, the packets that will be transported over the PEP connection, for example, to traverse the access network <b>307</b>. Also, to properly provide VPN capability, the VPN peers need access to the packets that are to be tunneled and encrypted. Accordingly, in one embodiment, the terminal <b>305</b> includes the PEP and VPN functions, which have the required access to all the packets. The access terminal <b>305</b> includes integrated PEP and VPN peer components and connects to the access network <b>307</b> to the access gateway <b>309</b> to a communications network <b>311</b>, such as the Internet.
0131According to one embodiment of the present invention, the system of <figref idref="DRAWINGS">FIG. 8</figref> can include an intelligent access client (e.g., as deployed in the terminal <b>305</b>) and an intelligent access gateway <b>309</b> to support the integrated VPN and PEP services in the access network <b>307</b>, which can be a satellite system (e.g., INMARSAT®). For example, the intelligent access client can be configured to perform TCP, PEP, and ITU (International Telecommunications Union) V.44 compression. The intelligent access client can be hosted by any number of computing devices, such as desktop PC, laptop, Personal Digital Assistant (PDA), cellular phone, IEEE 802.11 client, web appliance, etc.
0132Similarly, the intelligent access gateway <b>309</b> can be configured to support TCP, PEP, and ITU V.44 compression (as shown in <figref idref="DRAWINGS">FIG. 12</figref>). The gateway <b>309</b> can also provide load sharing and 1:N redundancy for high availability. Further, the gateway <b>309</b> can interface with a Gateway GPRS (General Packet Radio Service) Serving/Support Node (GGSN) via the Gi interface.
0133The terminal <b>305</b>, for example, a VSAT terminal, can be equipped with PEP and VPN peers to provide network performance enhancements and security. The terminal <b>305</b> is attached to a local network <b>303</b> that serves a host <b>301</b>, which executes a client application (e.g., web browser). One or more PEP backbone connections between the PEP peer of the terminal <b>305</b> and the PEP peer of the Value-added VPN server <b>323</b> allow TCP connections and their VPN data to be carried efficiently and with good performance across the access network <b>307</b> and the Internet <b>311</b>.
0134When a TCP connection is routed through the terminal, the terminal <b>305</b> passes its packets through the PEP peer where its data is carried by a PEP backbone connection. The packets carried over the PEP backbone connection are then passed through the VPN peer which tunnels and encrypts the packets. Optionally, the VPN peer can provide packet authentication to protect against tampering by applying headers to the IP packet.
0135The VPN peer within the terminal <b>305</b> decrypts (and optionally authenticates) tunneled packets coming across the access network <b>307</b> and transmits these packets, which are now in the “clear,” to the PEP peer, which then implements the backbone protocol and converts the packets back into TCP. The terminal <b>305</b> then passes the reconstituted TCP frames to the host <b>301</b> on the local network <b>303</b>.
0136Under this example, the Value-added VPN server <b>323</b> includes the ability to perform PEP and VPN functions, such that traffic from the host <b>301</b> can securely access the server <b>327</b> off the intranet <b>325</b>. To implement the value added service, the PEP function within the server <b>323</b> maintains routing information that maps TCP connections to PEP peers and then to map PEP backbone connections to the appropriate VPN tunnel. As described in <figref idref="DRAWINGS">FIG. 3</figref>, the PEP peer to VPN tunnel routing can be performed based on a routing table, which can be dynamically created or loaded into the Value-added VPN server <b>323</b>. Alternatively, routing can be integrated where there is either one or no peers for each VPN tunnel, and the selection of the VPN tunnel implicitly selects the PEP peer. Under this approach, the integrated routing can either be configured completely or dynamically learned via PEP peer discovery (e.g., by the PEP backbone connection establishment) or by a routing protocol.
0137In another example of how the PEP and VPN functions can be implemented, a PEP connection and associated VPN tunnel can be established between the host <b>301</b> and the server <b>321</b> within the intranet <b>319</b>, as described below.
0138<figref idref="DRAWINGS">FIG. 9</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which the access terminal has integrated VPN and PEP functionalities and communicates with the VPN server and the PEP gateway, according to an embodiment of the present invention. Under this scenario, secure communications is supported by the VPN peer within the terminal <b>305</b> and the VPN server <b>315</b>. A VPN tunnel is established between the terminal <b>305</b> and the VPN server <b>315</b>. The client application within the host <b>301</b> generates traffic over the local network <b>303</b> to the terminal <b>305</b>, which compresses and encrypts the traffic based on the PEP and VPN functions. This encrypted traffic is transported across the access network <b>307</b> to the Internet <b>311</b> via the gateway <b>309</b>. At this point, the VPN server <b>315</b> decrypts the traffic from the host <b>301</b> and forwards the packets to the PEP gateway <b>317</b>, which communicates with the intranet <b>319</b> on which the destination server <b>321</b> resides.
0139As stated, a variety of host-to-host connectivity configurations can be supported.
0140<figref idref="DRAWINGS">FIGS. 10 and 11</figref> show diagrams of communication systems in which one or more VPN clients communicate with a terminal having VPN and PEP functions, according to various embodiment of the present invention. In some cases, it may be desirable to not implement the PEP function in the user's host; accordingly only the VPN function without the PEP function is loaded in the host, as shown in <figref idref="DRAWINGS">FIGS. 10 and 11</figref>. For instance, if the host <b>301</b> lacks sufficient memory or processing power to support both PEP and VPN functionality, then installing only the VPN peer in the host <b>301</b>, while the PEP function resides in the terminal <b>305</b> will not likely impact the security and performance advantages of the system. Assuming the access network <b>307</b> poses the potential bottleneck in the system, situating the PEP peers to encompass this network <b>307</b> will provide the greatest performance gain. As discussed previously, the users' do not want to expose their traffic on the local network <b>303</b> (for example, because it is a publicly accessible wireless LAN or because the “wire” might be tapped). Consequently, a segmented VPN connection can be utilized, such that the PEP function is applied in between the segments. In other words, under this arrangement, the VPN connection is considered “segmented” across a PEP connection and a non-PEP connection (i.e., standard TCP connection). For example, the VPN client in the host <b>301</b> establishes a VPN tunnel with the VPN peer in the terminal <b>305</b>, while the PEP peer in the terminal <b>305</b> operates in conjunction with the PEP peer in the gateway <b>309</b> over the access network <b>307</b>. The access network <b>307</b>, as discussed earlier, can be a VSAT satellite network, which is inherently secure. The VPN peer of the gateway <b>309</b> communicates with the VPN server <b>315</b> over a secure tunnel that is independent from the VPN segment between the host <b>301</b> and the terminal <b>305</b>.The above segmented approach can be applied to multiple hosts <b>301</b>, <b>331</b> (as shown in <figref idref="DRAWINGS">FIG. 11</figref>) in which multiple VPN connections can share one or more PEP connection across the access network <b>307</b> to communicate with the same intranet <b>319</b>. Separate VPN connections are established between the access terminal <b>305</b> and each host <b>301</b>, <b>331</b>. Also, a PEP connection and VPN connection are established between the access terminal <b>305</b> and the VPN server <b>315</b> and the PEP gateway <b>317</b> on the other side of the access network <b>307</b>. Traffic received from the hosts <b>301</b>, <b>331</b> by the terminal <b>305</b> via the VPN connections to the hosts <b>301</b>, <b>331</b> is passed through the PEP function of the terminal <b>305</b> and then fed into the VPN connection to the VPN peer of the VPN server <b>315</b> on the other side of the access network <b>307</b>. Subsequently, the decrypted traffic out of the VPN server <b>315</b> is transmitted to the PEP function of the PEP gateway <b>317</b>.
0141On the VPN server side of the access network <b>307</b>, the segmentation can also be used, for example, to allow the access network <b>307</b> provided to host the PEP function for cost and scalability reasons. This aspect of an embodiment of the present invention provides great flexibility for supporting configurations in which the integrated PEP and VPN cannot be, or is desirable to not be, “pushed out” to the very edge of the network paths (which are protected by VPN functionality).
0142The above concept can be extended to support any number of segments, allowing different or differently tuned and configured PEP functions to be used for different parts of the secured path.
0143<figref idref="DRAWINGS">FIG. 12</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which the access terminal has integrated VPN and PEP functionalities and is capable of dynamically selecting PEP backbone connections, according to an embodiment of the present invention. As noted, the mapping of TCP connections to a PEP peer can be performed by a routing table (shown as “R”). In this example, the terminal <b>305</b> maintains the routing table, which identifies the PEP peer's IP address and contains one or more IP address masks in such a way that a destination IP address of a TCP connection matches one or more of the IP address masks. Accordingly, the TCP connection can be routed to the appropriate PEP peer. The routing information in this table may be either statically configured or dynamically created as PEP peers are “discovered,” and VPN tunnels and PEP backbone connections are created to the peers.
0144The routing within the terminal <b>305</b> is integrated such that there is one VPN peer (e.g., VPN server <b>315</b> and Value-added VPN server <b>323</b>) for each VPN tunnel and the selection of the VPN tunnel implicitly selects the PEP peer (i.e., gateway <b>309</b>, PEP gateway <b>317</b>, and PEP peer in the Value-added VPN server <b>323</b>). The integrated routing can either be configured completely or dynamically learned via PEP peer discovery (typically by the PEP backbone connection establishment) or by a routing protocol. In this example, the client application in the host <b>301</b> can generate traffic that take a number of paths <b>1201</b>, <b>1203</b>, <b>1205</b>, according to the needs of the application. In one scenario, the host <b>301</b> seeks to communicate with the server <b>313</b> (e.g., web server) within the Internet; in this case, the terminal <b>305</b> elects to route the traffic over the path <b>1201</b> using only the PEP function, without the VPN function, based on the routing table. However, when the host being accessed is local to an intranet and only reachable via VPN, the terminal <b>305</b> can invoke its VPN peer in support of communication with the servers <b>321</b>, <b>327</b> within the respective intranets <b>319</b>, <b>325</b> over the paths <b>1203</b> and <b>1205</b>. The capability to select the particular PEP backbone connection allows the terminal <b>305</b> to both allow its hosts (e.g., <b>301</b>) to reach hosts (e.g., server <b>313</b>) on the Internet <b>311</b> and to securely reach hosts (e.g., servers <b>321</b>, <b>327</b>) within various intranets <b>319</b>, <b>325</b>.
0145<figref idref="DRAWINGS">FIG. 13</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which a host has integrated VPN and PEP functionalities, according to an embodiment of the present invention. For example, the host <b>301</b> includes a client application <b>1301</b> above a TCP/IP stack <b>1303</b>; further, a VPN driver <b>1305</b>, which provides a PEP peer <b>1305</b><i>a </i>and a VPN peer <b>1305</b><i>b</i>. Also, the host <b>301</b> utilizes LAN driver <b>1307</b> to interface with the local network <b>303</b>.
0146The VPN driver <b>1305</b> executes the necessary protocols to create the VPN tunnels. These protocols include the following: Carrier protocol, Encapsulating protocol, and Passenger protocol. The carrier protocol is specific to the network that is transporting the packets. The Encapsulating protocol can include, for example, Generic Routing Encapsulation (GRE), IPSec, PPTP, and L2TP. Lastly, the Passenger protocol is the protocol of the data that is being transported, such as IP.
0147The above configuration supports both the PEP function and the VPN function within the VPN driver. However, in another embodiment of the present invention, the PEP function can be implemented as a separate driver, as shown in <figref idref="DRAWINGS">FIG. 14</figref>.
0148<figref idref="DRAWINGS">FIG. 14</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which a host has integrated VPN and PEP functionalities with separate PEP and VPN driver bindings, according to an embodiment of the present invention. The host <b>301</b>, in this instance, includes a PEP driver <b>1401</b> that is separate from a VPN driver <b>1403</b>. As with the system of <figref idref="DRAWINGS">FIG. 13</figref>, the host <b>301</b> has a client application <b>1405</b>, a TCP/IP stack <b>1407</b>, and a LAN driver <b>1409</b>.
0149According to another embodiment of the present invention, the host <b>301</b> can be configured to selectively employ the PEP and VPN functions, as shown in <figref idref="DRAWINGS">FIG. 15</figref>.
0150<figref idref="DRAWINGS">FIG. 15</figref> is a diagram of a packet flow in the system of <figref idref="DRAWINGS">FIG. 14</figref>, according to an embodiment of the present invention. The host <b>301</b> includes two client applications <b>1405</b>, <b>1411</b>. The application <b>1411</b> generates traffic that is destined to another host <b>1501</b> within the local network <b>303</b>; the traffic follows a path <b>1503</b>, which bypasses the PEP and VPN functions, as such functions are not needed. However, if the features of the PEP and VPN functions are needed, as in the case of the application <b>1405</b>, then these functions can be obtained through path <b>1505</b>, which leads to the server <b>321</b> within the intranet <b>319</b>.
0151<figref idref="DRAWINGS">FIG. 16</figref> is a diagram of the system of <figref idref="DRAWINGS">FIG. 3</figref> in which a host has integrated VPN and PEP functionalities and is capable of dynamically selecting PEP backbone connections, according to an embodiment of the present invention. In this implementation, the host <b>301</b> maintains a routing table for supporting the selection of PEP connections. The routing operation between the PEP and VPN functions is similar to that detailed in <figref idref="DRAWINGS">FIG. 12</figref>. In this example, the client application <b>1405</b> generates packets in which the TCP/IP stack <b>1407</b> can utilize the routing table (“R”) to map TCP connections to PEP connections, and selectively establish VPN tunnels. For example, if the application <b>1405</b> needs to communicate with the server <b>313</b> within the Internet <b>311</b>, then the packets traverse the path <b>1507</b>, which is strictly PEPed traffic, without triggering establishment of a VPN tunnel.
0152However, in certain circumstances, the security features of VPN are required, as in the communications to the intranet servers <b>321</b>, <b>327</b>. In such instances, the traffic flows along the paths <b>1505</b>, <b>1509</b>.
0153As evident from the above discussion, the integration of PEP and VPN functionalities can enhance network performance, while ensuring a high level of security. Additionally, the present invention supports a variety of configurations within the network elements; this flexibility advantageously enhances network scalability, as the PEP and VPN peers can be independently deployed in a number of network components.
V. Exemplary Computing System
0154<figref idref="DRAWINGS">FIG. 17</figref> illustrates a computer system <b>1700</b> upon which an embodiment according to the present invention can be implemented. The computer system <b>1700</b> includes a bus <b>1701</b> or other communication mechanism for communicating information, and a processor <b>1703</b> coupled to the bus <b>1701</b> for processing information. The computer system <b>1700</b> also includes main memory <b>1705</b>, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus <b>1701</b> for storing information and instructions to be executed by the processor <b>1703</b>. Main memory <b>1705</b> can also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor <b>1703</b>. The computer system <b>1700</b> further includes a read only memory (ROM) <b>1707</b> or other static storage device coupled to the bus <b>1701</b> for storing static information and instructions for the processor <b>1703</b>. A storage device <b>1709</b>, such as a magnetic disk or optical disk, is additionally coupled to the bus <b>1701</b> for storing information and instructions.
0155The computer system <b>1700</b> can be coupled via the bus <b>1701</b> to a display <b>1711</b>, such as a cathode ray tube (CRT), liquid crystal display, active matrix display, or plasma display, for displaying information to a computer user. An input device <b>1713</b>, such as a keyboard including alphanumeric and other keys, is coupled to the bus <b>1701</b> for communicating information and command selections to the processor <b>1703</b>. Another type of user input device is cursor control <b>1715</b>, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to the processor <b>1703</b> and for controlling cursor movement on the display <b>1711</b>.
0156According to one embodiment of the invention, the integrated PEP and VPN function is provided by the computer system <b>1700</b> in response to the processor <b>1703</b> executing an arrangement of instructions contained in main memory <b>1705</b>. Such instructions can be read into main memory <b>1705</b> from another computer-readable medium, such as the storage device <b>1709</b>. Execution of the arrangement of instructions contained in main memory <b>1705</b> causes the processor <b>1703</b> to perform the process steps described herein. One or more processors in a multi-processing arrangement can also be employed to execute the instructions contained in main memory <b>1705</b>. In alternative embodiments, hard-wired circuitry can be used in place of or in combination with software instructions to implement the embodiment of the present invention. Thus, embodiments of the present invention are not limited to any specific combination of hardware circuitry and software.
0157The computer system <b>1700</b> also includes a communication interface <b>1717</b> coupled to bus <b>1701</b>. The communication interface <b>1717</b> provides a two-way data communication coupling to a network link <b>1719</b> connected to a local network <b>1721</b>. For example, the communication interface <b>1717</b> can be a digital subscriber line (DSL) card or modem, an integrated services digital network (ISDN) card, a cable modem, or a telephone modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface <b>1717</b> can be a local area network (LAN) card (e.g. for Ethernet™ or an Asynchronous Transfer Model (ATM) network) to provide a data communication connection to a compatible LAN. Wireless links can also be implemented. In any such implementation, communication interface <b>1717</b> sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information. Further, the communication interface <b>1717</b> can include peripheral interface devices, such as a Universal Serial Bus (USB) interface, a PCMCIA (Personal Computer Memory Card International Association) interface, etc.
0158The network link <b>1719</b> typically provides data communication through one or more networks to other data devices. For example, the network link <b>1719</b> can provide a connection through local network <b>1721</b> to a host computer <b>1723</b>, which has connectivity to a network <b>1725</b> (e.g., a wide area network (WAN) or the global packet data communication network now commonly referred to as the “Internet”) or to data equipment operated by service provider. The local network <b>1721</b> and network <b>1725</b> both use electrical, electromagnetic, or optical signals to convey information and instructions. The signals through the various networks and the signals on network link <b>1719</b> and through communication interface <b>1717</b>, which communicate digital data with computer system <b>1700</b>, are exemplary forms of carrier waves bearing the information and instructions. Although a single interface <b>1717</b> is shown, it is recognized that multiple communication interfaces can be utilized, depending on the connectivity desired.
0159The computer system <b>1700</b> can send messages and receive data, including program code, through the network(s), network link <b>1719</b>, and communication interface <b>1717</b>. In the Internet example, a server (not shown) might transmit requested code belonging an application program for implementing an embodiment of the present invention through the network <b>1725</b>, local network <b>1721</b> and communication interface <b>1717</b>. The processor <b>1703</b> can execute the transmitted code while being received and/or store the code in storage device <b>1709</b>, or other non-volatile storage for later execution. In this manner, computer system <b>1700</b> can obtain application code in the form of a carrier wave.
0160The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to the processor <b>1703</b> for execution. Such a medium can take many forms, including but not limited to non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks, such as storage device <b>1709</b>. Volatile media include dynamic memory, such as main memory <b>1705</b>. Transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise bus <b>1701</b>. Transmission media can also take the form of acoustic, optical, or electromagnetic waves, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, CDRW, DVD, any other optical medium, punch cards, paper tape, optical mark sheets, any other physical medium with patterns of holes or other optically recognizable indicia, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave, or any other medium from which a computer can read.
0161Various forms of computer-readable media can be involved in providing instructions to a processor for execution. For example, the instructions for carrying out at least part of the present invention can initially be borne on a magnetic disk of a remote computer. In such a scenario, the remote computer loads the instructions into main memory and sends the instructions over a telephone line using a modem. A modem of a local computer system receives the data on the telephone line and uses an infrared transmitter to convert the data to an infrared signal and transmit the infrared signal to a portable computing device, such as a personal digital assistant (PDA) and a laptop. An infrared detector on the portable computing device receives the information and instructions borne by the infrared signal and places the data on a bus. The bus conveys the data to main memory, from which a processor retrieves and executes the instructions. The instructions received by main memory can optionally be stored on storage device either before or after execution by processor.
0162Accordingly, an approach is provided an approach for integrating Virtual Private Network (VPN) and Performance Enhancing Proxying (PEP) functionalities, such that the PEP functions are adaptively applied. The PEP functions, as supported between two PEP peers (or end points) can be automatically tuned based on the characteristics (e.g., latency) of a particular network, or through explicit notifications. This approach advantageously supports secure communications, while enhancing network performance.
0163While the present invention has been described in connection with a number of embodiments and implementations, the present invention is not so limited but covers various obvious modifications and equivalent arrangements, which fall within the purview of the appended claims.
Contents6
21 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US12212435B2 | Cited by | United States of America | Applicant |
| US10329410B2 | Cited by | United States of America | Applicant |
| US2013191511A1 | Cited by | United States of America | Pre-grant |
| US8024481B2 | Cited by | United States of America | Applicant |
| US7643416B2 | Cited by | United States of America | Applicant |
| US2012178460A1 | Cited by | United States of America | Pre-grant |
| US8285870B2 | Cited by | United States of America | Applicant |
| US8305896B2 | Cited by | United States of America | Search report |
| US2007271606A1 | Cited by | United States of America | Pre-grant |
| US2004215957A1 | Cited by | United States of America | Pre-grant |
| US11412435B2 | Cited by | United States of America | Applicant |
| WO2018144624A1 | Cited by | World Intellectual Property Organization (WIPO) | Applicant |
| US8281002B1 | Cited by | United States of America | Search report |
| US7962654B2 | Cited by | United States of America | Applicant |
| US10523776B2 | Cited by | United States of America | Applicant |
| US2010157998A1 | Cited by | United States of America | Pre-grant |
| US9143450B2 | Cited by | United States of America | Applicant |
| US2009089441A1 | Cited by | United States of America | Pre-grant |
| EP4013016A1 | Cited by | European Patent Office (EPO) | Applicant |
| US12096315B2 | Cited by | United States of America | Applicant |
| US10154115B2 | Cited by | United States of America | Applicant |
| US10945187B2 | Cited by | United States of America | Applicant |
| US8386641B2 | Cited by | United States of America | Applicant |
| US8984620B2 | Cited by | United States of America | Search report |
| US8055795B2 | Cited by | United States of America | Search report |
| US8064362B2 | Cited by | United States of America | Search report |
| US2010046523A1 | Cited by | United States of America | Pre-grant |
| US2009187669A1 | Cited by | United States of America | Pre-grant |
| US7797530B2 | Cited by | United States of America | Search report |
| US8417770B2 | Cited by | United States of America | Applicant |
| US2010011116A1 | Cited by | United States of America | Pre-grant |
| US9148293B2 | Cited by | United States of America | Applicant |
| US8195823B2 | Cited by | United States of America | Applicant |
| US10931775B2 | Cited by | United States of America | Applicant |
| US2024283723A1 | Cited by | United States of America | Search report |
| US8166538B2 | Cited by | United States of America | Search report |
| US2009063704A1 | Cited by | United States of America | Pre-grant |
| US11362920B2 | Cited by | United States of America | Search report |
| US2010135270A1 | Cited by | United States of America | Pre-grant |
| US2010281250A1 | Cited by | United States of America | Pre-grant |
| US2011238860A1 | Cited by | United States of America | Pre-grant |
| US11638126B2 | Cited by | United States of America | Applicant |
| US11405846B2 | Cited by | United States of America | Applicant |
| US11824747B2 | Cited by | United States of America | Search report |
| US9401968B2 | Cited by | United States of America | Search report |
| US10819826B2 | Cited by | United States of America | Applicant |
| US8463935B2 | Cited by | United States of America | Applicant |
| US2007011733A1 | Cited by | United States of America | Pre-grant |
| US10516751B2 | Cited by | United States of America | Applicant |
| US9380129B2 | Cited by | United States of America | Applicant |
| US12641012B2 | Cited by | United States of America | Search report |
| US11871216B2 | Cited by | United States of America | Applicant |
| US8295870B2 | Cited by | United States of America | Search report |
| US2009109849A1 | Cited by | United States of America | Pre-grant |
| US2006129697A1 | Cited by | United States of America | Pre-grant |
| WO2018085765A1 | Cited by | World Intellectual Property Organization (WIPO) | Applicant |
| US10858503B2 | Cited by | United States of America | Applicant |
| US12425814B2 | Cited by | United States of America | Applicant |
| WO2017218523A1 | Cited by | World Intellectual Property Organization (WIPO) | Applicant |
| US2009182868A1 | Cited by | United States of America | Pre-grant |
| US10904816B2 | Cited by | United States of America | Applicant |
| US10033840B2 | Cited by | United States of America | Applicant |
| US9436542B2 | Cited by | United States of America | Applicant |
| US9923987B2 | Cited by | United States of America | Applicant |
| US2010100949A1 | Cited by | United States of America | Pre-grant |
| US11622311B2 | Cited by | United States of America | Applicant |
| US8065399B2 | Cited by | United States of America | Applicant |
| US10205804B2 | Cited by | United States of America | Applicant |
| US9723105B2 | Cited by | United States of America | Applicant |
| US11811554B2 | Cited by | United States of America | Search report |
| US2008151917A1 | Cited by | United States of America | Pre-grant |
| US10205795B2 | Cited by | United States of America | Applicant |
| US12075327B2 | Cited by | United States of America | Applicant |
| US2022303203A1 | Cited by | United States of America | Search report |
| US2006129697A1 | Cited by | United States of America | Pre-grant |
| WO0165805A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| US2001047474A1 | Cites | United States of America | Applicant |
| US2002010866A1 | Cites | United States of America | Search report |
| US2002016851A1 | Cites | United States of America | Search report |
| US2002023165A1 | Cites | United States of America | Search report |
| US2002034173A1 | Cites | United States of America | Search report |
| US2002059435A1 | Cites | United States of America | Search report |
| US2002071436A1 | Cites | United States of America | Search report |
| US2002093977A1 | Cites | United States of America | Search report |
| US2002133596A1 | Cites | United States of America | Search report |
| US2002141393A1 | Cites | United States of America | Applicant |
| US2002152373A1 | Cites | United States of America | Search report |
| US6553032B1 | Cites | United States of America | Search report |
| US6973497B1 | Cites | United States of America | Search report |
| US7006480B2 | Cites | United States of America | Search report |
| US7111072B1 | Cites | United States of America | Search report |
| US20010047474A1 | Cites | United States of America | Third party observation |
| US20020010866A1 | Cites | United States of America | Search report |
| US20020016851A1 | Cites | United States of America | Search report |
| US20020023165A1 | Cites | United States of America | Search report |
| US20020034173A1 | Cites | United States of America | Search report |
| US20020059435A1 | Cites | United States of America | Search report |
| US20020071436A1 | Cites | United States of America | Search report |
| US20020093977A1 | Cites | United States of America | Search report |
| US20020133596A1 | Cites | United States of America | Search report |
24 members in 3 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 35246202 | United States of America | P | |
| 39294302 | United States of America | P |
Members24
| Document | Office | Kind | |
|---|---|---|---|
| EP1333642A2 | European Patent Office (EPO) | A2 | |
| US2003147403A1 | United States of America | A1 | |
| US2003172264A1 | United States of America | A1 | |
| US2003177395A1 | United States of America | A1 | |
| US2003177396A1 | United States of America | A1 | |
| US2003219022A1 | United States of America | A1 | |
| EP1333642A3 | European Patent Office (EPO) | A3 | |
| EP1443713A2 | European Patent Office (EPO) | A2 | |
| EP1443730A2 | European Patent Office (EPO) | A2 | |
| EP1443731A2 | European Patent Office (EPO) | A2 | |
| EP1443732A2 | European Patent Office (EPO) | A2 | |
| EP1443730A3 | European Patent Office (EPO) | A3 | |
| EP1443732A3 | European Patent Office (EPO) | A3 | |
| EP1443731A3 | European Patent Office (EPO) | A3 | |
| EP1443713A3 | European Patent Office (EPO) | A3 | |
| US7389533B2This record | United States of America | B2 | |
| US2008151917A1 | United States of America | A1 | |
| US7398552B2 | United States of America | B2 | |
| EP1333642B1 | European Patent Office (EPO) | B1 | |
| DE60322988D1 | Germany | D1 | |
| US7643416B2 | United States of America | B2 | |
| US8976798B2 | United States of America | B2 | |
| US2015143505A1 | United States of America | A1 | |
| US9832169B2 | United States of America | B2 |
73 transactions on the USPTO file
Allowed after 1 non-final rejection, 1 final rejection and 1 appeal.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 0
- Appeals
- 1
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Printer Rush- No mailingTCPB | TCPB | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Appeal Brief Review CompleteAPBR | APBR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Appeal Brief FiledAP.B | AP.B | |
| Notice of Appeal FiledN/AP | N/AP | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Miscellaneous Incoming LetterLET. | LET. | |
| Mail Notice of Informal or Non-Responsive AmendmentNINA | NINA | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Informal or Non-Responsive Amendment after Examiner ActionA.I. | A.I. | |
| Response after Non-Final ActionA... | A... | |
| Correspondence Address ChangeC.AD | C.AD | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Pre-Exam Office Action WithdrawnW/OA | W/OA | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
22 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 7389533
- Application
- 10353247
Titles
- English
- Method and system for adaptively applying performance enhancing functions
Patent term adjustment
- A delay
- +815 daysthe office missed an examination deadline
- B delay
- +56 dayspendency past three years
- Applicant delay
- −224 days
- Net adjustment
- 647 days
Classification
- CPC, 12
- H04L69/16
- H04L12/4641
- H04L47/10
- H04L47/193
- H04L47/24
- H04L47/27
- H04L47/28
- H04L47/283
- H04L63/0272
- H04L69/163
- H04L47/267
- H04W8/04
- IPC, 5
- G06F9 00
- G06F15 16
- H04L9 32
- H04L47 10
- H04L47 267