Sincronizzazione dell'orologio in una rete con ritardi asimmetrici


38

Supponiamo che un computer abbia un orologio preciso che non è inizializzato. Cioè, l'ora sull'orologio del computer è l'ora reale più un offset costante. Il computer dispone di una connessione di rete e vogliamo utilizzare tale connessione per determinare l'offset costante .B

Il metodo semplice è che il computer invia una query a un server orario, rilevando l'ora locale . Il server temporale riceve la query alla volta e invia una risposta contenente al client, che la riceve alla volta B + C_2 . Quindi B + C_1 \ le T \ le B + C_2 , ovvero T - C_2 \ le B \ le T - C_1 . T T B + C 2 B + C 1T B + C 2 T - C 2B T - C 1B+C1TTB+C2B+C1TB+C2TC2BTC1

Se il tempo di trasmissione della rete e il tempo di elaborazione del server sono simmetrici, allora B=TC1+C22 . Per quanto ne so, NTP , il protocollo di sincronizzazione dell'ora utilizzato in natura, opera su questo presupposto.

Come può essere migliorata la precisione se i ritardi non sono simmetrici? C'è un modo per misurare questa asimmetria in una tipica infrastruttura Internet?


2
C'è un brevetto correlato, ma chi vuole leggere quelli ...
Raffaello


Primi pensieri: è probabilmente impossibile con 2 entità. Usando le coppie di n entità è probabilmente possibile una migliore sincronizzazione. Quindi gli orologi possono essere utilizzati per misurare i tempi di un viaggio. n(n2)n
venerdì

puoi chiarire l'applicazione / il contesto o questa è principalmente una domanda teorica?
vzn

Risposte:


10

Incapacità di misurare l'asimmetria

No, non puoi misurare l'asimmetria. Considera questi due diagrammi di comunicazione, il primo con un offset di clock negativo e ritardi uguali e il secondo senza offset di clock e ritardi completamente asimmetrici (ma lo stesso tempo di andata e ritorno).

diagramma di comunicazione

La cosa importante da notare è che, dal punto di vista sia del PC che del server, le due interazioni sono esattamente identiche. Ricevono messaggi allo stesso tempo. Mandano messaggi allo stesso tempo.

È possibile creare più casi "afferrando" la linea temporale del PC e "facendola scorrere", mantenendo i punti di invio / ricezione del messaggio fissi rispetto alle rispettive linee temporali. Le asimmetrie che causi sono esattamente negate dall'offset dell'orologio. In effetti, puoi anche fare in modo che i messaggi vadano INDIETRO IN TEMPO in un modo (purché il tempo di andata e ritorno sia sempre lo stesso) e il server / client STILL non può dirlo!

Pertanto è impossibile misurare le asimmetrie di latenza. Nel peggiore dei casi, dove non si hanno informazioni diverse da quelle latenze a senso unico che si sommano al tempo di andata e ritorno, l'accuratezza della sincronizzazione dell'orologio è limitata al tempo di andata e ritorno.

Le infrastrutture intermedie possono aiutare?

Il fatto che l'infrastruttura intermedia possa aiutare o meno dipenderà fortemente dal modello teorico della situazione.

Se l'asimmetria è costante e l'infrastruttura intermedia sono i router sul percorso di comunicazione tra l'utente e il server, allora no. Anche se ogni router sincronizzasse il proprio clock con il router adiacente, gli errori si sarebbero combinati allo stesso modo come se si fosse sincronizzato con il server tramite la comunicazione attraverso i router.

Nel mondo reale puoi fare affidamento sul fatto che i ritardi sono in qualche modo simmetrici per motivi architettonici, ripetute sincronizzazioni per ridurre l'asimmetria dovuta a ritardi di accodamento (ecc.) E percorsi di comunicazione multipli per ridurre altri tipi di asimmetria.

Se metti le ipotesi del tuo modello nel mezzo (perché è interessante esplorare lo spazio del modello, ovviamente) mi aspetto che il risultato dovrebbe essere anche nel mezzo.


