IP Library Granted Patent US 8,238,241
Granted Patent B2
US 8,238,241 · App. 10/901,691 · Granted Aug 7, 2012

Automatic detection and window virtualization for flow control

Assignee: Citrix Systems, Inc.
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 8,238,241
App. No.
10/901,691
Granted
Aug 7, 2012
Kind
B2
Abstract

One or more flow control modules, implemented on various types of network topologies, provide a number of functionalities for controlling the flow of IP packets (such as TCP/IP packets) over a network connection. The flow control modules may be implemented within a sender and/or receiver or may be deployed into a network as a separate device without requiring significant additional resources.

Claims (48)

1. A method to identify flow control modules of a flow control system using packets traversing the flow control modules and transmitted between a source node and a destination node, the method comprising:

inserting, at a first flow control module configured on a first intermediary device, a first configuration identifier into an options area of a header of a first transmission control protocol (“TCP”) data packet transmitted from a source node to initiate synchronization of a session with a destination node, the first configuration identifier identifying that the first intermediary device is configured with the first flow control module;

extracting, at the first flow control module, a second configuration identifier from an options area of a header of a second TCP data packet, transmitted from the destination node to initiate acknowledgement of synchronization of the session responsive to receiving the first data packet, the second configuration identifier identifying that a second intermediary device is configured with a second flow control module; and

applying, by the first flow control module, at least one performance enhancing technique of increasing a window scale to communications between the first intermediary device and the second intermediary device to increase data buffering capabilities of the session, responsive to the presence of the second configuration identifier in the second TCP data packet.

2. The method of claim 1 , further comprising the first flow control module storing the second configuration identifier and initializing performance enhancing proxy services between the first flow control module and the second flow control module responsive to presence of both the first configuration identifier and the second configuration identifier.

3. The method of claim 1 , further comprising:

extracting, at the second control module, the first configuration identifier from the options area of the header of the first TCP data packet; and

storing the first configuration identifier.

4. The method of claim 3 , further comprising inserting, at the second flow control module, the second configuration identifier into the options area of the header of the second TCP data packet.

5. The method of claim 4 wherein the data packet is an Internet protocol (“IP”) data packet.

6. The method of claim 5 , wherein the header is a TCP header.

7. The method of claim 6 , wherein the first flow control module is further configured to increase a window scale in response to the received configuration identifier.

8. The method of claim 6 , wherein the first flow control module requests a larger buffer capacity in response to the received configuration identifier.

9. A method for initializing a network session having fast sides and a slow side in a data path traversing flow control modules of a flow control system providing performance enhancing proxy services, the method comprising:

receiving, at a first flow control module configured on a first intermediary device, a TCP synchronization signal from a first fast side and transmitting to the slow side the TCP synchronization signal to initiate a communication session with a first configuration identifier inserted by the first flow control module to identify that the first intermediary device is configured with the first flow control module; and

receiving, at a second flow control module configured on a second intermediary device, from the slow side, the TCP synchronization signal with the first configuration identifier, storing the first configuration identifier and applying at least one performance enhancing technique to communications between the first flow control module and the second flow control module to increase data buffering capabilities for the communication session responsive to the presence of the first configuration identifier in the TCP synchronization signal; and

increasing buffer capacity in the first flow control module in response to the presence of a second configuration identifier in a synchronization acknowledgement signal received from the second flow control module.

10. The method of claim 9 , further comprising:

receiving at the second flow control module from a second fast side a TCP synchronization acknowledgment signal and transmitting to the slow side the TCP synchronization acknowledgment signal with a second configuration identifier inserted by the second flow control module to identify that the second intermediary device is configured with the second flow control module; and

receiving at the first flow control module from the slow side the synchronization acknowledgment signal with the second configuration identifier and storing the second configuration identifier.

11. The method of claim 9 , wherein the slow side comprises a wide area network.

12. The method of claim 9 , wherein the data packet is an Internet protocol (“IP”) data packet.

13. The method of claim 12 , wherein each configuration identifier is stored in an options area of the IP data packet.

14. The method of claim 9 , wherein the first fast side comprises coupling the first flow control module with a source node.

