비대칭 지연으로 네트워크에서 클록 동기화


38

컴퓨터에 초기화되지 않은 정확한 시계가 있다고 가정하십시오. 즉, 컴퓨터 시계의 시간은 실시간 + 일정한 오프셋입니다. 컴퓨터가 네트워크에 연결되어 있으며이 오프셋을 사용하여 상수 오프셋 B 를 결정하려고합니다. .

간단한 방법은 컴퓨터가 현지 시간 을 기록하여 시간 서버에 쿼리를 보내는 것 +1입니다. 시간 서버 한번에 쿼리를 수신 및 포함 된 응답 송신 시간에 그것을 수신 한 클라이언트, 다시 +2 . 그런 다음 +1+2 , 즉 21 입니다.

네트워크 전송 시간과 서버 처리 시간이 대칭이면 =1+22 . 내가 아는 한,야생에서 사용되는 시간 동기화 프로토콜인NTP는이 가정에 따라 작동합니다.

지연이 대칭이 아닌 경우 정밀도를 어떻게 향상시킬 수 있습니까? 일반적인 인터넷 인프라에서이 비대칭 성을 측정하는 방법이 있습니까?


2
관련된 특허가 있지만 그 내용을 읽고 싶은 사람은 ...
Raphael

@Raphael 감사합니다. 보다 친숙한 Google 링크는 미국 특허 7602873 , 공식 USPTO 링크 입니다.
Gilles 'SO- 악마 중지'

첫 번째 생각 : 두 개체로는 불가능할 것입니다. 사용 n 개의엔티티(n2)쌍이더 나은 동기화가 가능합니다. 그런 다음 시계를 사용하여 1 회 시간을 측정 할 수 있습니다.
rgrig

응용 프로그램 / 컨텍스트를 명확히 할 수 있습니까? 아니면 주로 이론적 인 질문입니까?
vzn

답변:


10

비대칭을 측정 할 수 없음

아니요, 비대칭 성을 측정 할 수 없습니다. 이 두 가지 통신 다이어그램을 고려하십시오. 첫 번째는 음의 클럭 오프셋과 동일한 지연이며 두 번째는 클럭 오프셋이없고 두 번째는 완전히 비대칭 지연입니다 (동일한 왕복 시간).

통신 다이어그램

주목해야 할 것은 PC와 서버의 관점에서 볼 때 두 상호 작용이 정확히 동일하다는 것입니다. 그들은 동시에 메시지를받습니다. 그들은 동시에 메시지를 보냅니다.

PC 타임 라인을 '잡아서'슬라이드하여 각 케이스에 대해 메시지 전송 / 수신 포인트를 고정하여 더 많은 사례를 만들 수 있습니다. 발생하는 비대칭은 클럭 오프셋에 의해 정확히 무시됩니다. 실제로, 왕복 시간이 여전히 같은 한 메시지를 한 방향으로 BACKWARDS IN TIME으로 보낼 수 있으며 서버 / 클라이언트는 여전히 말할 수 없습니다!

따라서 지연 시간 비대칭 성을 측정하는 것은 불가능합니다. 지연 시간이 양수이고 왕복 시간을 합한 것 이외의 정보가없는 최악의 경우 클럭 동기화의 정확도는 왕복 시간으로 제한됩니다.

중간 인프라가 도움이 될 수 있습니까?

중간 인프라가 도움이 될 수 있는지 여부는 이론적 상황 모델에 크게 의존합니다.

비대칭이 일정하고 중간 인프라가 사용자와 서버 사이의 통신 경로에있는 라우터 인 경우 아니요. 각 라우터가 시계를 인접한 라우터와 동기화하더라도 라우터를 통한 통신을 통해 서버와 동기화 한 것과 같은 방식으로 오류가 발생합니다.

실제 환경에서는 아키텍처상의 이유로 지연이 다소 대칭적인 지연, 큐잉 지연 등으로 인한 비대칭을 줄이기 위해 반복되는 동기화 및 다른 종류의 비대칭을 줄이기위한 여러 통신 경로에 의존 할 수 있습니다.