Questa dovrebbe essere una risposta alla tua domanda . Qui sto chiedendo un'impostazione più concreta, dove potremmo ottenere aiuto dall'infrastruttura sottostante.
Gilles 'SO- smetti di essere malvagio'

Ho aggiunto più contenuti per te.
Craig Gidney,

questo mi sembra sbagliato e si può notare osservando che mentre i tempi di invio e ricezione del PC sono gli stessi (gli eventi della sequenza temporale superiore coincidono nei due casi), i tempi del server sono diversi (riga inferiore nei due casi) & pertanto la formula calcolata dal client NTP è diversa nei due casi. questo può essere compreso meglio etichettando i valori NTP per in ogni caso (dove sono valori registrati nel tempo del server e rispediti al client). come nella mia risposta, il protocollo orario NTP può effettivamente misurare e regolare pert 2 , t 3 ( t 1 - t 0 ) ( t 3 - t 2 )t1,t2,t3,t4t2,t3(t1t0)(t3t2)
vzn

@vzn I tempi del server rispetto ai messaggi t sono gli stessi in entrambi gli esempi. La sequenza temporale del server che si sposta verso sinistra indica che la deriva dell'orologio iniziale è diversa. Gli effetti della deriva dell'orologio iniziale e dell'asimmetria della latenza sembrano essere equivalenti, quindi regolandoli entrambi in direzioni opposte consente al comportamento risultante di essere equivalente.
Craig Gidney,

ulteriori studi, il client / server può dire quando i loro orologi sono molto fuori sincrono almeno al di fuori del tempo di andata e ritorno. maggiori informazioni in polycos et al ref cito di seguito in cui misurano diverse "latenze unidirezionali" maggiori dell'incertezza NTP (che sembra essere inferiore al tempo di andata e ritorno ai server NTP - ovvero ~ 10ms)
vzn

2

Si consideri una rete di server di tempo note per essere sincrona, , e una macchina client .Pθ={A,B,C}P

Sia il tempo di sola andata per il volo dalla macchina alla macchina , con la possibilità che . X Y T X YT Y XTXYXYTXYTYX

Letla misura della asimmetria tra macchina e .X YΔXY=|TXYTYX|XY

Ora, considera che l'asimmetria tra due macchine sincrone può essere misurata facendo in modo che le macchine sincrone acconsentano a scambiarsi un messaggio a senso unico contemporaneamente. La differenza nei tempi di arrivo è tra quelle macchine, ovvero:Δ

ΔAB=|TUNB-TBUN|

ΔBC=|TBC-TCB|

ΔCUN=|TCUN-TUNC|

può essere misurato.

Ora considera il tempo di volo dei circuiti:

C A BPUNBP , indicato con ,CUNB

C B APBUNP , indicato con .CBUN

CUNB=TPUN+TUNB+TBP

CBUN=TPB+TBUN+TUNP

Considera la macchina client per avviare entrambi questi circuiti contemporaneamente e misura la differenza nei tempi di arrivo, :xPX

x=CABCBA=ΔPA+ΔAB+ΔBP

Sia che sono noti con misure precedentemente menzionate, quindi spostando le incognite sul lato sinistro:Δ A BxΔAB

xΔAB=ΔPA+ΔBP

Allo stesso modo, per e si può dimostrare che:{ C B C , C C B }{CAC,CCA}{CBC,CCB}

yΔBC=ΔPB+ΔCP

zΔCA=ΔPC+ΔAP

Controllo con attenzione, si nota che . I lati di sinistra contengono valori noti dalle misurazioni, i lati di destra contengono 3 incognite in 3 equazioni.ΔXYΔYX

Risolvendo contemporaneamente,

ΔAP=r+st2

ΔBP=rs+t2

ΔCP=tr+s2

dove,

r=xΔAB

s=yΔBC

t=zΔCA


In che modo questo elude il problema della mia risposta e degli altri?
Raffaello

