Example methods are provided for a first endpoint to perform congestion control during communication with a second endpoint over a public network, the second endpoint being in a private network. The method may comprise generating a plurality of tunnel segments containing unreliable transport protocol data destined for the second endpoint; and determining whether congestion control is required based on a data amount of the plurality of tunnel segments and a congestion window associated with a tunnel connecting the first endpoint with the private network. The method may further comprise, in response to determination that congestion control is required, performing congestion control by dropping at least some of the plurality of tunnel segments; otherwise, sending the plurality of tunnel segments through the tunnel supported by the reliable transport protocol connection.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for a first endpoint to perform congestion control during communication with a second endpoint over a public network, the second endpoint being in a private network, the method comprising: establishing a reliable transport protocol connection with a gateway associated with the private network; setting a socket buffer size of a socket layer for the reliable transport protocol connection to zero; generating a plurality of tunnel segments containing unreliable transport protocol data destined for the second endpoint, wherein the plurality of tunnel segments are for a tunnel connecting the first endpoint with the private network and supported by the reliable transport protocol connection; determining whether congestion control is required prior to sending the plurality of tunnel segments through the tunnel by: calculating an available data amount that can be sent via the tunnel based on comparing a congestion window and a flight size, wherein the congestion window sets a maximum data amount that can be sent via the tunnel, and the flight size represents an in flight data amount that has been sent via the tunnel but not yet acknowledged; and in response to a data amount of the plurality of tunnel segments exceeding the available data amount, performing congestion control by dropping at least some of the plurality of tunnel segments without buffering the at least some of the plurality of tunnel segments for later transmission; otherwise, sending the plurality of tunnel segments through the tunnel supported by the reliable transport protocol connection.
2. The method of claim 1 , wherein the method further comprises: in response to determination that congestion control is not required, increasing the flight size by the data amount of the plurality of tunnel segments, thereby decreasing the available data amount.
3. The method of claim 1 , wherein the method further comprises: receiving one or more acknowledgement packets for the plurality of tunnel segments; and decreasing the flight size by the data amount of the plurality of tunnel segments, thereby increasing the available data amount.
4. The method of claim 1 , wherein the unreliable transport protocol data comprises one or more User Datagram Protocol (UDP) datagrams generated from delay-sensitive data sent by an application executing on the first endpoint; and the reliable transport protocol connection is Transmission Control Protocol (TCP) connection.
5. The method of claim 1 , wherein the tunnel is a secure sockets layer (SSL) tunnel, the plurality of tunnel segments are SSL tunnel segments and the private network is a virtual private network (VPN).
6. A non-transitory computer-readable storage medium that includes a set of instructions which, in response to execution by a processor of a first endpoint, cause the processor to perform congestion control during communication with a second endpoint over a public network, the second endpoint being in a private network, the method comprising: establishing a reliable transport protocol connection with a gateway associated with the private network; setting a socket buffer size of a socket layer for the reliable transport protocol connection to zero; generating a plurality of tunnel segments containing unreliable transport protocol data destined for the second endpoint, wherein the plurality of tunnel segments are for a tunnel connecting the first endpoint with the private network and supported by the reliable transport protocol connection; determining whether congestion control is required prior to sending the plurality of tunnel segments through the tunnel by: calculating an available data amount that can be sent via the tunnel based on comparing a congestion window and a flight size, wherein the congestion window sets a maximum data amount that can be sent via the tunnel, and the flight size represents an in flight data amount that has been sent via the tunnel but not yet acknowledged; and in response to a data amount of the plurality of tunnel segments exceeding the available data amount, performing congestion control by dropping at least some of the plurality of tunnel segments without buffering the at least some of the plurality of tunnel segments for later transmission; otherwise, sending the plurality of tunnel segments through the tunnel supported by the reliable transport protocol connection.
7. The non-transitory computer-readable storage medium of claim 6 , wherein the method further comprises: in response to determination that congestion control is not required, increasing the flight size by the data amount of the plurality of tunnel segments, thereby decreasing the available data amount.
8. The non-transitory computer-readable storage medium of claim 6 , wherein the method further comprises: receiving one or more acknowledgement packets for the plurality of tunnel segments; and decreasing the flight size by the data amount of the plurality of tunnel segments, thereby increasing the available data amount.
9. The non-transitory computer-readable storage medium of claim 6 , wherein the unreliable transport protocol data comprises one or more User Datagram Protocol (UDP) datagrams generated from delay-sensitive data sent by an application executing on the first endpoint; and the reliable transport protocol connection is Transmission Control Protocol (TCP) connection.
10. The non-transitory computer-readable storage medium of claim 6 , wherein the tunnel is a secure sockets layer (SSL) tunnel, the plurality of tunnel segments are SSL tunnel segments and the private network is a virtual private network (VPN).
11. An endpoint, being a first endpoint, configured to perform congestion control during communication with a second endpoint over a public network, the second endpoint being in a private network, comprising: a processor; and a non-transitory computer-readable medium having stored thereon instructions that, when executed by the processor, cause the processor to implement a private network client and a virtual adapter, wherein the private network client is to: establish a reliable transport protocol connection with a gateway associated with the private network; set a socket buffer size of a socket layer for the reliable transport protocol connection to zero; generate a plurality of tunnel segments containing unreliable transport protocol data destined for the second endpoint, wherein the plurality of tunnel segments are for a tunnel connecting the first endpoint with the private network and supported by the reliable transport protocol connection; determine whether congestion control is required prior to sending the plurality of tunnel segments through the tunnel by: calculating an available data amount that can be sent via the tunnel based on comparing a congestion window and a flight size, wherein the congestion window sets a maximum data amount that can be sent via the tunnel, and the flight size represents an in flight data amount that has been sent via the tunnel but not yet acknowledged; and in response to a data amount of the plurality of tunnel segments exceeding the available data amount, perform congestion control by dropping at least some of the plurality of tunnel segments without buffering the at least some of the plurality of tunnel segments for later transmission; otherwise, send, via the virtual adapter, the plurality of tunnel segments to the gateway through the tunnel supported by the reliable transport protocol connection.
12. The endpoint of claim 11 , wherein the instructions cause the processor to implement the private network client to: in response to determination that congestion control is not required, increase the flight size by the data amount of the plurality of tunnel segments, thereby decreasing the available data amount.
13. The endpoint of claim 11 , wherein the instructions cause the processor to implement the private network client to: receive, via the virtual adapter, one or more acknowledgement packets for the plurality of tunnel segments; and decrease the flight size by the data amount of the plurality of tunnel segments, thereby increasing the available data amount.
14. The endpoint of claim 11 , wherein the unreliable transport protocol data comprises one or more User Datagram Protocol (UDP) datagrams generated from delay-sensitive data sent by an application executing on the first endpoint; and the reliable transport protocol connection is Transmission Control Protocol (TCP) connection.
15. The endpoint of claim 11 , wherein the tunnel is a secure sockets layer (SSL) tunnel, the plurality of tunnel segments are SSL tunnel segments and the private network is a virtual private network (VPN).
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 10, 2016
July 14, 2020
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.