Patentable/Patents/US-10715495
US-10715495

Congestion control during communication with a private network

PublishedJuly 14, 2020
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

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.

Patent Claims
15 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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).

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

March 10, 2016

Publication Date

July 14, 2020

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Congestion control during communication with a private network” (US-10715495). https://patentable.app/patents/US-10715495

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.