Suponha que um computador tenha um relógio preciso que não seja inicializado. Ou seja, a hora no relógio do computador é em tempo real mais um deslocamento constante. O computador tem uma conexão de rede e nós queremos usar essa conexão para determinar o deslocamento constante .
O método simples é que o computador envie uma consulta para um servidor de horário, anotando a hora local . O servidor de horário recebe a consulta no horário e envia uma resposta contendo volta ao cliente, que a recebe no horário . Então , ou seja, .
Se o tempo de transmissão da rede e o tempo de processamento do servidor forem simétricos, então . Até onde eu sei, oNTP, o protocolo de sincronização de tempo usado em estado selvagem, opera com essa suposição.
Como a precisão pode ser melhorada se os atrasos não são simétricos? Existe uma maneira de medir essa assimetria em uma infraestrutura típica da Internet?
fonte
Respostas:
Incapacidade de medir assimetria
Não, você não pode medir a assimetria. Considere estes dois diagramas de comunicação, o primeiro com um deslocamento negativo do relógio e atrasos iguais e o segundo sem deslocamento do relógio e atrasos totalmente assimétricos (mas o mesmo tempo de ida e volta).
O importante a ser observado é que, da perspectiva do PC e do servidor, as duas interações são exatamente idênticas. Eles recebem mensagens ao mesmo tempo. Eles enviam mensagens ao mesmo tempo.
Você pode criar mais casos 'agarrando' a linha do tempo do PC e deslizando-a, mantendo a mensagem de enviar / receber pontos fixos em relação às respectivas linhas do tempo. As assimetrias causadas são exatamente negadas pelo deslocamento do relógio. De fato, você pode até fazer as mensagens retrocederem no tempo de uma maneira (desde que o tempo de ida e volta seja o mesmo) e o servidor / cliente AINDA não saiba!
Portanto, é impossível medir as assimetrias de latência. Na pior das hipóteses, onde você não tem informações além das latências unidirecionais positivas e somadas ao tempo de ida e volta, a precisão da sincronização do relógio é limitada ao tempo de ida e volta.
A infraestrutura intermediária pode ajudar?
Se a infraestrutura intermediária pode ou não ajudar, dependerá fortemente do seu modelo teórico da situação.
Se a assimetria for constante e a infraestrutura intermediária for os roteadores no caminho de comunicação entre você e o servidor, então não. Mesmo que cada roteador sincronizasse seu relógio com o roteador adjacente, os erros seriam compostos da mesma maneira como se você tivesse sincronizado com o servidor por meio da comunicação entre os roteadores.
No mundo real, você pode contar com atrasos que são um tanto simétricos por motivos arquitetônicos, sincronizações repetidas para reduzir a assimetria devido a atrasos de enfileiramento (etc) e vários caminhos de comunicação para reduzir outros tipos de assimetria.
Se você colocar as suposições do seu modelo em algum lugar (porque é interessante explorar o espaço do modelo, é claro), espero que o resultado também deva estar em algum lugar no meio.
fonte
Considere-se uma rede de servidores de tempo conhecidos para ser síncrono, , e uma máquina do cliente .Pθ={A,B,C} P
Seja o horário de vôo unidirecional da máquina para a máquina , com a possibilidade de . X Y T X Y ≠ T Y XTXY X Y TXY≠TYX
Letser a medida da assimetria entre a máquina e .X YΔXY=|TXY−TYX| X Y
Agora, considere que a assimetria entre duas máquinas síncronas pode ser medida fazendo com que as máquinas síncronas concordem em enviar uma mensagem unidirecional uma para a outra ao mesmo tempo. A diferença nos horários de chegada é entre essas máquinas, ou seja:Δ
pode ser medido.
Agora considere o tempo de voo dos circuitos:
C A BP→A→B→P , denotado por ,CAB
Considere a máquina cliente para iniciar esses dois circuitos simultaneamente e mede a diferença nos horários de chegada, :P x
Ambos e são conhecidos pelas medições mencionadas anteriormente, movendo as incógnitas para o lado esquerdo:x ΔAB
Da mesma forma, para e , pode ser mostrado que:{CAC,CCA} {CBC,CCB}
Inspecionando cuidadosamente, observamos que . Os lados esquerdo contêm valores conhecidos das medições, o lado direito contém 3 incógnitas em 3 equações.ΔXY≡ΔYX
Resolvendo simultaneamente,
Onde,
fonte
Se você controlar apenas os pontos finais. Você não pode. Veja a resposta de Craig.
Mesmo se você adicionar mais máquinas e um conjunto mais complexo de computadores, como na resposta do Bingo, você pode reduzir a apenas máquinas que fazem com que as sincronizadas tenham acesso instantâneo às outras (atraso = 0).TXY
Observe que se você faz , obtém .TAB=TBC=TCA=0 ΔAP=ΔBP=ΔCP=0
Então, oque há de errado?x=CAB−CBA=ΔPA+ΔAB+ΔBP
E se você usar o segundo, não poderá usar a suposição (e se você não usar isso, suas equações finais se cancelarão).ΔXY≡ΔYX
Então o que você pode fazer? Envie um relógio realmente bom pelo correio. ;)
Ou, se você tiver controle sobre todos os nós entre eles, poderá verificar o tempo para processar cada pacote e calcular o atraso entre cada par consecutivo, que deve ser simétrico, se usarem o mesmo meio físico nos dois sentidos.
Você pode precisar dar conta da relatividade geral e lembrar que a simultaneidade não existe.
fonte
Na verdade, o NTP usa 4 medições de tempo para calcular o "deslocamento". eles são os "pontos no tempo" na ida e volta do pacote do cliente para o servidor e para o cliente, mas podem ser considerados como compensações de tempo. supõe-se que o deslocamento de tempo possa ser desativado entre cliente e servidor, mas que ambos possam contar com precisão os deslocamentos de tempo decorrido local.t0,t1,t2,t3
o cliente após receber o pacote de retorno possui todos os 4 valores e calcula o deslocamento real. uma vez que o deslocamento relativo é calculado entre o cliente e o servidor, o deslocamento de "tempo absoluto" pode ser sincronizado, ou seja, o cliente pode estimar com precisão o deslocamento exato dos servidores medido pelo deslocamento de tempo local, ou seja, o "delta".
a fórmula real éθ=(t1−t0)+(t2−t3)2
observe que esta fórmula pode lidar com o caso em que o tempo do cliente para o servidor não é o mesmo que do servidor para o cliente (mais curto ou mais longo).t1−t0 t3−t2
nas redes, o tempo de atraso é devido a dois fatores principais, principalmente a latência e a largura de banda.
em muitas conexões modernas de Internet doméstica / comercial, a taxa de upload é muito menor que a taxa de download e isso provavelmente afetaria a vs enquanto a latência pode ser pequena ou um pouco semelhante entre cliente para servidor e servidor para servidor. cliente.t 3 - t 2t1−t0 t3−t2
um algoritmo básico para melhorar a precisão do cálculo do deslocamento usado no NTP (e pode corrigir algum grau de latência aleatória da rede) é repetir o processo várias vezes e usar o "ápice do diagrama de dispersão de cunha". isso pode ser visto no "algoritmo do filtro de relógio" no slide 10 deste PPT no NTP por David Mills. veja também algoritmo de filtro de relógio de Mills. (observe que ainda pode ser empregado entre um único servidor e cliente, embora o código geral seja escrito para permitir vários servidores.) isso faz parte dos "algoritmos de mitigação" descritos na arquitetura e algoritmos do NTP .
fonte
Se pudéssemos enviar pacotes de volta no tempo
Suposições:
fonte
Aqui está uma ideia que me parece absolutamente convincente e, portanto, pode estar absolutamente errada de uma maneira idiota.
Considere o seguinte cenário. Temos dois nós e com relógios e , respectivamente. Por uma questão de simplicidade, vamos supor que os relógios funcionem com a mesma velocidade; denotamos sua diferença por que é constante para nossos propósitos. Suponhamos, além disso, que os atrasos de transmissão e sejam constantes¹.N1 N2 C1 C2 δ=C1−C2 d1→2 d2→1
Faça com que envie uma mensagem com carimbo de data e hora com para e deixe a hora atual em ao recebê-la (faça o mesmo na outra direção). Além disso, meça o tempo de ida e volta (em qualquer um dos nós) enviando uma mensagem para frente e para trás. Agora configure este sistema de equação:T m 1 N 2 T r 2 C 2 DN1 Tm1 N2 Tr2 C2 D
Como esse sistema consiste em três equações, possui três incógnitas e sabemos que existe uma solução, ela pode ser resolvida. Obviamente, os nós precisam trocar suas medidas para que ambos possam calcular o mesmo valor para (se necessário).δ
1] Eu acho que as suposições são naturais e necessárias. Eles podem ser justificadas com a esperança de que as respectivas quantidades não mudam muito muito para a duração da nossa tentativa de sincronização.
fonte