Sincronismo horário NTP
Network Time Protocol
Servidores de rede
O Network Time Protocol (NTP) é um protocolo utilizado para sincronizar relógios de computadores sobre redes de dados, orientados por pacotes, com latência variável. O NTP utiliza a porta 123 UDP como nível de transporte. Está desenhado para ser particularmente resistente aos efeitos de latência variável numa rede de dados.
O NTP é um dos mais antigos protocolos ainda usados. Foi criado em 1981 por Dave Mills, da Universidade de Delaware, e ainda mantém o protocolo em funcionamento com uma equipa de voluntários. Vai atualmente na versão 4.
Utiliza a escala de tempo UTC e suporta a correção dos segundos intercalares. Em teoria, a versão NTPv4 pode assegurar uma precisão de 10 mseg. na internet pública. Pode alcançar uma precisão de 200 microseg. numa rede local sob condições ideais, sendo um sistema redundante por natureza.
Porque razão é importante ter uma rede sincronizada?
Uma característica básica e ao mesmo tempo importante do tempo é que ele não para. Vários programas de computador fazem uso dessa característica e podem ter o seu funcionamento comprometido se o relógio do computador inesperadamente passar a indicar uma hora errada, especialmente se for uma hora que já passou. Isto complica-se ainda mais na internet, com vários computadores a trocar informações entre si.
Infelizmente os relógios dos computadores – apenas constituídos por um oscilador, um contador e um dispositivo de leitura ou visualização – são imprecisos e adiantam-se ou atrasam-se com o passar do tempo.
Diferentes softwares e aplicações podem ser sensíveis a problemas relativos à sincronização da hora de formas diversas. Como exemplo de aplicações afetadas pelo tempo podemos citar:
- sistemas de distribuição de conteúdo
- sistemas de arquivo
- sistemas de automação
- CCTV
- sistemas de emergência
- etc.
O NTP e o sistema de estratos
O NTP utiliza um sistema hierárquico de estratos (stratum). Os sistemas NTP stratum 1 estão diretamente sincronizados por um padrão externo (GPS ou relógio atómico). Os sistemas NTP stratum 2 derivam a sua hora de um ou mais sistemas stratum 1.
Os 3 modos de operação do NTP
- Cliente/Servidor ou Unicast: neste modo o cliente faz pedidos de sincronismo ao servidor, mas o servidor não aceita sincronização pelo cliente.
- Simétrico ou peer mode: neste modo, ambos os sistemas operam como cliente e sincronizam-se entre si automaticamente.
- Broadcast ou multicast: neste modo o servidor envia pacotes periodicamente para múltiplos clientes. Não há diálogo entre o servidor e os clientes.
A sincronização de relógios é uma questão de segurança
É importante também do ponto de vista de segurança de redes que os relógios dos computadores estejam sincronizados. Investigações relacionadas com incidentes de segurança tornam-se impossíveis caso os servidores envolvidos e os diversos arquivos de log discordem entre si em relação às tramas de tempo dos eventos.
Para algumas aplicações a exatidão da ordem de segundos pode ser suficiente. Para outras, é necessário manter os relógios com diferenças entre si na ordem dos milissegundos. O NTP é capaz de garantir as propriedades necessárias ao relógio dos sistemas em causa para o bom funcionamento das aplicações. Num primeiro momento isto pode parecer algo muito simples: “consultar o tempo num servidor” e “ajustar o relógio local” periodicamente. Mas, na verdade, o NTP faz muito mais do que isso.
Diversos componentes do sistema colaboram para:
- Obter, a partir de diversas amostras, informações horárias de um determinado servidor, como o deslocamento, dispersão e variação.
- Discernir, num conjunto de servidores, quais fornecem a hora correta.
- Escolher, dentro dos servidores que fornecem a hora correta, qual é a melhor referência.
- Disciplinar o relógio local, descobrindo os seus principais parâmetros de funcionamento, como precisão, estabilidade, etc.
- Identificar, a partir de métodos criptográficos, servidores horários conhecidos e confiáveis, evitando possíveis ataques.
- Formar, em conjunto com outros servidores NTP, uma topologia simples, fiável, robusta e escalável para a sincronização horária.