모델의 가정을 중간에 어딘가에 놓으면 (물론 모델 공간을 탐색하는 것이 흥미 롭기 때문에) 결과는 중간에 있어야합니다.


이것은 귀하의 질문에 대한 답변이어야합니다 . 여기에서는 기본 인프라에서 도움을받을 수있는보다 구체적인 설정에 대해 묻고 있습니다.
Gilles 'SO- 악한 중지'

더 많은 콘텐츠를 추가했습니다.
Craig Gidney

이것은 나에게 잘못 된 것처럼 보이며 PC 보내기 및 받기 시간이 동일하지만 (두 가지 경우 상단 타임 라인 이벤트가 일치 함) 서버 시간이 다릅니다 (두 가지 경우 더 낮은 라인) & 따라서 NTP 클라이언트가 계산 한 공식은 두 경우가 다릅니다. 이것은 각각의 경우 에 에 대한 NTP 값을 라벨링함으로써 더 잘 이해 될 수있다 (여기서, t 2 , t 3 은 서버 시간에 기록되고 클라이언트에게 다시 전송되는 값이다). 내 대답에서와 같이 NTP 시간 프로토콜은 실제로 ( t 1tt1,t2,t3,t4t2,t3(t1t0)(t3t2)
vzn

@vzn t 메시지에 대한 서버 시간은 두 예제에서 동일합니다. 서버의 타임 라인이 왼쪽으로 이동하면 시작 클럭 드리프트가 다르다는 것을 나타냅니다. 초기 클록 드리프트와 지연 시간 비대칭의 효과는 동일하므로 두 방향을 반대로 조정하면 결과 동작이 동일 해집니다.
Craig Gidney

추가 연구에서, 클라이언트 / 서버는 그들의 시계가 적어도 왕복 시간 밖에서 동기화되지 않은 시점을 알 수있다. polycos 등에 대한 더 많은 정보는 아래에서 그들이 NTP 불확실성보다 더 큰 다른 "단방향 대기 시간" 을 측정하는 곳을 인용한다 (NTP 서버로의 왕복 시간보다 적을 것으로 보인다
vzn

2

동기식으로 알려진 시간 서버 네트워크, 및 클라이언트 시스템 P를 고려하십시오.θ={A,B,C}P .

하자 기계에서 비행의 편도 시간이 X 머신에 Y 가능성과 함께, 그 T X YT Y X엑스와이엑스와이엑스와이와이엑스 .

하자 기계 XY 사이의 비대칭의 척도Δ엑스와이=|엑스와이와이엑스|엑스와이 .

이제 두 동기 기계 간의 비대칭 성을 동기 기계가 일방 메시지를 동시에 보내도록 동의함으로써 측정 할 수 있다고 생각하십시오. 도착 시간의 차이는 기계 사이의 .Δ

Δ에이=|에이에이|

Δ=||

Δ에이=|에이에이|

측정 할 수 있습니다.

이제 회로 비행 시간을 고려하십시오.

, C A B 로 표시,PABPCAB

, C B A 로 표시.PBAPCBA

에이=에이+에이+

에이=+에이+에이

클라이언트 시스템 가 두 회로를 동시에 시작하고 도착 시간의 차이 x를 측정하는 것을 고려하십시오 .엑스

엑스=에이에이=Δ에이+Δ에이+Δ

Δ A B 는 모두 앞에서 언급 한 측정으로 알려져 있으므로 미지수를 왼쪽으로 이동합니다.엑스Δ에이

엑스Δ에이=Δ에이+Δ

마찬가지로 { C B C , C C B }의 경우 다음과 같이 표시 될 수 있습니다.{에이,에이}{,}

와이Δ=Δ+Δ

Δ에이=Δ+Δ에이

주의 깊게 살펴보면 입니다. 왼쪽은 측정에서 알려진 값을 포함하고 오른쪽은 3 개의 방정식에서 3 개의 미지수를 포함합니다.Δ엑스와이Δ와이엑스

동시에 해결

Δ에이=아르 자형+에스2

ΔBP=rs+t2

ΔCP=tr+s2

어디,

r=xΔAB

s=yΔBC

t=zΔCA


이것이 내 대답 과 다른 사람들 의 문제를 어떻게 우회 합니까?
Raphael

글쎄, 나는 하나가 아닌 3 개의 타이밍 서브를 사용하고 있습니다. 그리고 12 개의 메시지를 보내야합니다.-6은 시간 서버 간의 비대칭을 찾고 6은 클라이언트와 서버 간의 비대칭을 찾습니다. 비교가 1 대의 서버가 아닌 3 대의 서버 사이에 있기 때문에 1 차원 솔루션 공간이 아닙니다. 그리고 시간이 뒤로 갈 수 있다고 가정하지 않습니다.
빙고

완벽하게 동기화 된 3 개의 시간 서버에 크게 의존하며 동기화는 독자의 연습으로 남습니다. ^^
빙고

@Raphael 나는 당신의 의견을 이해한다고 생각합니다. 시간이 더 제한되어 있기 때문에 시간 이동이 작동하지 않습니다. 예. 시간 이동 wrt PAP 사이의 시간 뿐만 아니라 회로 P A C P , P A B P , P B A P , P C A P 사이에도 영향을 미칩니다 . 계산. 어쩌면 내가 아직도 틀렸어? 확실하지 않음 : PAPAPPACP,PABP,PBAP,PCAP
Bingo

0

엔드 포인트 만 제어하는 ​​경우 당신은 할 수 없습니다. Craig의 답변을 참조하십시오.

Bingo의 답변과 같이 더 많은 컴퓨터와 더 복잡한 컴퓨터 세트를 추가하더라도 동기화 된 컴퓨터는 다른 컴퓨터에 즉시 액세스 할 수있는 컴퓨터로 줄일 수 있습니다 (지연 = 0).TXY

공지 사항 당신이 경우에 것을 , 당신이 얻을 Δ P = Δ B P = Δ C P = 0 .TAB=TBC=TCA=0ΔAP=ΔBP=ΔCP=0

무슨 일이야? x=CABCBA=ΔPA+ΔAB+ΔBP

, Δ P A = T P AT A P 아님ΔPA=|TPATAP|ΔPA=TPATAP

그리고 두 번째를 사용하면 가정을 사용할 수 없습니다 (이를 사용 하지 않으면 최종 방정식이 서로 상쇄됩니다).ΔXYΔYX

그래서 어떻게 할 수 있습니까? 우편으로 정말 좋은 시계를 보내십시오. ;)

또는 이들 사이의 모든 노드를 제어 할 수있는 경우 각 패킷을 처리하는 시간을 확인하고 각 연속 쌍 사이의 지연을 계산할 수 있습니다. 동일한 물리적 매체를 양방향으로 사용하는 경우에는 대칭이어야합니다.

일반적인 상대성을 설명하고 동시성이 존재하지 않음을 기억해야합니다.


“일반적인 상대성 이론을 설명해야 할 수도 있습니다.”아닙니다. 관련된 모든 시계가 고정 프레임에있는 경우에만 작동하는 솔루션으로 완벽하게 작동합니다. 분산 시스템에는 상대성이 있지만 물리가 아닌 네트워크 대기 시간에서 비롯됩니다. 수학은 완전히 다릅니다.
질 'SO- 악마 그만'

-1

NTP는 실제로 "오프셋"을 계산하기 위해 4 개의 시간 측정 을 사용합니다. 그것들은 클라이언트에서 서버로, 클라이언트로 패킷의 왕복에서 "시간 포인트"이지만 시간 오프셋으로 간주 될 수있다. 클라이언트와 서버간에 시간 오프셋을 해제 할 수 있지만 로컬 경과 시간 오프셋을 정확하게 계산할 수 있다고 가정합니다.t0,t1,t2,t3

리턴 패킷을 수신 한 클라이언트는 4 개의 값을 모두 가지며 실제 오프셋을 계산합니다. 일단 클라이언트와 서버 사이의 상대 오프셋이 계산되면, "절대 시간"오프셋이 동기화 될 수있다. 즉, 클라이언트는 로컬 시간 오프셋, 즉 "델타"로 측정 된 서버 정확한 오프셋을 정확하게 추정 할 수있다.

t0
t1
t2
t3

θ=(t1t0)+(t2t3)2

t1t0t3t2

네트워크에서 지연 시간은 주로 대기 시간과 대역폭의 두 가지 요인으로 인해 발생합니다.

  • 대기 시간은 새 [소형] 패킷을 전송할 때 라우터에서 잠시 지연되는 것으로 각 라우터마다 대략 다른 상수입니다. traceroute 유틸리티를 사용하여 측정 할 수 있습니다 .
  • 대역폭은 대량의 데이터가 전송 될 수있는 속도입니다 (예 : "업로드 및 다운로드 시간"). 또한 원격 "대역폭 측정"웹 사이트를 통해 측정 할 수 있습니다.

t1t0t3t2

NTP에 사용되는 오프셋 계산 정확도를 향상시키고 임의의 네트워크 지연 시간을 어느 정도 수정할 수있는 기본 알고리즘은 프로세스를 여러 번 반복하고 "쐐기 산포도의 정점"을 사용하는 것입니다. 이것은 David Mills에 의해 NTP 에서이 PPT 의 슬라이드 10에있는 "시계 필터 알고리즘"에서 볼 수 있습니다 . Mills의 시계 필터 알고리즘 도 참조하십시오 . (일반 코드가 여러 서버를 허용하도록 작성되었지만 단일 서버와 클라이언트간에 계속 사용할 수 있습니다.) 이것은 NTP 아키텍처 및 알고리즘에 설명 된 "완화 알고리즘"의 일부입니다 .


1
지연 시간이 대칭이 아닌 경우에 대한 질문입니다. 여러 측정을 수행해도 비대칭의 상수 성분에 대해서는 아무 것도 알려주지 않습니다.
Gilles 'SO- 악마 그만

질문에는 실제로 "대기 시간"이라는 단어가 포함되어 있지 않습니다. 실제 NTP 공식을 사용하는 단어 대신 수학 형식으로 실제로 생각한 사례를 스케치하려면 분명히 도움이 될 것입니다. 공식 및 알고리즘은 다양한 "대기 시간"및 "비대칭"사례를 실제로 측정 / 처리 / 커버 할 수 있습니다.
vzn

C1C2

12

t1,t2

-3

우리가 제 시간에 패킷을 다시 보낼 수 있다면

여기에 이미지 설명을 입력하십시오

B=T에프+에프21+22

가정 :

(+2)=에프(+1)

에프(+2)=(+1)


1
이 영리한 솔루션은 "일반적인 인터넷 인프라"를 가정하여 배제됩니다.
Gilles 'SO- 악한 중지'

1
@ 길 알아 : D
Pratik Deoghare

-4

여기에 나에게 절대적으로 설득력이있어 바보 같은 방식으로 절대 잘못 될 수있는 아이디어가 있습니다.

1212δ=121221

1122아르 자형2

2아르 자형1=12+δ1아르 자형2=21δ=12+21

δ

1] 가정은 자연스럽고 필요하다고 생각합니다. 우리의 동기화 시도 동안 각 수량이 너무 많이 변하지 않기를 바랍니다 .


(d12+δ)+(d21δ)(d12+d21)=0

@Gilles 너무 나쁘다. 우리는 아마 모든 사람에게 잘못의 한 예를 남겨 두어야합니까?
Raphael

1
내가 쓴 잘못된 답을 복원 할 수 있습니다. Gilles의 의견 때문에 유용 할 수 있습니다.
Ran G.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.