IP Library Granted Patent US 8,824,490
Granted Patent B2
US 8,824,490 · App. 13/523,729 · Granted Sep 2, 2014

Automatic detection and window virtualization for flow control

Inventors: Allen R. Samuels (San Jose, CA); Paul G. Sutter (San Francisco, CA)
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,824,490
App. No.
13/523,729
Granted
Sep 2, 2014
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 (37)

1. A method for auto-discovery of flow control modules, the method comprising:

receiving, by a first flow control module of a first intermediary device deployed between a first network and a second network, a first data packet transmitted via the first network;

modifying, by the first flow control module, the first data packet to include a first configuration identifier identifying that the first intermediary device comprises a flow control module;

transmitting, by the first flow control module, the modified first data packet via the second network;

transmitting, by the first flow control module, at least one additional data packet via the second network without applying a performance enhancing technique that requires a second flow control module, responsive to not having received a packet via the second network comprising a second configuration identifier;

receiving, by the first flow control module, a second data packet transmitted via the second network;

identifying, by the first flow control module, that the second data packet includes the second configuration identifier;

extracting, by the first flow control module, the second configuration identifier from the second data packet;

determining, by the first flow control module responsive to the presence of the second configuration identifier in the second data packet, that a second intermediary device comprising a second flow control module is deployed between the second network and a third network; and

applying, by the first flow control module, at least one performance enhancing technique that requires a second flow control module to subsequent communications via the second network, responsive to the determination.

2. The method of claim 1 , wherein the first data packet is a synchronization packet, and wherein the second data packet is a corresponding synchronization acknowledgement packet.

3. The method of claim 1 , further comprising applying at least one performance enhancing technique that does not require a second flow control module to transmission of the at least one additional data packet, prior to receipt of the second data packet.

4. The method of claim 1 , wherein modifying the first data packet comprises inserting the first configuration identifier into an options field of a transport layer header of the first data packet.

5. The method of claim 1 , wherein extracting the second configuration identifier comprises extracting the second configuration identifier from an options field of a transport layer header of the second data packet.

6. The method of claim 1 , wherein the first data packet includes a first window scale of a first size, and wherein modifying the first data packet further comprises increasing the first window scale to a second, larger size.

7. The method of claim 6 , wherein the second data packet includes a second window scale of the second, larger size, and further comprising decreasing, by the first flow control module, the second window scale to the first size.

8. The method of claim 1 , wherein the presence of the second configuration identifier indicates that the first flow control module and the second flow control module are in the same flow control system.

9. The method of claim 1 , wherein transmitting the at least one additional data packet via the second network without applying a performance enhancing technique that requires a second flow control module comprises applying an improved retransmit algorithm.

10. The method of claim 1 , wherein the first network and the second network utilize the same transport protocols.

11. An apparatus configured for auto-discovery of flow control modules, the apparatus comprising:

a receiver of a first flow control module of a first intermediary device deployed between a first network and a second network, the receiver configured for receiving a first data packet transmitted via the first network and for receiving a second data packet transmitted via the second network; and

a processing module of the first flow control module configured for:

modifying the first data packet to include a first configuration identifier identifying that the first intermediary device comprises a flow control module, the modified first data packet transmitted via the second network,

transmitting at least one additional data packet via the second network without applying a performance enhancing technique that requires a second flow control module, responsive to not having received a packet via the second network comprising a second configuration identifier,

identifying that the second data packet includes the second configuration identifier,

extracting the second configuration identifier from the second data packet,

determining, responsive to the presence of the second configuration identifier in the second data packet, that a second intermediary device comprising a second flow control module is deployed between the second network and a third network, and

applying at least one performance enhancing technique that requires a second flow control module to subsequent communications via the second network, responsive to the determination.

12. The apparatus of claim 11 , wherein the first data packet is a synchronization packet, and wherein the second data packet is a corresponding synchronization acknowledgement packet.

13. The apparatus of claim 11 , wherein prior to receipt of the second data packet, the processing module is configured to perform at least one performance enhancing technique that does not require a second flow control module to transmission of the at least one additional data packet.

14. The apparatus of claim 11 , wherein the processing module is further configured for inserting the first configuration identifier into an options field of a transport layer header of the first data packet.

15. The apparatus of claim 11 , wherein the processing module is further configured for extracting the second configuration identifier from an options field of a transport layer header of the second data packet.

16. The apparatus of claim 11 , wherein the first data packet includes a first window scale of a first size, and wherein the processing module is further configured for increasing the first window scale to a second, larger size.

17. The apparatus of claim 16 , wherein the second data packet includes a second window scale of the second, larger size, and wherein the processing module is further configured for decreasing, by the first flow control module, the second window scale to the first size.

18. The apparatus of claim 11 , wherein the presence of the second configuration identifier indicates that the first flow control module and the second flow control module are in the same flow control system.

19. The apparatus of claim 11 , wherein the processing module is further configured for transmitting the at least one additional data packet via the second network without applying a performance enhancing technique that requires a second flow control module by applying an improved retransmit algorithm.

20. The apparatus of claim 11 , wherein the first network and the second network utilize the same transport protocols.

Assignments (8)
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 →
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: 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 →
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 Mar 19, 2013
From: ORBITAL DATA CORPORATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 030045/0587 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2013
From: SAMUEL, ALLEN R.; SUTTER, PAUL G.
To: ORBITAL DATA CORPORATION
Reel/Frame 029863/0611 →
Continuity (4)
Continuation 10901691 · Jul 28, 2004
Continuation In Part 10696507 · Oct 29, 2003
Provisional Application 60490694 · Jul 29, 2003
Related Publication 20130003553A1 · Jan 3, 2013