IP Library Granted Patent US 8,233,392
Granted Patent B2
US 8,233,392 · App. 10/901,940 · Granted Jul 31, 2012

Transaction boundary detection for reduction in timeout penalties

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,233,392
App. No.
10/901,940
Granted
Jul 31, 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 (61)

1. A method for communicating a plurality of data packets associated with a transaction from a sender to a receiver over a network connection, the method comprising:

observing, by an intermediary, application data packets of a transaction of an application communicated via an application protocol over an established transport layer connection between a sender and a receiver, the transaction comprising a plurality of application data packets;

determining, by the intermediary, when a last application data packet of the plurality of application data packets of the transaction has been transmitted by the sender via the application protocol over the established transport layer connection by observing when the sender ceases transmitting application data packets for a predetermined period of time;

after the last application data packet of the transaction has been transmitted by the sender, transmitting, by the intermediary, via the application protocol over the established transport layer connection one or more additional application data packets to the receiver, wherein the one or more additional application data packets cause the generation of one or more acknowledgements if received by the receiver;

receiving, by the intermediary, one or more acknowledgments from the receiver generated responsive to receipt of the one or more additional application data packets, the intermediary having not received an acknowledgement for the last application data packet;

determining, by the intermediary, based on the received one or more acknowledgements generated responsive to receipt of the one or more additional application data packets, that the last application data packet was received by the receiver; and

transmitting, by the intermediary to the sender, responsive to the determination that the last application data packet was received by the receiver, an acknowledgement of receipt of the last application data packet by the receiver and not the one or more additional data packets, prior to expiration of a timeout associated with the transmission of the last application data packet by the sender.

2. The method of claim 1 , wherein determining when the last application data packet for the transaction has been transmitted comprises observing when the sender ceases transmitting application data packets for a predetermined period of time less than a retransmission timeout value.

3. The method of claim 1 , wherein determining when the last application data packet for the transaction has been transmitted comprises observing the value of a PSH bit in the application data packets transmitted by the sender.

4. The method of claim 1 , wherein determining when the last application data packet for the transaction has been transmitted comprises parsing an application protocol for the transmitted application data packets.

5. The method of claim 1 , wherein the one or more additional application data packets transmitted comprise one or more of the last application data packets of the transaction.

6. The method of claim 1 , wherein the one or more additional application data packets transmitted comprise portions of one or more of the last application data packets of the transaction.

7. The method of claim 1 , wherein the one or more additional application data packets transmitted are generated according to a forward error correction technique for the data in the transaction.

8. The method of claim 1 , wherein the number of additional application data packets transmitted is selected based on a current loss rate for the network connection.

9. The method of claim 1 , wherein the application data packets comprise TCP/IP packets having a payload of application data from an application.

10. The method of claim 1 , further comprising: receiving the one or more acknowledgements for the one or more additional application data packets; and determining whether the application data packets associated with the transaction of the application have been received by the receiver based on the one or more acknowledgements for the one or more additional application data packets.

11. A method for communicating data from a sender to a receiver over a network connection, the method comprising the steps of:

detecting, by an intermediary, a transaction boundary of a transaction of an application communicated via an application protocol over an established transport layer connection between a sender and receiver in which a last application data packet of a plurality of application data packets of the transaction of the application has been determined to have been transmitted by the sender by observing the value of a PSH bit in a transport layer header of the last application data packet, the transaction comprising the plurality of application data packets;

transmitting, by the intermediary, via the application protocol over the established transport layer connection at least one additional application data packet after the transaction boundary, the at least one additional application data packet configured to cause an acknowledgement from the receiver;

receiving, by the intermediary, an acknowledgment from the receiver generated responsive to receipt of the at least one additional application data packets, the intermediary having not received an acknowledgement for the last application data packet of the plurality of application data packets;

determining, by the intermediary, based on the received acknowledgement generated responsive to receipt of the at least one additional application data packets, that the last application data packet of the plurality of application data packets was received by the receiver; and

transmitting, by the intermediary to the sender, responsive to the determination that the last application data packet of the plurality of application data packets was received by the receiver, an acknowledgement of receipt of the last application data packet of the plurality of application data packets and not the at least one additional data packets by the receiver, prior to expiration of a timeout associated with the transmission of the last application data packet of the plurality of application data packets by the sender.

12. The method of claim 11 , wherein the step for detecting comprises observing when the sender ceases transmitting application data packets for a predetermined period of time.

13. The method of claim 11 , wherein the step for detecting comprises parsing an application protocol for the transmitted plurality of application data packets.

14. The method of claim 11 , wherein at least one additional application data packet transmitted comprises one or more of the last application data packets of the transaction.

15. The method of claim 11 , wherein at least one additional application data packet comprises portions of one or more of the last application data packets of the transaction.

16. The method of claim 11 , wherein at least one additional application data packet transmitted is generated according to a forward error correction technique for the data in the transaction.

17. The method of claim 11 , wherein the number of additional application data packets transmitted is selected based on a current loss rate for the network connection.

18. The method of claim 11 , further comprising: receiving an acknowledgement for the at least one additional application data packet; and determining, based on the acknowledgement, whether the plurality of application data packets associated with the transaction have been received or need to be retransmitted.

19. An article of manufacture comprising a non-transitory computer usable medium having computer readable program code means embodied therein for communicating a plurality of data packets associated with a transaction from a sender to a receiver over a network connection, the computer readable program code in said article of manufacture comprising:

computer readable program code means for observing, by an intermediary, application data packets of a transaction of an application communicated via an application protocol over an established transport layer connection between a sender and a receiver, the transaction comprising a plurality of application data packets;

