IP Library Granted Patent US 7,616,638
Granted Patent B2
US 7,616,638 · App. 10/902,493 · Granted Nov 10, 2009

Wavefront detection and disambiguation of acknowledgments

Assignee: Orbital Data Corporation
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 7,616,638
App. No.
10/902,493
Granted
Nov 10, 2009
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 (58)

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 data packet to the remote system;

retransmitting, by the flow control module, the data packet to the remote system;

maintaining, by the flow control module, a transmit number identifying each transmission of the data packet;

receiving, by the flow control module, an acknowledgement packet indicating that the data packet was received by the remote system, the acknowledgement packet identifying the transmit number in an IP identification (ID) field with a predetermined bit reversed for one of the transmission or the retransmission of the data packet; and

associating, by the flow control module, the transmit number in the acknowledgement packet with either the transmission or the retransmission of the data packet, based on the transmit number identified via the IP identification field in the acknowledgement packet, thereby determining whether the transmission or the retransmission of the data packet was received and acknowledged by the remote system.

2. The method of claim 1 , further comprising:

presuming, by the flow control module, lost any data packets that (1) have not been acknowledged and (2) were transmitted before the acknowledged transmission or retransmission of the data packet; and

retransmitting, by the flow control module, the presumed lost data packets.

3. The method of claim 1 , wherein the transmission or the retransmission is identified in the acknowledgement packet as a function of the transmit number.

4. The method of claim 3 , wherein the transmit number is a time stamp.

5. The method of claim 3 , wherein the data packet conforms to the TCP/IP protocol.

6. The method of claim 5 , wherein the transmit number of the transmitted or retransmitted data packet is included in the IP ID field of the acknowledgement packet with a most significant bit reversed.

7. The method of claim 1 , wherein the associating is performed in a flow control module coupled to a sender sending data packets to the remote system.

8. The method of claim 1 , wherein transmitting the data packet to the remote system further comprises transmitting the data packet with a sequence ID; and wherein retransmitting the data packet to the remote system further comprises retransmitting the data packet with the sequence ID with a predetermined bit reversed.

9. The method of claim 1 , wherein transmitting the data packet to the remote system further comprises transmitting the data packet with a first sequence ID; and wherein retransmitting the data packet to the remote system further comprises retransmitting the data packet with a second sequence ID that is a predetermined function of the first sequence ID.

10. A method for transmitting data packets to a receiver over a network, the method comprising:

transmitting, by a flow control module configured on a device, a plurality of data packets to the receiver;

retransmitting, by the flow control module, a number of transmitted data packets responsive to an indication that the number of transmitted data packets were not received by the receiver;

maintaining, by the flow control module, a unique transmit number for each instance of a transmitted or retransmitted data packet;

receiving, by the flow control module, acknowledgements indicating that at least some of the data packets have been received, acknowledgements comprising the unique transmit number in the IP identifier (ID) field with a predetermined bit reversed for one of the transmission or the retransmission of the data packet; and

disambiguating, by the flow control module, the received acknowledgements to determine for each ambiguous acknowledgement the instance of transmitted or retransmitted data packet to which the ambiguous acknowledgement relates.

11. The method of claim 10 , further comprising:

for each received acknowledgment, presuming, by the flow control module, lost any data packets that were transmitted before the acknowledged data packet but not yet acknowledged as received; and retransmitting the presumed lost data packets.

12. The method of claim 10 , further comprising:

determining, by the flow control module, whether transmitted data packets should be retransmitted; and retransmitting, by the flow control module, data packets responsive to the determining.

13. The method of claim 10 , wherein the transmitted and retransmitted data packets include the transmit number, and wherein the received acknowledgements include identifying information that comprises a function of the transmit number.

14. The method of claim 13 , wherein the transmit number is a time stamp.

15. The method of claim 13 , wherein the data packets conform to the TCP/IP protocol.

