IP Library Granted Patent US 11,233,882
Granted Patent B2
US 11,233,882 · App. 16/776,022 · Granted Jan 25, 2022

Adaptive session reliability over multiple transports

Inventors: Georgy Momchilov (Parkland, FL); Terry N. Treder (Delray Beach, FL)
Assignee: Citrix Systems, Inc.
H04L69/165H04L69/16H04L69/161H04L69/162H04L69/163H04L69/164H04L69/18H04L69/326H04L69/40H04L43/0811H04L47/196H04L63/0428H04L63/08H04L63/166H04L63/168H04L69/166H04L69/321H04L69/328
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,233,882
App. No.
16/776,022
Granted
Jan 25, 2022
Kind
B2
Abstract

Methods, systems, and computer-readable media for providing reliable switching between different transport protocols (e.g., TCP and UDP) are presented herein. In some embodiments, a computing platform may stop transmission over a transport protocol. Subsequently, the computing platform may synchronize buffers between a client and a host. For example, the buffer may include acknowledgments for undelivered reliable packets between the client and the host. Next, the computing platform may resume transmission over a different transport protocol. In some embodiments, when establishing an initial connection between a client and a host, connections may be attempted in parallel over multiple transport protocols. After a connection over a first transport protocol is established, if a connection is later established over a second transport protocol, the connection may be transitioned to the second transport protocol. Also, ticketing semantics may be preserved in the switch between the different transport protocols.

Claims (61)

1. A method comprising:

detecting, by a computing device, an interruption in a flow of data packets to a client device via a first connection;

providing, by the computing device, a second connection to the client device in response to the detected interruption of the flow of data packets, the second connection including a transport protocol different from that of the first connection;

identifying, by the computing device, at least one data packet of the flow of data packets undelivered to the client device via the first connection; and

sending, by the computing device, one or more data packets to the client device via the second connection so as to resume the flow of data packets between the computing device and client device, the one or more data packets including content of the at least one packet that was undelivered to the client device.

2. The method of claim 1 , wherein the transport protocol is user datagram protocol (UDP), and wherein the interruption is associated with a break in the first connection.

3. The method of claim 1 , further comprising:

changing from a first protocol to a second protocol based on the second connection including the transport protocol, wherein the first protocol and the second protocol are higher in a stack than the transport protocol.

4. The method of claim 1 , further comprising:

attempting, in parallel, to establish the first connection and the second connection, wherein a first set of data packets are sent via the first connection based on the first connection being established first in time.

5. The method of claim 1 , further comprising:

determining that the transport protocol is unavailable;

establishing a third connection that includes second transport protocol;

after a waiting period, determining that the transport protocol is available; and

based on determining that the transport protocol is available:

establishing a fourth connection that includes the transport protocol, and

sending, to the client device, one or more additional data packets via the fourth connection.

6. The method of claim 1 , further comprising:

renegotiating a maximum packet size based on the second connection including the transport protocol.

7. The method of claim 1 , further comprising:

establishing, for a stack of the transport protocol, a ticket layer that comprises status information regarding packets sent using the transport protocol, wherein the transport protocol is an unreliable protocol.

8. The method of claim 1 , wherein the one or more data packets are associated with a port of the client device, and wherein the port is associated with a reliable transport protocol.

9. An apparatus comprising:

one or more processors; and

memory storing executable instructions that, when executed by the one or more processors, cause the apparatus to:

detect an interruption in a flow of data packets to a client device via a first connection;

provide a second connection to the client device in response to the detected interruption of the flow of data packets, the second connection including a transport protocol different from that of the first connection;

identify at least one data packet of the flow of data packets undelivered to the client device via the first connection; and

send one or more data packets to the client device via the second connection so as to resume the flow of data packets to the client device, the one or more data packets including content of the at least one packet that was undelivered to the client device.

10. The apparatus of claim 9 , wherein the transport protocol is user datagram protocol (UDP), and wherein the interruption is associated with a break in the first connection.

11. The apparatus of claim 9 , wherein the executable instructions, when executed by the one or more processors, cause the apparatus to:

change from a first protocol to a second protocol based on the second connection including the transport protocol, wherein the first protocol and the second protocol are higher in a stack than the transport protocol.

12. The apparatus of claim 9 , wherein the executable instructions, when executed by the one or more processors, cause the apparatus to:

attempt, in parallel, to establish the first connection and the second connection, wherein a first set of data packets are sent via the first connection based on the first connection being established first in time.

13. The apparatus of claim 9 , wherein the executable instructions, when executed by the one or more processors, cause the apparatus to:

determine that the transport protocol is unavailable;

establish a third connection that includes a second transport protocol;

after a waiting period, determine that the transport protocol is available; and

based on determining that the transport protocol is available:

establish a fourth connection that includes the transport protocol, and

send, to the client device, one or more additional data packets via the fourth connection.

14. The apparatus of claim 9 , wherein the executable instructions, when executed by the one or more processors, cause the apparatus to:

renegotiate a maximum packet size based on the second connection including the transport protocol.

15. The apparatus of claim 9 , wherein the executable instructions, when executed by the one or more processors, cause the apparatus to:

establish, for a stack of the transport protocol, a ticket layer that comprises status information regarding packets sent using the transport protocol, wherein the transport protocol is an unreliable protocol.

16. The apparatus of claim 9 , wherein the one or more data packets are associated with a port of the client device, and wherein the port is associated with a reliable transport protocol.

17. One or more non-transitory computer-readable media storing executable instructions that, when executed, cause an apparatus to:

detect an interruption in a flow of data packets to a client device via a first connection;

provide a second connection to the client device in response to the detected interruption of the flow of data packets, the second connection including a transport protocol different from that of the first connection;

identify at least one data packet of the flow of data packets undelivered to the client device via the first connection; and

send one or more data packets to the client device via the second connection so as to resume the flow of data packets to the client device, the one or more data packets including content of the at least one packet that was undelivered to the client device.

18. The one or more non-transitory computer-readable media of claim 17 , wherein the transport protocol is user datagram protocol (UDP), and wherein the interruption is associated with a break in the first connection.

19. The one or more non-transitory computer-readable media of claim 17 , wherein the executable instructions, when executed, cause the apparatus to:

change from a first protocol to a second protocol based on the second connection including the transport protocol, wherein the first protocol and the second protocol are higher in a stack than the transport protocol.

20. The one or more non-transitory computer-readable media of claim 17 , wherein the executable instructions, when executed, cause the apparatus to:

determine that the transport protocol is unavailable;

establish a third connection that includes a second transport protocol;

after a waiting period, determine that the transport protocol is available; and

based on determining that the transport protocol is available:

establish a fourth connection that includes the transport protocol, and

send, to the client device, one or more additional data packets via the fourth connection.

Assignments (10)
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: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
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 →
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 Jan 29, 2020
From: TREDER, TERRY N.
To: CITRIX SYSTEMS, INC.
Reel/Frame 051661/0634 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 051737/0411 →
Continuity (3)
Continuation 15598912 · May 18, 2017
Provisional Application 62339557 · May 20, 2016
Related Publication 20200169621A1 · May 28, 2020