Bene, per uno sto usando 3 servizi di cronometraggio, non uno. E richiede qualcosa come 12 messaggi da inviare - 6 per trovare l'asimmetria tra i time server e 6 per trovare l'asimmetria tra client e server. Non è uno spazio di soluzione monodimensionale perché il compison è compreso tra 3 server e non uno. E non si presume che il tempo possa andare indietro.
Bingo,

Fa molto affidamento su 3 time server perfettamente sincronizzati, la cui sincronizzazione viene lasciata come esercizio per il lettore. ^^
Bingo,

@Raphael Penso di aver capito il tuo commento adesso. Il time shifting non funziona perché è più limitato. per esempio. Time shifting WRT P non riguarda soltanto il tempo tra A e P , ma anche le circutsAPAP , le cui differenze sono misurate e fattorizzate nel calcolo. Forse mi sbaglio ancora? Non sono sicuro: PPACP,PABP,PBAP,PCAP
Bingo,

0

Se controlli solo gli endpoint. Non puoi. Vedi la risposta di Craig.

Anche se aggiungi più macchine e un set di computer più complesso, come nella risposta di Bingo, puoi ridurre a solo macchine che fanno in modo che quelle sincronizzate abbiano accesso istantaneo alle altre (ritardo = 0).TXY

Nota che se fai , otterrai Δ A P = Δ BTAB=TBC=TCA=0 .ΔAP=ΔBP=ΔCP=0

Quindi cosa c'è che non va? x=CABCBA=ΔPA+ΔAB+ΔBP

, non Δ P A = TΔPA=|TPATAP|ΔPA=TPATAP

E se usi il secondo, non puoi usare l'assunzione (e se non lo usi, le tue equazioni finali si annullano a vicenda).ΔXYΔYX

Che cosa si può fare? Invia un orologio davvero buono attraverso la posta. ;)

Oppure, se si ha il controllo su tutti i nodi tra loro, è possibile controllare il tempo di elaborazione di ciascun pacchetto e calcolare il ritardo tra ciascuna coppia consecutiva, che dovrebbe essere simmetrico, se utilizzano lo stesso supporto fisico in entrambi i modi.

Potrebbe essere necessario tenere conto della relatività generale e ricordare che la simultaneità non esiste.


"Potrebbe essere necessario rendere conto della relatività generale" No, non lo so. Sto perfettamente bene con una soluzione che funziona solo se tutti gli orologi coinvolti sono in una cornice fissa. C'è relatività in un sistema distribuito, ma deriva dalla latenza della rete, non dalla fisica. La sua matematica è completamente diversa.
Gilles 'SO- smetti di essere malvagio' il

-1

NTP attualmente utilizza 4 misurazioni del tempo per calcolare lo "scostamento". sono i "punti temporali" nel round trip del pacchetto da client a server di nuovo al client, ma possono essere considerati offset del tempo. si presume che l'offset di tempo possa essere spento tra client e server ma che entrambi possano contare accuratamente gli offset di tempo locali trascorsi.t0,t1,t2,t3

il client dopo aver ricevuto il pacchetto di ritorno ha tutti e 4 i valori e calcola l'offset effettivo. una volta calcolato l'offset relativo tra client e server, l'offset del "tempo assoluto" può essere sincronizzato, ovvero il client può stimare con precisione l'offset esatto del server misurato con il suo offset dell'ora locale, ovvero il "delta".

t0 = tempo [offset] inviato al client
= tempo [offset] recd sul server t 2 = tempo [offset] inviato al servert1
t2
= tempo [offset] recd sul clientt3

la formula effettiva è θ=(t1t0)+(t2t3)2

nota che questa formula può gestire il caso in cui il tempo dal client al server non è uguale a quello dal server al client t 3 -t1t0 (più breve o più lungo).t3t2

sulle reti, il ritardo è dovuto a due fattori principali, principalmente latenza e larghezza di banda.

  • la latenza è il breve ritardo nei router nell'invio di nuovi [piccoli] pacchetti ed è approssimativamente una costante diversa su ciascun router. può essere misurato con l' utilità traceroute .
  • la larghezza di banda è la velocità con cui è possibile inviare grandi quantità di dati, ad esempio "tempo di upload vs download" e può anche essere misurata da siti Web remoti di "misurazione della larghezza di banda".

