Quickest clock synchronization algorithm
By using two-way communication and time transmission between computing devices, determining the most forward clock in time as a leadership node, the complexity and cost problems of establishing public time references in large data centers are solved, and the simplified clock synchronization and time forward movement is achieved.
Patent Information
- Application Number
- CN202510141638.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-02-12
- Filing Date
- 2025-02-08
- Publication Date
- 2025-08-12
AI Technical Summary
In large data centers, the prior art requires external time sources such as GNSS receivers to establish public time references, resulting in complex and unnecessary cost increase in deployment, while being unable to reverse time, affecting applications such as time-based traffic management.
By using bidirectional communication and time transmission between computing devices, the most forward clock in time is determined as the leadership node, and clock synchronization across devices is realized, replacing the traditional one-way IEEE 1588 time transmission.
Building public time references without external references simplifies the deployment process, reduces costs, and ensures time can only move forward for use cases such as traffic shaping and short-term key exchange in large data centers.
Smart Images

Figure CN120474654A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates generally to maintaining clocks across multiple computing devices and, more particularly, to synchronizing the clocks of multiple devices to whichever of the clocks has the highest value (ie, is most advanced in time). Background Art
[0002] In large data centers, there is an emerging trend to create a common reference across multiple nodes. Such a common reference is useful for use cases such as, but not limited to, traffic shaping, short-term key exchange, etc. Current solutions assume the existence of an external time source, typically in the form of a Global Navigation Satellite System (GNSS) receiver with a one pulse per second (1PPS) output. Deploying such a time source within a large data center is problematic and is often unnecessary for many use cases that only require agreement on a common reference, such as time-based traffic management. Furthermore, applications that require a shared timescale typically require that time on that timescale can only move forward, i.e., time cannot go backward.
[0003] Using arbitrary time scales currently requires either dedicating a single Grandmaster node, or creating a grid of synchronized Grandmasters.Therefore, there is a need in the art for improved methods and systems for synchronizing clocks across multiple computing devices. Summary of the Invention
[0004] Embodiments of the present disclosure relate to synchronizing clocks across multiple computing devices. Generally speaking, the clocks of multiple devices can be synchronized to any one of these clocks with the highest value (i.e., the clock that is furthest ahead in time). More specifically, embodiments provide for determining that a common time reference is established without the need for an external reference. On the contrary, a computing device or node with the furthest ahead in time clock in a device or node in a group or time domain can become a leader node and propagate time to other nodes. Embodiments of the present disclosure can replace traditional one-way time transmission from an IEEE 1588 time transmitter to a time receiver with two-way communication and time transmission.
[0005] According to one embodiment, a first device among multiple devices in a time domain may include a communication interface coupled to a communication network and a control circuit coupled to the communication interface and controlling the operation of the first device. The control circuit of the first device may cause the first device to: maintain a clock indicating the current time of the first device, send an electronic message including a timestamp indicating the current time of the first device to a second device among the multiple devices via the communication interface, receive an electronic message including a timestamp indicating the current time of the second device based on the clock of the second device from the second device via the communication interface, and determine which of the clocks of the first device and the second device is the most advanced in time based on the timestamp of the electronic message received from the second device. The control circuit of the first device may then cause the first device to set the current time of the first device based on the clock of the first device and the clock of the second device determined to be the most advanced in time.
[0006] For example, setting the current time of the first device based on the clock of the first device and the clock of the second device that is determined to be the earlier in time may include: in response to determining that the clock of the second device is faster than the clock of the first device, setting the current time of the first device to the current time of the second device. In another example, setting the current time of the first device based on the clock of the first device and the clock of the second device that is determined to be the earlier in time may include: in response to determining that the clock of the first device is faster than the clock of the second device, maintaining the current time of the first device based on the clock of the first device.
[0007] In some cases, determining which of the clocks of the first device and the second device is closest in time may include: calculating an offset between the current time of the first device and the current time of the second device, and determining which of the clocks of the first device and the second device is closest in time based on the calculated offset. Setting the current time of the first device based on the clock of the first device and the clock of the second device that is closest in time may include: adding a value to the current time of the first device based on the calculated offset between the current time of the first device and the current time of the second device. Additionally or alternatively, the control circuit of the first device may further cause the first device to send a delay request message to the second device via the communication interface, and receive a delay response message from the second device via the communication interface indicating the transmission time of the delay request message. Determining which of the clocks of the first device and the second device is closest in time may then be further based on the delay response message.
[0008] According to another embodiment, a data center may include a communications network and a first device coupled to the communications network, the first device including control circuitry for controlling the operation of the first device. The data center may also include a second device coupled to the communications network, the second device including control circuitry for controlling the operation of the second device. The control circuitry of the first device may cause the first device to send a first electronic message to the second device via the communications network. The first electronic message may include a timestamp indicating a current time on the first device.
[0009] The control circuit of the second device may cause the second device to receive the first electronic message from the first device and send a second electronic message to the first device via the communication network. The second electronic message may include a timestamp indicating the current time of the second device.
[0010] The control circuitry of the first device may cause the first device to receive a second electronic message from the second device, determine which of the clocks of the first device and the second device is earlier in time based on the timestamp of the received second electronic message, and set the current time of the first device based on the clock of the first device and the clock of the second device that is determined to be earlier in time. Similarly, the control circuitry of the second device may cause the second device to determine which of the clocks of the first device and the second device is earlier in time based on the timestamp of the received first electronic message, and set the current time of the second device based on the clock of the first device and the clock of the second device that is determined to be earlier in time.
[0011] For example, setting the current time of the first device based on the first device's clock and the second device's clock that is determined to be closest in time may include: setting the current time of the first device to the second device's current time in response to determining that the second device's clock is faster than the first device's clock, and / or maintaining the current time of the first device based on the first device's clock in response to determining that the first device's clock is faster than the second device's clock. Determining which of the first device's clock and the second device's clock is closest in time may include: calculating an offset between the first device's current time and the second device's current time, and determining which of the first device's clock and the second device's clock is closest in time based on the calculated offset. Setting the current time of the first device based on the first device's clock and the second device's clock that is determined to be closest in time may include: adding a value to the first device's current time based on the calculated offset between the first device's current time and the second device's current time.
[0012] In some cases, the control circuitry of the first device may further cause the first device to send a delay request message to the second device via the communications network. The control circuitry of the second device may further cause the second device to receive the delay request message from the first device, determine a transmission time of the delay request message, and send a delay response message including the determined transmission time to the first device via the communications network. The control circuitry of the first device may further cause the first device to receive the delay response message. Determining which of the clocks of the first device and the second device is most advanced in time may also be based on the delay response message.
[0013] According to yet another embodiment, a method for synchronizing clocks between multiple computing devices may include sending, by a first computing device among the multiple computing devices, a first electronic message to a second computing device among the multiple computing devices via a communication network. The first electronic message may include a timestamp indicating a current time on the first computing device.
[0014] The first electronic message from the first computing device may be received by the second computing device, and a second electronic message may be sent by the second computing device to the first device via the communication network. The second electronic message may include a timestamp indicating the current time of the second device.
[0015] A second electronic message may be received by a first computing device from a second device. The first computing device may then determine which of the clocks of the first computing device and the second computing device is closest in time based on the timestamp of the received second electronic message, and set the current time of the first computing device based on the clock of the first computing device and the clock of the second computing device that is closest in time. Similarly, the second computing device may determine which of the clocks of the first computing device and the second computing device is closest in time based on the timestamp of the received first electronic message, and set the current time of the second computing device based on the clock of the first computing device and the clock of the second computing device that is closest in time.
[0016] For example, setting the current time of the first computing device based on the clock of the first computing device and the clock of the second computing device that is determined to be closest in time may include: in response to determining that the clock of the second computing device is faster than the clock of the first computing device, setting the current time of the first computing device to the current time of the second computing device, and in response to determining that the clock of the first computing device is faster than the clock of the second computing device, maintaining the current time of the first computing device based on the clock of the first computing device.
[0017] In some cases, a first computing device may send a delay request message to a second computing device via a communication network. The second computing device may receive the delay request message from the first device, determine a transmission time of the delay request message, and send a delay response message including the determined transmission time to the first computing device. The first computing device may receive the delay response message and, based on the delay response message, determine which of the clocks of the first computing device and the second computing device is most advanced in time. BRIEF DESCRIPTION OF THE DRAWINGS
[0018] The present disclosure is described in conjunction with the accompanying drawings, which are not necessarily drawn to scale.
[0019] Figure 1 is a block diagram illustrating an exemplary environment in which embodiments of the present disclosure may be implemented.
[0020] Figure 2 is a timing diagram illustrating an exemplary exchange between devices for synchronizing clocks between computing devices according to one embodiment of the present disclosure.
[0021] Figure 3 is a timing diagram illustrating an exemplary exchange between devices for synchronizing clocks between computing devices according to another embodiment of the present disclosure.
[0022] Figure 4 is a flow chart illustrating an exemplary process for synchronizing clocks between computing devices in the time domain according to one embodiment of the present disclosure.
[0023] Figure 5 is a flow chart illustrating an exemplary process for synchronizing clocks between computing devices in the time domain according to another embodiment of the present disclosure. DETAILED DESCRIPTION
[0024] The following description provides only examples and is not intended to limit the scope, applicability, or configuration of the claims. Instead, the following description will provide those skilled in the art with an enabling description for implementing the described embodiments. It should be understood that various changes may be made to the function and arrangement of elements without departing from the spirit and scope of the appended claims.
[0025] As will be understood from the following description, for reasons of computational efficiency, the components of the system may be arranged at any suitable location in a distributed network of components without affecting the operation of the system.
[0026] Furthermore, it should be understood that the various links connecting the elements may be wired, traced, or wireless links, or any suitable combination thereof, or any other suitable known or later developed element capable of supplying and / or transmitting data to and / or from the connected elements. For example, the transmission medium used as the link may be any suitable electrical signal carrier, including coaxial cable, copper wire and optical fiber, electrical traces on a printed circuit board (PCB), etc.
[0027] As used herein, the phrases "at least one," "one or more," "or," and "and / or" are open-ended expressions that are operationally both conjunctions and transitions. For example, each of the expressions "at least one of A, B, and C," "at least one of A, B, or C," "one or more of A, B, and C," "one or more of A, B, or C," "A, B and / or C," and "A, B, or C" means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together.
[0028] As used herein, the term "automatic" and its variations refer to any suitable process or operation that can be performed without substantial human input when the process or operation is performed. However, if input is received before the process or operation is performed, then the process or operation may be automatic, even if the process or operation is performed with substantial or immaterial human input. Human input is considered substantial if it affects the manner in which the process or operation is performed. Human input that consents to the performance of the process or operation shall not be considered "substantial."
[0029] As used herein, the terms "determine," "calculate," and "compute," and variations thereof, are used interchangeably and include any suitable type of method, process, operation, or technique.
[0030] Various aspects of the disclosure are described herein with reference to the accompanying drawings, which are schematic illustrations of idealized configurations.
[0031] Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs. It should also be understood that terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with that in the context of the relevant art and this disclosure.
[0032] As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms, unless the context clearly indicates otherwise. It should also be understood that when the terms "comprise," "comprises," and / or "comprising" are used in this specification, these terms specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. The term "and / or" includes any and all combinations of one or more of the associated listed items.
[0033] Now refer to Figures 1 to 5 , various systems and methods for synchronizing clocks across multiple computing devices will be described. In general, the clocks of multiple devices can be synchronized to any one of these clocks that has the highest value (i.e., the clock that is most advanced in time). More specifically, embodiments provide for determining that a common time reference is established without the need for an external reference. Conversely, in a group or time domain, the computing device or node that has the most advanced clock in time among the devices or nodes can become a leader node and propagate time to other nodes. Embodiments of the present disclosure can replace the traditional one-way time transmission from an IEEE 1588 time transmitter to a time receiver with two-way communication and time transmission.
[0034] Figure 1 1 is a block diagram illustrating an exemplary environment in which embodiments of the present disclosure may be implemented. As shown in this example, environment 100 may include a plurality of computing devices 105A-105D coupled to a communication network 110. Computing devices 105A-105D may each comprise a server or other such device known in the art. Communication network 110 may comprise any one or more wired and / or wireless local area networks and / or wide area networks known in the art that may interconnect computing devices 105A-105D and facilitate electronic communications between computing devices 105A-105D.
[0035] Each computing device 105A-105D may include control circuitry 115A-115D that controls the operation of the computing device 105A-105D and a communication interface 125A-125D that couples the computing device 105A-105D to the communication network 110. The control circuitry 115A-115D may each include a central processing unit (CPU), such as one or more microprocessors, as known in the art. The communication interface 125A-125D may include a network interface card (NIC), such as an Ethernet NIC or the like, as known in the art.
[0036] The control circuitry 115A-115D of each device 105A-105D may cause the device to maintain a clock 120A-120D for each device that indicates the current time of the computing device 105A-105D.
[0037] According to one embodiment, to synchronize clocks 120A-120D across computing devices 105A-105D, control circuitry 15A of one of the devices (i.e., first device 115A) may cause first device 115A to send a first electronic message to one or more other computing devices (i.e., second device 115B) of computing devices 115B-115D via communication network 110. The first electronic message may include a timestamp indicating the current time of first device 105A.
[0038] Control circuitry 115B of second device 105B may cause second device 105B to receive the first electronic message from first device 105A and send a second electronic message to first device 105A via communication network 110. The second electronic message may include a timestamp indicating the current time of second device 105B.
[0039] The control circuitry 115A of the first device 105A may cause the first device 105A to receive a second electronic message from the second device 105B, determine which of the clock 120A of the first device 105A and the clock 120B of the second device 105B is earlier in time based on the timestamp of the received second electronic message, and set the current time of the first device 105A based on the clock 120A of the first device 105A and the clock 120B of the second device 105B that is determined to be earlier in time. Similarly, the control circuitry 115B of the second device 105B may cause the second device 105B to determine which of the clock 120A of the first device 105A and the clock 120B of the second device 105B is earlier in time based on the timestamp of the received first electronic message, and set the current time of the second device 105B based on the clock 120A of the first device 105A and the clock 120B of the second device 105B that is determined to be earlier in time.
[0040] For example, setting the current time of the first device 105A based on the clock 120A of the first device 105A and the clock 120B of the second device 105B that is determined to be closest in time may include: in response to determining that the clock 120B of the second device 105B is faster than the clock 120A of the first device 105A, setting the current time of the first device 105A to the current time of the second device 105B, and / or maintaining the current time of the first device 105A based on the clock 120A of the first device 105A in response to determining that the clock 120A of the first device 105A is faster than the clock 120B of the second device 105B. Determining which of the clock 120A of the first device 105A and the clock 120B of the second device 105B is earlier in time may include calculating an offset between the current time of the first device 105A and the current time of the second device 105B, and determining which of the clock 120A of the first device 105A and the clock 120B of the second device 105B is earlier in time based on the calculated offset. Setting the current time of the first device based on the determined earlier-in-time of the clocks of the first device and the second device may include adding a value to the current time of the first device based on the calculated offset between the current time of the first device and the current time of the second device.
[0041] In some cases, the control circuitry 115A of the first device 105A may further cause the first device 105A to send a delay request message to the second device 105B via the communication network 110. The control circuitry 115B of the second device 105B may further cause the second device 105B to receive the delay request message from the first device 105A, determine a transmission time of the delay request message, and send a delay response message including the determined transmission time to the first device 105A via the communication network 110. The control circuitry 115A of the first device 105A may further cause the first device 105A to receive the delay response message. Determining which of the clock 120A of the first device 105A and the clock 120B of the second device 105B is most advanced in time may also be based on the delay response message.
[0042] Figure 2is a timing diagram illustrating exemplary exchanges between computing devices for synchronizing clocks between computing devices according to one embodiment of the present disclosure. According to one embodiment, four timestamps may be generated on each peer node participating in synchronization. For example, the timestamps may be generated according to the IEEE 1588 standard. The t1A, t2A, t3A, and t4A timestamps shown in this example may be used to calculate a relationship between the clock 120B of the second computing device 105B and the clock 120A of the first computing device 105A, and the t1B, t2B, t3B, and t4B timestamps may be used to calculate a relationship between the clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B.
[0043] As shown in this example, first computing device 105A may send an initial "Sync" message 205 to second computing device 105B. In the case of a two-step clock under the IEEE 1588 standard, first computing device 105A may send an optional "Follow_Up" message 210. Second computing device 105B may respond with a "Sync" message 215 and an optional "Follow_Up" message 220 (if used). In some cases, second computing device 105B may send a "Delay_Request" message 225, to which first computing device 105A may respond with a "Delay_Response" message 230 indicating a delay in the message exchange. Similarly, first computing device 105A may send a "Delay_Request" message 235, to which second computing device 105B may respond with a "Delay_Response" message 240.
[0044] Rather than using the hierarchical approach proposed by IEEE 1588, embodiments of the present disclosure can transmit time in both directions. Each party in the exchange can then calculate an offset from the other party. Based on the timestamps or delay calculations exchanged in these messages, each computing device can adjust its clock to that of the other party if the other party's clock is faster, or maintain its clock without adjustment if the computing device's clock is faster.
[0045] Figure 3 FIG1 is a timing diagram illustrating an exemplary exchange between computing devices for synchronizing clocks between computing devices according to another embodiment of the present disclosure. As shown in this example, six timestamps can be generated on each computing device participating in the synchronization. For example, the timestamps can be generated according to the IEEE 1588 standard. The t 1A , t 2A , t P1A , tP2A , t P3A , t P4A The timestamp can be used to calculate the relationship between the clock 120B of the second computing device 105B and the clock 120A of the first computing device 105A, and t 1B , t 2B , t P1B , t P2B , t P3B , t P4B The timestamps may be used to calculate the relationship between the clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B.
[0046] As shown in this example, first computing device 105A may send an initial "Sync" message 305 to second computing device 105B. In the case of a two-step clock under the IEEE 1588 standard, first computing device 105A may send an optional "Follow_Up" message 310. Second computing device 105B may respond with a "Sync" message 315 and, if used, an optional "Follow_Up" message 320. In some cases, second computing device 105B may send a “PDelay_Request” message 325, and first computing device 105A may respond to “PDelay_Request” message 325 with a “PDelay_Response” message 330 and an optional “PDelay_Resp_Follow_Up” message 335 indicating a delay in the message exchange. Similarly, first computing device 105A may send a “PDelay_Request” message 340, and second computing device 105B may respond to “PDelay_Request” message 340 with a “PDelay_Response” message 345 and an optional “PDelay_Resp_Follow_Up” message 350.
[0047] Again, both parties in the exchange can then calculate their offset from the other. Based on the timestamps or delay calculations exchanged in these messages, each computing device can adjust its clock to that of the other if the other's clock is faster, or maintain its clock without adjustment if the computing device's clock is faster.
[0048] Figure 41 is a flow chart illustrating an exemplary process for synchronizing clocks between computing devices in the time domain according to one embodiment of the present disclosure. As shown in this example, synchronizing clocks between a plurality of computing devices 105A-105D may include sending 405 a first electronic message by a first computing device 105A in the plurality of computing devices to a second computing device 105B in the plurality of computing devices via a communication network 110. The first electronic message may include a timestamp indicating the current time of the first computing device 105A.
[0049] A first electronic message from first computing device 105A may be received 410 by second computing device 105B, and a second electronic message may be sent 415 by second computing device 105B to first computing device 105A via communication network 110. The second electronic message may include a timestamp indicating the current time of second computing device 105B.
[0050] A second electronic message may be received 420 by first computing device 105A from second computing device 105B. First computing device 105A may then determine which of first computing device 105A's clock 120A and second computing device 105B's clock 120B is earlier in time based on the timestamp of the received second electronic message, and set the current time of first computing device 105A based on the determined earlier of first computing device 105A's clock 120A and second computing device 105B's clock 120B. Similarly, second computing device 105B may determine which of first computing device 105A's clock 120A and second computing device 105B's clock 120B is earlier in time based on the timestamp of the received first electronic message, and set the current time of second computing device 105B based on the determined earlier of first computing device 105A's clock 120A and second computing device 105B's clock 120B.
[0051] More specifically, setting the current time of the first computing device 105A based on the determined time-forward of the clocks of the first computing device 105A and the second computing device 105B may include making a determination 425 as to whether the clock 120B of the second computing device 105B is faster than the clock 120A of the first computing device 105A. In response to determining 425 that the clock 120B of the second computing device 105B is faster, the first computing device 105A may set 430 its clock 120A to the time indicated by the clock 120B of the second computing device 105B. In response to determining 425 that the clock 120B of the second computing device 105B is not faster, the first computing device 105A may maintain 435 its clock without changing it.
[0052] Similarly, setting the current time of the second computing device 105B based on the determined temporally preceding clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B may include making a determination 440 as to whether the clock 120A of the first computing device 105A is faster than the clock 120B of the second computing device 105B. In response to determining 440 that the clock 120A of the first computing device 105A is faster, the second computing device 105B may set 445 its clock 120B to the time indicated by the clock 120A of the first computing device 105A. In response to determining 440 that the clock 120A of the first computing device 105A is not faster, the second computing device 105B may maintain 450 its clock without changing it.
[0053] Figure 5 1 is a flow chart illustrating an exemplary process for synchronizing clocks between computing devices in the time domain according to another embodiment of the present disclosure. As shown in this example, synchronizing clocks between multiple computing devices 105A-105D may include: a first computing device 105A in the multiple computing devices sends 505 to a second computing device 105B in the multiple computing devices via a communication network 110;
[0054] First Electronic Message The first electronic message may include a timestamp indicating the current time of the first computing device 105A.
[0055] A first electronic message from first computing device 105A may be received 510 by second computing device 105B, and a second electronic message may be sent 515 by second computing device 105B to first computing device 105A via communication network 110. The second electronic message may include a timestamp indicating the current time of second computing device 105B.
[0056] A second electronic message may be received 520 by first computing device 105A from second computing device 105B. First computing device 105A may send 525 a delay request message to second computing device 105B via communication network 110. Second computing device 105B may receive 530 the delay request message from first computing device 105A, determine a transmission time for the delay request message, and send 535 a delay response message to first computing device 105A including the determined transmission time.
[0057] The first computing device 105A may receive 540 the delayed response message and may then determine which of the clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B is earlier in time based on the timestamp of the received second electronic message and set the current time of the first computing device 105A based on the determined earlier in time of the clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B. Similarly, the second computing device 105B may determine which of the clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B is earlier in time based on the timestamp of the received first electronic message and set the current time of the second computing device 105B based on the determined earlier in time of the clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B.
[0058] More specifically, setting the current time of the first computing device 105A based on the determined time-forward of the clock of the first computing device 105A and the clock of the second computing device 105B may include making a determination 545 as to whether the clock 120B of the second computing device 105B is faster than the clock 120A of the first computing device 105A. In response to determining 545 that the clock 120B of the second computing device 105B is faster, the first computing device 105A may set 550 its clock 120A to the time indicated by the clock 120B of the second computing device 105B. In response to determining 545 that the clock 120B of the second computing device 105B is not faster, the first computing device 105A may maintain 555 its clock without changing it.
[0059] Similarly, setting the current time of the second computing device 105B based on the determined temporally preceding clock 120A of the first computing device 105A and the clock 120B of the second computing device 105B may include making a determination 560 as to whether the clock 120A of the first computing device 105A is faster than the clock 120B of the second computing device 105B. In response to determining 560 that the clock 120A of the first computing device 105A is faster, the second computing device 105B may set 565 its clock 120B to the time indicated by the clock 120A of the first computing device 105A. In response to determining 560 that the clock 120A of the first computing device 105A is not faster, the second computing device 105B may maintain 570 its clock without changing it.
[0060] It should be noted that many variations of the structure, functionality, order of operations, and / or other aspects of the various embodiments described herein are contemplated. The operations of the exemplary process for synchronizing clocks between computing devices described above may be performed in a different order, and each operation need not be dependent on a previous event or operation. For example, the sending of a synchronization message may be initiated by any device at any time and need not occur in response to those events or other events in which the synchronization message is received. Furthermore, the process for setting the clock need not be executed in response to completing a conversation. For example, the task of measuring a clock offset may be performed in one process, while the task of setting the clock based on the clock offset may be completed in a second process that runs asynchronously with respect to the first process. Other such variations are also contemplated and are considered to be within the scope of this disclosure.
[0061] The present disclosure includes, in various aspects, embodiments, and / or configurations, components, methods, processes, systems, and / or apparatus substantially as described and illustrated herein, including various aspects, embodiments, configuration embodiments, subcombinations, and / or subsets. Those skilled in the art will understand how to make and use the disclosed aspects, embodiments, and / or configurations after understanding the present disclosure. The present disclosure includes, in various aspects, embodiments, and / or configurations, providing devices and processes without items not described and / or depicted herein, or providing devices and processes without items that may have been used in previous devices or processes, for example, to improve performance, achieve simplicity, and / or reduce implementation costs.
[0062] The foregoing discussion is presented for the purpose of illustration and description. The foregoing is not intended to limit the present disclosure to one or more forms disclosed herein. For example, in the foregoing detailed description, various features of the present disclosure are grouped together in one or more aspects, embodiments and / or configurations to improve the efficiency of the present disclosure. The features of the aspects, embodiments and / or configurations of the present disclosure may be combined in alternative aspects, embodiments and / or configurations other than those described above. The method of the present disclosure should not be interpreted as reflecting an intention that the claims require more features than those expressly recited in each claim. On the contrary, as reflected in the appended claims, inventive aspects exist in less than all of the features of a single foregoing disclosed aspect, embodiment and / or configuration. Therefore, the appended claims are hereby incorporated into this detailed description, with each claim independently serving as a separate preferred embodiment of the present disclosure.
[0063] In addition, although this specification includes descriptions of one or more aspects, embodiments and / or configurations and certain variations and modifications, other variations, combinations and modifications are within the scope of the present disclosure, for example, within the skill and knowledge of those skilled in the art after understanding the present disclosure. It is intended to obtain the right to include alternative aspects, embodiments and / or configurations to the extent permitted, including substitution, interchangeability and / or equivalent structure, function, range or steps for the claimed structure, function, range or steps, whether or not such substitution, interchangeability and / or equivalent structure, function, range or steps are disclosed herein, and is not intended to dedicate any patentable subject matter to the public.
Claims
1. A first device among a plurality of devices in a time domain, the first device comprising: a communication interface coupled to a communication network; a control circuit coupled to the communication interface and controlling the operation of the first device, wherein the control circuit of the first device causes the first device to: maintaining a clock indicating a current time on the first device; sending, via the communication interface, an electronic message to a second device of the plurality of devices, the electronic message including a timestamp indicating the current time of the first device; receiving, via the communication interface, an electronic message from the second device, the electronic message including a timestamp indicating a current time of the second device based on a clock of the second device; determining which of the clock of the first device and the clock of the second device is most advanced in time based on the timestamp of the electronic message received from the second device; as well as The current time of the first device is set based on the determined most recent of the clock of the first device and the clock of the second device.
2. The device of claim 1 , wherein setting the current time of the first device based on the determined most preceding one of the clocks of the first device and the second device comprises: In response to determining that the clock of the second device is faster than the clock of the first device, the current time of the first device is set to the current time of the second device.
3. The device of claim 1 , wherein setting the current time of the first device based on the determined most preceding one of the clock of the first device and the clock of the second device comprises: In response to determining that the clock of the first device is faster than the clock of the second device, the current time of the first device is maintained based on the clock of the first device.
4. The device of claim 1 , wherein determining which of the clock of the first device and the clock of the second device is most advanced in time comprises: Calculating an offset between the current time of the first device and the current time of the second device; as well as Based on the calculated offset, it is determined which of the clock of the first device and the clock of the second device is earlier in time.
5. The device of claim 4 , wherein setting the current time of the first device based on the determined most preceding one of the clock of the first device and the clock of the second device comprises: A value is added to the current time of the first device based on the calculated offset between the current time of the first device and the current time of the second device.
6. The device of claim 1 , wherein the control circuit of the first device further causes the first device to: sending a delay request message to the second device via the communication interface; and A delay response message indicating a transmission time of the delay request message is received from the second device via the communication interface. 7 . The device of claim 6 , wherein determining which of the clock of the first device and the clock of the second device is most advanced in time is further based on the delay response message.
8. A data center, comprising: Communication networks; a first device coupled to the communications network and comprising control circuitry that controls operation of the first device; and a second device coupled to the communications network and comprising control circuitry that controls operation of the second device; wherein: the control circuitry of the first device causes the first device to send a first electronic message to the second device via the communication network, the first electronic message including a timestamp indicating a current time of the first device; the control circuitry of the second device causes the second device to receive the first electronic message from the first device and to send a second electronic message to the first device via the communications network, the second electronic message including a timestamp indicating a current time of the second device; as well as The control circuit of the first device causes the first device to receive the second electronic message from the second device, determine which of the clocks of the first device and the second device is earlier in time based on the timestamp of the received second electronic message, and set the current time of the first device based on the determined earlier one of the clocks of the first device and the clocks of the second device.
9. A data center according to claim 8, wherein the control circuit of the second device enables the second device to determine which of the clocks of the first device and the second device is earlier in time based on the timestamp of the received first electronic message, and sets the current time of the second device based on the determined earlier one of the clocks of the first device and the second device.
10. The data center of claim 8, wherein setting the current time of the first device based on the clock of the first device and the clock of the second device that is determined to be the most preceding in time comprises: In response to determining that the clock of the second device is faster than the clock of the first device, the current time of the first device is set to the current time of the second device.
11. The data center of claim 8, wherein setting the current time of the first device based on the clock of the first device and the clock of the second device that is determined to be the most preceding in time comprises: In response to determining that the clock of the first device is faster than the clock of the second device, the current time of the first device is maintained based on the clock of the first device.
12. The data center of claim 8, wherein determining which of the clock of the first device and the clock of the second device is most advanced in time comprises: Calculating an offset between the current time of the first device and the current time of the second device; as well as Based on the calculated offset, it is determined which of the clock of the first device and the clock of the second device is earlier in time.
13. The data center of claim 12, wherein setting the current time of the first device based on the clock of the first device and the clock of the second device that is determined to be the most preceding in time comprises: A value is added to the current time of the first device based on the calculated offset between the current time of the first device and the current time of the second device.
14. The data center of claim 8, wherein: The control circuitry of the first device further causes the first device to send a delay request message to the second device via the communication network; the control circuitry of the second device causes the second device to receive the delay request message from the first device, determine a transmission time of the delay request message, and send a delay response message including the determined transmission time to the first device via the communications network; and The control circuitry of the first device further causes the first device to receive the delay response message, wherein determining which of the clock of the first device and the clock of the second device is most advanced in time is further based on the delay response message.
15. A method for synchronizing clocks among a plurality of computing devices, the method comprising: sending, by a first computing device among the plurality of computing devices, a first electronic message to a second computing device among the plurality of computing devices via a communication network, the first electronic message including a timestamp indicating a current time of the first computing device; receiving, by the second computing device, the first electronic message from the first computing device; sending, by the second computing device to the first computing device via the communication network, a second electronic message including a timestamp indicating a current time of the second computing device; receiving, by the first computing device, the second electronic message from the second computing device; determining, by the first computing device based on the timestamp of the received second electronic message, which of a clock of the first computing device and a clock of the second computing device is most advanced in time; as well as The current time of the first computing device is set by the first computing device based on the determined temporally most preceding of the clock of the first computing device and the clock of the second computing device.
16. The method according to claim 15, further comprising: determining, by the second computing device, which of the clock of the first computing device and the clock of the second computing device is most advanced in time based on the timestamp of the received first electronic message; as well as The current time of the second computing device is set by the second computing device based on the determined most recent of the clock of the first computing device and the clock of the second computing device.
17. The method of claim 15, wherein setting the current time of the first computing device based on the determined temporally most preceding of the clock of the first computing device and the clock of the second computing device comprises: In response to determining that the clock of the second computing device is faster than the clock of the first computing device, the current time of the first computing device is set to the current time of the second computing device.
18. The method of claim 15, wherein setting the current time of the first computing device based on the determined temporally most preceding of the clock of the first computing device and the clock of the second computing device comprises: In response to determining that the clock of the first computing device is faster than the clock of the second computing device, the current time of the first computing device is maintained based on the clock of the first computing device.
19. The method of claim 15, wherein determining which of the clock of the first computing device and the clock of the second computing device is most advanced in time comprises: calculating an offset between the current time of the first computing device and the current time of the second computing device; as well as Based on the calculated offset, determining which of the clock of the first computing device and the clock of the second computing device is earlier in time, and setting the current time of the first computing device based on the determined earlier in time of the clock of the first computing device and the clock of the second computing device includes: adding a value to the current time of the first computing device based on the calculated offset between the current time of the first computing device and the current time of the second computing device.
20. The method of claim 15, further comprising: Sending, by the first computing device, a delay request message to the second computing device via the communication network; receiving, by the second computing device, the delay request message from the first computing device; determining, by the second computing device, a transmission time of the delay request message; sending, by the second computing device to the first computing device via the communication network, a delay response message including the determined transmission time; as well as The delay response message is received by the first computing device, wherein determining which of the clock of the first computing device and the clock of the second computing device is most advanced in time is further based on the delay response message.