최근 주목 받고 있는 유비쿼터스 네트워킹은 점차 지능화, 자율화되고 있으며, 네트워크를 통해 생산, 유통, 물류 등의 경제 활동 서비스, 의료, 요양 등의 복지 서비스 그리고 환경 서비스 등 새로운 유비쿼터스 서비스를 창출하고 있다. 이로 인해 인류의 삶을 더욱 윤택하게 해주는 기술로 각광 받고 있다.
이러한 유비쿼터스 네트워킹을 구현함에 있어서 여러 노드가 정해진 시간에 약속된 동작을 수행하기 위해서는 각 노드가 가진 타이머 간에 동기화가 이루어져야 한다. 즉, 무선으로 통신하는 두 통신 노드 간의 시간 동기를 맞춰주어야 한다.
노드 간의 동기화를 수행하는 기본적인 원리는 기준이 되는 노드(이하, "기 준 노드")가 자기 타이머의 시간을 다른 노드(이하, "대상 노드")에게 알려 대상 노드들이 기준 노드의 시간에 각자의 시간을 맞추는 것이다. 이때 기준 노드가 자기 타이머에서 시간을 읽은 후, 이 시간을 다른 노드에게 알리기 위해 패킷에 기록하고 송신하고, 이 패킷을 대상 노드가 수신하여 읽혀지기까지 시간 지연이 발생한다는 것이다. 기준 노드가 시간 T에 타이머를 읽어 그 시간 T가 포함된 패킷을 대상 노드에게 전송하고, 대상 노드가 상기 패킷을 수신해 상기 시간 T를 읽게 되기까지의 시간 지연을 D라고 하면, 대상 노드가 상기 시간 T를 읽은 시간은 T+D가 되므로, 대상 노드는 T가 아닌 T+D에 자기 시간을 맞추어야 한다. 따라서 기준 노드와 대상 노드간의 정확한 동기화를 위해서는 D 값을 알아야 하는데, 이 값을 알아내는 방법에 크게 두 가지가 있다.
첫째는 대표적인 무선 네트워크 중 하나인 IEEE 802.11에서 사용하는 방식으로, 기준 노드 및 대상 노드에서 발생하는 지연 시간을 미리 측정하여 기준 노드와 대상 노드간의 패킷 송수신 시 그 값을 보상해서 읽고 쓰는 방식이다. 이 지연 시간은 하드웨어 제조사에 의해 측정되어 하드웨어 자체에 입력되어 있어야 하므로, 하드웨어 자체에서 이러한 기능을 지원하지 않는 경우에는 사용할 수 없다.
둘째는 기준 노드와 대상 노드간의 패킷의 송/수신 시간을 측정한 후, 계산을 통해 지연 시간을 알아내는 방법이다. 보다 구체적으로 설명하면, 기준 노드에서 패킷에 송신 시간을 기록하여 대상 노드로 보내면, 대상 노드에서는 그 패킷을 수신한 후 패킷의 수신 시간에서 패킷에 적혀 있는 송신 시간을 차감하여 두 시간의 차이를 구한다. 이때, 상기 두 시간의 차에는 패킷의 송신에 걸린 시간과 기준 노드와 대상 노드의 타이머들간의 시간차가 모두 포함되어 있다. 이러한 타이머들의 시간차는 어느 노드의 시간이 더 빠른가에 의해 그 부호(+ 또는 -)가 결정된다. 그 다음 반대로 대상 노드에서 패킷에 송신 시간을 기록하여 기준 노드로 송신하면, 기준 노드에서 해당 패킷의 수신 시간과 송신 시간의 차를 계산한다. 여기서 계산된 시간차에는 마찬가지로 패킷의 송신 지연과 두 노드 간의 시간차가 모두 포함되는데, 이때 시간차의 부호는 앞에서 구한 시간차와 반대가 된다. 따라서 상기 계산된 두 시간차를 더해 2로 나누면 노드 간 시간차는 상쇄되고, 물리적인 지연 시간을 구할 수 있다. 반대로 두 시간차를 빼서 2로 나누면, 두 노드간 시간차와 어떤 노드의 시간이 더 빠른지를 알 수 있다. 이에 따라 대상 노드는 자기 타이머에서 두 노드 간 시간 차를 빼거나 더해 자기 시간을 기준 노드의 시간과 동일하게 만들 수 있다. 이하 상기 두 노드간 시간차를 "오프셋 (Offset)"이라 칭하기로 한다.
상기 첫 번째 방식과 같이 하드웨어 제작 시 지연 시간을 측정해 하드웨어에 미리 입력하는 방식은 하드웨어에서 그 기능을 지원해야 하므로, 예를 들어 IEEE 802.15.4와 같이 이를 지원하지 않는 통신 시스템에는 사용할 수 없다. 따라서 이러한 방식을 사용할 수 없는 경우에는 상기 두 번째 방식과 같이 패킷의 송/수신 시간 차로부터 두 노드의 타이머 간의 시간차를 계산해 타이머를 보정하는 방식을 사용할 수 있다.
이하에서 도 1을 참조하여 종래 송/수신 노드의 타이머간의 시간 차를 계산해 타이머를 보정하는 방식, 즉 노드간의 시간 동기화를 수행하는 방식을 설명한 다.
도 1은 일반적인 무선 통신 시스템에서 노드 간의 시간 동기화를 수행하는 과정을 나타낸 흐름도이다.
이하 본 명세서에서, T기준은 특정 시점에서 기준 노드(또는 송신 노드)의 타이머가 가리키는 시간을 의미하고, T대상은 동기화의 대상이 되는 대상 노드(또는 수신 노드)의 타이머가 가리키는 시간을 의미함을 명시한다.
먼저 기준 노드(100)는 101단계에서 노드간 동기화가 시작되면, 103단계에서 기준 노드(100)의 현재 시간을 읽는다. 이때, 상기 기준 노드(100)의 현재 시간은 시점 s1에서 상기 기준 노드(100)의 타이머가 가리키는 시간을 나타내는 것으로 T기준(s1)라 한다. 기준 노드(100)는 상기 T기준(s1)를 105단계에서 패킷에 기록하고, 107단계에서 상기 T기준(s1)가 기록된 패킷을 하드웨어의 송신 버퍼에 기록한 후, 이것을 109단계에서 CSMA(Carrier Sense Multiple Access)를 통해 상기 대상 노드(120)로 송신한다.
이를 수신한 대상 노드(120)는 상기 T기준(s1)가 기록된 패킷의 수신 시간을 읽는다. 상기 T기준(s1)가 기록된 패킷의 수신 시간은 시점 r1에서 상기 대상 노드(120)의 타이머가 가리키는 시간을 나타내는 것으로 T대상(r1)이라 한다. 이때 상기 대상 노드(120)는 상기 T대상(r1)와 상기 T기준(s1)를 이용하여 오프셋 값을 구할 수 있다. 여기서 오프셋(Offset) 값은 기준 노드(100)의 시간에 대한 대상 노드(120)의 시간차를 의미하는데, 이것은 하기 <수학식 1>과 같이 나타낼 수 있다.
Offset = T대상(r1) - T기준(r1)
한편, 상기 기준 노드(100)에 의해 패킷의 송신 시간이 읽혀진 시점부터 상기 대상 노드(120)에 의해 패킷의 수신 시간이 읽혀진 시점까지의 시간 지연을 Dforward이라 하면, 이것은 하기 <수학식 2>와 같이 나타낼 수 있다.
Dforward = T기준(r1) - T기준(s1)
상기 <수학식 1>과 상기 <수학식 2>를 더하면, 하기 <수학식 3>을 얻을 수 있다.
Offset + Dforward = T대상(r1) - T기준(s1)
이때, T대상(r1)은 대상 노드(120)의 타이머가 읽은 값이고, T기준(s1)은 수신 패킷에 기록된 값이므로, 상기 대상 노드(120)는 하기 <수학식 4>를 얻을 수 있다. 이하에서 상기 오프셋 값이 더해진 Dforward 값을 순방향 지연 시간이라 정의하며, 수학식에 사용될 시에는 참조 부호 F라 한다.
F = Offset + Dforward
이하 설명될 121 단계 이후의 동작은 상기 순방향 지연 시간을 구하는 동작과 대응되게 대상 노드(120)로부터 기준 노드(100)로의 역방향 지연 시간을 구하는 과정이다.
즉, 121단계에서 대상 노드(120)는 현재 시간을 읽는다. 이때, 상기 대상 노드(120)의 현재 시간은 시점 s2에서 상기 대상 노드(120)의 타이머가 가리키는 시간을 나타내는 것으로 T대상(s2)라 한다. 123단계에서 대상 노드(120)는 상기 T대상(s2)와 상기 순방향 지연 시간을 패킷에 기록하고, 125단계에서 상기 T대상(s2)와 상기 순방향 지연 시간이 기록된 패킷을 하드웨어의 송신 버퍼에 기록한다. 127단계에서 대상 노드(120)는 CSMA 백오프(backoff)를 실행하고, 상기 T대상(s2)와 상기 순방향 지연 시간이 기록된 패킷을 상기 기준 노드(100)로 송신한다.
이후, 기준 노드(100)은 상술한 순방향 지연 시간을 구하는 방식과 동일한 방식을 적용하여 하기 <수학식 5>의 Dreverse를 얻을 수 있다. 이때, 상기 대상 노드(100)에 의해 패킷의 송신 시간이 읽혀진 시점부터 상기 기준 노드에 의해 수신 시간이 읽혀진 시점까지의 시간 지연을 Dreverse라 하고, 이것은 하기 <수학식 5>와 같이 나타낼 수 있다. 이하에서 상기 오프셋 값의 음수 값이 더해진 Dreverse 값을 역방향 지연 시간이라 정의하며, 수학식에 사용될 시에는 참조 부호 R이라 한다.
Dreverse = T기준(r2) - T기준(s2)
또한, 상기 <수학식 5>를 이용하여 하기의 <수학식 6>을 얻을 수 있다.
R = -Offset + Dreverse
만약 상기 순방향 지연 시간 및 역방향 지연 시간, 즉 양방향에서의 지연이 동일하다면, 오프셋은 <수학식 7>이 된다.
Offset = (F - R) / 2
따라서 기준 노드는 상기 <수학식 7>을 이용하여 상기 오프셋 값을 계산할 수 있고, 이를 대상 노드에게 알리면 대상 노드는 기준 노드의 정확한 시간을 알 수 있게 된다.
하지만 기준 노드와 대상 노드간의 양방향 지연이 동일하지 않을 수 있다. 즉 상기한 Dforward와 Dreverse가 동일하지 않을 수 있다. 이것은 기준 노드와 대상 노드의 하드웨어 차이 때문에 발생하기도 하고, 기준 노드와 대상 노드에서 현재 시간을 읽은 후로부터 패킷이 하드웨어 송신 버퍼에 기록되기 전 사이에 인터럽트가 발생할 경우, 이를 처리하기 위해 지연될 수 있기 때문에 발생하기도 한다. 후자의 경우, 발생 빈도는 높지 않을 수 있으나 동기화 오차를 높이는 원인이 된다.
또한 패킷의 송신 시작 전에 수행하는 랜덤 백오프(random backoff)에 의해서도 양방향 지연이 동일하지 않은 경우가 발생할 수 있다. 동기화 되지 않은 무선 네트워크에서 사용되는 대표적인 매체 접근 방식은 CSMA인데, 이러한 CSMA에서는 서로 다른 노드가 동시에 패킷을 송신함으로써 발생하는 송신 실패를 줄이기 위해서 송신 전에 무작위 시간을 기다린 후 매체가 사용 중인지 아닌지 감지하는 방식을 사용한다. 이때 무작위 시간 동안 기다리는 동작을 랜덤 백오프라 하는데, 이 시간이 매번 패킷을 송신할 때마다 다르므로 양방향 지연이 달라지게 된다.
무선 네트워크에서도 TDMA와 같은 방식을 사용할 수 있으나, 이는 노드 간 동기화가 이루어지고 난 이후에나 사용할 수 있는 것이므로, 동기화 이전에는 사용할 수 없다. 이 문제를 해결할 수 있는 방법으로, 시간 기록을 백오프 이전에 수행하지 않고 백오프까지 마친 다음에 수행하는 방법이 있다. 만약 백오프 이후에 패킷을 즉시 송신하지 않고 다른 동작을 수행할 경우, 비어 있던 매체가 다시 사용 중으로 바뀌어 송신이 실패할 수 있는 문제가 발생한다. 따라서 네트워크에 여러 종류의 노드가 혼재했을 때, 불가피하게 동기화 오차를 증가시키는 요인이 된다.
한편, 상기와 같은 문제 외에도 각 노드마다 타이머의 클럭 주파수에 미세한 차이가 발생할 수 있다. 클럭 주파수의 오차를 클럭 드리프트(clock drift)라 하는데, 이러한 클럭 드리프트 때문에 기준 노드와 대상 노드간에 한 번 동기화가 이루어졌다 하더라도 시간이 지나면 기준 노드와 대상 노드간에 다시 시간차가 발생하게 된다. 이 시간차는 매우 미세한 차이지만 시간이 지날수록 점점 더 커지므로 동기화 오차를 일정 수준 이하로 유지하기 위해서는 주기적으로 동기화 동작을 수행해야 한다. 요구되는 오차 한계가 작을수록 더 자주 동기화를 수행해야 하는데, 이는 대역폭 및 에너지 소비를 유발하는 원인이 된다.
이하, 본 발명에 따른 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 또한, 하기 설명에서는 구체적인 특정 사항들이 나타나고 있는데, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들 없이도 본 발명이 실시될 수 있음은 이 기술 분야에서 통상의 지식을 가진 자에게는 자명할 것이다. 그리고 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 상세한 설명을 생략한다.
본 발명의 기본 개념을 간략히 설명하면, 본 발명은 무선 통신 시스템에서 시간 동기화가 요구되는 노드들, 즉 기준 노드(또는 송신 노드) 및 대상 노드(또는 수신 노드)간에 시간 정보를 포함하는 패킷을 상호 교환하여 기준 노드에서 측정한 패킷 송신 시간과 대상 노드에서 측정한 패킷 수신 시간의 차이를 계산하고, 이를 이용하여 두 노드의 타이머 간 시간차를 계산해 시간차를 보정하는 것이다. 두 노드가 교환하는 패킷의 송신 시간은 기준 노드에서 알 수 있고, 수신 시간은 대상 노드에서 알 수 있으므로, 두 노드의 시간차를 계산하기 위해서는 한 쪽 노드에서 다른 쪽 노드로 정보를 송신해야 한다.
기존 방식에서는 기준 노드가 패킷에 송신 시작 시간을 적어서 보내는 방식을 사용하였지만, 본 발명에서는 기준 노드가 패킷의 송신 시간을 패킷에 기록해 보내는 대신, 대상 노드가 패킷의 수신 시간을 기준 노드에게 알려 주는 방식을 사용한다. 이와 같이 대상 노드가 기준 노드가 전송한 패킷의 수신 시간을 기준 노드에게 알려 주는 방식을 이용하는 경우 도 1에서 설명한 것처럼 종래 기준 노드와 대상 노드의 하드웨어 차이, 기준 노드가 패킷의 전송 시 타이머의 시간을 읽은 이후 발생되는 인터럽트, 랜덤 백오프 등에 의한 시간 지연의 영향을 제거할 수 있다.
이하에서 도 2 및 도 3을 참조하여 본 발명의 기본 개념을 간략히 설명한다.
도 2는 본 발명이 적용되는 무선 통신 시스템에서 기준 노드와 대상 노드를 간략히 도시한 도면이고, 도 3은 본 발명의 실시예에 따른 무선 통신 시스템에서 노드들간의 시간 동기화 과정을 나타낸 순서도이다.
도 2을 참조하면, 본 발명에 따른 무선 통신 시스템은 노드들간의 시간을 동기화 시 기준이 되는 기준 노드(200)와 상기 동기화의 대상인 대상 노드(220)를 포함한다. 상기 대상 노드(220)는 하기 도 3의 과정에 따라 상기 기준 노드(200)의 타이머 시간과의 오프셋 값을 구하여 자신의 타이머 시간을 보상하는 동기화 동작을 수행한다.
먼저 상기 기준 노드(200)가 301단계에서 상기 대상 노드(220)로 제1 패킷을 송신하고, 제1 패킷 송신 시간을 기록한다. 일반적으로 물리 계층의 패킷은 대상 노드에서 패킷을 감지하고 수신 클럭(clock)의 동기를 맞출 수 있도록 하는 프리앰블(preamble)과 패킷의 시작임을 알리는 SFD(Start of Frame Delimiter)로 시작되는데, 패킷을 송수신하는 각 노드는 SFD의 송신 또는 수신이 끝나는 순간 이를 알리는 특정 신호를 발생하게 된다. 이때, 대부분의 프로세서에서 사용하는 타이머 중 캡쳐(capture) 기능을 갖는 타이머를 이용하여 특정 신호가 발생했을 때, 타이머가 하드웨어적으로 그 시간을 기억한다. 상술한 바와 같이, 이러한 타이머를 이용하면 상기 기준 노드(200)에서 SFD까지 송신이 끝나고 패킷의 본 내용이 송신되려고 하는 정확한 시점을 기록할 수 있다.
이후, 303단계에서 대상 노드(220)가 상기 제1 패킷을 수신하고, 상기 제1 패킷의 수신 시간을 기억한다. 이때, 대상 노드(220)는 상기 기준 노드(200)와 같은 타이머를 이용하여 SFD 수신이 끝나고 패킷의 본 내용이 수신되려고 하는 정확한 시점을 기록한다. 305단계로 진행하여 상기 대상 노드(220)가 상기 제1 패킷 수신 시간을 포함하는 제2 패킷을 상기 기준 노드(200)로 송신하고, 제2 패킷 송신 시간을 기억한다.
307단계에서 상기 기준 노드(200)가 상기 제2 패킷을 수신하고, 상기 301단계에서 기억된 제1 패킷 송신 시간과 상기 수신된 제2 패킷에 포함된 제1 패킷 수신 시간을 이용하여 순방향 지연 시간을 계산한다. 상기 계산된 순방향 지연 시간과 상기 제1 패킷 수신 시간을 포함하는 제3 패킷을 상기 대상 노드(220)로 송신한다.
이후, 309단계에서 상기 대상 노드(220)가 상기 계산된 순방향 지연 시간과 상기 제2 패킷 수신 시간을 포함하는 제3 패킷을 수신하고, 상기 305단계에서 기억된 제2 패킷 송신 시간 및 상기 수신된 제3 패킷에 포함된 제2 패킷 수신 시간을 이용하여 역방향 지연 시간을 계산한다. 311단계에서 상기 수신된 제3 패킷에 포함된 순방향 지연 시간과 상기 계산된 역방향 지연 시간을 이용하여 동기화를 위해 필요한 오프셋 값을 계산한다. 이하에서 도 4를 참조하여, 상술한 본 발명을 보다 구체적으로 설명한다.
도 4는 본 발명의 실시예에 따른 무선 통신 시스템에서 노드들간의 시간 동기화를 수행하는 과정을 구체적으로 나타낸 흐름도이다.
먼저 상기 기준 노드(200)는 401단계에서 동기화가 시작되면, 403단계에서 송신하고자 하는 제1 패킷을 하드웨어(Hardware: H/W)의 송신 버퍼에 기록한다. 405단계에서 CSMA 백오프 동작을 실행하고, 상기 제1 패킷을 상기 대상 노드(220)로 송신한다. 407단계에서 기준 노드(200)는 상기 제1 패킷의 송신 시간을 나타내 는 T기준(s1)을 기억한다.
이후, 상기 기준 노드(200)로부터 송신된 제1 패킷을 수신한 상기 대상 노드(220)는 421단계에서 상기 제1 패킷의 수신 시간을 나타내는 T대상(r1)을 제2 패킷에 기록한다. 423단계에서 상기 T대상(r1)이 기록된 제2 패킷을 하드웨어의 송신 버퍼에 비록하고, 425단계에서 CSMA 백오프 동작을 실행한다. 상기 T대상(r1)이 기록된 제2 패킷을 427단계에서 상기 기준 노드(200)로 송신하고, 429단계에서 상기 T대상(r1)이 기록된 제2 패킷의 송신 시간인 T대상(s2)를 기억한다.
상기 대상 노드(220)로부터 T대상(r1)이 기록된 제2 패킷을 수신한 상기 기준 노드(200)는 상기 T대상(r1)과 상기 407단계에서 기억된 상기 T기억(s1)를 이용하여 순방향 지연 시간을 계산하고, 409단계로 진행하여 상기 계산된 순방향 지연 시간과 상기 T대상(r1)이 기록된 제2 패킷의 수신 시간인 T기준(r2)을 제3 패킷에 기록한다. 411단계에서 상기 계산된 순방향 지연 시간과 상기 T기준(r2)가 기록된 제3 패킷을 하드웨어의 송신 버퍼에 기록하고, 413단계에서 CSMA 백오프를 실행한 후, 415단계에서 상기 계산된 순방향 지연 시간과 T기준(r2)가 기록된 제3 패킷을 상기 대상 노드(220)로 송신한다.
상기 기준 노드(200)로부터 상기 계산된 순방향 지연 시간과 상기 T기준(r2)가 기록된 제3 패킷을 수신한 상기 대상 노드(220)는 상기 T기준(r2)와 상기 429단계에서 기억된 T대상(s2)를 이용하여 역방향 지연 시간을 계산한다. 이후 상기 대상 노드는 상기 계산된 역방향 지연 시간 및 상기 계산된 순방향 지연 시간을 이용하여 동기화를 위해 필요한 오프셋 값을 계산한다. 여기서 상기 순방향 지연 시간과 상기 역방향 지연 시간을 이용하여 상기 오프셋 값을 구하는 방식은 도 1에서 설명한 종래 방식을 이용할 수 있다.
상기에서 도 4를 참조하여 살펴본 바와 같이, 양방향 지연, 즉 Dforward 및 Dreverse에는 종래와 같이 인터럽트에 의한 지연, 하드웨어 차이에 의한 지연 및 랜덤 백오프 등에 의한 소프트웨어적인 지연이 전혀 포함되지 않는다. 이러한 지연은 패킷의 한 비트가 기준 노드를 출발해 대상 노드까지 도달하는데 걸리는 시간으로서, 그 값도 매우 작은 값일 뿐만 아니라 기준 노드와 대상 노드간 거리가 변하지 않는 한 양방향에서 항상 동일한 값으로 나타나므로 상기 <수학식 7>을 항상 만족한다.
그러나 노드들간에 상술한 동기화를 수행하는 과정은 타이머의 클럭 드리프트 때문에 주기적으로 반복되어야 하는데, 요구되는 동기화 정확도가 높을수록 동기화를 더 자주 수행해 주어야 한다. 클럭 드리프트는 노드간의 클럭 주파수 차이에 의해 발생하는데, 그 주파수 차이 자체는 시간에 따라 거의 변하지 않고 유지된다. 따라서 동일 시간 간격으로 동기화를 수행해 대상 노드의 타이머를 기준 노드의 타이머에 주기적으로 맞출 때, 대상 노드가 추가적으로 보상해야 할 오프셋 값은 매 동기화 때마다 거의 동일하게 나타난다.
예컨대, 10초 당 1회씩 동기화를 수행할 때, 이전 동기화 수행 시 대상 노드의 타이머가 7 tick(타이머의 시간 단위) 빨랐다면, 이를 보정한 후 10초 뒤에 다음 동기화를 수행할 때에도 7 tick 정도 빠르게 된다. 이에 근거해 대상 노드는 자기 타이머 시간을 10초 당 7 tick의 비율로 늦춤으로써 장시간 동안 동기화 수행이 없이도 클럭 드리프트에 의한 동기화 오차를 줄일 수 있다.
이를 위해서는 먼저 일정 시간 동안 흘러간 기준 노드의 타이머 tick 수와 대상 노드의 타이머 tick 수의 차이를 구해야 한다. 이 정보는 동기화 과정 중에 얻어질 수 있다. 이하에서 도 5를 참조하여 클럭 드리프트를 보정해 동일한 동기화 정확도를 유지하면서도, 동기화 수행 빈도를 현저히 감소시키는 방법에 대해 설명한다.
도 5는 본 발명의 다른 실시예에 따른 무선 통신 시스템에서 노드들간의 시간 동기화 방법을 나타낸 도면으로써, 도 5의 실시예는 노드의 타이머의 주파수 차이에 따라 발생하는 클럭 드리프트를 보상하여 보다 정확하게 시간 동기화를 수행하도록 제안된 것이다.
최초 동기화 과정에서 계산된 오프셋 값(531)을 OO라 하고, 그 후 기준 노드의 타이머로 M tick(501) 경과 후 수행된 동기화 과정에서 얻어진 오프셋 값(535)을 OM이라 한다면, 이 M tick(501) 동안 발생한 두 노드 간의 클럭 tick 차는 OM과 OO의 차이 즉, k(533)와 같다.
즉, 계산된 오프셋 값이 두 노드의 타이머간의 시간차를 나타내므로, 시간차 가 변하면 그 변화가 오프셋 값의 차이로 나타나게 된다. 만약 OM과 OO가 같다면, 최초 동기화 시점으로부터 M tick 경과 후의 두 노드간의 시간차가 같다는 것을 의미하므로, 이 경우에는 두 노드간 클럭 드리프트가 전혀 없는 것으로 판단할 수 있다.
그러나 OM가 OO보다 k 만큼 크다면, 기준 노드의 M tick(501) 동안 오프셋 값이 k tick 증가한 것이므로, 최초 동기화 시점으로부터 M tick이 경과하는 동안 대상 노드의 타이머가 기준 노드보다 k tick 덜 간 것이 된다. 즉, 대상 노드의 타이머는 기준 노드의 타이머보다 매 tick 당 k/M tick 만큼 느리게 간다고 할 수 있다. 따라서, 마지막 동기화 과정이 수행된 후 기준 노드의 타이머로 N tick의 시간이 흘렀다면, 기준 노드와 대상 노드의 타이머간 시간차는 하기의 <수학식 8>이 된다.
T기준 = T대상 + offset + kN/M
상기 <수학식 8>에서 오프셋은 마지막 동기화 과정에서 계산된 오프셋 값을 의미하고, N과 M은 모두 기준 노드의 타이머로 측정한 시간 간격이다. N과 M에 해당하는 시간 동안 대상 노드의 타이머로 측정한 시간은 이와 다르지만, 그 비(N/M)는 동일하다. 따라서 상기 <수학식 8>은 대상 노드가 클럭 드리프트까지 고려해 기 준 노드의 시간을 추정하기 위해 사용할 수 있다.
즉, 대상 노드는 여러 주기에 걸친 동기화 과정 동안 대상 노드의 타이머를 기준으로 총 흘러간 tick 수 M과 그 시간 동안의 처음과 마지막 오프셋 값의 차이 k = OM - O0를 메모리에 저장한다. 클럭 드리프트는 온도 등의 환경에 따라 미세하게 변할 수 있으므로, M과 k는 주기적으로 갱신되어야 한다. 마지막으로 동기화를 수행한 후, 대상 노드의 타이머로 N tick이 흐른 후, 대상 노드가 동기화 된 시간, T보정을 계산하고자 할 경우 하기의 <수학식 9>에 따라 계산한다.
T보정 = T대상 + offset + kN/M
차후 동기화를 수행할 때, 새로 계산된 offset을 Onew, 바로 전 동기화 과정에서 계산한 오프셋 값을 Oold라고 하고, 동기화 직후의 offset을 오차가 없는 정확한 값이라고 가정하면, 동기화 직전의 추정 오차는 <수학식 10>이 된다.
E = Oold + kN/M - Onew
적절한 동기화 주기는 여러 번에 걸쳐 측정된 E 값들의 범위와 허용 오차 Etol에 의해 다음과 같이 결정할 수 있다. 충분히 긴 시간 동안 매 동기화 주기마다 E 값을 계산했을 때, 그 절대값을 EMAX라고 했을 때, EMAX가 Etol보다 충분히 작다면, 두 노드는 동기화 주기를 더 늘려도 된다는 것을 의미한다. 두 노드는 다음 조건이 만족되는 한 일정한 시간 단위로 동기화 주기를 점진적으로 연장한다.
EMAX < αEtol, (0 < α < 1)
상기 <수학식 11>에서 α는 실험을 통해 적절하게 정해질 수 있는 값이다. 도중에 EMAX가 αEtol보다 큰 경우가 한 번이라도 발생하면, 동기화 주기를 한 단위 줄이고 더 이상은 연장시키지 않는다. 그 이후에 EMAX가 αEtol 보다 큰 경우가 다시 발생하면, 한 번 발생할 때마다 한 단위씩 동기화 주기를 줄여 나간다.