IP Library › Granted Patent US 10,924,423
Granted Patent B2
US 10,924,423 · App. 16/372,712 · Granted Feb 16, 2021

Adaptive mechanism to adjust UDT packet size based on actual network condition

Inventor: Jin Li (Nanjing, CN)
Assignee: Citrix Systems, Inc.
H04L47/365H04L1/0007H04L5/0055H04L65/80
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,924,423
App. No.
16/372,712
Granted
Feb 16, 2021
Kind
B2
Abstract

Described embodiments provide systems and methods for adaptive packet size adjustment for UDT or similar protocols, responsive to actual network conditions. Upon detection of a ‘black hole’ or a size or range of sizes of packets that are repeatedly lost, the system may subdivide packets matching the size or range into smaller subpackets. The receiving device may receive each subpacket and reassemble the original packet, allowing successful communication. Other packets, both smaller and larger than the identified size or range, may be transmitted normally, avoiding drastic reductions to congestion windows or application of other congestion avoidance features, or reducing the MTU value to avoid the ‘black hole’ range while sacrificing overall useable bandwidth. As a result, the system may more efficiently and reliably communicate large data payloads.

Claims (52)

1. A method for adaptive packet sizing, comprising:

transmitting, by a first device to a second device, a first packet having a first size;

receiving, by the first device from the second device, a negative acknowledgement for the first packet;

determining, by the first device, that a number of received negative acknowledgements for the first packet exceeds a threshold;

adding, by the first device, a first size window corresponding to the first size to a transmission filter, the transmission filter preventing transmission of packets having a size corresponding to the first size window;

generating, by the first device, a first subpacket and a second subpacket from the first packet, responsive to determining that the number of received negative acknowledgements for the first packet exceeds the threshold; and

transmitting, by the first device to the second device, the first subpacket and the second subpacket.

2. The method of claim 1 , further comprising receiving, by the first device from the second device, an acknowledgement sent responsive to receipt of the first subpacket and the second subpacket; and

wherein adding the first size window to the transmission filter is performed responsive to receipt of the acknowledgement sent responsive to receipt of the first subpacket and the second subpacket.

3. The method of claim 2 , wherein the acknowledgement includes a sequence number of the first packet.

4. The method of claim 3 , wherein generating the first subpacket and the second subpacket each further comprise generating a subpacket comprising a portion of a payload the first packet, a sequence number of the first packet, and a subpacket index value.

5. The method of claim 1 , further comprising:

receiving, by the first device, a second packet having a second size corresponding to the first size window;

generating, by the first device, a third subpacket and a fourth subpacket from the second packet, responsive to the transmission filter including the first size window corresponding to the second size; and

transmitting, by the first device to the second device, the third subpacket and the fourth subpacket.

6. The method of claim 1 , wherein the first size window comprises the first size plus and minus a predetermined offset size.

7. The method of claim 1 , wherein the first packet comprises a user datagram protocol (UDP)-based data transfer protocol (UDT) packet.

8. The method of claim 1 , wherein the first size is less than a maximum transmission unit (MTU) size of a connection between the first device and the second device.

9. A system for adaptive packet sizing, comprising:

a first device comprising a network interface in communication with a second device, and a memory device comprising a transmission filter;

wherein the first device is configured to:

transmit, to the second device via the network interface, a first packet having a first size,

receive, from the second device, a negative acknowledgement for the first packet,

determine that a number of received negative acknowledgements for the first packet exceeds a threshold,

add a first size window corresponding to the first size to the transmission filter, the transmission filter preventing transmission of packets having a size corresponding to the first size window,

generate a first subpacket and a second subpacket from the first packet, responsive to determining that the number of received negative acknowledgements for the first packet exceeds the threshold; and

transmit, to the second device, the first subpacket and the second subpacket.

10. The system of claim 9 , wherein the first device is further configured to:

receive, from the second device, an acknowledgement sent responsive to receipt of the first subpacket and the second subpacket; and

add the first size window to the transmission filter responsive to receipt of the acknowledgement sent responsive to receipt of the first subpacket and the second subpacket.

11. The system of claim 10 , wherein the acknowledgement includes a sequence number of the first packet.

12. The system of claim 11 , wherein the first device is further configured to generate each of the first subpacket and the second subpacket by generating a subpacket comprising a portion of a payload the first packet, a sequence number of the first packet, and a subpacket index value.

13. The system of claim 9 , wherein the first device is further configured to:

receive a second packet having a second size corresponding to the first size window;

generate a third subpacket and a fourth subpacket from the second packet, responsive to the transmission filter including the first size window corresponding to the second size; and

transmit, to the second device, the third subpacket and the fourth subpacket.

14. The system of claim 9 , wherein the first size window comprises the first size plus and minus a predetermined offset size.

15. The system of claim 9 , wherein the first packet comprises a user datagram protocol (UDP)-based data transfer protocol (UDT) packet.

16. The system of claim 9 , wherein the first size is less than a maximum transmission unit (MTU) size of a connection between the first device and the second device.

17. A method for adaptive packet sizing, comprising:

determining, by a first device, that a transmission of a first packet from a second device to the first device has not been received, the first packet having a first sequence number;

transmitting, by the first device to the second device, a negative acknowledgement comprising the first sequence number;

receiving, by the first device from the second device, a first subpacket and a second subpacket generated from the first packet, each of the first subpacket and the second subpacket comprising the first sequence number and a subpacket index value, the first subpacket and second subpacket transmitted by the second device responsive to a determination that the number of received negative acknowledgements for the first packet exceeds a threshold;

reassembling the first packet, by the first device, from the first subpacket and the second subpacket according to the subpacket index value of each subpacket; and

responsive to reassembling the first packet, transmitting, by the first device to the second device, an acknowledgement comprising the first sequence number;

wherein receipt of the acknowledgment comprising the first sequence number causes the second device to add a first size window corresponding to a size of the first packet to a transmission filter;

reassembling the second packet, by the first device, from the third subpacket and the fourth subpacket according to the subpacket index value of each subpacket; and

responsive to reassembling the second packet, transmitting, by the first device to the second device, an acknowledgement comprising the second sequence number.

18. The method of claim 17 , further comprising:

receiving, by the first device from the second device, a third subpacket and a fourth subpacket generated from a second packet not previously transmitted from the second device, each of the third subpacket and the fourth subpacket comprising a second sequence number and a subpacket index value, the second packet having a size corresponding to the first size window;

reassembling the second packet, by the first device, from the third subpacket and the fourth subpacket according to the subpacket index value of each subpacket; and

responsive to reassembling the second packet, transmitting, by the first device to the second device, an acknowledgement comprising the second sequence number.

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 Apr 3, 2019
From: LI, JIN
To: CITRIX SYSTEMS, INC.
Reel/Frame 048789/0437 →
Continuity (1)
Related Publication 20200322277A1 · Oct 8, 2020