IP Library › Granted Patent US 11,082,451
Granted Patent B2
US 11,082,451 · App. 16/547,102 · Granted Aug 3, 2021

Maintaining continuous network service

Inventors: Nivedita Ojha (Campbell, CA); Derek Thorslund (San Jose, CA); Stephen Wilson (San Jose, CA)
Assignee: Citrix Systems, Inc.
H04L63/20H04L41/0668H04L41/0681H04L41/5019H04L45/22H04L45/24H04L45/28H04L63/0272H04L63/08H04L63/0853H04L63/10H04W4/02H04W24/04H04W36/305H04W64/003G06F8/65G06F21/566G06F2221/034
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 11,082,451
App. No.
16/547,102
Filed
Aug 21, 2019
Granted
Aug 3, 2021
Kind
B2
Art Unit
2471
USPC
370/218
Abstract

A technique for managing communications over a network maintains multiple network paths simultaneously, exchanging the same data redundantly through the network paths and allowing a receiver to select one of the network paths as its source of data. In the event that a first, currently-selected network path becomes weak, for example, the receiver automatically and seamlessly switches its source of data to a second network path, while the first network path remains operational.

Claims (49)

1. A method, comprising:

a client device contacting a server via a website and downloading an application package from the server, the client device opening the downloaded application package, decompressing compressed contents of the application package, and installing components of the application package, the components of the application package including (i) a client component of an application, (ii) a micro-VPN client component and (iii) a link-bonding client component, the micro-VPN client component configured to establish an encrypted channel between the client component of the application and a single application on the server, the link-bonding client component configured to transmit data from the client component of the application in parallel over a plurality of network paths;

monitoring, by the client device, the plurality of network paths that convey data between the client device and the server, the data being associated with the single application on the server;

receiving, by the client device within the encrypted channel established by the micro-VPN client component, the data from the server via each of the plurality of network paths, the data received from each of the plurality of network paths being the same;

selecting, by the link-bonding client component of the client device, a first network path of the plurality of network paths from which to receive data to enable delivery of the single application on the server to the client device; and

adjusting, by the link-bonding client component of the client device, the selected network path from the first network path to a second network path of the plurality of network paths, while both the first network path and the second network path are operational and conveying data, based at least in part on the monitoring of the plurality of network paths, so as to prevent delay in receipt of data from the server caused by a reduction of network continuity of the first network path.

2. The method of claim 1 , further comprising transmitting a set of application data to the server via both the first network path and the second network path, the first network path and the second network path conveying the same set of application data in parallel.

3. The method of claim 1 , further comprising, after adjusting the selected network path from the first network path to the second network path, discarding data of the single application arriving via the first network path.

4. The method of claim 3 , wherein the data of the single application arrives from the server in packets, each packet having a sequence identifier, and wherein discarding data of the single application arriving via the first network path includes identifying a packet arriving via the first network path as redundant based on the sequence identifier of the packet matching the sequence identifier of a packet that arrived via the second network path.

5. The method of claim 1 , wherein the first network path is a Wi-Fi network path and the second network path is a cellular network path.

6. The method of claim 5 , wherein the cellular network path is an LTE (Long-Term Evolution) network path.

7. The method of claim 1 , further comprising measuring a speed of the first network path, wherein adjusting the selected network path from the first network path to the second network path is based at least in part on the speed of the first network path being below a threshold.

8. The method of claim 7 , further comprising:

measuring a speed of the second network path,

wherein adjusting the selected network path from the first network path to the second network path is based on the speed of the second network path exceeding the speed of the first network path.

9. The method of claim 7 , wherein measuring the speed of the first network path includes measuring a round-trip transmission time between the client device and the server via the first network path.

10. The method of claim 1 , further comprising establishing an encrypted channel between the client device and the server, the encrypted channel implemented with a virtual private network (VPN) that conveys the data for the single application but for no other application running on the client device.

11. A client device, comprising control circuitry that includes a set of processors coupled to memory, the control circuitry configured to:

contact a server via a website and download an application package from the server;

open the downloaded application package, decompress compressed contents of the application package, and install components of the application package,

wherein the components of the application package include (i) a client component of an application, (ii) a micro-VPN client component and (iii) a link-bonding client component, the micro-VPN client component configured to establish an encrypted channel between the client component of the application and a single application on the server, the link-bonding client component configured to transmit data from the client component of the application in parallel over a plurality of network paths;

monitor the plurality of network paths that convey data between the client device and the server, the data being associated with the single application on the server;

receive, within the encrypted channel established by the micro-VPN client component, the data from the server via each of the plurality of network paths, the data received from each of the plurality of network paths being the same;

select, by the link-bonding client component, a first network path of the plurality of network paths from which to receive data to enable delivery of the single application on the server to the client device; and

adjust, by the link-bonding client component, the selected network path from the first network path to a second network path of the plurality of network paths, while both the first network path and the second network path are operational and conveying data based at least in part on the monitoring of the plurality of network paths, so as to prevent delay in receipt of data from the server caused by a reduction of network continuity of the first network path.

