IP Library Granted Patent US 10,484,266
Granted Patent B2
US 10,484,266 · App. 15/951,665 · Granted Nov 19, 2019

Leveraging multi-stream transport protocol capabilities for routing

Inventors: Sachin Shelar (Bengaluru, IN); Praveen Raja Dhanabalan (Bengaluru, IN)
Assignee: Citrix Systems, Inc.
H04L45/24H04L43/12H04L67/28H04L67/42H04L69/16
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,484,266
App. No.
15/951,665
Granted
Nov 19, 2019
Kind
B2
Abstract

Described embodiments provide systems and methods for performing multi-stream routing. A device may determine that a server is capable of handling multi-stream protocol connections. The device may identify packets communicated between the client and the server via a first interface for a first connection between a client and the server. The device may estimate, based on the packets, a link quality for each second interface for communicating with the server. The device may identify a policy to apply to the packets. The device may select one of the second interfaces for communicating packets between the client and the server based on a configuration mapping, the link quality, and the policy. The configuration mapping may specify which second interface is to be selected using a mapping of the link quality and the policy. The device may establish a second connection between the client and the server using the selected interface.

Claims (55)

1. A method of performing multi-stream routing, comprising:

determining, by a device intermediary to a client and a server, that the server is capable of handling multi-stream protocol connections;

identifying, by the device, one or more packets communicated between the client and the server via a first interface for a first connection established between the client and the server;

estimating, by the device, based on the one or more packets, a link quality for each of a plurality of second interfaces with which to communicate with the server;

identifying, by the device, a policy to apply to the one or more packets communicated between the client and the server;

selecting, by the device, a second interface of the plurality of second interfaces via which to communicate subsequent packets between the client and the server based on a configuration mapping, the link quality estimated for each of the plurality of second interfaces, and the policy identified to be applied to the one or more packets, the configuration mapping specifying which of the plurality of second interfaces is to be selected using a mapping of the link quality and the policy; and

establishing, by the device, a second connection between the client and the server using the second interface instead of the first interface.

2. The method of claim 1 , further comprising:

identifying, by the device, an application executing on the client associated with the one or more packets from parsing the one or more packets; and

wherein identifying the policy to apply further comprises identifying the policy to apply to the one or more packets based on the application identified from parsing the one or more packets.

3. The method of claim 1 , further comprising:

determining, by the device, based on the one or more packets, that the first connection established between the client and the server is in accordance with Transmission Control Protocol (TCP); and

mapping, by the device responsive to determining that the first connection is in accordance with the TCP, the first connection to a subflow connection in accordance with Multipath TCP (MPTCP).

4. The method of claim 1 , further comprising:

determining, by the device, based on the one or more packets, that the first connection established between the client and the server is in accordance with Quick User Datagram Protocol Internet Connection (QUIC);

forwarding, by the device responsive to determining that the first connection is in accordance with the QUIC, the one or more packets from the client to the server via the first connection.

5. The method of claim 1 , wherein establishing the second connection further comprises:

identifying, responsive to determining that the first connection in accordance with TCP, a connection identifier of the second interface; and

initiating, using the connection identifier of the second interface, a new subflow connection in accordance with MPTCP to map the subsequent packets communicated via the second interface for the second connection.

6. The method of claim 1 , wherein establishing the second connection further comprises:

identifying, responsive to determining that the first connection is in accordance with QUIC, a connection identifier for the first connection; and

initiating, using the connection identifier of the first connection, the second connection in accordance with User Datagram Protocol (UDP) for the subsequent packets communicated via the second interface.

7. The method of claim 1 , further comprising:

sorting, by the device, the link quality estimated for each of the plurality of second interfaces in ascending order; and

wherein selecting the second interface further comprises selecting the second interface from the plurality of second interfaces based on the plurality of link qualities for the corresponding plurality of second interfaces sorted in ascending order.

8. The method of claim 1 , wherein identifying the policy further comprises identifying the policy including at least one of an application-based firewall policy, an application-based Quality of Service (QoS) policy, an Intrusion Detection System (IDS) policy, and an Intrusion Prevention System (IPS) policy.

