IP Library Granted Patent US 10,135,720
Granted Patent B2
US 10,135,720 · App. 15/402,024 · Granted Nov 20, 2018

System and method for virtual multipath data transport

Inventors: Eugene Lapidous (Saratoga, CA); Dmitry Adamushka (Antwerp, BE)
Assignee: ANCHORFREE INC.
H04L45/24H04L1/1867H04L1/1874H04L1/1887H04L12/4633H04L12/4641H04L47/10H04L47/125H04L65/1069H04L67/2876H04L69/08H04L69/14H04L69/163H04L2001/0097H04L2212/00
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,135,720
App. No.
15/402,024
Granted
Nov 20, 2018
Kind
B2
Abstract

A computer system splits data to be transmitted into a plurality of reliable connections which are multiplexed through a smaller number of unacknowledged connections, such as connections that do not require acknowledgment and which may be VPN tunnels. A receiver then demultiplexes data received to obtain data flows over the reliable connections and transmits separate acknowledgements for each reliable connection. The computer system demultiplexes the acknowledgments and provides them to the corresponding reliable connections, which then retransmit any unacknowledged data. Delivery controllers executing on the computer system may be coupled to corresponding controllers executing on the receiver, with traffic between the delivery controllers (payload and acknowledgments) being multiplexed over one or more unacknowledged connections. In some embodiments, acknowledgments may be transmitted over a connection that is not multiplexed over the unacknowledged connections.

Claims (66)

1. A method comprising:

(a) providing, by a computer system, a first number of one or more first network connections to a remote computing device;

(b) providing, by the computer system, a second number of second network connections to the remote computing device, the first number being smaller than the second number;

(c) multiplexing, by the computer system, a plurality of second data flows of the second network connections in one or more first data flows through the one or more first network connections;

(d) receiving, by the computer system, an instruction to transmit payload data to the remote computing device; and

(e) in response to the instruction—

(i) dividing, by the computer system, the payload data into data portions;

(ii) transmitting, by the computer system, the data portions over different connections of the second network connections;

(iii) multiplexing, by the computer system, the data portions transmitted over the second network connections through the one or more first network connections;

(iv) receiving, by the computer system, one or more acknowledgements for the data portions, each acknowledgment of the one or more acknowledgments referencing a second network connection of the second network connections;

(v) demultiplexing, by the computer system, each acknowledgment of the one or more acknowledgments onto the second network connection of the second network connections referenced by the each acknowledgment;

(vi) determining, by the computer system, that acknowledgment was not received for at least one data portion of the data portions by at least one second network connection of the second network connections over which the at least one data portion was transmitted; and

(vii) in response to determining that acknowledgment was not received for the at least one data portion, retransmitting the at least one data portion over the at least one second network connection.

2. The method of claim 1 , wherein multiplexing the plurality of second data flows of the second network connections in the one or more first data flows through the one or more first network connections comprises transmitting the one or more first data flows without regard to any acknowledgment of the one or more first data flows.

3. The method of claim 1 , wherein multiplexing the plurality of second data flows of the second network connections in the one or more first data flows through the one or more first network connections comprises transmitting the one or more first data flows according to at least one of Universal Datagram Protocol (UDP), Internet Protocol (IP) Encapsulating Security Payload (ESP), and Software IP Encryption Protocol (swIPe).

4. The method of claim 1 , wherein providing the second network connections comprises implementing the second network connections according to at least one of Transport Control Protocol (TCP), Multipath Transport Control Protocol (Multipath TCP) and Stream Control Transmission Protocol (SCTP).

5. The method of claim 1 , wherein the computer system implements a plurality of delivery controllers, each controller of the plurality of delivery controllers coupled to a corresponding controller executing on the remote device and implementing one of the second network connections;

wherein (vi) and (vii) are performed by at least one delivery controller of the delivery controllers, the at least one delivery controller implementing the at least one second network connection; and

wherein the method further comprises, in response to (vi), reducing, by the at least one delivery controller, an amount of unacknowledged data that may be transmitted before transmitting additional data over the at least one second network connection.

6. The method of claim 1 , wherein the computer system comprises a client computing device and a virtual private network (VPN) server device in data communication with the client computing device;

wherein the method comprises performing (a), (c), (iii), (iv), and (v) by the VPN server device;

wherein the method comprises performing (b), (i), (ii), (vi), and (vii) by the client computing device.

7. The method of claim 6 , wherein (ii) comprises transmitting a plurality of packets containing the data portions over the second network connections;

wherein (iii) comprises encapsulating the plurality of packets inside the one or more first data flows.

8. The method of claim 6 , wherein the client computing device and VPN server device implement at least one of Point-to-Point Tunneling Protocol (PPTP), Layer 2 Tunneling Protocol (L2TP), Internet Protocol Security (IPSec), Secure Socket Layer (SSL) Protocol, Transport Layer Security (TLS) protocol, and OpenVPN protocol.

9. The method of claim 1 , wherein the computer system implements a proxy, the proxy performing (b), (d), (i), (ii), (vi) and (vii).

10. The method of claim 1 , wherein (c) comprises encrypting one or more first data flows after multiplexing the plurality of second data flow in the one or more first data flows through the one or more first network connections.

11. The method of claim 1 , wherein the computer system comprises a plurality of different computing devices in a first local network, the remote computing device being located in second local network remote from the first local network.

12. The method of claim 1 , wherein the computer system comprises a single computing device.

13. The method of claim 1 , wherein (iv) comprises receiving, by the computer system, the one or more acknowledgements for the data portions in a third data flow that is not encapsulated in the one or more first data flows of the one or more first network connections.

