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.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A method performed on a network node, comprising: performing a plurality of ping pong exchanges of timing messages containing single byte data payloads with another network node, where values of the single bytes are different for the ping pong exchanges, and where there is a predetermined difference between values of the single bytes for each exchange; capturing and storing first timestamps for each of the plurality of exchanges performed on the network node; receiving, from the another network node and after completion of the performing the plurality of ping pong exchanges, second timestamps corresponding to each one of the plurality of ping pong exchanges; and determining clock offset based on the first and second timestamps.
A method on a network node determines clock offset by exchanging timing messages (containing single-byte data) with another node. Each exchange uses a different single-byte value, with a defined difference between them. The node captures and stores timestamps for its sent messages. After all exchanges, it receives corresponding timestamps from the other node. The clock offset is then calculated using both sets of timestamps.
2. The method of claim 1 , comprising wherein determining clock offset further comprises 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 network node based at least on the transport times.
The clock offset determination method from the previous description works by measuring transport times between the network nodes. These transport times are derived from the first (sent) and second (received) timestamps. The calculated transport times are then used as the basis for determining the clock offset.
3. The method of claim 2 , wherein the network node comprises a client and the another network node comprises a server.
In the clock offset determination method, the network node acting as the timestamp collector is a client, and the other node providing the return timestamps is a server. The client-server architecture facilitates the clock offset measurement process.
4. The method of claim 1 , further comprising modifying, between each of the ping pong exchanges, the values of the single bytes to create the predetermined difference.
In the clock offset determination method, the single-byte values in the timing messages are modified between each ping-pong exchange to ensure that there's a predetermined difference in values for each exchange. This modification helps in distinguishing and correlating different exchanges.
5. The method of claim 1 , further comprising, 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, transmitting all of the stored timestamps to the another network node.
In the clock offset determination method, when the network node receives a timing message with a single-byte payload indicating the completion of the ping-pong exchanges (a predetermined value signals completion), it transmits all the captured and stored timestamps to the other network node.
6. 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.
In the clock offset determination method, if a timing message isn't received within a specific time period (timeout), the node transmits a timing message with a single-byte payload that indicates this timeout to the other network node. This informs the other node that the exchange sequence was interrupted.
7. 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.
The clock offset determination method handles timeouts. If a timeout occurs before a predetermined number of ping-pong exchanges is reached, the node either sends its collected timestamps to the other node OR waits to receive the remote node's timestamps for completed exchanges. This allows for partial clock offset calculations, or simply a reporting of failure.
8. The method of claim 1 , wherein the values of the single bytes are modified during each ping pong exchange or between each ping pong exchange.
In the clock offset determination method, the single-byte values in the timing messages can be modified either during each ping-pong exchange (while the message is in transit) or between each exchange to differentiate the packets. The modification allows tracing the message packets.
9. A network node comprising: a processor configured to cause the network node to perform a plurality of ping pong exchanges of timing messages containing single byte data payloads with another network node, where values of the single bytes are different for the ping pong exchanges, and where there is a predetermined difference between values of the single bytes for each exchange, the processor configured to cause the network node to capture and store first timestamps for each of the plurality of exchanges performed on the network node, to receive, from the another network node and after completion of the performing the plurality of ping pong exchanges, second timestamps corresponding to each one of the plurality of ping pong exchanges, and to determine clock offset based on the first and second timestamps.
A network node determines clock offset by performing ping-pong exchanges of timing messages (containing single-byte data) with another node. Each exchange uses a different single-byte value, with a defined difference between them. It captures and stores timestamps for its sent messages. After all exchanges, it receives corresponding timestamps from the other node and calculates the clock offset using both sets of timestamps.
10. The network node of claim 9 , wherein processor is further configured to cause the network node, when determining clock offset, to measure 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 network node based at least on the transport times.
This invention relates to network synchronization, specifically improving clock offset determination between network nodes. The problem addressed is the need for accurate and reliable time synchronization in distributed networks, where clock offsets between nodes can degrade performance in applications like telecommunications, financial transactions, and industrial automation. The invention describes a network node with a processor configured to measure transport times between network nodes using timestamps generated by the nodes. The processor calculates clock offsets based on these transport times. The system involves at least two network nodes, each generating timestamps for message exchanges. The processor analyzes the timestamps to derive transport times, which are then used to compute the clock offset between the nodes. This method compensates for network delays and other factors affecting synchronization accuracy. The invention improves upon prior art by using multiple transport time measurements to enhance clock offset determination, reducing errors caused by network variability. The processor's configuration ensures that the synchronization process is automated and adaptable to dynamic network conditions. This approach is particularly useful in environments where precise time alignment is critical, such as in 5G networks, data centers, and distributed computing systems. The solution provides a robust mechanism for maintaining synchronized clocks across geographically dispersed nodes, ensuring reliable operation of time-sensitive applications.
11. The network node of claim 10 , wherein the network node comprises a client and the another network node comprises a server.
In the clock offset determination network node, the node acting as the timestamp collector is a client, and the other node providing the return timestamps is a server. The client-server architecture facilitates the clock offset measurement process.
12. The network node of claim 9 , wherein the processor is further configured to cause the network node to modify, between each of the exchanges, the values of the single bytes to create the predetermined difference.
In the clock offset determination network node, the single-byte values in the timing messages are modified between each ping-pong exchange to ensure that there's a predetermined difference in values for each exchange. This modification helps in distinguishing and correlating different exchanges.
13. The network node of claim 9 , wherein the processor is further configured 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, transmit all of the stored timestamps to the another network node.
In the clock offset determination network node, when it receives a timing message with a single-byte payload indicating the completion of the ping-pong exchanges (a predetermined value signals completion), it transmits all the captured and stored timestamps to the other network node.
14. The network node of claim 9 , wherein the processor is further configured 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.
In the clock offset determination network node, if a timing message isn't received within a specific time period (timeout), the node transmits a timing message with a single-byte payload that indicates this timeout to the other network node. This informs the other node that the exchange sequence was interrupted.
15. The network node of claim 14 , 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 network node is further configured to perform one of the following: 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.
The clock offset determination network node handles timeouts. If a timeout occurs before a predetermined number of ping-pong exchanges is reached, the node either sends its collected timestamps to the other node OR waits to receive the remote node's timestamps for completed exchanges. This allows for partial clock offset calculations, or simply a reporting of failure.
16. The network node of claim 9 , wherein the processor is further configured to cause the network node to modify the values of the single bytes during each ping pong exchange or between each ping pong exchange.
In the clock offset determination network node, the single-byte values in the timing messages can be modified either during each ping-pong exchange (while the message is in transit) or between each exchange to differentiate the packets.
17. 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 a predetermined difference between values of the single bytes for each exchange; 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.
A method on a network node involves receiving timing messages with single-byte payloads from another node and capturing their arrival timestamps. Upon receiving each message, the node immediately sends a corresponding message back to the original node containing the same single-byte value. Receiving and sending constitute a ping-pong exchange, with distinct byte values for each exchange. After receiving and responding to all messages, the node sends the collected timestamps to the other node to assist with clock offset calculations.
18. The method of claim 17 , 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.
In the method involving message exchanges, the completion of the timing message set is determined by detecting a single-byte data payload with a predetermined value. This special byte indicates that all timing messages in the sequence have been sent.
19. A non-transitory computer readable medium having instructions for causing a computer to execute the method of claim 17 .
A non-transitory computer-readable medium contains instructions that cause a computer to execute the method for clock offset calculation that involves receiving timing messages with single-byte payloads from another node and capturing their arrival timestamps. Upon receiving each message, the node immediately sends a corresponding message back to the original node containing the same single-byte value. Receiving and sending constitute a ping-pong exchange, with distinct byte values for each exchange. After receiving and responding to all messages, the node sends the collected timestamps to the other node to assist with clock offset calculations.
20. A network node comprising: a processor configured 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 receiving, 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 a predetermined difference between values of the single bytes for each exchange, 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.
A network node receives timing messages with single-byte payloads from another node, capturing their arrival timestamps. Upon receiving each message, it immediately sends a corresponding message back to the original node containing the same single-byte value. Receiving and sending constitute a ping-pong exchange, with distinct byte values for each exchange. After receiving and responding to all messages, the node sends the collected timestamps to the other node to assist with clock offset calculations.
21. The network node of claim 20 , wherein the processor is further configured to cause the network node to determine 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.
The network node utilizing ping-pong exchange completion of the timing message set is determined by detecting a single-byte data payload with a predetermined value. This special byte indicates that all timing messages in the sequence have been sent.
22. A computer program product comprising a non-transitory computer readable storage medium having instructions for causing a network node to perform the following: performing a plurality of ping pong exchanges of timing messages containing single byte data payload with another network node, where values of the single bytes are different for the ping pong exchanges, and where there is a predetermined difference between values of the single bytes for each exchange; capturing and storing first timestamps for each of the plurality of exchanges performed on the network node; receiving, from the another network node and after completion of the performing the plurality of ping pong exchanges, second timestamps corresponding to each one of the plurality of ping pong exchanges; and determining clock offset based on the first and second timestamps.
A computer program product enables a network node to determine clock offset by exchanging timing messages (containing single-byte data) with another node. Each exchange uses a different single-byte value, with a defined difference between them. The node captures and stores timestamps for its sent messages. After all exchanges, it receives corresponding timestamps from the other node. The clock offset is then calculated using both sets of timestamps.
23. The computer program product of claim 22 , wherein determining clock offset further comprises 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 network node based at least on the transport times.
The computer program product for clock offset determination calculates transport times between the network nodes. These transport times are derived from the first (sent) and second (received) timestamps. The calculated transport times are then used as the basis for determining the clock offset.
24. The computer program product of claim 23 , wherein the network node comprises a client and the another network node comprises a server.
The computer program product for clock offset determination is implemented in a client-server architecture, where the node collecting the timestamp is a client and the node providing return timestamps is a server.
25. The computer program product of claim 22 , wherein the instructions further cause a network node to perform the following: modifying, between each of the ping pong exchanges, the values of the single bytes to create the predetermined difference.
The computer program product for clock offset determination modifies the single-byte values in the timing messages between each ping-pong exchange to create a predetermined difference in values for each exchange, improving correlation.
26. The computer program product of claim 22 , wherein the instructions further cause a network node to perform the following: 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, transmitting all of the stored timestamps to the another network node.
The computer program product for clock offset determination responds to receiving a timing message indicating the completion of the ping-pong exchanges (predetermined single byte value), by transmitting all the captured timestamps to the other network node.
27. The computer program product of claim 22 , wherein the instructions further cause a network node 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.
The computer program product for clock offset determination detects a timeout (no timing message received within specific time) and transmits a message indicating a timeout to the other network node.
28. The computer program product of claim 27 , 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 wherein the instructions further cause a network node to perform the following: 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.
The computer program product for clock offset determination handles timeouts during ping-pong exchanges. If timeout occurs before a predetermined number of exchanges, it either transmits collected timestamps or waits for reception from remote node.
29. The computer program product of claim 22 , wherein the values of the single bytes are modified during each ping pong exchange or between each ping pong exchange.
The computer program product for clock offset determination modifies the single-byte values in timing messages either during or between ping-pong exchanges to trace message packets.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
November 2, 2009
September 10, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.