Introdução, instalação e uso do software de sincronização de relógio ptp4l

1. Introdução ao ptp4l

ptp4l é um software de código aberto para Linux e uma das implementações do IEEE 1588 Precision Time Protocol (PTP). Sua função é sincronizar os relógios de vários sistemas na rede e fornecer carimbos de data/hora de alta precisão. A seguir explica-se seu conceito, funções de implementação, vantagens e desvantagens e cenários de aplicação.

conceito:

PTP é um protocolo de rede usado para obter sincronização de relógio em sistemas distribuídos. ptp4l (implementação PTPv2 Linux) é uma implementação de protocolo PTP que suporta protocolo PTPv2, seleção de nível de precisão de clock (precisão de clock), compensação de atraso e outras funções. Ele pode sincronizar os relógios de vários nós PTP através da rede e fornecer carimbos de data/hora de alta precisão.

Perceba a função:

O ptp4l é frequentemente usado para obter sincronização de relógio e carimbo de data / hora de alta precisão e pode ser usado em sincronização de áudio e vídeo, aquisição e processamento de dados, transações financeiras, sincronização de sistemas de energia, controle industrial e outros campos. Ele fornece as seguintes funções principais:

  1. Realize a sincronização do relógio: o ptp4l pode sincronizar os relógios de vários nós por meio do protocolo para obter sincronização de tempo de alta precisão.

  2. Fornece carimbos de data e hora de alta precisão: o ptp4l pode registrar a data e hora dos dados recebidos e fornecer precisão de tempo em nível de subnanossegundos.

  3. Suporta diferentes níveis de precisão: o ptp4l pode suportar diferentes níveis de precisão do relógio para obter uma sincronização de relógio de maior precisão.

  4. Suporte para compensação de atraso: o ptp4l pode diagnosticar o atraso da rede e compensar o relógio de acordo com o atraso.

vantagem:

  1. Alta precisão: o ptp4l fornece precisão de tempo em nível subnanossegundo, o que pode atender a cenários que exigem alta precisão de tempo.

  2. Escalabilidade: o ptp4l pode sincronizar os relógios de vários nós através do protocolo e pode ser estendido para sistemas distribuídos.

  3. Flexibilidade: o ptp4l pode se adaptar a diferentes cenários de aplicação configurando diferentes níveis de precisão de clock, compensação de atraso e outros parâmetros.

deficiência:

  1. Limitado pelo suporte de hardware: A precisão da sincronização de tempo do ptp4l é limitada pelo suporte de hardware. Se o hardware não suportar sincronização de relógio de alta precisão, a precisão será limitada.

  2. Depende da rede: o ptp4l implementa a sincronização do relógio através da rede, por isso é afetado por fatores como atraso da rede e largura de banda.

2. Cenários de aplicação:

O ptp4l é usado principalmente em cenários que exigem sincronização de relógio de alta precisão, como sincronização de áudio e vídeo, aquisição e processamento de dados, transações financeiras, sincronização de sistemas de energia, controle industrial e outros campos. Nestes cenários, é necessário sincronizar os relógios dos diferentes sistemas para obter elevada precisão e consistência, de forma a garantir a estabilidade e o funcionamento normal do sistema.