9. The method of claim 1 , wherein determining that the server is capable of handling multi-stream protocol connections further comprises parsing the one or more packets to identify at least one packet including an option indicating that the server is capable of handling multi-stream protocol connections.

10. The method of claim 1 , further comprising forwarding, by the device, the packets received subsequent to establishing the second connection between the client and the server via the second interface.

11. A system for performing multi-stream routing, comprising:

a packet analyzer executable on a device having one or more processors deployed intermediary between a client and a server, configured to:

determine that the server is capable of handling multi-stream protocol connections and identify one or more packets communicated between the client and the server via a first interface for a first connection established between the client and the server;

a link quality estimator executable on the device, configured to estimate, based on the one or more packets, a link quality for each of a plurality of second interfaces with which to communicate with the server;

a policy manager executable on the device, configured to identify a policy to apply to the one or more packets communicated between the client and the server;

a link selector executable on the device, configured to select a second interface of the plurality of second interfaces via which to communicate subsequent packets between the client and the server based on a configuration mapping, the link quality estimated for each of the plurality of second interfaces, and the policy identified to be applied to the one or more packets, the configuration mapping specifying which of the plurality of second interfaces is to be selected using a mapping of the link quality and the policy; and

a routing engine executable on the device, configured to establish a second connection between the client and the server using the second interface instead of the first interface.

12. The system of claim 11 , wherein the policy manager is further configured to:

identify an application executing on the client associated with the one or more packets from parsing the one or more packets; and

identify the policy to apply to the one or more packets based on the application identified from parsing the one or more packets.

13. The system of claim 11 , wherein the packet analyzer is further configured to:

determine, based on the one or more packets, that the first connection established between the client and the server is in accordance with Transmission Control Protocol (TCP); and

map, responsive to determining that the first connection is in accordance with the TCP, the first connection to a subflow connection in accordance with Multipath TCP (MPTCP).

14. The system of claim 11 , wherein the packet analyzer is further configured to:

determine, based on the one or more packets, that the first connection established between the client and the server is in accordance with Quick User Datagram Protocol Internet Connection (QUIC);

forward, responsive to determining that the first connection is in accordance with the QUIC, the one or more packets from the client to the server via the first connection.

15. The system of claim 11 , wherein the routing engine is further configured to:

identify, responsive to a determination that the first connection in accordance with TCP, a connection identifier of the second interface selected based on the policy; and

initiate, using the connection identifier of the second interface, a new subflow connection in accordance with MPTCP to map the subsequent packets communicated via the second interface for the second connection.

16. The system of claim 11 , wherein the routing engine is further configured to:

identify, responsive to a determination that the first connection is in accordance with QUIC, a connection identifier for the first connection; and

initiate, using the connection identifier of the first connection, the second connection in accordance with User Datagram Protocol (UDP) for the subsequent packets communicated via the second interface.

17. The system of claim 11 , wherein the link quality estimator is further configured to sort the link qualities estimated for each of the plurality of second interfaces in ascending order; and

wherein the link selector is further configured to select the second interface from the plurality of second interfaces based on the plurality of link qualities for the corresponding plurality of second interfaces sorted in ascending order.

18. The system of claim 11 , wherein the policy includes at least one of an application-based firewall policy, an application-based Quality of Service (QoS) policy, an Intrusion Detection System (IDS) policy, and an Intrusion Prevention System (IPS) policy.

19. The system of claim 11 , wherein the packet analyzer is further configured to determine that the server is capable of handling multi-stream protocols by parsing the one or more packets to identify at least one packet including an option indicating that the server is capable of handling multi-stream protocol connections.

20. The system of claim 11 , wherein the routing engine is further configured to forward the packets received subsequent to establishing the second connection between the client and the server via the second interface.

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 →
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 →
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 →
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 Apr 13, 2018
From: SHELAR, SACHIN; DHANABALAN, PRAVEEN RAJA
To: CITRIX SYSTEMS, INC.
Reel/Frame 045538/0596 →
Continuity (1)
Related Publication 20190319873A1 · Oct 17, 2019