# US 8,788,689 B2 · Techniques for improved clock offset measuring

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,689 B2
- Document ID: US8788689B2
- Status: Granted
- Kind: B2
- Application number: 13/554,000
- Filed: 2012-07-20
- Published: 2012-11-08
- Granted: 2014-07-22
- Earliest claimed: 2009-11-02
- Assignees: International Business Machines Corporation
- Applicants: Steven E. Froehlich; Michel H. T. Hack; Xiaoqiao Meng; Li Zhang
- Inventors: Steven E. Froehlich; Michel H. T. Hack; Xiaoqiao Meng; Li Zhang
- Web page: https://patentgrep.com/patent/US8788689B2

## CPC

- H04J 3/0667: {Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays (arrangements for monitoring round trip delays in packet switching networks H04L43/0864)}
- H04L 47/10: Flow control; Congestion control
- H04J: MULTIPLEX COMMUNICATION (transmission in general H04B; peculiar to transmission of digital information H04L5/00; systems for the simultaneous or sequential transmission of more than one television signal H04N7/08; in exchanges H04Q11/00; stereophonic systems H04S)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

In an exemplary aspect, method, apparatus, and program products are disclosed suitable for clock offset determination. One method includes performing a number of exchanges of at least single bytes with another network node, where values of the single bytes are different for the exchanges. The method also includes capturing and storing timestamps for each of the number of exchanges performed on the network node. A second method includes capturing and saving arrival timestamps for each of a number of timing messages in a set of timing messages received from another network node. This second method also includes sending the timestamps to at least the another node in response to completion of the set of timing messages.

## Claims

### Claim 1

A method performed on a network node, comprising:
receiving from another network node a set of timing messages containing single byte data payloads;
capturing and saving arrival timestamps for each of the set of timing messages;
responsive to the receiving, sending to the another network node a corresponding set of timing messages containing a same single byte data payload as contained in the corresponding received timing message, wherein receiving a timing message and sending a timing message forms a ping pong exchange, and where there is no difference between a value of the single bytes for each exchange but there is a difference between values of the single bytes between exchanges; and
sending the timestamps to at least the another node in response to completion of receiving the set and sending the corresponding set of timing messages.

### Claim 2 (depends on 1)

The method of claim 1, further comprising determining completion of the set of timing messages by determining a timing message comprises a single byte data payload having a predetermined value in the single byte.

### Claim 3 (depends on 1)

The method of claim 1, further comprising determining clock offset based on the first and second timestamps at least by measuring a plurality of transport times between the network nodes based at least in part on the first and second timestamps, and determining clock offset for the another network node based at least on the transport times.

### Claim 4 (depends on 1)

The method of claim 1, wherein the another network node comprises a client and the network node comprises a server.

### Claim 5 (depends on 1)

The method of claim 1, wherein sending further comprises, in response to receiving a timing message containing a single byte data payload having a predetermined value in the single byte indicative of completion of a set of the plurality of ping pong exchanges, sending all of the stored timestamps to the another network node.

### Claim 6 (depends on 1)

The method of claim 1, further comprising determining that a time out has occurred in response to a timing message containing a single byte data payload not being received during a predetermined time period, and transmitting a timing message containing a single byte data payload having a predetermined value in the single byte indicative of the time out to the another network node.

### Claim 7 (depends on 6)

The method of claim 6, wherein there is a predetermined number of the plurality of ping pong exchanges, the time out occurs with less than the predetermined number of ping pong exchanges occurring, and the method further comprises one of transmitting the first timestamps to the another network node or waiting for reception from the another network node of the second timestamps for each of the plurality of ping pong exchanges performed on the another network node.

### Claim 8

A network node comprising:
a memory comprising code; and
a processor configured in response to execution of the code to cause the network node to receive from another network node a set of timing messages containing single byte data payloads, to capture and save arrival timestamps for each of the set of timing messages, to send, responsive to the receiving, the another network node a corresponding set of timing messages containing a same single byte data payload as contained in the corresponding received timing message, wherein receiving a timing message and sending a timing message forms a ping pong exchange, and where there is no difference between a value of the single bytes for each exchange but there is a difference between values of the single bytes between exchanges; and to send the timestamps to at least the another node in response to completion of receiving the set and sending the corresponding set of timing messages.

