Você está na página 1de 7

NTP, The Network Time Protocol

Thiago Fernandes Lemos, Mauro E. M. De Azeredo, William Avila Chaves

Abstract — The NTP protocol nowadays its used too many times to keep update the date and time of the
computers. Most of time, this computers are servers. There is a huge demand about always keep the time
of the server updated. NTP protocol has a objeticve to synchronism the server with a global time and
make it with the minimal error as possible.

Resumo — O protocolo NTP é muito usado hoje em dia para manter a data e a hora do computador
atualizados. Na maioria das vezes, estes computadores são servidores. Como há uma enorme demanda
para manter sempre a hora dos computadores atualizadas, foi desenvolvido o protocolo NTP que tem
como objetivo sincronizar o servidor com a hora global e fazer isso com o menor erro possivel.

Termos de indexação — NTP, Time, Network, Protocol

I.Introdução

Hoje em dia é muito comum sistemas críticos necessitarem estar com a hora 100%
sincronizada com o mundo. Antigamente, os relógios destes sistemas eram assíncronos um
com os outros, o que gerava diversos erros tanto para a empresa, como para o cliente,
prejudicando assim o funcionamento dos sistemas. Outro fator que também contribui para
falhas, é o fato do relógio interno dos compatadores, por serem imprecisos, estarem atrasados
ou adiantados, o que agrava o problema.

Com o objetivo de resolver esse problema, foi desenvolvido um protocolo que permite a
sincronização de hora e data nos computadores do mundo, não apenas em servidores. Através
deste protocolo, foi possível a sincronização exata de sistemas críticos, permitindo que
ocorram as operações sem que hajam problemas em função da hora e data errada. Apesar de
parecer um protocolo de atualização de sistemas de computadores bem simples, há um
algoritmo bem complexo por trás deste protocolo.

II.Arquitetura

A.Topologia

O protocolo de Tempo utiliza o conceito de peer-to-peer, ou seja, os clientes também são


servidores. Os clientes utilizam do protocolo baseados no UDP na porta 123. O NTP trabalha
com servidores de diversos níveis. Em primeiro instante temos servidores estratos de nível
0(zero) até servidores estratos de nível 16(dezesseis). Os servidores de nível 0 servem como
base de tempo para todo funcionamento da rede.

Os servidores de nível 0 são computadores que possuem como sistema de hora um relógio
atômico(atrasa somente 1 segundo a cada 30.000 anos) ou são sistemas de GPS. Estes por sua
vez, replicam informações de Tempo e hora com uma conexão direta(por exemplo, uma
conexão com sinal de Pulso por Segundo), aos servidores de nível 1. Estes servidores de nível
1 já ligados em uma rede, distribuem para os servidores de nível 2 suas informações de
tempo, e os de nível 2 para os de nível 3, e assim sucessivamente.

Estrutura dos servidores NTP e seus níveis. Fonte: http://ntpimg.notlong.com

A partir desta hierarquia, vemos que os servidores que recebem de níveis superiores, agem
como clientes, e depois como servidores ao replicar suas informações. Para este tipo de
hierarquia, quanto mais abaixo na hierarquia, maior a assincronização com os servidores
estratos 0. Somente os servidores estratos de nível 2 são abertos publicamente.

B.Associações

Os dispositivos NTP possuem conexões entre si. Estes diferentes meios de relações entre os
dispositivos, são nomeados de Associações. Elas são dividas em três categorias:
• Permanentes: São conexões estáticas, configuradas manualmente.
• Priorizavéis: é especifico do NTPv4 e são criadas através de um comando ou
manualmente. Essas relações podem ser excluídas depois de um tempo pré-
determinado ou quando houver um servidor melhor.
• Efêmeras ou Transitórias: São criadas a partir da requisição de outros dispositivos
NTP e só são excluídas caso haja algum erro ou a partir de um tempo pré-
determinado.
Seguindo as associações, existem três tipos que podem ser realizados:
• Cliente/Servidor: O cliente possui permanentemente uma associação configurada
com o servidor. As requisições são feitas ao servidor, que responde com as
informações de tempo. O servidor não guarda informação alguma sobre a associação,
ou sobre os dados enviados. Geralmente dispositivos NTP são clientes e servidos
simultaneamente.
• Modo Simétrico: Neste modo, dois ou mais dispositivos do mesmo estrato são
configurados de forma que haja redundância de dados entre eles. Assim, caso um
dispotivo fique sem conexao com seu servidor de estrato superior, sua redundância
funciona como referência de tempo. Este modo é divido em dois tipos:
◦ Ativo: Ocorrem quando ambas associações nos servidores são feitas de
forma permanente.
◦ Passivo: Somente um dos dispositivos é configurado com associação
permanente, enquanto o outro dispositivo adiciona como uma associação
efêmera o outro dispositivo, automaticamente. Neste modo é recomendado o
uso de criptografia na conexão.
• Broadcast ou Multicast: A partir da versão 4, é possível utilizar as associações em
broadcast. Para redes com poucos servidores servindo a muitos usuários, este é o
melhor tipo a ser utilizado.
Funciona de forma bem simples, ao receber um pacote broadcast, o cliente troca
algumas mensagens com o servidor a fim de estabelecer o tempo de atraso. Após esta
interação com o servidor numa associação do tipo Cliente/Servidor, ele passa a agir
somente de modo a recber os pacotes do servidor.
O IANA reservou dois endereços IPs para a utilização deste protocolo no modo
Multicast. Os endereços são: 224.0.1.1, para IPv4; e FF05::101, para IPv6.
No fator segurança, para previnir ataques de hosts maliciosos via pacotes broadcast,
é recomendado que a opção de autenticação esteja sempre habilitada.

