Załóżmy, że komputer ma dokładny zegar, który nie został zainicjowany. Oznacza to, że czas na zegarze komputera to czas rzeczywisty plus pewne stałe przesunięcie. Komputer ma połączenie z siecią i chcemy korzystać z tego połączenia, aby określić stałą przesunięcia .
Prosta metoda polega na tym, że komputer wysyła zapytanie do serwera czasu, zwracając uwagę na czas lokalny . Serwer czasu odbiera zapytanie w czasie i wysyła odpowiedź zawierającą powrotem do klienta, który odbiera je w czasie . Następnie , a więc .
Jeśli czas transmisji w sieci i czas przetwarzania serwera są symetryczne, to . O ile mi wiadomo,NTP, protokół synchronizacji czasu używany w środowisku naturalnym, działa na tym założeniu.
Jak można zwiększyć precyzję, jeśli opóźnienia nie są symetryczne? Czy istnieje sposób zmierzenia tej asymetrii w typowej infrastrukturze internetowej?
źródło
Odpowiedzi:
Niemożność zmierzenia asymetrii
Nie, nie można zmierzyć asymetrii. Rozważ te dwa schematy komunikacyjne, pierwszy z ujemnym przesunięciem zegara i równymi opóźnieniami, a drugi bez przesunięcia zegara i całkowicie asymetrycznymi opóźnieniami (ale z tym samym czasem podróży w obie strony).
Należy zauważyć, że z punktu widzenia komputera i serwera obie interakcje są dokładnie identyczne. Otrzymują wiadomości w tym samym czasie. Wysyłają wiadomości w tym samym czasie.
Możesz utworzyć więcej przypadków, „chwytając” oś czasu komputera i „przesuwając” ją, utrzymując punkty wysyłania / odbierania wiadomości w stosunku do ich odpowiednich osi czasu. Wywołane asymetrie są dokładnie zanegowane przez przesunięcie zegara. W rzeczywistości możesz nawet sprawić, że wiadomości będą W TYM CZASIE POWRÓT w jedną stronę (pod warunkiem, że czas podróży w obie strony jest taki sam), a serwer / klient STILL nie może powiedzieć!
Dlatego nie można zmierzyć asymetrii opóźnienia. W najgorszym przypadku, gdy nie masz żadnych informacji poza tym, że opóźnienia w jedną stronę są dodatnie i sumują się do czasu podróży w obie strony, dokładność synchronizacji zegara jest ograniczona do czasu podróży w obie strony.
Czy infrastruktura pośrednia może pomóc?
To, czy pośrednia infrastruktura może pomóc, będzie w dużej mierze zależeć od twojego teoretycznego modelu sytuacji.
Jeśli asymetria jest stała, a infrastruktura pośrednia to routery na ścieżce komunikacyjnej między tobą a serwerem, to nie. Nawet jeśli każdy router zsynchronizuje swój zegar z sąsiednim routerem, błędy spotęgują się w taki sam sposób, jakbyś zsynchronizował się z serwerem poprzez komunikację między routerami.
W prawdziwym świecie można polegać na tym, że opóźnienia są nieco symetryczne ze względów architektonicznych, powtarzane synchronizacje w celu zmniejszenia asymetrii z powodu opóźnień w kolejce (itp.) Oraz wiele ścieżek komunikacyjnych w celu zmniejszenia innych rodzajów asymetrii.
Jeśli umieścisz założenia modelu gdzieś pośrodku (ponieważ interesujące jest zbadanie przestrzeni modelu, oczywiście), spodziewam się, że wynik powinien również znajdować się gdzieś pośrodku.
źródło
Rozważmy sieć serwerów czasu wiadomo, że są synchroniczne, i komputer kliencki .Pθ={A,B,C} P
Niech będzie czasem przelotu z maszyny do maszyny w jedną stronę , z możliwością, że . X Y T X Y ≠ T Y XTXY X Y TXY≠TYX
Niechjako środek asymetrii pomiędzy maszyny i .ΔXY=|TXY−TYX| X Y
Rozważmy teraz, że asymetrię między dwoma maszynami synchronicznymi można zmierzyć, gdy maszyny synchroniczne zgodzą się na przesłanie sobie jednokierunkowego komunikatu w tym samym czasie. Różnica w czasie przyjazdu wynosi między tymi maszynami, tj .:Δ
można zmierzyć.
Teraz rozważ czas ucieczki obwodów:
Rozważ komputer kliencki aby zainicjował oba te obwody jednocześnie i mierzy różnicę w czasach przybycia, :P x
Zarówno jak i są znane z wcześniej wspomnianych pomiarów, więc przenoszenie niewiadomych na lewą stronę:x ΔAB
Podobnie w przypadku i można wykazać, że:{CAC,CCA} {CBC,CCB}
Sprawdzając uważnie, zauważamy, że . Lewa strona zawiera wartości znane z pomiarów, prawa strona zawiera 3 niewiadome w 3 równaniach.ΔXY≡ΔYX
Jednoczesne rozwiązywanie
gdzie,
źródło
Jeśli kontrolujesz tylko punkty końcowe. Nie możesz Zobacz odpowiedź Craiga.
Nawet jeśli dodasz więcej maszyn i bardziej złożony zestaw komputerów, jak w odpowiedzi Bingo, możesz zredukować do samych maszyn, dzięki którym te zsynchronizowane będą miały natychmiastowy dostęp do innych (opóźnienie = 0).TXY
Zauważ, że jeśli zrobisz , otrzymasz .TAB=TBC=TCA=0 ΔAP=ΔBP=ΔCP=0
Więc co jest nie tak?x=CAB−CBA=ΔPA+ΔAB+ΔBP
Δ P A = T P A - T A PΔPA=|TPA−TAP| , nieΔPA=TPA−TAP
A jeśli użyjesz drugiego, nie możesz użyć założenia (a jeśli nie użyjesz tego, twoje równania końcowe się anulują).ΔXY≡ΔYX
Więc co możesz zrobić? Wyślij naprawdę dobry zegar pocztą. ;)
Lub, jeśli masz kontrolę nad wszystkimi węzłami między nimi, możesz sprawdzić czas przetworzenia każdego pakietu i obliczyć opóźnienie między kolejnymi parami, które powinny być symetryczne, jeśli używają tego samego medium fizycznego w obie strony.
Może być konieczne uwzględnienie ogólnej teorii względności i pamiętaj, że równoczesność nie istnieje.
źródło
NTP faktycznie używa 4 pomiarów czasu do obliczenia „przesunięcia”. są one „punktami czasowymi” w podróży powrotnej pakietu między klientem a serwerem z powrotem do klienta, ale można je uznać za przesunięcia czasowe. przyjęto, że przesunięcie czasu może być wyłączone między klientem a serwerem, ale oba mogą dokładnie zliczyć lokalne przesunięcia czasu, które upłynęły.t0,t1,t2,t3
klient po otrzymaniu pakietu zwrotnego ma wszystkie 4 wartości i oblicza rzeczywiste przesunięcie. po obliczeniu względnego przesunięcia między klientem a serwerem przesunięcie „czasu bezwzględnego” można zsynchronizować, tj. klient może dokładnie oszacować dokładne przesunięcie serwerów mierzone względem lokalnego przesunięcia czasu, tj. „delta”.
faktyczna formuła toθ=(t1−t0)+(t2−t3)2
zwróć uwagę, że ta formuła może obsłużyć przypadek, w którym czas od klienta do serwera nie jest taki sam jak od serwera do klienta (krótszy lub dłuższy).t1−t0 t3−t2
w sieciach opóźnienie wynika z dwóch głównych czynników, głównie z opóźnienia i przepustowości.
w wielu nowoczesnych domowych / firmowych połączeniach internetowych szybkość wysyłania jest znacznie mniejsza niż szybkość pobierania i prawdopodobnie wpłynęłoby to na różnicę vs podczas gdy opóźnienia mogą być małe lub nieco podobne między klientem na serwerze a serwerem na serwerze. klient.t1−t0 t3−t2
Podstawowym algorytmem poprawiającym dokładność obliczania przesunięcia stosowanym w NTP (i może korygować pewien stopień losowego opóźnienia sieci) jest wielokrotne powtarzanie procesu i stosowanie „wierzchołka scattergramu klina”. widać to na „algorytmie filtra zegara” na slajdzie 10 tego PPT na NTP autorstwa Davida Millsa. patrz także algorytm filtrowania zegara według Millsa. (zwróć uwagę, że nadal można go stosować między pojedynczym serwerem a klientem, chociaż ogólny kod został napisany, aby zezwolić na wiele serwerów.) Jest to część „algorytmów łagodzących” opisanych w architekturze i algorytmach NTP .
źródło
Gdybyśmy tylko mogli wysłać pakiety z powrotem w czasie
Założenia:
źródło
Oto pomysł, który brzmi dla mnie absolutnie przekonująco i dlatego może być całkowicie głupi w niemądry sposób.
Rozważ następujący scenariusz. Mamy dwa węzły i z zegarami odpowiednio i . Dla uproszczenia załóżmy, że zegary biegną z tą samą prędkością; oznaczamy ich różnicę przez która jest stała dla naszych celów. Załóżmy ponadto, że opóźnienia transmisji i są stałe¹.N1 N2 C1 C2 δ=C1−C2 d1→2 d2→1
Niech wyśle wiadomość oznaczoną znacznikiem czasu do i niech bieżący czas na po otrzymaniu (zrób to samo dla drugiego kierunku). Ponadto zmierz czas podróży w obie strony (w dowolnym węźle) , wysyłając komunikat tam iz powrotem. Teraz skonfiguruj ten układ równań:N1 Tm1 N2 Tr2 C2 D
Ponieważ ten system składa się z trzech równań, ma trzy niewiadome i wiemy, że istnieje rozwiązanie, można je rozwiązać. Oczywiście węzły muszą wymieniać swoje pomiary, aby oba mogły obliczyć tę samą wartość dla (w razie potrzeby).δ
1] Myślę, że założenia są naturalne i konieczne. Można je usprawiedliwić nadzieją, że odpowiednie wielkości nie zmieniają się zbytnio w czasie naszej próby synchronizacji.
źródło