Network Time Protocol - NTP
1. Conceito e Objetivo
O Network Time Protocol (NTP) é um protocolo de Internet usado para sincronizar os relógios de computadores em um sistema distribuído. Seu objetivo é alinhar o relógio de uma máquina cliente com o UTC (Tempo Universal Coordenado), consultando servidores de tempo que possuem relógios de alta precisão.
2. Mecânica de Sincronização
O NTP é significativamente mais robusto que algoritmos mais simples (como o de Cristian) porque utiliza quatro marcações de tempo (timestamps) para calcular tanto o atraso da rede quanto o deslocamento (offset) do relógio, sem assumir que o atraso da rede é simétrico.
2.1. Troca de Mensagens (Timestamps)
A sincronização básica envolve a troca de pacotes entre o cliente e o servidor:
(Cliente envia): O cliente marca seu tempo local e envia um pacote de requisição. (Servidor recebe): O servidor marca seu tempo local ao receber o pacote. (Servidor responde): O servidor marca seu tempo local ao enviar a resposta. (Cliente recebe): O cliente marca seu tempo local ao receber a resposta.
O pacote de resposta do servidor contém
sequenceDiagram
participant Cliente
participant Servidor NTP
activate Cliente
Note over Cliente: Marca tempo local $t_1$
Cliente->>Servidor NTP: 1. Pacote de Requisição (contém $t_1$)
deactivate Cliente
activate Servidor NTP
Note over Servidor NTP: 2. Marca tempo de chegada $t_2$
Note over Servidor NTP: 3. Marca tempo de saída $t_3$
Servidor NTP-->>Cliente: 4. Pacote de Resposta (contém $t_1, t_2, t_3$)
deactivate Servidor NTP
activate Cliente
Note over Cliente: 5. Marca tempo de chegada $t_4$
deactivate Cliente
2.2. Fórmulas de Cálculo
O cliente usa duas fórmulas principais:
-
Atraso (
): Estima o tempo total de viagem de ida e volta, desconsiderando o tempo de processamento do servidor. -
Deslocamento (
): Estima a diferença real (offset) entre o relógio do servidor e o do cliente.
3. Problemas Resolvidos pelo NTP
O NTP foi projetado para lidar com dois problemas complexos da sincronização:
-
Atraso e Variação na Rede (Jitter):
- Solução: O NTP não confia em uma única medição. Ele coleta múltiplas amostras ao longo do tempo, descarta estatisticamente outliers (medidas anômalas causadas por picos de latência) e utiliza médias ponderadas para calcular o offset mais estável e confiável.
-
Retrocesso do Tempo:
- Problema: Se o relógio do cliente estiver adiantado, simplesmente “voltar” o relógio para a hora correta pode causar inconsistências graves em sistemas (ex: logs, transações).
- Solução (Slew Mode): O NTP ajusta o tempo gradualmente. Em vez de saltar, ele faz o relógio do cliente andar um pouco mais devagar (ou mais rápido, se estiver atrasado) até que ele se alinhe perfeitamente com o UTC.
4. Estrutura Hierárquica (Estratos)
Para garantir precisão e escalabilidade, o NTP opera em uma hierarquia de níveis chamada Estratos (Strata).
- Estrato 0: A fonte de referência primária (ex: relógio atômico, GPS). Não está na rede.
- Estrato 1: Servidores (raiz) diretamente conectados ao Estrato 0. Possuem a maior precisão.
- Estrato 2: Servidores que sincronizam seus relógios com os servidores do Estrato 1.
- Estrato k+1: Servidores que sincronizam com o Estrato k.
Regra: Um servidor ou cliente sempre tentará sincronizar com o servidor disponível que tiver o menor número de estrato (mais próximo da fonte de referência).

5. Vantagens (NTP vs. Algoritmo de Cristian)
O NTP é superior ao Algoritmo de Cristian pois:
- Não assume atraso simétrico na rede.
- Coleta múltiplas amostras e filtra outliers.
- Usa médias ponderadas e mantém um histórico estatístico.
- Ajusta não apenas o offset (deslocamento), mas também o drift (a frequência/deriva natural do relógio de quartzo do hardware).
Isso permite precisões de milissegundos na Internet e microssegundos em LANs.
6. Atualizações (NTPv4 e NTS)
- NTPv4 (RFC 5905): A versão moderna do protocolo, com melhor gerenciamento de jitter, filtros de seleção aprimorados e disciplina de clock mais precisa.
- NTS (Network Time Security, RFC 8915): Uma extensão crucial que adiciona segurança. Utiliza TLS + AEAD (porta 4460) para garantir a autenticidade e a integridade dos pacotes de tempo, protegendo contra ataques man-in-the-middle que tentam falsificar o horário.