Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

17.2. Utiliser PTP

Pour utiliser PTP, le pilote réseau du noyau de l'interface doit offrir des capacités de prise en charge d'horodatage logiciel ou matériel.

17.2.1. Vérifier la prise en charge des pilotes et du matériel

En outre de la prise en charge de l'horodatage matériel présent dans le pilote, le NIC doit également être capable de prendre en charge cette fonctionnalité dans le matériel physique. La meilleure manière de vérifier les capacités d'horodatage d'un pilote particulier et de la carte réseau (NIC) consiste à utiliser l'utilitaire ethtool pour interroger l'interface comme suit :
~]# ethtool -T eth3
Time stamping parameters for eth3:
Capabilities:
        hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)
        software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)
        hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)
        software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
        software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
        hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
        off                   (HWTSTAMP_TX_OFF)
        on                    (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
        none                  (HWTSTAMP_FILTER_NONE)
        all                   (HWTSTAMP_FILTER_ALL)
Quand eth3 est l'interface que vous souhaitez vérifier.
Pour la prise en charge de l'horodatage logiciel, la liste des paramètres doit inclure :
  • SOF_TIMESTAMPING_SOFTWARE
  • SOF_TIMESTAMPING_TX_SOFTWARE
  • SOF_TIMESTAMPING_RX_SOFTWARE
Pour la prise en charge de l'horodatage matériel, la liste des paramètres doit inclure :
  • SOF_TIMESTAMPING_RAW_HARDWARE
  • SOF_TIMESTAMPING_TX_HARDWARE
  • SOF_TIMESTAMPING_RX_HARDWARE

17.2.2. Installer PTP

Le noyau dans Red Hat Enterprise Linux inclut la prise en charge de PTP. La prise en charge de l'espace utilisateur est fournie par les outils du paquet linuxptp. Pour installer linuxptp, veuillez exécuter la commande suivante en tant qu'utilisateur root :
~]# yum install linuxptp
Ceci installera ptp4l et phc2sys.
Veuillez ne pas exécuter plus d'un service à la fois pour paramétrer l'horloge système. Si vous avez l'intention de servir l'heure PTP en utilisant NTP, veuillez consulter la Section 17.8, « Servir le temps PTP avec NTP ».

17.2.3. Lancer ptp4l

Le programme ptp4l peut être lancé à partir de la ligne de commande ou en tant que service. Lorsqu'il est exécuté en tant que service, les options sont spécifiées dans le fichier /etc/sysconfig/ptp4l. Les options requises pour une utilisation par le service et sur la ligne de commande doivent être spécifiées dans le fichier /etc/ptp4l.conf. Le fichier /etc/sysconfig/ptp4l inclut l'option de ligne de commande -f /etc/ptp4l.conf, qui cause au programme ptp4l de lire le fichier /etc/ptp4l.conf et de traiter les options contenues. L'utilisation du fichier /etc/ptp4l.conf est expliquée dans la Section 17.4, « Spécifier un fichier de configuration ». Des informations supplémentaires sur les différentes options ptp4l et sur les paramètres du fichier de configuration se trouvent sur la page man ptp4l(8).

Lancer ptp4l en tant que service

Pour lancer ptp4l en tant que service, veuillez exécuter la commande suivante en tant qu'utilisateur root :
~]# systemctl start ptp4l
Pour obtenir des informations supplémentaires sur la gestion des services système sur Red Hat Enterprise Linux 7, veuillez consulter le Chapitre 9, Gérer les services avec systemd.

Utiliser ptp4l dans la ligne de commande

