IP Library Granted Patent US 11,671,518
Granted Patent B2
US 11,671,518 · App. 17/569,046 · Granted Jun 6, 2023

Adaptive session reliability over multiple transports

Inventors: Georgy Momchilov (Parkland, FL); Terry N. Treder (Delray Beach, FL)
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,671,518
App. No.
17/569,046
Filed
Jan 5, 2022
Granted
Jun 6, 2023
Kind
B2
Art Unit
2457
USPC
709/225
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 (45)

1. A method comprising:

enabling, by a computing device, a transmission of a data packet using an unreliable transport protocol, the computing device to facilitate data communications between a client device and a server;

issuing a ticket corresponding to the data packet, the ticket being accessible to one or more applications being executed by the computing device; and

preserving ticketing semantics between the unreliable transport protocol and a reliable transport protocol by

mapping, to preserve ticketing semantics between the unreliable transport protocol and a reliable transport protocol, a state of the ticket to an acknowledgment state of the transmission of the data packet using the unreliable transport protocol, and

updating the ticket based on the mapping.

2. The method of claim 1 , wherein mapping the state of the ticket is based on acknowledgment state of a custom data-transmission protocol different from the unreliable transport protocol.

3. The method of claim 1 , wherein the acknowledgement state of the transmission of the data packet is one of unsent, unknown, delivered, or lost.

4. The method of claim 1 further comprising:

returning a default state to the one or more applications in response to a request for the state of the ticket.

5. The method of claim 1 further comprising:

sending, using the unreliable transport protocol, the data packet over a first connection, wherein a first stack associated with the unreliable transport protocol includes a ticket layer that comprises first status information regarding transmission of first packets sent using the unreliable transport protocol; and

maintaining a second stack for a second connection over which data is sent using the reliable transport protocol, the second stack including a ticket emulation layer that comprises second status information regarding transmission of second packets sent using the reliable transport protocol.

6. The method of claim 5 further comprising:

receiving, from a virtual channel, a request for a status of transmission of a particular packet;

determining, from the ticket layer or the ticket emulation layer, the status of the transmission of the particular packet; and

returning the status of the transmission of the particular packet.

7. The method of claim 6 , wherein the virtual channel is an enlightened virtual channel, and wherein the method further comprises:

based on the status of the transmission of the particular packet, determining whether to retransmit the particular packet, transmit a new superseding packet, or do nothing.

8. The method of claim 6 , wherein the request for the status of the transmission of the particular packet is directed to a first of the ticket layer or the ticket emulation layer, and the status of the transmission of the particular packet is determined from a second of the ticket layer or the ticket emulation layer.

9. The method of claim 5 further comprising:

during the transmission of the second packets over the second connection using the reliable transport protocol, determining a break in the second connection;

resuming transmission of the second packets via the first connection using the unreliable transport protocol; and

transferring ticket information about the transmission of the second packets from the ticket emulation layer to the ticket layer.

10. An apparatus comprising:

one or more processors; and

memory storing executable instructions that, when executed, cause the apparatus to:

enable a transmission of a data packet using an unreliable transport protocol, the apparatus to facilitate data communications between a client device and a server;

issue a ticket corresponding to the data packet, the ticket being accessible to one or more applications being executed by the apparatus; and

preserve ticketing semantics between the unreliable transport protocol and a reliable transport protocol by

mapping a state of the ticket to an acknowledgment state of the transmission of the data packet using the unreliable transport protocol, and

updating the ticket based on the mapping.

11. The apparatus of claim 10 , wherein the executable instructions, when executed by the at least one processor, cause the apparatus to map the state of the ticket based on an acknowledgment state of a custom data-transmission protocol different from the unreliable transport protocol.

12. The apparatus of claim 10 , wherein the executable instructions, when executed by at least one processor, cause the apparatus to:

send the data packet over a first connection using the unreliable transport protocol, wherein a first stack associated with the unreliable protocol includes a ticket layer that comprises first status information regarding transmission of first packets sent using the unreliable protocol; and

maintain a second stack for a second connection using the reliable transport protocol, wherein the second stack includes a ticket emulation layer that comprises second status information regarding transmission of second packets sent using the reliable protocol.

13. The apparatus of claim 12 , wherein the executable instructions, when executed by at least one processor, cause the apparatus to:

receive, from a virtual channel, a request for a status of transmission of a particular packet;

determine, from the ticket layer or the ticket emulation layer, the status of the transmission of the particular packet; and

return the status of the transmission of the particular packet.

14. The apparatus of claim 13 , wherein the request for the status of the transmission of the particular packet is directed to a first of the ticket layer or the ticket emulation layer, and the status of the transmission of the particular packet is determined from a second of the ticket layer or the ticket emulation layer.

15. The apparatus of claim 12 , wherein the executable instructions, when executed by the at least one processor, cause the apparatus to:

during the transmission of the second packets over the second connection using the reliable transport protocol, determine a break in the second connection;

resume transmission of the second packets via the first connection using the unreliable transport protocol; and

transfer ticket information about the transmission of the second packets from the ticket emulation layer to the ticket layer.

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 21, 2022
From: TREDER, TERRY N.
To: CITRIX SYSTEMS, INC.
Reel/Frame 058725/0276 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2022
From: MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 058811/0901 →
Continuity (4)
Division 16776022 · Jan 29, 2020
Continuation 15598912 · May 18, 2017
Provisional Application 62339557 · May 20, 2016
Related Publication 20220131957A1 · Apr 28, 2022