15. The method of claim 9 , wherein the second fast side comprises coupling the second flow control module with a destination node.

16. The method of claim 10 , further comprising increasing buffer capacity in the first flow control module in response to receiving the synchronization signal from the first fast side.

17. The method of claim 10 , further comprising increasing buffer capacity in the second flow control module in response to receiving the synchronization signal with the first flow control module configuration identifier.

18. An apparatus configured to provide communication between a fast side and a slow side of a data path traversing flow control modules of a flow control system providing performance enhancing proxy services, the apparatus comprising:

a receiver of a first flow control module configured on a first intermediary device, coupled with a fast side and a slow side of a data path and configured to receive a transmission control protocol (“TCP”) synchronization signal or a TCP synchronization acknowledgment signal to initiate a communication session; and

a processing module of the first flow control module, configured to

insert a first configuration identifier into an option portion of a header of a TCP synchronization signal or a TCP synchronization acknowledgment signal received from the fast side, the first configuration identifier identifying that the first intermediary device is configured with the first flow control module,

extract, if present, a second configuration identifier from an option portion of a header of a TCP synchronization signal or a TCP synchronization acknowledgement signal received from the slow side, the second configuration identifier identifying that a second intermediary device is configured with a second flow control module, and

determine, responsive to the presence of the second configuration identifier, whether to apply at least one performance enhancing technique of increasing buffer capacity in the first flow control module for communications with the second intermediary device to increase data buffering capabilities of the communication session.

19. The apparatus of claim 18 , wherein the fast side comprises receiving the synchronization signal from a source node.

20. The apparatus of claim 18 , wherein the fast side comprises a local area network.

21. The apparatus of claim 18 , wherein performance enhancing proxy services between the first flow control module and the second flow control module are initialized responsive to the presence of both the first configuration identifier and the second configuration identifier.

22. The apparatus of claim 18 , wherein the fast side comprises receiving the synchronization acknowledgement signal from a destination node.

23. The apparatus of claim 18 , wherein the slow side comprises a wide area network.

24. The apparatus of claim 18 , wherein the extracted configuration identifier is stored in a storage state block.

25. The apparatus of claim 18 , wherein the communication network is an Internet protocol (“IP”) network.

26. The apparatus of claim 18 , wherein the configuration identifiers are inserted and extracted during establishing a session between a source node and a destination node.

27. The apparatus of claim 26 , further comprising a buffer configured to allow data packets use of a larger capacity in response to the apparatus inserting the configuration identifier associated with the apparatus and extracting the configuration identifier associated with another apparatus.

28. A method for auto-discovery of flow control modules of a flow control system using packets traversing the flow control modules and transmitted between a source node and a destination node, the method comprising:

inserting, at a first flow control module configured on a first intermediary device, a first configuration identifier into a first data packet transmitted from a source node to initiate synchronization of a session with a destination node, the first configuration identifier identifying that the first intermediary device is configured with a first flow control module;

receiving, at the first flow control module, a second data packet transmitted from the destination node to initiate acknowledgement of synchronization of the session, the second data packet including a second configuration identifier identifying that the second data packet traversed a second intermediary device configured with a second flow control module;

determining, by the first flow control module, that the second intermediary device is configured with the second flow control module responsive to the presence of the second configuration identifier in the second data packet; and

applying, by the first flow control module, at least one performance enhancing technique of increasing a window scale to communications between the source node and destination node to increase data buffering capabilities of the session, responsive to the determination.

29. The method of claim 28 , wherein the at least one performance enhancing technique comprises increasing a window scale of communications traversing the first flow control module from the source node to the destination node, and decreasing the window scale of communications traversing the first flow control module from the destination node to the source node.

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 →
NUNC PRO TUNC ASSIGNMENT Recorded Dec 15, 2011
From: ORBITAL DATA CORPORATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 027392/0357 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2004
From: SAMUELS, ALLEN R.; SUTTER, PAUL G.
To: ORBITAL DATA CORPORATION
Reel/Frame 015425/0312 →
Continuity (3)
Continuation In Part 10696507 · Oct 29, 2003
Provisional Application 60490694 · Jul 29, 2003
Related Publication 20050063302A1 · Mar 24, 2005