IP Library Granted Patent US 11,425,052
Granted Patent B2
US 11,425,052 · App. 16/913,281 · Granted Aug 23, 2022

Discovery and adjustment of path maximum transmission unit

Inventors: Georgy Momchilov (Parkland, FL); Rakesh Ranjan Jha (Pompano Beach, FL); Jeffrey Holsapple (Pompano Beach, FL); Sridharan Rajagopalan (Pompano Beach, FL)
Assignee: Citrix Systems, Inc.
H04L47/365H04L47/628H04L69/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 11,425,052
App. No.
16/913,281
Granted
Aug 23, 2022
Kind
B2
Abstract

Methods, systems, and apparatuses for discovering dynamic path maximum transmission unit (PMTU) between a sending computing device and a receiving computing device (e.g., a client device and a host device) are described herein. A sending computing device may iteratively transmit bursts of probe packets, each burst being defined by a search range between a maximum packet size and a minimum packet size. The sending computing device may iteratively update the search range based on the previous iteration until the search converges on the PMTU. When the PMTU is discovered, each of the computing devices may update their transport and presentation layer buffers based on the discovered PMTU without any other protocol level disruption. In a multi-path scenario, the computing device may discover PMTU for each of the paths and select a performance optimal path based on the individual PMTUs and other network characteristics such as loss, latency, and throughput.

Claims (50)

1. A method comprising:

transmitting, by a client device to a host device, a plurality of packets via a network connection between the client device and the host device, the plurality of packets sized relative to one another within a range defined by a maximum packet size and a minimum packet size;

receiving, by the client device, one or more responses from the host device, at least one response indicative of validity of a packet received at the host device;

determining, by the client device, a path maximum transmission unit (PMTU) of the network connection based on the receipt of the one or more responses;

adjusting, by the client device, a size of a buffer of the client device based on the PMTU of the network connection; and

providing, by the client device, data packets between the client device and the host device using the adjusted buffer so as to avoid disruption of the network connection between the client device and the host device.

2. The method of claim 1 , wherein the buffer comprises a receive buffer, and

the method further comprising:

initializing, by the client device, the receive buffer to a predetermined maximum possible packet size.

3. The method of claim 2 , wherein the predetermined maximum possible packet size is based on a maximum packet size supported by the network connection, and

wherein the maximum packet size is determined based on a protocol handshake between the client device, the host device, and one or more intermediary devices.

4. The method of claim 1 , wherein the buffer comprises a send buffer, and

the method further comprising:

initializing, by the client device, the send buffer to a predetermined minimum packet size.

5. The method of claim 1 , wherein the buffer comprises a communication stack buffer of a presentation layer.

6. The method of claim 1 , wherein the buffer comprises a communication stack buffer of a transport layer.

7. The method of claim 1 , wherein an initialization of data communication via the network connection and the determination of the PMTU are performed in parallel.

8. The method of claim 1 , wherein a size of a buffer of the host device is adjusted based on the PMTU of the network connection.

9. An apparatus comprising:

one or more processors; and

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

transmit, to a host device, a plurality of packets via a network connection between the apparatus and the host device, the plurality of packets sized relative to one another within a range defined by a maximum packet size and a minimum packet size;

receive one or more responses from the host device, at least one response indicative of validity of a packet received at the host device;

determine a path maximum transmission unit (PMTU) of the network connection based on the receipt of the one or more responses;

adjust a size of a buffer of a client device based on the PMTU of the network connection; and

provide data packets between the apparatus and the host device using the adjusted buffer so as to avoid disruption of the network connection between the apparatus and the host device.

10. The apparatus of claim 9 , wherein the buffer comprises a receive buffer, and wherein the instructions, when executed by the one or more processors cause the apparatus to:

initialize the receive buffer to a predetermined maximum possible packet size.

11. The apparatus of claim 10 , wherein the predetermined maximum possible packet size is based on a maximum packet size supported by the network connection, and

wherein the maximum packet size is determined based on a protocol handshake between the apparatus, the host device, and one or more intermediary devices.

12. The apparatus of claim 9 , wherein the buffer comprises a send buffer, and wherein the instructions, when executed by the one or more processors cause the apparatus to:

initialize the send buffer to a predetermined minimum packet size.

13. The apparatus of claim 9 , wherein the buffer comprises a communication stack buffer of a presentation layer.

14. The apparatus of claim 9 , wherein the buffer comprises a communication stack buffer of a transport layer.

15. The apparatus of claim 9 , wherein an initialization of data communication via the network connection and the determination of the PMTU are performed in parallel.

16. The apparatus of claim 9 , wherein a size of a buffer of the host device is adjusted based on the PMTU of the network connection.

17. A system comprising:

a client device;

a host device;

wherein the client device comprises:

one or more processors; and

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

transmit to the host device, a plurality of packets via a network connection between the client device and the host device, the plurality of packets sized relative to one another within a range defined by a maximum packet size and a minimum packet size;

receive one or more responses from the host device, at least one response indicative of validity of a packet received at the host device;

determine a path maximum transmission unit (PMTU) of the network connection based on the receipt of the one or more responses;

adjust a size of a buffer of the client device based on the PMTU of the network connection; and

provide data packets between the client device and the host device using the adjusted buffer so as to avoid disruption of the network connection between the client device and the host device.

18. The system of claim 17 , wherein the buffer comprises a communication stack buffer of a presentation layer.

19. The system of claim 17 , wherein the buffer comprises a communication stack buffer of a transport layer.

20. The system of claim 17 , wherein an initialization of data communication via the network connection and the determination of the PMTU are performed in parallel.

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 →
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 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 →
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 →
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 Jun 29, 2020
From: MOMCHILOV, GEORGY; JHA, RAKESH RANJAN; HOLSAPPLE, JEFFREY; RAJAGOPALAN, SRIDHARAN
To: CITRIX SYSTEMS, INC.
Reel/Frame 053073/0048 →
Continuity (3)
Continuation 16890661 · Jun 2, 2020
Provisional Application 62942620 · Dec 2, 2019
Related Publication 20210168089A1 · Jun 3, 2021