12. The client device of claim 11 , wherein the control circuitry is further configured to transmit a set of application data to the server via both the first network path and the second network path, the first network path and the second network path conveying the same set of application data in parallel.

13. The client device of claim 11 , wherein the control circuitry is further configured to discard data of the single application arriving via the first network path after adjusting the selected network path from the first network path to the second network path.

14. The client device of claim 13 , wherein the data of the single application arrives in packets, each packet having a sequence identifier, and wherein the control circuitry is further configured to discard data of the single application arriving via the first network path by identifying a packet arriving via the first network path as redundant based on the sequence identifier of the packet matching the sequence identifier of a packet that arrived via the second network path.

15. The client device of claim 11 , wherein the first network path is a Wi-Fi network path and the second network path is a cellular network path.

16. The client device of claim 15 , wherein the cellular network path is an LTE (Long-Term Evolution) network path.

17. The client device of claim 11 , wherein the control circuitry is further configured to measure a speed of the first network path and to adjust the selected network path from the first network path to the second network path based at least in part on the speed of the first network path being below a threshold.

18. The client device of claim 17 , wherein the control circuitry is further configured to measure a speed of the second network path and to adjust the selected network path from the first network path to the second network path based on the speed of the second network path exceeding the speed of the first network path.

19. The client device of claim 17 , wherein the control circuitry configured to measure the speed of the first network path is further configured to measure a round-trip transmission time between the client device and the server via the first network path.

20. The client device of claim 11 , wherein the control circuitry is further configured to establish an encrypted channel between the client device and the server, the encrypted channel implemented with a virtual private network (VPN) configured to convey the data for the single application but for no other application running on the client device.

21. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a client device, cause the client device to perform a method comprising:

contacting a server via a website and downloading an application package from the server, the client device opening the downloaded application package, decompressing compressed contents of the application package, and installing components of the application package, the components of the application package including (i) a client component of an application, (ii) a micro-VPN client component and (iii) a link-bonding client component, the micro-VPN client component configured to establish an encrypted channel between the client component of the application and a single application on the server, the link-bonding client component configured to transmit data from the client component of the application in parallel over a plurality of network paths;

monitoring the plurality of network paths that convey data between the client device and the server, the data being associated with the single application on the server;

receiving, within the encrypted channel established by the micro-VPN client component, the data from the server via each of the plurality of network paths, the data received from each of the plurality of network paths being the same;

selecting, by the link-bonding client component, a first network path of the plurality of network paths from which to receive data to enable delivery of the single application on the server to the client device; and

adjusting, by the link-bonding client component, the selected network path from the first network path to a second network path of the plurality of network paths, while both the first network path and the second network path are operational and conveying data, based at least in part on the monitoring of the plurality of network paths, so as to prevent delay in receipt of data from the server caused by a reduction of network continuity of the first network path.

22. The computer program product of claim 21 , wherein the method further comprises transmitting application data to the server via both the first network path and the second network path, the first network path and the second network path conveying the same application data in parallel.

23. The computer program product of claim 21 , wherein the method further comprises, after adjusting the selected network path from the first network path to the second network path, discarding data of the single application arriving via the first network path.

24. The computer program product of claim 23 , wherein the data of the single application arrives in packets, each packet having a sequence identifier, and wherein discarding data of the single application arriving via the first network path includes identifying a packet arriving via the first network path as redundant based on the sequence identifier of the packet matching the sequence identifier of a packet that arrived via the second network path.

25. The computer program product of claim 21 , wherein the first network path is a Wi-Fi network path and the second network path is a cellular network path.

26. The computer program product of claim 25 , wherein the cellular network path is an LTE (Long-Term Evolution) network path.

27. The computer program product of claim 21 , wherein the method further comprises measuring a speed of the first network path, and wherein adjusting the selected network path from the first network path to the second network path is based at least in part on the speed of the first network path being below a threshold.

28. The computer program product of claim 27 , wherein the method further comprises measuring a speed of the second network path, and wherein adjusting the selected network path from the first network path to the second network path is further based on the speed of the second network path exceeding the speed of the first network path.

29. The computer program product of claim 27 , wherein measuring the speed of the first network path includes measuring a round-trip transmission time between the client device and the server via the first network path.

30. The computer program product of claim 21 , wherein the method further comprises establishing an encrypted channel between the client device and the server, the encrypted channel, the encrypted channel implemented with a virtual private network (VPN) that conveys the data for the single application but for no other application running on the client device.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2019
From: OJHA, NIVEDITA; THORSLUND, DEREK; WILSON, STEPHEN
To: CITRIX SYSTEMS, INC.
Reel/Frame 050597/0989 →
Continuity (2)
Provisional Application 62786813 · Dec 31, 2018
Related Publication 20200213183A1 · Jul 2, 2020
Cited By (1)
US 12,363,000