Name
ntpd – Daemon Network Time Protocol (NTP)
Synopsis
ntpd ]
Descrição
O programa ntpd é um daemon do sistema operacional que define e mantém a hora do dia do sistema em sincronismo com os servidores de hora padrão da Internet. É uma implementação completa do Network Time Protocol (NTP) versão 4, mas também mantém compatibilidade com a versão 3, conforme definido pelo RFC-1305, e versões 1 e 2, conforme definido pelo RFC-1059 e RFC-1119, respectivamente. ntpd faz a maioria dos cálculos em aritmética de ponto flutuante de 64 bits e faz operações relativamente desajeitadas de ponto fixo de 64 bits apenas quando necessário para preservar a precisão final, cerca de 232 picossegundos. Embora a precisão final não seja alcançável com estações de trabalho e redes comuns de hoje, ela pode ser necessária com futuros relógios de CPU gigahertz e LANs gigabit.
Como o ntp opera
O programa ntpd opera trocando mensagens com um ou mais servidores configurados em intervalos de votação designados. Quando iniciado, seja para a primeira vez ou para as seguintes, o programa requer várias trocas da maioria desses servidores para que os algoritmos de processamento e mitigação do sinal possam acumular e preparar os dados e acertar o relógio. A fim de proteger a rede de estouros, o intervalo inicial de sondagem para cada servidor é atrasado um intervalorandomizado ao longo de alguns segundos. No intervalo inicial padrão de 64s, vários minutos podem passar antes do relógio ser ajustado. O atraso inicial para configurar o relógio pode ser reduzido usando a palavra-chave iburst com o comando de configuração do servidor, como descrito na página Opções de Configuração.
Os sistemas operacionais e hardware de hoje incorporam um chip de tempo do ano (TOY) para manter o tempo durante os períodos em que a energia está desligada. Quando a máquina é inicializada, o chip é usado para inicializar o tempo do sistema operacional. Após a máquina ter se sincronizado com um servidor NTP, o sistema operacional corrige o chip de tempos em tempos. No caso de não existir um chip TOY ou por alguma razão o seu tempo é superior a 1000s do tempo do servidor, ntpd assume que algo deve estar terrivelmente errado e a única acção fiável é o operador intervir e acertar o relógio com a mão. Isto faz com que o ntpd saia com uma mensagem de pânico para o log do sistema. A opção -g anula esta verificação e o relógio será ajustado para a hora do servidor, independentemente da hora do chip. No entanto, e toprotect contra hardware quebrado, como quando a bateria CMOS falha ou o contador do relógio torna-se defeituoso, uma vez que o relógio foi ajustado, um erro maior que 1000s fará ntpd sair de qualquer maneira.
Em condições normais, ntpd ajusta o relógio em pequenos passos para que a escala de tempo seja efetivamente contínua e sem descontinuidades. Sob condições de extremo congestionamento da rede, o jitter do atraso de ida e volta pode exceder três segundos e a distância de sincronização, que é igual a metade do atraso de ida e volta mais os termos do orçamento de erro, pode tornar-se muito grande. Os algoritmos ntpd descartam as compensações de amostra que excedam 128 ms, a menos que o intervalo durante o qual nenhuma compensação de amostra seja inferior a 128 ms exceda 900s. A primeira amostra depois disso, não importa qual seja o offset, move o relógio para a hora indicada. A entrada reduz a taxa de falsos alarmes em que o relógio é pisado por erro para uma incidência desaparecendo.
Como resultado deste comportamento, uma vez que o relógio foi ajustado, muito raramente se afasta mais de 128 ms, mesmo em casos extremos de congestionamento do caminho de rede e de jitter. Algumas vezes, em particular quando o ntpd é iniciado, o erro pode exceder 128 ms. Isto pode, ocasionalmente, fazer com que o relógio seja ajustado para trás se a hora local do relógio for superior a 128 s no futuro em relação ao servidor. Em algumas aplicações, este comportamento pode ser inaceitável. Se a opção -x estiver incluída na linha de comando, o relógio nunca será pisado e somente correções de slew serão usadas.
Os problemas devem ser cuidadosamente explorados antes de decidir usar a opção -x. A taxa máxima de slew possível é limitada a 500 partes por milhão(PPM) como consequência dos princípios de correção nos quais o protocolo NTP e o projeto do algoritmo são baseados. Como resultado, o relógio local pode levar muito tempo para convergir para um offset aceitável, cerca de 2.000 s para cada segundo em que o relógio está fora do intervalo aceitável. Durante este intervalo o relógio local não será consistente com qualquer outro relógio de rede e o sistema não pode ser usado para aplicações distribuídas que requerem uma hora de rede corretamente sincronizada.
Apesar das precauções acima, às vezes, quando grandes erros de freqüência estão presentes, os offsets de tempo resultantes se desviam para fora do intervalo de 128 ms e é necessária uma correção aneventual do passo ou do tempo de giro. Se após tal correção o erro de freqüência é tão grande que a primeira amostra está fora da faixa aceitável, ntpd entra no mesmo estado que quando o arquivo ntp.drift não está presente. A intenção deste comportamento é corrigir rapidamente a freqüência e restaurar a operação para o modo de rastreamento normal. Nos casos mais extremos (time.ien.it comes to mind), pode haver ocasionais correções de passo/slewcorrections e subseqüentes correções de freqüência. Nestes casos, ajuda a usar a palavra-chave burst ao configurar o servidor.
Disciplina de frequência
O comportamento ntpd na inicialização depende se o arquivo de frequência, geralmente ntp.drift, existe. Este arquivo contém a última estimativa do erro de frequência de relógio. Quando o ntpd é iniciado e o arquivo não existe, o ntpd entra em um modo especial projetado para se adaptar rapidamente ao erro de tempo e freqüência do oscilador do sistema de informação. Isto leva aproximadamente 15 minutos, após os quais o tempo e a freqüência são ajustados para valores nominais e thentpd entra em modo normal, onde o tempo e a freqüência são continuamente rastreados em relação ao servidor. Após uma hora, o arquivo de freqüência é criado e o offset de freqüência atual é gravado no mesmo. Quando o ntpd é iniciado e o arquivo existe, a freqüência ntpd é inicializada a partir do modo normal do arquivo eenters imediatamente. Depois disso o offset de freqüência atual é gravado no arquivo em intervalos de horas.
Modos operacionais
ntpd pode operar em qualquer um dos vários modos, incluindo simétrico ativo/passivo, cliente/servidor broadcast/multicast e manycast, como descrito na página de Gerenciamento da associação. Normalmente opera continuamente enquanto monitoriza pequenas alterações de frequência e corta o relógio para a última precisão. Entretanto, ele pode operar em um modo único, onde a hora é definida a partir de um servidor externo e a freqüência é definida a partir de um arquivo de freqüência previamente gravado. Um cliente broadcast/multicast ou manycast pode descobrir servidores remotos, calcular fatores de correção de atraso de propagação entre servidor e cliente e configurar sua configuração de forma automática. Isto torna possível implementar uma frota de estações de trabalho sem especificar detalhes de configuração específicos para o ambiente local.
Por padrão, o ntpd roda em modo contínuo onde cada um dos possíveis vários servidores externos é pesquisado em intervalos determinados por uma intrincada máquina de estado. A máquina de estado mede o jitter do atraso de ida e volta incidental e a frequência do oscilador vagueia e determina o melhor intervalo de sondagem usando um algoritmo aheurístico. Normalmente, e na maioria dos ambientes operacionais, a máquina de estado começa com intervalos de 64s e eventualmente aumenta em etapas até 1024s. Uma pequena quantidade de variação aleatória é introduzida a fim de evitar a aglomeração nos servidores. Além disso, caso um servidor se torne inalcançável por algum tempo, o intervalo entre aspoll é aumentado em passos para 1024s, a fim de reduzir a sobrecarga da rede.
Em alguns casos pode não ser prático para o ntpd rodar continuamente. Uma alternativa comum tem sido executar o programa ntpdate a partir de um cronjob em horários designados. No entanto, este programa não tem os algoritmos de processamento de sinal, verificação de erros e mitigação do ntpd A opção-q é destinada a este propósito. A configuração desta opção fará com que o ntpd saia logo após configurar o relógio pela primeira vez com os servidores configurados. O procedimento para configurar inicialmente o relógio é o mesmo do modo contínuo; a maioria das aplicações provavelmente desejará especificar a palavra-chaveiburst com o comando de configuração do servidor. Com esta palavra-chave uma salva de mensagens é trocada para preparar os dados e o relógio é ajustado em cerca de 10 s. Se nada for ouvido após alguns minutos, o daemon sai e sai. Após um período adequado de luto, o programa ntpdate pode ser retirado.
Quando o suporte do kernel está disponível para disciplinar a frequência do relógio, que é o caso do stock Solaris, Tru64, Linux e FreeBSD, uma funcionalidade útil está disponível para disciplinar a frequência do relógio. Primeiro, o ntpd é executado em modo contínuo com servidores selecionados a fim de medir e registrar o offset de freqüência intrínseca do relógio no arquivo de freqüência. Pode levar algumas horas para que a frequência e o offset se instalem. Então o ntpd é parado e executado em modo de tempo único, conforme necessário. A cada inicialização, a frequência é lida do arquivo e inicializa a frequência do kernel.
Poll Interval Control
Esta versão do NTP inclui uma máquina de estado intrincado para reduzir a carga da rede enquanto mantém uma qualidade de sincronização consistente com o jitter e wander observado. Há uma série de maneiras de adaptar a operação para aumentar a precisão reduzindo o intervalo ou para reduzir a sobrecarga da rede aumentando-a. No entanto, o usuário é aconselhado a considerar cuidadosamente as conseqüências de alterar o intervalo de ajuste da sondagem do mínimo padrão de 64 s para o máximo padrão de 1.024 s. O mínimo padrão pode ser alterado com o comando tinker minpoll para um valor não inferior a 16 s. Este valor é usado para todas as associações configuradas, a menos que seja substituído pela opção minpoll no comando de configuração. Note que a maioria dos drivers de dispositivos não funcionarão bem se o intervalo de pesquisa for inferior a 64 s e que as associações do servidor de transmissão e do cliente manycast também usarão o padrão, a menos que sobrescrito.
Em alguns casos envolvendo serviços de discagem ou pedágio, pode ser útil aumentar o intervalo mínimo para algumas dezenas de minutos e o intervalo máximo para um dia ou assim. Em condições normais de operação, uma vez que o loop de disciplina do relógio tenha estabilizado o intervalo será aumentado em passos do mínimo para o máximo. No entanto, isto assume que o erro intrínseco de frequência do relógio é suficientemente pequeno para que o laço da disciplina o corrija. O intervalo de captura do laço é de 500 PPMat um intervalo de 64s diminuindo por um fator de dois para cada duplicação do intervalo. A um mínimo de 1.024 s, por exemplo, o intervalo de captura é de apenas 31 PPM. Se o erro intrínseco for maior que isso, o arquivo de derivação ntp.drift terá que ser especialmente adaptado para reduzir o erro residual abaixo desse limite. Uma vez feito isso, o arquivo de derivação é automaticamente atualizado uma vez por hora e está disponível para inicializar a freqüência em reinícios subsequentes de daemon.
o filtro Huff-n’-puff
Em cenários onde uma quantidade considerável de dados deve ser baixada ou carregada através de modems telefônicos, a qualidade de manutenção do tempo pode ser seriamente degradada. Isso ocorre porque os atrasos diferenciais nas duas direções de transmissão podem ser bastante grandes. Em muitos casos, os erros de tempo aparentes são tão grandes que ultrapassam o limite da etapa e uma correção de etapa pode ocorrer durante e após a transferência de dados estar em andamento.
O filtro huff-n’-puff é projetado para corrigir a compensação de tempo aparente nesses casos. Ele depende do conhecimento do atraso de propagação quando nenhum outro tráfego está presente. Em cenários comuns isto ocorre durante outras horas que não as de trabalho. O filtro mantém um registro de turno que lembra o atraso mínimo ao longo do intervalo mais recente medido geralmente em horas. Sob condições de atraso grave, o filtro corrige o desvio aparente usando o sinal do desvio e a diferença entre o atraso aparente e o atraso mínimo. O nome do filtro reflete a correção negativa (huff) e positiva (puff), que depende do sinal do offset.
O filtro é ativado pelo comando tinker e pela palavra-chave huffpuff, conforme descrito na página Opções Diversas.
Notas
Se o suporte ao NetInfo estiver incorporado ao ntpd, então o ntpd tentará ler sua configuração do NetInfo se o ntp padrão.conf não pode ser lido e nenhum arquivo é especificado pela opção -c.
Em contextos onde um nome de host é esperado, um qualificador -4 que precede o nome do host força a resolução DNS para o espaço de nomes IPv4, enquanto um qualificador -6 força a resolução DNS para o espaço de nomes IPv6.
Várias variáveis internas ntpd podem ser exibidas e as opções de configuração alteradas enquanto o ntpd é executado usando os programas utilitários ntpq entpdc.
Quando o ntpd inicia ele olha para o valor de umaask, e se zero ntpd irá definir a umask para 022
Antes da opção -n, -d ou -D ser usada, ntpd muda o diretório de trabalho atual para o diretório raiz, então quaisquer opções orcommands especificando caminhos precisam usar um caminho absoluto ou um caminho relativo à raiz.
Opções de Linha de Comando
-4 Forçar a resolução DNS dos nomes de hosts para o espaço de nomes IPv4. -6 Forçar a resolução DNS dos nomes de hosts para o espaço de nomes IPv6. -a Exigir autenticação criptográfica para cliente broadcast, cliente multicast e associações passivas simétricas. Este é o padrão. -A Não requer autenticação criptográfica para cliente de broadcast, cliente multicast e associações passivas simétricas. Isto quase nunca é uma boa idéia. -b Habilitar o cliente para sincronizar com os servidores de broadcast. -c conffile Especifique o nome e o caminho do arquivo de configuração, padrão /etc/ntpp.conf -d Especifique o modo de depuração. Esta opção pode ocorrer mais de uma vez, com cada ocorrência indicando maior detalhe de exibição. -D level Especifique diretamente o nível de depuração. -f driftfile Especifique o nome e o caminho do arquivo de freqüência. Esta é a mesma operação que o comando de configuração do ficheiro de derivação do ficheiro de derivação. -g Normalmente, ntpd sai com uma mensagem para o log do sistema se o desvio exceder o limiar de pânico, que é de 1000 s por padrão. Esta opção permite que o tempo seja definido para qualquer valor sem restrições; no entanto, isto pode acontecer apenas uma vez. Se o limite for excedido depois disso, ntpd sairá com uma mensagem de mensagem para o log do sistema. Esta opção pode ser usada com as opções -q e -x. Veja o comando tinker para outras opções. -i jaildir Chroot o servidor para o diretório jaildir Esta opção também implica que o servidor tenta abandonar os privilégios de root na inicialização (caso contrário, chroot dá muito pouca segurança adicional), e só está disponível se o SO suportar rodar o servidor sem privilégios de root completos. Você pode precisar da alsospecify uma opção -u. -I iface Ouça na interface. Esta opção pode aparecer um número ilimitado de vezes. -k keyfile Especifique o nome e o caminho do ficheiro da chave simétrica. Esta é a mesma operação que o comando de configuração do ficheiro de chave simétrica. -l logfile Especifique o nome e o caminho do ficheiro de registo. O predefinido é o ficheiro de registo do sistema. Esta é a mesma operação que o comando logfile logfileconfiguration. -L Não escute os IPs virtuais. O padrão é ouvir. -m Bloquear memória. -n Não garfo. -N Na medida do permitido pelo sistema operacional, execute o ntpd com a maior prioridade. -p pidfile Especifique o nome e o caminho do arquivo usado para gravar o ID do processo ntpd. Esta é a mesma operação que o comando pidfile pidfileconfiguration. -P priority Na medida do permitido pelo sistema operacional, execute o ntpd com a prioridade especificada. -q Sair do ntpd logo após a primeira vez que o relógio for ajustado. Este comportamento imita o do programa ntpdate, que deve ser aposentado. As opções-g e -x podem ser usadas com esta opção. Nota: A disciplina de tempo do kernel é desactivada com esta opção. -r broadcasttdelay Especifique o atraso padrão de propagação do servidor broadcast/multicast para este cliente. Isto só é necessário se o atraso não puder ser computado automaticamente pelo protocolo. -s statsdir Especifique o caminho de diretório para arquivos criados pelo recurso de estatística. Esta é a mesma operação que o comando de configuração do statsdir statsdir. -t key Adicione um número de chave à lista de chaves confiáveis. Esta opção pode ocorrer mais de uma vez. -u user Especifique um usuário, e opcionalmente um grupo, para mudar para. Esta opção só está disponível se o SO suportar executar o servidor sem privilégios totais de root. Atualmente, esta opção é suportada no NetBSD (configure com –enable-clockctl) e Linux (configure com –enable-linuxcaps). -U intervalo de atualização da interface Número de segundos para esperar entre as varreduras da lista de interfaces para pegar a interface nova e excluir a interface de rede. Defina para 0 para desativar a atualização da lista de interfaces dinâmicas. O padrão é varrer a cada 5 minutos. -v variável-V Variável-V Adicionar uma variável de sistema listada por padrão. -x Normalmente, o tempo é diminuído se o deslocamento for menor que o limite do passo, que é de 128 ms por padrão, e pisado se estiver acima do limite. Esta opção ajusta o limiar para 600 s, o que está bem dentro da janela de precisão para ajustar o relógio manualmente. Nota: Como a taxa de variação dos kernels Unix típicos é limitada a 0,5 ms/s, cada segundo de ajuste requer um intervalo de amortização de 2000 s. Assim, um ajuste de até 600 s levará quase 14 dias para ser completado. Veja o comando tinker para outras opções. Nota: A disciplina de tempo do kernel é desactivada com esta opção.
O arquivo de configuração
Ordinarily, ntpd lê o arquivo de configuração ntp.conf no momento da inicialização para determinar as fontes de sincronização e modos de operação. Isto pode ser particularmente útil quando o host local deve ser configurado como um cliente broadcast/multicast, com todos os pares sendo determinados ouvindo as broadcasts atrun time.
Usualmente, o arquivo de configuração é instalado no diretório /etc, mas pode ser instalado em outro lugar (veja a opção de linha de comando -c conffile). O formato do arquivo é similar a outros arquivos de configuração do Unix – comentários começam com um caractere # e se estendem até o final da linha; linhas em branco são ignoradas.
Comandos de configuração consistem em uma palavra-chave inicial seguida por uma lista de argumentos, alguns dos quais podem ser opcionais, separados por espaço em branco. Os comandos não podem ser continuados em várias linhas. Os argumentos podem ser nomes de hosts, endereços de hosts escritos em forma numérica, ponto-quadrado, números inteiros, números em ponto flutuante (tempos de especificação em segundos) e cadeias de texto. Argumentos opcionais são delimitados pelas seguintes descrições, enquanto alternativas são separadas por | A notação significa uma repetição opcional e indefinida do último item antes do
Códigos de Saída
Um código de saída diferente de zero indica um erro. Qualquer mensagem de erro é registrada no log do sistema por padrão.
O código de saída é 0 somente quando ntpd é terminado por um sinal, ou quando a opção -q é usada e ntpd define com sucesso o relógio do sistema.
Veja Também
ntp.conf(5), ntpq(8), ntpdc(8)