III.Funcionamento
O NTP em sua forma completa é muito mais complexo do que apenas consultar a hora em
um servidor e atualizá-la localmente.

A figura abaixo ilustra o funcionamento básico do protocolo

• Obter informações de tempo de vários servidores;


• Detectar quais fornecem o tempo correto e quais estão mentindo;
• Escolher qual é a melhor referência;
• Ajustar o relógio local, de forma contínua e gradual para que tenha e melhor exatidão
possível.
• Identificar servidores de tempo conhecidos e confiáveis, evitando possíveis ataques.
• Formar, em conjunto com outros servidores NTP, uma topologia simples, confiável,
robusta e escalável para a sincronização de tempo.

Troca de mensagens e Cálculo de Deslocamento


São baseadas no protocolo UDP, ou seja, sem confirmação de entrega e não orientado a
conexão. Essa troca de mensagens entre cliente e servidor permite ao cliente calcular o seu
deslocamento (offset) em relação ao servidor (atrasado ou adiantado).
Como calcular o deslocamento:
1. O Cliente lê o relógio: a=9.
2. O Cliente envia a Mensagem 1 (a=9).
3. O Servidor recebe a Mensagem 1 (a=9) e lê seu relógio: x=4.
4. O Servidor algum tempo depois lê seu relógio novamente: y=9.
5. O Servidor envia a Mensagem 2 (a=9, x=4, y=9).
6. O Cliente recebe a Mensagem 2 (a=9, x=4, y=9) e lê seu relógio: b=18.
7. Atraso ou RTT = (b-a)-(y-x) = (18-9)-(9-4) = 9 - 5 = 4.
8. Deslocamento = (x-a+y-b)/2 = (4-9+9-18)/2 = -14/2 = -7.

Um deslocamento de -7 significa que o relógio local do Cliente deve ser atrasado 7


unidades de tempo para se igualar ao do Servidor. O NTP não sabe quanto é o tempo de ida
nem o tempo de volta, ele calcula o RTT e assume que T.ida é igual ao T.volta. A maior parte
das vezes esses tempos (ida e volta) não são iguais, mas o cálculo de deslocamento efetuado
aproxima-se muito do real.

IV.Algoritmos

O protocolo consegue manter as informações de atraso da rede trocando mensagens de