in molte moderne connessioni Internet domestiche / aziendali la velocità di upload è molto più bassa delle velocità di download e questo probabilmente influenzerebbe la vs t 3 - t 2t1t0t3t2 differenza mentre la latenza potrebbe essere piccola o in qualche modo simile tra client-server e server-to-client.

un algoritmo di base per migliorare la precisione del calcolo dell'offset utilizzato in NTP (e può correggere per un certo grado di latenza di rete casuale) è ripetere il processo più volte e utilizzare l '"apice del diagramma a cuneo". questo può essere visto sull'algoritmo "filtro filtro" sulla diapositiva 10 di questo PPT su NTP di David Mills. vedi anche algoritmo filtro orologio di Mills. (nota che può ancora essere impiegato tra un singolo server e client sebbene il codice generale sia scritto per consentire più server.) fa parte degli "algoritmi di mitigazione" descritti nell'architettura e negli algoritmi NTP .


1
La domanda riguarda in particolare il caso in cui la latenza non è simmetrica. Prendere più misure non ti dirà nulla sulla componente costante nell'asimmetria.
Gilles 'SO- smetti di essere malvagio'

la domanda in realtà non contiene la parola "latenza". se vuoi delineare il caso che in realtà hai in mente in forma matematica invece di parole come le vere formule NTP, sicuramente aiuterebbe. le formule e gli algoritmi possono infatti misurare / gestire / coprire vari casi di "latenza" e "asimmetria".
vzn

C1C2

C1C2

t1,t2

-3

Se solo potessimo inviare i pacchetti indietro nel tempo

inserisci qui la descrizione dell'immagine

B=Tf+TB-Tf2-C1+C22

ipotesi:

(B+C2)-TB=Tf-(B+C1)

Tf-(B+C2)=(B+C1)-TB


1
This clever solution is ruled out by the assumption of a “typical Internet infrastructure”.
Gilles 'SO- stop being evil'

1
@Gilles Lo so. : D
Pratik Deoghare

-4

Ecco un'idea che mi sembra assolutamente convincente e potrebbe quindi essere assolutamente sbagliata in modo stupido.

Considera il seguente scenario. Abbiamo due nodiN1 e N2 con gli orologi C1 e C2, rispettivamente. Per semplicità, supponiamo che gli orologi funzionino alla stessa velocità; denotiamo la loro differenza conδ=C1-C2che è costante per i nostri scopi. Supponiamo inoltre che i ritardi di trasmissioned12 e d21 sono costanti¹.

Avere N1 invia un messaggio con data e ora T1m a N2 e lascia T2r l'ora corrente C2dopo averlo ricevuto (fare lo stesso per l'altra direzione). Inoltre, misurare il tempo di andata e ritorno (su entrambi i nodi)Dinviando un messaggio avanti e indietro. Ora imposta questo sistema di equazioni:

T2r-T1m=d12+δT1r-T2m=d21-δD=d12+d21

Poiché questo sistema è composto da tre equazioni, ha tre incognite e sappiamo che esiste una soluzione, può essere risolto. Naturalmente i nodi devono scambiare le loro misurazioni in modo che entrambi possano calcolare lo stesso valore perδ (se necessario).

1] Penso che le ipotesi siano naturali e necessarie. Possono essere giustificati con la speranza che le rispettive quantità non cambino troppo per la durata del nostro tentativo di sincronizzazione.


(d12+δ)+(d21δ)(d12+d21)=0. There are three equations and three unknowns, but the family of solutions is 1-dimensional. It's the same problem we had with Ran's now-deleted answer and briefly discussed in chat: time is relative; we can't distinguish between delays in transmission and skewed clocks.
Gilles 'SO- stop being evil'

@Gilles Too bad. We should probably leave one instance of the fallacy for all to see?
Raffaello

1
I can restore the wrong answer I wrote. It might be useful due to the comments made by Gilles.
Ran G.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.