computer readable program code means for determining, by the intermediary, when a last application data packet of the plurality of application data packets of the transaction has been transmitted by the sender via the application protocol over the established transport layer connection;

computer readable program code means for transmitting by the intermediary, after the last data packet of the transaction has been transmitted by the sender and prior to expiration of a retransmission timeout associated with a transmission of the last data packet of the transaction to the receiver, one or more additional application data packets via the application protocol over the established transport layer connection to the receiver, wherein the one or more additional application data packets cause the generation of one or more acknowledgements if received by the receiver;

computer readable program code means for receiving, by the intermediary, one or more acknowledgments from the receiver generated responsive to receipt of the one or more additional application data packets, the intermediary having not received an acknowledgement for the last application data packet;

computer readable program code means for determining, by the intermediary, based on the received one or more acknowledgements generated responsive to receipt of the one or more additional application data packets, that the last application data packet was not received by the receiver; and

computer readable program code means for transmitting, by the intermediary to the sender, responsive to the determination that the last application data packet was not received by the receiver, a packet to cause the sender to retransmit the last application data packet, prior to expiration of a timeout associated with the transmission of the last application data packet by the sender.

20. The article of manufacture of claim 19 , wherein the computer readable program code means for determining when the last application data packet for the transaction has been transmitted comprises computer readable code means for observing when the sender ceases transmitting application data packets for a predetermined period of time.

21. The article of manufacture of claim 19 , wherein the computer readable program code means for determining when the last application data packet for the transaction has been transmitted comprises computer readable program code means for observing the value of a PSH bit in the plurality of application data packets transmitted by the sender.

22. The article of manufacture of claim 19 , wherein the computer readable program code means for determining when the last application data packet for the transaction has been transmitted comprises computer readable program code means for parsing an application protocol for the transmitted application data packets.

23. The article of manufacture of claim 19 , wherein the one or more additional application data packets transmitted comprise one or more of the last application data packets of the transaction.

24. The article of manufacture of claim 19 , wherein the one or more additional application data packets transmitted comprise portions of one or more of the last application data packets of the transaction.

25. The article of manufacture of claim 19 , wherein the one or more additional application data packets transmitted are generated according to a forward error correction technique for the data in the transaction.

26. The article of manufacture of claim 19 , wherein the number of additional application data packets transmitted is selected based on a current loss rate for the network connection.

27. The article of manufacture of claim 19 , wherein the application data packets comprise TCP/IP packets having a payload of application data from an application.

28. The article of manufacture of claim 19 , further comprising computer readable program code means for performing the operations: receiving the one or more acknowledgements for the one or more additional application data packets; and determining whether the application data packets associated with the transaction have been received by the receiver based on the one or more acknowledgements for the one or more additional application data packets.

29. A device comprising

a flow control module coupled to a sender for communicating a plurality of data packets associated with a transaction from a sender to a receiver over a network connection, the flow control module configured to perform the operations:

observing, by the flow control module, application data packets of a transaction of an application communicated via an application protocol over an established transport layer connection between a sender and a receiver, the transaction comprising a plurality of application data packets;

determining, by the flow control module, when a last application data packet of the plurality of application data packets of the transaction has been transmitted by the sender via the application protocol over the established transport layer connection;

after the last application data packet of the transaction has been transmitted by the sender and prior to expiration of a retransmission timeout associated with observation of the communicated last application data packet of the transaction, transmitting, by the flow control module, via the established transport layer connection one or more additional application data packets to the receiver, wherein the one or more additional application data packets cause the generation of one or more acknowledgements if received by the receiver;

receiving, by the flow control module, one or more acknowledgments from the receiver generated responsive to receipt of the one or more additional application data packets, the device having not received an acknowledgement for the last application data packet;

determining, by the flow control module, based on the received one or more acknowledgements generated responsive to receipt of the one or more additional application data packets, that the last application data packet was not received by the receiver; and

transmitting, by the flow control module to the sender, responsive to the determination that the last application data packet was not received by the receiver, a packet to cause the sender to retransmit the last application data packet, prior to expiration of a timeout associated with the transmission of the last application data packet by the sender.

30. The device of claim 29 , the flow control module further configured to perform the operations of:

receiving one or more acknowledgements for either the last application data packet or the one or more additional application data packets; and

determining whether the last application data packet of the transaction has been received by the receiver based on the one or more acknowledgements for either the last application data packet or the one or more additional application data packets.

31. The device of claim 30 , wherein if the last application data packet of the transaction is determined to have been received but the acknowledgements for the one or more additional application data packets have not been received, the flow control module generates an acknowledgement for the last application data packet and sends the generated acknowledgement to the sender.

32. The device of claim 30 , wherein if the last application data packet of the transaction is determined to have not been received, the flow control module causes the sender to retransmit the last application data packet not received.

33. The device of claim 32 , further comprising determining that one or more data packets of the transaction sent by the sender have not been received by the receiver, wherein the flow control module causes the sender to retransmit the one or more application data packets sent by the sender and not received by the receiver by generating a SACK packet that shows which application data packets were not received and sending the SACK packet to the sender.

34. The device of claim 29 , wherein the flow control module is implemented within the sender.

35. The method of claim 1 , wherein transmitting one or more additional application data packets to the receiver is performed prior to expiration of a retransmission timeout associated with the transmitted last application data packet of the transaction.

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 1, 2004
From: SAMUELS, ALLEN; SUTTER, PAUL
To: ORBITAL DATA CORPORATION
Reel/Frame 015417/0087 →
Continuity (3)
Continuation In Part 10696507 · Oct 29, 2003
Provisional Application 60490694 · Jul 29, 2003
Related Publication 20050074007A1 · Apr 7, 2005