tempos em tempos com o servidor. Quando a sincronização está no ínicio, o cliente executa
uma pesquisa para cada servidor a cada 64 segundos. Conforme o tempo de sincronização
passa, o tempo de pesquisa nos servidores aumenta. Esse tempo máximo de pesquisa ao
servidor, não ultrapassa 17 minutos(1.024 segundos). Cada informação trocada com o
servidor, faz com que ele receba simultaneamente junto aos seus pacotes, informações de
atraso, deslocamento, estampa de tempo e dispersão.
Os servidores concorrentes, passam por 5 etapas, ou 5 algoritmos, antes de realmente
serem utilizados pelo cliente. Em cada etapa o servidor é cada vez mais testado, somente para
que ao final, o melhor seja utilizado.
Através da informação de atraso e deslocamento, o Algoritmo de Filtro de Relógio utiliza
os dados como base para calcular qual o servidor com o menor atraso e deslocamento. Após
ser descoberto qual o algoritmo com menor atraso e deslocamento, se faz necessário
descobrir qual o servidor mais seguro.
Através da metade do tempo de deslocamento e a soma, o Algoritmo de Seleção de
Relógio seleciona o servidor que possuir o tempo de deslocamento dentro do intervalo de
intersecção definida pelo protocolo. Se este tempo não estiver dentro do intervalo de
intersecção, este servidor é considerado um relógio falso, senão, verdadeiro.
Depois de passar por estas duas primeiras etapas, os servidores que conseguirem passar,
chegam ao terceiro passo, onde são analisados pelo Algoritmo de Agrupamento, que
seleciona os melhores servidores utilizando técnicas padrões. Os critérios utilizados para a
seleção dos melhores, variam desde o nível de estrato, distância para o estrato raiz e a
variação. Os melhores selecionados, são chamados de pares do sistema.
Os últimos servidores que chegarem ao Algoritmo de Combinação de Relógios são os que
tem mais chances de serem utilizados. Caso haja somente um servidor, este será o servidor
utilizado. Caso haja mais de um, será feita uma média emcima dos dados de deslocamento
dos relógios, em busca da maior exatidão possível. Esta penúltima etapa é anulada caso seja
definido um servidor preferêncial para uso.
A última e final etapa é a Disciplina do Relógio Local que tem como função, gerenciar a
fase e a frequência do relógio do computador. Este algoritmo, esta sempre em funcionamento,
mesmo quando o computador ão esta sincronizado com nenhum servidor NTP. É de
fundamental importância para o protocolo NTP conhecer a taxa de erro máximo que pode
haver do relógio do sistema, pois é utilizada nos algoritmos. Todas as informações do relógio
do sistema são passados para o NTP, que então os usa.
O NTP toma algumas atitudes com relação à diferença de tempo entre os dados e o relógio
local. Caso o tempo de diferença seja maior que 128 milisegundos e permanece assim por
mais de 15 minutos(900 segundos) ele corrije esta diferença. Se o tempo for menor que 15
minutos, a correção não é efetuada pois o NTP visa não inundar a rede e que possíveis
congestionamentos temporários na rede, atrapalhem a medição do tempo. Para casos onde o
tempo de diferença ultrapassa 16,7 minutos(1000 segundos), o NTP ignora o erro, pois
quando o erro é muito grande, o horário deve ser ajustado manualmente pelo administrador
do sistema.

V.Segurança

O NTP tenta garantir as quartos propriedades da informação na área de segurança. São


elas: integridade, disponibilidade, autenticidade e confidecialidade. Os servidores sempre
devem provar ao cliente, que ele é quem diz ser. Para isto, é utilizado um algoritmo de
criptografia que visa autenticidade.
Já a questão de confidecialidade, não preocupa muito o protocolo NTP pois de acordo com
os princípios, não há necessidade de se ocultar o tempo, por dois motivos: criptografar a
mensagem de tempo, exigiria processamento e poderia provocar atrasos de milisegundos nos
dados de tempo.
Para que seja realizada a autenticação, são utilizados dois métodos:
Chave simétrica: É muito utilizada para casos onde há pares no modo simétrico ativo/
passivo, servidores ou servidores de multicast/broadcast. Utiliza MD5 para criptografia.
Chave pública: Utiliza MD5 para criptografia e a forma de identificação ocorre num
esquema de desafio/resposta. Um fator muito importante no método de auntenticação de
chave pública, é o fato dele nçao funcionar em redes com NAT.

VI.Conclusão

Como se viu necessário há muito tempo, havia uma demanda muito grande por sistemas de
missão crítica que tivessem de ter a hora sincronizada. Com isto, o protocolo NTP resolve
estes problemas, através de implementações de hierarquia de servidores, algoritmos
complexos para escolha do melhor servidor a ser utilizado e a utilização de autenticação para
maior segurança em comunicações.
O NTP surge cada vez mais aperfeiçoado, em busca da sincronização em tempo real e
perfeito entre os sistemas.

Referências

1. Port Numbers, IANA.Org. Disponível em: http://www.iana.org/assignments/port-numbers. Acessado em 8 jun 2008.

2. Segundo | Avançado, Laura Barros. Disponível em: http://www.e-escola.pt/site/topico.asp?topico=63. Acessado em 8 jun 2008.

3. Network Time Protocol, Wikipédia, A Enciclopédia Livre. Disponível em: http://pt.wikipedia.org/wiki/

Network_Time_Protocol. Acessado em 8 jun 2008.

4. Network Time Protocol, Wikipédia, The Free Enciclopedia. Disponível em: http://en.wikipedia.org/wiki/

Network_Time_Protocol. Acessado em 8 jun 2008.

5. Projeto NTP.br. Disponível em: http://ntp.br/ntp.html. Acessado em 8 jun 2008.

6. R. W. Lucky, “Automatic equalization for digital communication,” Bell Syst. Tech. J., vol. 44, no. 4, pp. 547–588, Apr. 1965.

7. USNO Network Time Servers. Disponível em: http://tycho.usno.navy.mil/ntp.html. Acessado em 8 jun 2008.

Você também pode gostar