Aqui estão os breves passos para instalar e usar o LinuxPTP no CentOS 7:

  1. Abra um terminal e instale o LinuxPTP com o seguinte comando:

    sudo yum install linuxptp
    

  2. Verifique se o LinuxPTP foi instalado com sucesso. Digite o seguinte comando no terminal:

    ptp4l -v
    

    Se o número da versão LinuxPTP for exibido, a instalação foi bem-sucedida.

  3. Configure o LinuxPTP. Digite o seguinte comando no terminal:

    sudo nano /etc/ptp4l.conf
    

    Abra o arquivo de configuração e faça as alterações necessárias. Por exemplo, você pode alterar configurações de relógio, interfaces de rede física, interfaces de rede PTP e muito mais.

  4. Inicie o LinuxPTP. Digite o seguinte comando no terminal:

    [root@localhost ~]# ptp4l -i enp1s0 -f /etc/ptp4l.conf -m
    ptp4l[519569.670]: selected /dev/ptp0 as PTP clock
    ptp4l[519569.672]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
    ptp4l[519569.672]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
    ptp4l[519577.354]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
    ptp4l[519577.354]: selected local clock 001b21.fffe.c4522a as best master
    ptp4l[519577.354]: assuming the grand master role
    
    

    Isto iniciará o daemon PTP e o configurará para usar a interface eth0, executando com as configurações especificadas em /etc/linuxptp/ptp4l.conf.

  5. Verifique a sincronização do relógio. Digite o seguinte comando no terminal:

    [root@localhost ~]# phc2sys -s enp1s0 -w CLOCK_REALTIME -m
    phc2sys[519870.160]: CLOCK_REALTIME phc offset      -172 s0 freq  +44777 delay    749
    phc2sys[519871.161]: CLOCK_REALTIME phc offset      -177 s2 freq  +44772 delay    758
    phc2sys[519872.161]: CLOCK_REALTIME phc offset      -173 s2 freq  +44599 delay    758
    phc2sys[519873.161]: CLOCK_REALTIME phc offset       -25 s2 freq  +44695 delay    743
    phc2sys[519874.161]: CLOCK_REALTIME phc offset        44 s2 freq  +44757 delay    745
    phc2sys[519875.161]: CLOCK_REALTIME phc offset        34 s2 freq  +44760 delay    751
    phc2sys[519876.162]: CLOCK_REALTIME phc offset        61 s2 freq  +44797 delay    745
    phc2sys[519877.162]: CLOCK_REALTIME phc offset     42355 s2 freq  +87109 delay    749
    phc2sys[519878.162]: CLOCK_REALTIME phc offset       122 s2 freq  +57583 delay    757
    phc2sys[519879.162]: CLOCK_REALTIME phc offset    -12775 s2 freq  +44722 delay    745
    phc2sys[519880.162]: CLOCK_REALTIME phc offset    -12753 s2 freq  +40912 delay    754
    phc2sys[519881.163]: CLOCK_REALTIME phc offset     -8903 s2 freq  +40936 delay    744
    
    

    Isto irá sincronizar o PHC (Ptp Hardware Clock) com o relógio real, garantindo assim que os relógios estejam sincronizados.

Acima estão as etapas básicas para instalar e usar o LinuxPTP no CentOS 7. Na verdade, você precisa saber mais sobre a configuração detalhada e o uso do LinuxPTP para garantir o funcionamento normal do sistema.

Parâmetros comuns

Os parâmetros comuns do ptp4l têm os seguintes significados:

usage: ptp4l [OPTION]... [INTERFACE]...

ptp4l is an implementation of the Precision Time Protocol (PTP) according
to IEEE standard 1588 for Linux.  PTP is used to synchronize the clocks of
devices over a network. ptp4l, in conjunction with phc2sys, can be used to
synchronize the system clock to an external PTP clock.

OPTION list:
  -C, --config-file     load configuration from file
  -g, --global-override enable global override of settings in configuration files
  -i, --interface       specify an interface to use
  -m, --management      enable the PTP management messages
  -p, --priority        select the priority1 and priority2 for PTP port
  -s, --step-seconds    step the clock if offset is greater than given seconds
  -A, --announce-interval
                        interval in seconds between sending announce messages
  -D, --drift-threshold drift threshold for the clock in seconds per second (default 1e-6)
  -G, --domain          specify PTP domain number (default 0)
  -H, --pdelay-req-hops number of hops for pdelay-req messages (default 1)
  -I, --init-delay      initial delay before sending first announce message (seconds)
  -M, --max-adjustable-offset
                        the maximum offset the clock can be adjusted in seconds
  -O, --outlier-threshold
                        specify outlier threshold for the clock discipline
  -P, --phc2sys         enable phc2sys compatibility mode
  -Q, --ptpengine-debug output debug information for ptpengine (use multiple times for more detail)
  -R, --hw-timestamps   use hardware timestamps instead of software
  -S, --src-addr        specify source IPv4 or IPv6 address (receiver mode only)
  -T, --unicast-address specify unicast destination address instead of multicast
  -U, --user-description
                        specify user description for PTP port
  -V, --version         print version number and exit
  -W, --override-offset-allowed
                        override the offset if the difference is outside acceptable limits (default false)
  -X, --set-timeout     specify timeout in milliseconds for message receptions
  -Y, --sync-rate-limit
                        limit the number of sync messages propagated per second
  -Z, --pid-file        write the PID of ptp4l to a file
  -d, --debug-level     output debugging information (use multiple times for more detail)
  -f, --foreground      stay in foreground and output messages to stdout
  -h, --help            display this help and exit
  -l, --lock-file       lock file used for PID file (default /var/run/ptp4l.lock)
  -o, --one-step        enable the one-step clock mode
  -r, --priority1       specify PTP priority1 value (default 128)
  -t, --priority2       specify PTP priority2 value (default 0)
  -u, --unicast-dest    specify unicast destination for PTP messages
  -v, --verbose         output verbose messages

See the ptp4l(8) man page for more information.