14. The method of claim 1 , wherein the first number is one.

15. A computer system comprising one or more computing devices, the one or more computing devices each comprising one or more processing devices and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices of the one or more computing devices storing executable code effective to cause the one or more processors of the one or more computing devices to:

establish a first number of one or more first network connections terminating at a remote computing device;

establish a second number of second network connections terminating at the remote computing device through the first network connections, the first number being smaller than the second number;

transmit payload data to the remote computing device by—

(i) dividing the payload data into data portions;

(ii) transmitting the data portions over different connections of the second network connections; and

(iii) multiplexing the data portions transmitted over the second network connections through the one or more first network connections; and

verify transmission of payload data to the remote computing device by—

(iv) receiving acknowledgments over the first network connections;

(v) demultiplexing each acknowledgment onto a network connection of the second network connections referenced by the each acknowledgment; and

(vi) if acknowledgment of receipt of one or more of the data portions is not received on one or more second network connections of the one or more second network connections, retransmitting the one or more data portions over the one or more second network connections.

16. The computer system of claim 15 , wherein the executable code is further effective to cause the one or more processors of the one or more computing devices to multiplex the data portions transmitted over the second network connections through the one or more first network connections without regard to any acknowledgment of traffic traversing the one or more first network connections.

17. The computer system of claim 15 , wherein the executable code is further effective to cause the one or more processors to implement the one or more first network connections according to at least one of Universal Datagram Protocol (UDP), Internet Protocol (IP) Encapsulating Security Payload (ESP), and Software IP Encryption Protocol (swIPe).

18. The computer system of claim 15 , wherein the executable code is further effective to cause the one or more processors to implement the second network connections according to at least one of Transport Control Protocol (TCP), Multipath Transport Control Protocol (Multipath TCP) and Stream Control Transmission Protocol (SCTP).

19. The computer system of claim 15 , wherein the computer system comprises a single computing device executing an operating system implementing a kernel space and a user space;

wherein the executable code is further effective to cause the one or more processors to:

implement the second network connections as kernel Transport Control Protocol (TCP) sockets implemented in the kernel space by a virtual network device, each kernel TCP socket of the kernel TCP sockets programmed to verify delivery of data transmitted over the each kernel TCP socket;

receive the payload data from an application executing in the user space; and

divide, by a multipath manager executing in the user space, the payload data into the data portions and transmit each data portion to a different kernel TCP socket of the kernel TCP sockets as TCP packets.

20. The computer system of claim 19 , wherein the executable code is further effective to cause the one or more processors to:

implement a first TCP socket in kernel space coupled to the virtual network device;

receive, by the virtual network device, the payload data from the application through the first TCP socket;

intercept, by the virtual network device, the payload data from the first TCP socket;

route, by the virtual network device, the payload data from the first TCP socket to the multipath manager.

21. The computer system of claim 20 , wherein the executable code is further effective to cause the one or more processors to:

implement a transport proxy in the user space, the transport proxy programmed to terminate a connection from the first TCP socket and provide the payload data from the first TCP socket to the multipath manager.

22. The computer system of claim 21 , wherein the executable code is further effective to cause the one or more processors to:

intercept, by the virtual network device, the TCP packets transmitted through the kernel TCP sockets; and

provide, by the virtual network device, the TCP packets to a virtual private network (VPN) client executing in the user space, the VPN client programmed to

encrypt and encapsulate the TCP packets to obtain outbound tunnel traffic; and

transmit the outbound tunnel traffic over a first number of VPN tunnels to the remote computing device.

23. The method of claim 21 , wherein the executable code is further effective to cause the one or more processors to:

receive, by the VPN client, received tunnel traffic over the first number of VPN tunnels;

decrypt and de-encapsulate, by the VPN client, the received tunnel traffic to obtain received TCP traffic; and

demultiplex, by the VPN client, the received TCP traffic into the kernel TCP sockets.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE SERIAL N. 15/597,036 PREVIOUSLY RECORDED AT REEL: 053245 FRAME: 0874. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 10, 2023
From: PANGO INC.
To: TWINGATE HOLDINGS INC.
Reel/Frame 063027/0894 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE SERIAL NO. 15/597,036 PREVIOUSLY RECORDED AT REEL: 053257 FRAME: 0637. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 10, 2023
From: TWINGATE HOLDINGS INC.
To: TWINGATE INC.
Reel/Frame 063141/0210 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2020
From: TWINGATE HOLDINGS INC.
To: TWINGATE INC.
Reel/Frame 053257/0637 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2020
From: PANGO INC.
To: TWINGATE HOLDINGS INC.
Reel/Frame 053245/0874 →
RELEASE OF SECURITY INTEREST Recorded Jul 1, 2020
From: PACIFIC WESTERN BANK
To: PANGO INC. (FORMERLY KNOWN AS ANCHORFREE INC.)
Reel/Frame 053116/0489 →
SECURITY INTEREST Recorded Jun 25, 2020
From: PANGO INC.
To: PACIFIC WESTERN BANK
Reel/Frame 053039/0417 →
CHANGE OF NAME Recorded Jan 10, 2020
From: ANCHORFREE INC.
To: PANGO INC.
Reel/Frame 051566/0680 →
SECURITY INTEREST Recorded Nov 28, 2018
From: ANCHORFREE INC.
To: PACIFIC WESTERN BANK
Reel/Frame 047605/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2017
From: LAPIDOUS, EUGENE; ADAMUSHKA, DMITRY
To: ANCHORFREE INC.
Reel/Frame 040907/0059 →
Continuity (2)
Provisional Application 62370496 · Aug 3, 2016
Related Publication 20180041421A1 · Feb 8, 2018