IP Library Granted Patent US 9,008,100
Granted Patent B2
US 9,008,100 · App. 14/045,543 · Granted Apr 14, 2015

Wavefront detection and disambiguation of acknowledgments

Inventors: Allen R. Samuels (San Jose, CA); Paul G. Sutter (San Francisco, CA)
Assignee: Citrix Systems, Inc.
H04L47/10H04L12/24H04L41/00H04L41/12H04L69/16H04L69/166H04L67/28H04L67/2876
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 9,008,100
App. No.
14/045,543
Granted
Apr 14, 2015
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 (46)

1. A method for communicating with a remote system using Internet Protocol (IP) via a computer network, the method comprising:

transmitting, by a flow control module configured on a device, a first data packet from a sender to a remote system, the transmitted first data packet including a first transport layer sequence number;

transmitting, by the flow control module, a second data packet from the sender to the remote system, the second data packet including a second transport layer sequence number;

transmitting, by the flow control module, a third data packet from the sender to the remote system, the third data packet including a third transport layer sequence number;

retransmitting, by the flow control module, the first data packet from the sender to the remote system, the retransmitted first data packet including the first sequence number;

maintaining, by the flow control module, an ordered list of sequence numbers in order of transmission, the list comprising an entry for each of the transmission of the first, second, and third data packets and the retransmission of the first data packet;

receiving, by the flow control module from the remote system, a first acknowledgement packet, the first acknowledgement packet including one of: (i) the second sequence number to indicate receipt by the remote system of the second data packet, or (ii) the third sequence number to indicate receipt by the remote system of the third data packet;

receiving, by the flow control module from the remote system, a second acknowledgement packet, the second acknowledgement packet including the first sequence number; and

determining, by the flow control module, whether the received second acknowledgement packet acknowledges receipt by the remote system of one of: (i) the transmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the transmission of the first data packet, or (ii) the retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the retransmission of the first data packet.

2. The method of claim 1 , further comprising adding, by the flow control module, an entry to the ordered list responsive to transmission or retransmission of a data packet, the entry comprising the transport layer sequence number of the transmission or retransmission of the data packet.

3. The method of claim 1 , further comprising identifying as a last known received entry, by the flow control module and responsive to receiving the first acknowledgement packet, an entry in the ordered list corresponding to the sequence number included in the first acknowledgement packet.

4. The method of claim 1 , further comprising:

transmitting, by the flow control module, one or more additional data packets from the sender to the remote system prior to retransmitting the first data packet; and

presuming lost, by the flow control module, the one or more additional data packets sent prior to retransmitting the first data packet, responsive to: (i) determining that the received acknowledgement packet acknowledges receipt by the remote system of the retransmission of the first data packet, and (ii) receipt of the one or more additional data packets not being acknowledged by the remote system.

5. The method of claim 1 , wherein the ordered list further comprises a timestamp corresponding to each entry.

6. The method of claim 1 , wherein the second acknowledgement packet does not include an explicit identifier indicating the number of times a data packet was retransmitted.

7. The method of claim 1 , further comprising:

re-retransmitting, by the flow control module, the first data packet from the sender to the remote system, the re-retransmitted first data packet including the first sequence number.

8. The method of claim 7 , further comprising adding, by the flow control module, an entry to the ordered list responsive to re-retransmitting the first data packet, the entry comprising the first sequence number.

9. The method of claim 8 , further comprising;

determining, by the flow control module, that the received second acknowledgement packet acknowledges receipt by the remote system of one of: (i) the transmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the transmission of the first data packet, (ii) the retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the retransmission of the first data packet, or (iii) the re-retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the re-retransmission of the first data packet.

10. The method of claim 9 , further comprising:

transmitting, by the flow control module, one or more additional data packets from the sender to the remote system prior to re-retransmitting the first data packet; and

presuming lost, by the flow control module, the one or more additional data packets sent prior to re-retransmitting the first data packet, responsive to: (i) determining that the received acknowledgement packet acknowledges receipt by the remote system of the retransmission of the first data packet, and (ii) receipt of the one or more additional data packets not being acknowledged by the remote system.

11. A system for communicating with a remote system using Internet Protocol (IP) via a computer network, the system comprising:

a device deployed between a sender and a remote system, the device comprising a flow control module, the flow control module configured to:

transmit a first data packet from a sender to a remote system, the transmitted first data packet including a first transport layer sequence number;

transmit a second data packet from the sender to the remote system, the second data packet including a second transport layer sequence number;

transmit a third data packet from the sender to the remote system, the third data packet including a third transport layer sequence number;

retransmit, the first data packet from the sender to the remote system, the retransmitted first data packet including the first sequence number;

maintain an ordered list of sequence numbers in order of transmission, the list comprising an entry for each of the transmission of the first, second, and third data packets and the retransmission of the first data packet;

receive from the remote system, a first acknowledgement packet, the first acknowledgement packet including one of: (i) the second sequence number to indicate receipt by the remote system of the second data packet, or (ii) the third sequence number to indicate receipt by the remote system of the third data packet;

receive from the remote system, a second acknowledgement packet, the second acknowledgement packet including the first sequence number; and

determine whether the received second acknowledgement packet acknowledges receipt by the remote system of one of: (i) the transmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the transmission of the first data packet, or (ii) the retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the retransmission of the first data packet.

12. The system of claim 11 , wherein the flow control module is further configured to add an entry to the ordered list responsive to transmission or retransmission of a data packet, the entry comprising the transport layer sequence number of the transmission or retransmission of the data packet.

13. The system of claim 11 , wherein the flow control module is further configured to identify as a last known received entry, by the flow control module and responsive to receipt of the first acknowledgement packet, an entry in the ordered list corresponding to the sequence number included in the first acknowledgement packet.

14. The system of claim 11 , wherein the flow control module is further configured to:

Transmit one or more additional data packets from the sender to the remote system prior to retransmitting the first data packet; and

presume lost the one or more additional data packets sent prior to retransmitting the first data packet, responsive to: (i) determining that the received acknowledgement packet acknowledges receipt by the remote system of the retransmission of the first data packet, and (ii) receipt of the one or more additional data packets not being acknowledged by the remote system.

15. The system of claim 11 , wherein the ordered list further comprises a timestamp corresponding to each entry.

16. The system of claim 11 , wherein the second acknowledgement packet does not include an explicit identifier indicating the number of times a data packet was retransmitted.

17. The system of claim 11 , wherein the flow control module is further configured to re-retransmit the first data packet from the sender to the remote system, the re-retransmitted first data packet including the first sequence number.

18. The system of claim 17 , wherein the flow control module is further configured to add an entry to the ordered list responsive to re-retransmitting the first data packet, the entry comprising the first sequence number.

19. The system of claim 18 , wherein the flow control module is further configured to: determine that the received second acknowledgement packet acknowledges receipt by the remote system of one of: (i) the transmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the transmission of the first data packet, (ii) the retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the retransmission of the first data packet, or (iii) the re-retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the re-retransmission of the first data packet.

20. The system of claim 19 , wherein the flow control module is further configured to:

transmit one or more additional data packets from the sender to the remote system prior to re-retransmitting the first data packet; and presume lost the one or more additional data packets sent prior to re-retransmitting the first data packet, responsive to: (i) determining that the received acknowledgement packet acknowledges receipt by the remote system of the retransmission of the first data packet, and (ii) receipt of the one or more additional data packets not being acknowledged by the remote system.

Assignments (9)
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 →
NUNC PRO TUNC ASSIGNMENT Recorded Nov 27, 2013
From: ORBITAL DATA CORPORATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 031684/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2013
From: SAMUELS, ALLEN R.; SUTTER, PAUL G.
To: ORBITAL DATA CORPORATION
Reel/Frame 031684/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2013
From: SAMUELS, ALLEN R.; SUTTER, PAUL G.
To: ORBITAL DATA CORPORATION
Reel/Frame 031454/0814 →
Continuity (7)
Continuation 13600646 · Aug 31, 2012
Continuation 12567402 · Sep 25, 2009
Continuation 10902493 · Jul 28, 2004
Continuation In Part 10696507 · Oct 29, 2003
Provisional Application 60490694 · Jul 29, 2003
Provisional Application 60422801 · Oct 30, 2002
Related Publication 20140029430A1 · Jan 30, 2014