Alguns dos parâmetros comumente usados ​​são usados ​​da seguinte forma:

  • -C, --config-file: Especifica a localização do arquivo de configuração, por exemplo -C /etc/ptp4l.conf, .
  • -i, --interface: especifica o nome da interface a ser usada, por exemplo -i eth0, .
  • -m, --management: Habilite mensagens de gerenciamento PTP, por exemplo -m.
  • -s, --step-seconds: Avança o relógio se o deslocamento do relógio for maior que o número determinado de segundos, por exemplo -s 1.
  • -A, --announce-interval: especifica o intervalo para envio de mensagens de anúncio, por exemplo -A 30.
  • -M, --max-adjustable-offset: Especifica o deslocamento máximo pelo qual o relógio pode ser ajustado, por exemplo -M 0.1.
  • -Q, --ptpengine-debug: gera as informações de depuração do ptpengine. Você pode usar -Qa opção várias vezes para obter mais informações de depuração, por exemplo -Q -Q -Q.
  • -d, --debug-level: gera informações de depuração, use várias -dopções para obter informações de depuração mais detalhadas, por exemplo -d -d -d.
  • -f, --foreground: executa como um processo em primeiro plano, envia mensagens para a saída padrão, por exemplo -f.
  • -h, --help: exibe informações de ajuda, por exemplo -h.
  • -v, --verbose: Imprima mensagens detalhadas, por exemplo -v.

O método de utilização desses parâmetros pode ser determinado em combinação com cenários de aplicação específicos.

[root@localhost ~]# ptp4l -h

usage: ptp4l [options]

 Delay Mechanism

 -A        Auto, starting with E2E
 -E        E2E, delay request-response (default)
 -P        P2P, peer delay mechanism

 Network Transport

 -2        IEEE 802.3
 -4        UDP IPV4 (default)
 -6        UDP IPV6

 Time Stamping

 -H        HARDWARE (default)
 -S        SOFTWARE
 -L        LEGACY HW

 Other Options

 -f [file] read configuration from 'file'
 -i [dev]  interface device to use, for example 'eth0'
           (may be specified multiple times)
 -p [dev]  PTP hardware clock device to use, default auto
           (ignored for SOFTWARE/LEGACY HW time stamping)
 -s        slave only mode (overrides configuration file)
 -t        transparent clock
 -l [num]  set the logging level to 'num'
 -m        print messages to stdout
 -q        do not print messages to the syslog
 -v        prints the software version and exits
 -h        prints this message and exits

Anexo: erro: falha ao criar um relógio

ptp4l[519360.082]: interface 'enp4s0' não suporta modo de registro de data e hora solicitado, 
falha ao criar um relógio

Este erro geralmente aparece em sistemas Linux e indica que o ptp4l não conseguiu ativar o modo de carimbo de data/hora PTP na interface de rede especificada. Os possíveis motivos são:

  1. A interface de rede não suporta o modo de carimbo de data/hora PTP. Algumas interfaces de rede podem não suportar carimbos de data/hora de hardware ou software e, portanto, não podem ser usadas para sincronização PTP.

  2. Privilégios insuficientes para ativar o modo de carimbo de data/hora PTP. Em alguns sistemas, é necessário executar ptp4l como administrador ou usuário privilegiado para acessar os recursos necessários do sistema.

Para resolver esse problema, tente as seguintes etapas:

  1. Verifica se a interface de rede suporta o modo de carimbo de data/hora PTP. Você pode usar ethtoolo comando para ver se uma interface de rede suporta carimbo de data/hora de hardware ou software. Por exemplo, use o seguinte comando para visualizar enp4s0os recursos de carimbo de data/hora de uma interface de rede:

    sudo ethtool -T enp4s0
    

    Se incluída na saída PTPv2(IEEE 1588), a interface de rede suporta o modo de carimbo de data/hora PTP. Sem esta opção, significa que a interface de rede não suporta o modo de carimbo de data/hora PTP.

  2. Confirme se o usuário atual tem autoridade suficiente para ativar o modo de carimbo de data/hora PTP. Você pode tentar sudoexecutar ptp4l como administrador ou usuário privilegiado com o comando.

  3. Se você confirmar que a interface de rede suporta o modo de carimbo de data/hora PTP e o usuário atual tem privilégios suficientes, mas ainda encontrar esse erro, tente atualizar o kernel ou os drivers do sistema para garantir que o driver da interface de rede suporte o modo de carimbo de data/hora PTP.

Espero que as etapas acima possam ajudá-lo a resolver esse problema.

A interface não suporta o modo de carimbo de data/hora PTP:

 A interface suporta o modo de carimbo de data/hora PTP:

Acho que você gosta

Origin blog.csdn.net/songpeiying/article/details/131826141
Recomendado
Clasificación