IP Library Granted Patent US 7,738,500
Granted Patent B1
US 7,738,500 · App. 11/304,140 · Granted Jun 15, 2010

TCP timestamp synchronization for network connections that are offloaded to network interface devices

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,738,500
App. No.
11/304,140
Granted
Jun 15, 2010
Kind
B1
Abstract

A host computer running a TCP connection transfers the connection to a TCP offload network interface device (NID) which performs certain network processes, thereby reducing the load on the host CPU. The NID later transfers the connection back to the host. The host and the NID maintain separate timestamp clocks which provide timestamp values for connections using the TCP Timestamp option. Synchronization of the host and NID timestamp clocks can be realized by transfer of a clock value. The NID or host receives the transferred TCP connection and the transferred clock value, and decides whether to update its own clock to equal the transferred clock value, the decision being guided by the requirement to never allow the timestamp clock to run backward. Acceleration of the timestamp clocks is prevented so that RTT measurements are accurate. Synchronization of the host and NID timestamp clocks improves performance and reduces erroneous connection drops.

Claims (49)

1. A method for communication over a network between a local host and a remote host, the local host having a first processing mechanism and a second processing mechanism, the first processing mechanism having a first clock and the second processing mechanism having a second clock, the method comprising:

establishing a transport transmission control protocol (TCP) connection between the local host and the remote host;

transferring the TCP connection from the first processing mechanism to the second processing mechanism; and

transferring a clock value from the first processing mechanism to the second processing mechanism, thereby synchronizing the first and second clocks, wherein synchronizing the first and second clocks comprises:

comparing the clock value transferred by the first processing mechanism with a second clock value for the second processing mechanism; and

choosing, based upon the comparing, whether to update the second clock.

2. The method of claim 1 , wherein synchronizing the first and second clocks comprises:

updating the second clock, based upon the clock value transferred by the first processing mechanism.

3. The method of claim 1 , wherein synchronizing the first and second clocks comprises:

determining whether a second TCP connection was previously transferred from the first processing mechanism to the second processing mechanism; and

if no second TCP connection was previously transferred, updating the second clock, based upon the clock value transferred by the first processing mechanism.

4. The method of claim 1 , wherein synchronizing the first and second clocks comprises: updating the second clock when the comparing indicates that the clock value transferred by the first processing mechanism is greater than the second clock value.

5. The method of claim 1 , wherein synchronizing the first and second clocks comprises:

determining whether the clock value transferred by the first processing mechanism is greater than a second clock value for the second processing mechanism; and

choosing, based upon the determining, whether to update the second clock.

6. The method of claim 1 , wherein transferring the clock value from the first processing mechanism to the second processing mechanism comprises:

piggybacking the transfer of the clock value on a transfer of other information from the first processing mechanism to the second processing mechanism.

7. The method of claim 1 , wherein transferring the clock value from the first processing mechanism to the second processing mechanism comprises:

piggybacking the transfer of the clock value on the transfer of the TCP connection.

8. The method of claim 1 , further comprising:

determining whether a second clock value for the second processing mechanism equals the value of a saved copy of the second clock value;

choosing, based upon the determining, whether to increment the second clock; and

updating the saved copy by setting it equal to the second clock value.

9. The method of claim 1 , further comprising:

incrementing the second clock, wherein the incrementing occurs only if a second clock value for the second processing mechanism equals the value of a saved copy of the second clock value; and

updating the saved copy by setting it equal to the second clock value.

10. A system for communication over a network, the system comprising:

a first processing mechanism that has a first clock;

a second processing mechanism that has a second clock;

a Transmission Control Protocol (TCP) connection that has been transferred from the first processing mechanism to the second processing mechanism; and

a clock value that has been transferred from the first processing mechanism to the second processing mechanism to synchronize the second clock with the first clock, wherein synchronizing the first and second clocks comprises:

comparing the clock value transferred by the first processing mechanism with a second clock value for the second processing mechanism; and

choosing, based upon the comparing, whether to update the second clock.

11. The system of claim 10 , wherein the first processing mechanism is contained in a computer and the second processing mechanism is contained in a network interface card.

12. The system of claim 10 , wherein the first processing mechanism and the second processing mechanism are disposed on a printed circuit board.

13. The system of claim 10 , wherein the first clock has been set using a second clock value transferred from the second processing mechanism.

14. The system of claim 10 , wherein a message that sends information from the first processing mechanism to the second processing mechanism also includes the transfer of the clock value.

15. The system of claim 10 , wherein a message which transfers the TCP connection from the first processing mechanism to the second processing mechanism also includes the transfer of the clock value.

16. The system of claim 10 , wherein the TCP connection includes the TCP timestamp option.

17. The system of claim 10 , wherein the second processing mechanism further comprises a plurality of TCP connections that reference the second clock.

18. A system for communication over a network, the system comprising:

a first processing mechanism that has a first clock;

a second processing mechanism that has a second clock;

a Transmission Control Protocol (TCP) connection that has been transferred from the first processing mechanism to the second processing mechanism; and

means for synchronizing the second clock with the first clock, wherein synchronizing the first and second clocks comprises:

comparing the clock value transferred by the first processing mechanism with a second clock value for the second processing mechanism; and

choosing, based upon the comparing, whether to update the second clock.

19. The system of claim 18 , wherein the TCP connection includes the TCP timestamp option.

20. The system of claim 18 , wherein the second processing mechanism further comprises a plurality of TCP connections that reference the second clock.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2016
From: A-TECH LLC
To: ALACRITECH, INC.
Reel/Frame 039068/0884 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2013
From: ALACRITECH INC.
To: A-TECH LLC
Reel/Frame 031644/0783 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2006
From: JONES, JAMES GREGORY; PHILBRICK, CLIVE M.
To: ALACRITECH, INC.
Reel/Frame 017554/0289 →