Le programme ptp4l tente d'utiliser l'horodatage matériel par défaut. Pour utiliser ptp4l avec des pilotes et NIC ayant des capacités d'horodatage matériel, vous devrez fournir l'interface réseau à utiliser avec l'option -i. Veuillez saisir la commande suivante en tant qu'utilisateur root :
~]# ptp4l -i eth3 -m
Quand eth3 est l'interface que vous souhaitez configurer. Ci-dessous figure un exemple de sortie de ptp4l lorsque l'horloge PTP du NIC est synchronisée avec une horloge maître :
~]# ptp4l -i eth3 -m
selected eth3 as PTP clock
port 1: INITIALIZING to LISTENING on INITIALIZE
port 0: INITIALIZING to LISTENING on INITIALIZE
port 1: new foreign master 00a069.fffe.0b552d-1
selected best master clock 00a069.fffe.0b552d
port 1: LISTENING to UNCALIBRATED on RS_SLAVE
master offset -23947 s0 freq +0 path delay       11350
master offset -28867 s0 freq +0 path delay       11236
master offset -32801 s0 freq +0 path delay       10841
master offset -37203 s1 freq +0 path delay       10583
master offset  -7275 s2 freq -30575 path delay   10583
port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
master offset  -4552 s2 freq -30035 path delay   10385
La valeur du décalage maître est le décalage mesuré de l'horloge maître en nanosecondes. Les chaînes s0, s1, s2 indiquent différents états de l'horloge servo : s0 est déverrouillé, s1 est un step (ou décalage) d'horloge et s2 est verrouillé. Une fois le servo dans un état verrouillé (s2), l'horloge ne sera pas décalée (mais uniquement légèrement ajustée), à moins que l'option pi_offset_const ne soit définie sur une valeur positive dans le fichier de configuration (décrit sur la page man ptp4l(8)). La valeur adj est l'ajustement de la fréquence de l'horloge en ppb (« parts per billion », ou parties par milliard). La valeur du délai du chemin correspond au délai estimé des messages de synchronisation envoyés depuis l'horloge maître en nanosecondes. Le port 0 est un socket de domaines Unix utilisé pour la gestion PTP locale. Le port 1 est l'interface eth3 (basé sur l'exemple ci-dessus.) Les états du port possibles incluent INITIALIZING, LISTENING, UNCALIBRATED et SLAVE, ceux-ci peuvent changer lors des événements INITIALIZE, RS_SLAVE, MASTER_CLOCK_SELECTED. Dans le dernier message de changement d'état, l'état du port est passé de UNCALIBRATED à SLAVE, ce qui indique une synchronisation réussie avec une horloge PTP maître.

Journaliser des messages à partir de ptp4l

Par défaut , les messages sont envoyés sur /var/log/messages. Cependant, spécifier l'option -m active la journalisation sur la sortie standard, ce qui peut être utile pour des raisons de débogage.
Pour activer l'horodatage logiciel, l'option -S doit être utilisée comme suit :
~]# ptp4l -i eth3 -m -S

17.2.3.1. Sélectionner un mécanisme de mesure du délai

Il existe deux mécanismes de mesure de délai différents qui peuvent être sélectionnés en ajoutant une option à la commande ptp4l :
-P
L'option -P permet de sélectionner le mécanisme de mesure de délai pair à pair ( peer-to-peer, ou P2P).
Le mécanisme P2P est préféré car il réagit aux changements de la topologie réseau plus rapidement, et peut être plus précis dans la mesure du délai que les autres mécanismes. Le mécanisme P2P peut uniquement être utilisé sur les topologies où chaque port échanges des messages PTP avec au moins un autre port P2P. Il doit être pris en charge et utilisé par tout le matériel sur le chemin de communication, y compris les horloges transparentes.
-E
L'option -E sélectionne le mécanisme de mesure de délai end-to-end (E2E). Ce mécanisme est utilisé par défaut.
Le mécanisme E2E est également appelé mécanisme « request-response » (requête-réponse) du délai.
-A
L'option -A active la sélection automatique du mécanisme de mesure du délai.
L'option automatique lance ptp4l en mode E2E. Celle-ci passera en mode P2P si une requête de délai est reçue.

Note

Toutes les horloges sur un seul chemin de communication PTP doivent utiliser le même mécanisme de mesure de délai. Des avertissements seront imprimés dans les circonstances suivantes :
  • Lorsqu'une requête de délai est reçue sur un port utilisant le mécanisme E2E.
  • Lorsqu'une requête de délai E2E est reçue sur un port utilisant le mécanisme P2P.