16. The method of claim 15 , wherein the transmit number of the transmitted or retransmitted data packet is included in an IP ID field of a packet of the acknowledgements with a most significant bit reversed.

17. A computer readable medium for communicating with a remote system using Internet Protocol (IP) via a computer network, the computer-readable medium containing computer program code for instructing a flow control module on a device to perform the operations:

transmitting a data packet to the remote system;

retransmitting the data packet to the remote system;

maintaining a transmit number identifying each transmission of the data packet;

receiving an acknowledgement packet indicating that the data packet was received by the remote system, the acknowledgement packet identifying the transmit number in an IP identification (ID) field with a predetermined bit reversed for one of the transmission or the retransmission of the data packet; and

associating the transmit number in the acknowledgement packet with either the transmission or the retransmission of the data packet, based on the transmit number identified via the IP identification field in the acknowledgement packet, thereby determining whether the transmission or the retransmission of the data packet was received and acknowledged by the remote system.

18. The computer readable medium of claim 17 , the computer program code further for performing the operations:

presuming lost any data packets that (1) have not been acknowledged and (2) were transmitted before the acknowledged transmission or retransmission of the data packet; and

retransmitting the presumed lost data packets.

19. The computer readable medium of claim 17 , wherein the transmission or the retransmission is identified in the acknowledgement packet as a function of the transmit number.

20. The computer readable medium of claim 19 , wherein the transmit number is a time stamp.

21. The computer readable medium of claim 19 , wherein the data packets conform to the TCP/IP protocol.

22. The computer readable medium of claim 21 , wherein the transmit number of the transmitted or retransmitted data packet is included in an IP ID field of the acknowledgement packet with a most significant bit reversed.

23. The computer readable medium of claim 17 , wherein the associating is performed in a flow control module coupled to a sender sending data packets to the remote system.

24. A computer readable medium for transmitting data packets to a receiver over a network, the computer-readable medium containing computer program code for instructing a flow control module on a device to perform the operations:

transmitting a plurality of data packets to the receiver;

retransmitting a number of transmitted data packets responsive to an indication that the number of transmitted data packets were not received by the receiver;

maintaining a unique transmit number for each instance of a transmitted or retransmitted data packet;

receiving acknowledgements indicating that at least some of the data packets have been received, acknowledgements comprising the unique transmit number in the IP identifier (ID) field with a predetermined bit reversed for one of the transmission or the retransmission of the data packet; and

disambiguating the received acknowledgements to determine for each ambiguous acknowledgement the instance of transmitted or retransmitted data packet to which the ambiguous acknowledgement relates.

25. The computer readable medium of claim 24 , the computer program code further performing the operations:

for each received acknowledgment, presuming lost any data packets that were transmitted before the acknowledged data packet but not yet acknowledged as received; and retransmitting the presumed lost data packets.

26. The computer readable medium of claim 24 , the computer program code further performing the operations:

determining whether transmitted data packets should be retransmitted; and retransmitting data packets responsive to the step for determining.

27. The computer readable medium of claim 24 , the received acknowledgements include identifying information that comprises a function of the unique transmit number.

28. The computer readable medium of claim 27 , wherein the unique transmit number is a time stamp.

29. The computer readable medium of claim 27 , wherein the data packets conform to the TCP/IP protocol.

30. The computer readable medium of claim 29 , wherein the identifying information in an acknowledgement packet associated with each of the acknowledgements comprises the unique transmit number of the transmitted or retransmitted data packet in an IP ID field of the acknowledgement packet with a most significant bit reversed.

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 Nov 23, 2004
From: SAMUELS, ALLEN; SUTTER, PAUL
To: ORBITAL DATA CORPORATION
Reel/Frame 015407/0383 →
Continuity (3)
Continuation In Part 1069650700 · Oct 29, 2003
Provisional Application 6049069400 · Jul 29, 2003
Related Publication 20050058131A1 · Mar 17, 2005