### Claim 9 (depends on 8)

The network node of claim 8, wherein the processor is further configured in response to execution of the code to cause the network node to determine completion of the set of timing message by determining a timing message comprises a single byte data payload having a predetermined value in the single byte.

### Claim 10 (depends on 8)

The network node of claim 8, wherein the processor is further configured in response to execution of the code to cause the network node to determine clock offset based on the first and second timestamps at least by measuring a plurality of transport times between the network nodes based at least in part on the first and second timestamps, and to determine clock offset for the another network node based at least on the transport times.

### Claim 11 (depends on 8)

The network node of claim 8, wherein the another network node comprises a client and the network node comprises a server.

### Claim 12 (depends on 8)

The network node of claim 8, wherein the processor is further configured in response to execution of the code to send the timestamps to cause the network node, in response to receiving a timing message containing a single byte data payload having a predetermined value in the single byte indicative of completion of a set of the plurality of ping pong exchanges, to send all of the stored timestamps to the another network node.

### Claim 13 (depends on 8)

The network node of claim 8, wherein the processor is further configured in response to execution of the code to cause the network node to determine that a time out has occurred in response to a timing message containing a single byte data payload not being received during a predetermined time period, and to transmit a timing message containing a single byte data payload having a predetermined value in the single byte indicative of the time out to the another network node.

### Claim 14 (depends on 13)

The network node of claim 13, wherein there is a predetermined number of the plurality of ping pong exchanges, the time out occurs with less than the predetermined number of ping pang exchanges occurring, and the processor is further configured in response to execution of the code to cause the network node to one of transmit the first timestamps to the another network node or wait for reception from the another network node of the second timestamps for each of the plurality of ping pong exchanges performed on the another network node.

### Claim 15

A program product comprising a non-transitory computer readable storage medium comprising computer program code, the computer program code configured to cause a computer system in response to execution of the computer program code to perform the following:
receiving at a network node from another network node a set of timing messages containing single byte data payloads;
capturing and saving arrival timestamps for each of the set of timing messages;
responsive to the receiving, sending to the another network node a corresponding set of timing messages containing a same single byte data payload as contained in the corresponding received timing message, wherein receiving a timing message and sending a timing message forms a ping pang exchange, and where there is no difference between a value of the single bytes for each exchange but there is a difference between values of the single bytes between exchanges; and
sending the timestamps to at least the another node in response to completion of receiving the set and sending the corresponding set of timing messages.

### Claim 16 (depends on 15)

The program product of claim 15, further comprising computer program code configured to cause the computer system in response to execution of the computer program code to perform the following: determining completion of the set of timing messages by determining a timing message comprises a single byte data payload having a predetermined value in the single byte.

### Claim 17 (depends on 15)

The program product of claim 15, further comprising computer program code configured to cause the computer system in response to execution of the computer program code to perform the following: determining clock offset based on the first and second timestamps at least by measuring a plurality of transport times between the network nodes based at least in part on the first and second timestamps, and determining clock offset for the another network node based at least on the transport times.

### Claim 18 (depends on 15)

The program product of claim 15, wherein the another network node comprises a client and the network node comprises a server.

### Claim 19 (depends on 15)

The program product of claim 15, wherein sending further comprises, in response to receiving a timing message containing a single byte data payload having a predetermined value in the single byte indicative of completion of a set of the plurality of ping pong exchanges, sending all of the stored timestamps to the another network node.

### Claim 20 (depends on 15)

The program product of claim 15, further comprising computer program code configured to cause the computer system in response to execution of the computer program code to perform the following: determining that a time out has occurred in response to a timing message containing a single byte data payload not being received during a predetermined time period, and transmitting a timing message containing a single byte data payload having a predetermined value in the single byte indicative of the time out to the another network node.
