18.5. Configuration des dispositifs PTP
L'opérateur PTP ajoute la définition de ressource personnalisée (CRD) NodePtpDevice.ptp.openshift.io
à OpenShift Container Platform.
Une fois installé, l'opérateur PTP recherche dans votre grappe des périphériques réseau compatibles PTP sur chaque nœud. Il crée et met à jour un objet de ressource personnalisée (CR) NodePtpDevice
pour chaque nœud qui fournit un périphérique réseau compatible PTP.
18.5.1. Découverte des périphériques réseau compatibles avec le protocole PTP dans votre cluster
Pour obtenir une liste complète des périphériques réseau compatibles avec le protocole PTP dans votre cluster, exécutez la commande suivante :
$ oc get NodePtpDevice -n openshift-ptp -o yaml
Exemple de sortie
apiVersion: v1 items: - apiVersion: ptp.openshift.io/v1 kind: NodePtpDevice metadata: creationTimestamp: "2022-01-27T15:16:28Z" generation: 1 name: dev-worker-0 1 namespace: openshift-ptp resourceVersion: "6538103" uid: d42fc9ad-bcbf-4590-b6d8-b676c642781a spec: {} status: devices: 2 - name: eno1 - name: eno2 - name: eno3 - name: eno4 - name: enp5s0f0 - name: enp5s0f1 ...
18.5.2. Configuration des services linuxptp en tant qu'horloge ordinaire
Vous pouvez configurer les services linuxptp
(ptp4l
, phc2sys
) comme des horloges ordinaires en créant un objet PtpConfig
custom resource (CR).
Utilisez l'exemple suivant PtpConfig
CR comme base pour configurer les services linuxptp
en tant qu'horloge ordinaire pour votre matériel et votre environnement particuliers. Cet exemple CR ne configure pas les événements rapides PTP. Pour configurer les événements rapides PTP, définissez les valeurs appropriées pour ptp4lOpts
, ptp4lConf
, et ptpClockThreshold
. ptpClockThreshold
n'est nécessaire que lorsque les événements sont activés. Voir "Configuring the PTP fast event notifications publisher" (Configuration de l'éditeur de notifications d'événements rapides PTP) pour plus d'informations.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Installer l'opérateur PTP.
Procédure
Créez le CR
PtpConfig
suivant, puis enregistrez le YAML dans le fichierordinary-clock-ptp-config.yaml
.Configuration recommandée de l'horloge ordinaire PTP
apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: ordinary-clock-ptp-config namespace: openshift-ptp spec: profile: - name: ordinary-clock interface: "<interface_name>" phc2sysOpts: "-a -r -n 24" ptp4lOpts: "-2 -s" ptpSchedulingPolicy: SCHED_FIFO ptpSchedulingPriority: 10 ptp4lConf: | [global] # # Default Data Set # twoStepFlag 1 slaveOnly 1 priority1 128 priority2 128 domainNumber 24 clockClass 255 clockAccuracy 0xFE offsetScaledLogVariance 0xFFFF free_running 0 freq_est_interval 1 dscp_event 0 dscp_general 0 dataset_comparison G.8275.x G.8275.defaultDS.localPriority 128 # # Port Data Set # logAnnounceInterval -3 logSyncInterval -4 logMinDelayReqInterval -4 logMinPdelayReqInterval -4 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval 4 neighborPropDelayThresh 20000000 masterOnly 0 G.8275.portDS.localPriority 128 # # Run time options # assume_two_step 0 logging_level 6 path_trace_enabled 0 follow_up_info 0 hybrid_e2e 0 inhibit_multicast_service 0 net_sync_monitor 0 tc_spanning_tree 0 tx_timestamp_timeout 50 unicast_listen 0 unicast_master_table 0 unicast_req_duration 3600 use_syslog 1 verbose 0 summary_interval 0 kernel_leap 1 check_fup_sync 0 # # Servo Options # pi_proportional_const 0.0 pi_integral_const 0.0 pi_proportional_scale 0.0 pi_proportional_exponent -0.3 pi_proportional_norm_max 0.7 pi_integral_scale 0.0 pi_integral_exponent 0.4 pi_integral_norm_max 0.3 step_threshold 2.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 # # Transport options # transportSpecific 0x0 ptp_dst_mac 01:1B:19:00:00:00 p2p_dst_mac 01:80:C2:00:00:0E udp_ttl 1 udp6_scope 0x0E uds_address /var/run/ptp4l # # Default interface options # clock_type OC network_transport L2 delay_mechanism E2E time_stamping hardware tsproc_mode filter delay_filter moving_median delay_filter_length 10 egressLatency 0 ingressLatency 0 boundary_clock_jbod 0 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0xA0 recommend: - profile: ordinary-clock priority: 4 match: - nodeLabel: "node-role.kubernetes.io/worker" nodeName: "<node_name>"
Tableau 18.1. Options de configuration de l'horloge ordinaire PTP CR Champ de ressource personnalisé Description name
Le nom du CR
PtpConfig
.profile
Spécifier un tableau d'un ou plusieurs objets
profile
. Chaque profil doit être nommé de manière unique.interface
Indiquez l'interface réseau à utiliser par le service
ptp4l
, par exempleens787f1
.ptp4lOpts
Spécifiez les options de configuration du système pour le service
ptp4l
, par exemple-2
pour sélectionner le transport réseau IEEE 802.3. Les options ne doivent pas inclure le nom de l'interface réseau-i <interface>
et le fichier de configuration du service-f /etc/ptp4l.conf
, car le nom de l'interface réseau et le fichier de configuration du service sont automatiquement ajoutés. Ajoutez--summary_interval -4
pour utiliser les événements rapides PTP avec cette interface.phc2sysOpts
Spécifier les options de configuration du système pour le service
phc2sys
. Si ce champ est vide, l'opérateur PTP ne démarre pas le servicephc2sys
. Pour les cartes réseau Intel Columbiaville 800 Series, définissez les options dephc2sysOpts
sur-a -r -m -n 24 -N 8 -R 16
.-m
imprime les messages surstdout
.linuxptp-daemon
DaemonSet
analyse les journaux et génère des métriques Prometheus.ptp4lConf
Indiquez une chaîne contenant la configuration qui remplacera le fichier par défaut
/etc/ptp4l.conf
. Pour utiliser la configuration par défaut, laissez le champ vide.tx_timestamp_timeout
Pour les cartes réseau de la série 800 d'Intel Columbiaville, définissez
tx_timestamp_timeout
sur50
.boundary_clock_jbod
Pour les cartes réseau de la série 800 d'Intel Columbiaville, définissez
boundary_clock_jbod
sur0
.ptpSchedulingPolicy
Politique d'ordonnancement des processus
ptp4l
etphc2sys
. La valeur par défaut estSCHED_OTHER
. UtilisezSCHED_FIFO
sur les systèmes qui prennent en charge l'ordonnancement FIFO.ptpSchedulingPriority
Valeur entière de 1 à 65 utilisée pour définir la priorité FIFO pour les processus
ptp4l
etphc2sys
lorsqueptpSchedulingPolicy
est défini surSCHED_FIFO
. Le champptpSchedulingPriority
n'est pas utilisé lorsqueptpSchedulingPolicy
est défini surSCHED_OTHER
.ptpClockThreshold
Facultatif. Si
ptpClockThreshold
n'est pas présent, les valeurs par défaut sont utilisées pour les champsptpClockThreshold
.ptpClockThreshold
configure le délai de déconnexion de l'horloge maître PTP avant le déclenchement des événements PTP.holdOverTimeout
est la valeur temporelle en secondes avant que l'état de l'événement de l'horloge PTP ne passe àFREERUN
lorsque l'horloge maître PTP est déconnectée. Les paramètresmaxOffsetThreshold
etminOffsetThreshold
configurent les valeurs de décalage en nanosecondes qui se comparent aux valeurs deCLOCK_REALTIME
(phc2sys
) ou au décalage du maître (ptp4l
). Lorsque la valeur de décalageptp4l
ouphc2sys
est en dehors de cette plage, l'état de l'horloge PTP est réglé surFREERUN
. Lorsque la valeur de décalage est comprise dans cette plage, l'état de l'horloge PTP est réglé surLOCKED
.recommend
Spécifier un tableau d'un ou plusieurs objets
recommend
qui définissent les règles d'application deprofile
aux nœuds..recommend.profile
Indiquez le nom de l'objet
.recommend.profile
défini dans la sectionprofile
..recommend.priority
Réglez
.recommend.priority
sur0
pour une horloge ordinaire..recommend.match
Spécifiez les règles
.recommend.match
avecnodeLabel
ounodeName
..recommend.match.nodeLabel
Mettez à jour
nodeLabel
avec lekey
denode.Labels
à partir de l'objet nœud en utilisant la commandeoc get nodes --show-labels
. Par exemple :node-role.kubernetes.io/worker
..recommend.match.nodeLabel
Mettez à jour
nodeName
avec la valeur denode.Name
de l'objet nœud en utilisant la commandeoc get nodes
. Par exemple :compute-0.example.com
.Créez le CR
PtpConfig
en exécutant la commande suivante :$ oc create -f ordinary-clock-ptp-config.yaml
Vérification
Vérifiez que le profil
PtpConfig
est appliqué au nœud.Obtenez la liste des pods dans l'espace de noms
openshift-ptp
en exécutant la commande suivante :$ oc get pods -n openshift-ptp -o wide
Exemple de sortie
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkbb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com linuxptp-daemon-tdspf 1/1 Running 0 43m 10.1.196.25 compute-1.example.com ptp-operator-657bbb64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.com
Vérifiez que le profil est correct. Examinez les journaux du démon
linuxptp
qui correspond au nœud spécifié dans le profilPtpConfig
. Exécutez la commande suivante :$ oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-container
Exemple de sortie
I1115 09:41:17.117596 4143292 daemon.go:107] in applyNodePTPProfile I1115 09:41:17.117604 4143292 daemon.go:109] updating NodePTPProfile to: I1115 09:41:17.117607 4143292 daemon.go:110] ------------------------------------ I1115 09:41:17.117612 4143292 daemon.go:102] Profile Name: profile1 I1115 09:41:17.117616 4143292 daemon.go:102] Interface: ens787f1 I1115 09:41:17.117620 4143292 daemon.go:102] Ptp4lOpts: -2 -s I1115 09:41:17.117623 4143292 daemon.go:102] Phc2sysOpts: -a -r -n 24 I1115 09:41:17.117626 4143292 daemon.go:116] ------------------------------------
Ressources supplémentaires
- Pour plus d'informations sur l'ordonnancement des priorités FIFO sur le matériel PTP, voir Configuration de l'ordonnancement des priorités FIFO pour le matériel PTP.
- Pour plus d'informations sur la configuration des événements rapides PTP, voir Configuration de l'éditeur de notifications d'événements rapides PTP.
18.5.3. Configuration des services linuxptp en tant qu'horloge frontière
Vous pouvez configurer les services linuxptp
(ptp4l
, phc2sys
) en tant qu'horloge frontière en créant un objet PtpConfig
custom resource (CR).
Utilisez l'exemple suivant PtpConfig
CR comme base pour configurer les services linuxptp
en tant qu'horloge frontière pour votre matériel et votre environnement particuliers. Cet exemple CR ne configure pas les événements rapides PTP. Pour configurer les événements rapides PTP, définissez les valeurs appropriées pour ptp4lOpts
, ptp4lConf
et ptpClockThreshold
. ptpClockThreshold
n'est utilisé que lorsque les événements sont activés. Voir "Configuring the PTP fast event notifications publisher" (Configuration de l'éditeur de notifications d'événements rapides PTP) pour plus d'informations.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Installer l'opérateur PTP.
Procédure
Créez le CR
PtpConfig
suivant, puis enregistrez le YAML dans le fichierboundary-clock-ptp-config.yaml
.Configuration recommandée de l'horloge limite PTP
--- apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: boundary-clock-ptp-config namespace: openshift-ptp spec: profile: - name: boundary-clock phc2sysOpts: "-a -r -n 24" ptp4lOpts: "-2" ptpSchedulingPolicy: SCHED_FIFO ptpSchedulingPriority: 10 ptp4lConf: | [<interface_1>] masterOnly 0 [<interface_2>] masterOnly 1 [<interface_3>] masterOnly 1 [<interface_4>] masterOnly 1 [global] # # Default Data Set # twoStepFlag 1 slaveOnly 0 priority1 128 priority2 128 domainNumber 24 clockClass 248 clockAccuracy 0xFE offsetScaledLogVariance 0xFFFF free_running 0 freq_est_interval 1 dscp_event 0 dscp_general 0 dataset_comparison G.8275.x G.8275.defaultDS.localPriority 128 # # Port Data Set # logAnnounceInterval -3 logSyncInterval -4 logMinDelayReqInterval -4 logMinPdelayReqInterval -4 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval 4 neighborPropDelayThresh 20000000 masterOnly 0 G.8275.portDS.localPriority 128 # # Run time options # assume_two_step 0 logging_level 6 path_trace_enabled 0 follow_up_info 0 hybrid_e2e 0 inhibit_multicast_service 0 net_sync_monitor 0 tc_spanning_tree 0 tx_timestamp_timeout 50 unicast_listen 0 unicast_master_table 0 unicast_req_duration 3600 use_syslog 1 verbose 0 summary_interval 0 kernel_leap 1 check_fup_sync 0 # # Servo Options # pi_proportional_const 0.0 pi_integral_const 0.0 pi_proportional_scale 0.0 pi_proportional_exponent -0.3 pi_proportional_norm_max 0.7 pi_integral_scale 0.0 pi_integral_exponent 0.4 pi_integral_norm_max 0.3 step_threshold 2.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 # # Transport options # transportSpecific 0x0 ptp_dst_mac 01:1B:19:00:00:00 p2p_dst_mac 01:80:C2:00:00:0E udp_ttl 1 udp6_scope 0x0E uds_address /var/run/ptp4l # # Default interface options # clock_type BC network_transport L2 delay_mechanism E2E time_stamping hardware tsproc_mode filter delay_filter moving_median delay_filter_length 10 egressLatency 0 ingressLatency 0 boundary_clock_jbod 0 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0xA0 recommend: - profile: boundary-clock priority: 4 match: - nodeLabel: node-role.kubernetes.io/master nodeName: <nodename>
Tableau 18.2. Options de configuration de l'horloge boundary CR du PTP Champ de ressource personnalisé Description name
Le nom du CR
PtpConfig
.profile
Spécifier un tableau d'un ou plusieurs objets
profile
.name
Spécifiez le nom d'un objet de profil qui identifie de manière unique un objet de profil.
ptp4lOpts
Spécifiez les options de configuration du système pour le service
ptp4l
. Les options ne doivent pas inclure le nom de l'interface réseau-i <interface>
et le fichier de configuration du service-f /etc/ptp4l.conf
car le nom de l'interface réseau et le fichier de configuration du service sont automatiquement ajoutés.ptp4lConf
Spécifiez la configuration requise pour démarrer
ptp4l
en tant qu'horloge périphérique. Par exemple,ens1f0
se synchronise à partir d'une horloge grand maître etens1f3
synchronise les périphériques connectés.<interface_1>
L'interface qui reçoit l'horloge de synchronisation.
<interface_2>
L'interface qui envoie l'horloge de synchronisation.
tx_timestamp_timeout
Pour les cartes réseau de la série 800 d'Intel Columbiaville, définissez
tx_timestamp_timeout
sur50
.boundary_clock_jbod
Pour les cartes d'interface réseau de la série Intel Columbiaville 800, assurez-vous que
boundary_clock_jbod
est défini sur0
. Pour les cartes d'interface réseau de la série Intel Fortville X710, assurez-vous queboundary_clock_jbod
est défini sur1
.phc2sysOpts
Spécifier les options de configuration du système pour le service
phc2sys
. Si ce champ est vide, l'opérateur PTP ne démarre pas le servicephc2sys
.ptpSchedulingPolicy
Politique d'ordonnancement pour les processus ptp4l et phc2sys. La valeur par défaut est
SCHED_OTHER
. UtilisezSCHED_FIFO
sur les systèmes qui prennent en charge l'ordonnancement FIFO.ptpSchedulingPriority
Valeur entière de 1 à 65 utilisée pour définir la priorité FIFO pour les processus
ptp4l
etphc2sys
lorsqueptpSchedulingPolicy
est défini surSCHED_FIFO
. Le champptpSchedulingPriority
n'est pas utilisé lorsqueptpSchedulingPolicy
est défini surSCHED_OTHER
.ptpClockThreshold
Facultatif. Si
ptpClockThreshold
n'est pas présent, les valeurs par défaut sont utilisées pour les champsptpClockThreshold
.ptpClockThreshold
configure le délai de déconnexion de l'horloge maître PTP avant le déclenchement des événements PTP.holdOverTimeout
est la valeur temporelle en secondes avant que l'état de l'événement de l'horloge PTP ne passe àFREERUN
lorsque l'horloge maître PTP est déconnectée. Les paramètresmaxOffsetThreshold
etminOffsetThreshold
configurent les valeurs de décalage en nanosecondes qui se comparent aux valeurs deCLOCK_REALTIME
(phc2sys
) ou au décalage du maître (ptp4l
). Lorsque la valeur de décalageptp4l
ouphc2sys
est en dehors de cette plage, l'état de l'horloge PTP est réglé surFREERUN
. Lorsque la valeur de décalage est comprise dans cette plage, l'état de l'horloge PTP est réglé surLOCKED
.recommend
Spécifier un tableau d'un ou plusieurs objets
recommend
qui définissent les règles d'application deprofile
aux nœuds..recommend.profile
Indiquez le nom de l'objet
.recommend.profile
défini dans la sectionprofile
..recommend.priority
Spécifiez le champ
priority
avec une valeur entière comprise entre0
et99
. Un nombre plus élevé est moins prioritaire, de sorte qu'une priorité de99
est inférieure à une priorité de10
. Si un nœud peut être associé à plusieurs profils conformément aux règles définies dans le champmatch
, le profil ayant la priorité la plus élevée est appliqué à ce nœud..recommend.match
Spécifiez les règles
.recommend.match
avecnodeLabel
ounodeName
..recommend.match.nodeLabel
Mettez à jour
nodeLabel
avec lekey
denode.Labels
à partir de l'objet nœud en utilisant la commandeoc get nodes --show-labels
. Par exemple :node-role.kubernetes.io/worker
..recommend.match.nodeLabel
Mettez à jour
nodeName
avec la valeur denode.Name
de l'objet nœud en utilisant la commandeoc get nodes
. Par exemple :compute-0.example.com
.Créez le CR en exécutant la commande suivante :
$ oc create -f boundary-clock-ptp-config.yaml
Vérification
Vérifiez que le profil
PtpConfig
est appliqué au nœud.Obtenez la liste des pods dans l'espace de noms
openshift-ptp
en exécutant la commande suivante :$ oc get pods -n openshift-ptp -o wide
Exemple de sortie
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkbb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com linuxptp-daemon-tdspf 1/1 Running 0 43m 10.1.196.25 compute-1.example.com ptp-operator-657bbb64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.com
Vérifiez que le profil est correct. Examinez les journaux du démon
linuxptp
qui correspond au nœud spécifié dans le profilPtpConfig
. Exécutez la commande suivante :$ oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-container
Exemple de sortie
I1115 09:41:17.117596 4143292 daemon.go:107] in applyNodePTPProfile I1115 09:41:17.117604 4143292 daemon.go:109] updating NodePTPProfile to: I1115 09:41:17.117607 4143292 daemon.go:110] ------------------------------------ I1115 09:41:17.117612 4143292 daemon.go:102] Profile Name: profile1 I1115 09:41:17.117616 4143292 daemon.go:102] Interface: I1115 09:41:17.117620 4143292 daemon.go:102] Ptp4lOpts: -2 I1115 09:41:17.117623 4143292 daemon.go:102] Phc2sysOpts: -a -r -n 24 I1115 09:41:17.117626 4143292 daemon.go:116] ------------------------------------
Ressources supplémentaires
- Pour plus d'informations sur l'ordonnancement des priorités FIFO sur le matériel PTP, voir Configuration de l'ordonnancement des priorités FIFO pour le matériel PTP.
- Pour plus d'informations sur la configuration des événements rapides PTP, voir Configuration de l'éditeur de notifications d'événements rapides PTP.
18.5.4. Configuration des services linuxptp en tant qu'horloges limites pour le matériel à double carte réseau
Le matériel Precision Time Protocol (PTP) avec deux NIC configurés en tant qu'horloges limites est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes d'un point de vue fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Vous pouvez configurer les services linuxptp
(ptp4l
, phc2sys
) en tant qu'horloges limites pour le matériel à deux NIC en créant un objet de ressource personnalisée (CR) PtpConfig
pour chaque NIC.
Le matériel Dual NIC vous permet de connecter chaque NIC à la même horloge leader en amont, avec des instances ptp4l
distinctes pour chaque NIC alimentant les horloges en aval.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Installer l'opérateur PTP.
Procédure
Créez deux CR
PtpConfig
distincts, un pour chaque NIC, en utilisant le CR de référence dans "Configuring linuxptp services as a boundary clock" comme base pour chaque CR. Par exemple :Créez
boundary-clock-ptp-config-nic1.yaml
, en spécifiant des valeurs pourphc2sysOpts
:apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: boundary-clock-ptp-config-nic1 namespace: openshift-ptp spec: profile: - name: "profile1" ptp4lOpts: "-2 --summary_interval -4" ptp4lConf: | 1 [ens5f1] masterOnly 1 [ens5f0] masterOnly 0 ... phc2sysOpts: "-a -r -m -n 24 -N 8 -R 16" 2
- 1
- Spécifiez les interfaces requises pour démarrer
ptp4l
en tant qu'horloge périphérique. Par exemple,ens5f0
se synchronise à partir d'une horloge grand maître etens5f1
synchronise les périphériques connectés. - 2
- Valeurs requises
phc2sysOpts
.-m
imprime des messages àstdout
.linuxptp-daemon
DaemonSet
analyse les journaux et génère des métriques Prometheus.
Créez
boundary-clock-ptp-config-nic2.yaml
, en supprimant complètement le champphc2sysOpts
pour désactiver le servicephc2sys
pour le deuxième NIC :apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: boundary-clock-ptp-config-nic2 namespace: openshift-ptp spec: profile: - name: "profile2" ptp4lOpts: "-2 --summary_interval -4" ptp4lConf: | 1 [ens7f1] masterOnly 1 [ens7f0] masterOnly 0 ...
- 1
- Spécifiez les interfaces requises pour démarrer
ptp4l
en tant qu'horloge périphérique sur le second NIC.
NoteVous devez supprimer complètement le champ
phc2sysOpts
du deuxième CRPtpConfig
pour désactiver le servicephc2sys
sur le deuxième NIC.
Créez les CR double NIC
PtpConfig
en exécutant les commandes suivantes :Créez le CR qui configure le PTP pour le premier NIC :
$ oc create -f boundary-clock-ptp-config-nic1.yaml
Créez le CR qui configure le PTP pour le second NIC :
$ oc create -f boundary-clock-ptp-config-nic2.yaml
Vérification
Vérifiez que l'opérateur PTP a appliqué les CR
PtpConfig
pour les deux NIC. Examinez les journaux du démonlinuxptp
correspondant au nœud sur lequel est installé le matériel à double carte d'interface réseau. Par exemple, exécutez la commande suivante :$ oc logs linuxptp-daemon-cvgr6 -n openshift-ptp -c linuxptp-daemon-container
Exemple de sortie
ptp4l[80828.335]: [ptp4l.1.config] master offset 5 s2 freq -5727 path delay 519 ptp4l[80828.343]: [ptp4l.0.config] master offset -5 s2 freq -10607 path delay 533 phc2sys[80828.390]: [ptp4l.0.config] CLOCK_REALTIME phc offset 1 s2 freq -87239 delay 539
18.5.5. Intel Columbiaville E800 series NIC comme référence d'horloge ordinaire PTP
Le tableau suivant décrit les modifications que vous devez apporter à la configuration PTP de référence afin d'utiliser les cartes d'interface réseau de la série Intel Columbiaville E800 comme horloges ordinaires. Apportez les modifications dans une ressource personnalisée (CR) PtpConfig
que vous appliquez au cluster.
Configuration PTP | Réglage recommandé |
---|---|
|
|
|
|
|
|
Pour phc2sysOpts
, -m
imprime des messages à stdout
. linuxptp-daemon
DaemonSet
analyse les journaux et génère des métriques Prometheus.
Ressources supplémentaires
-
Pour un exemple complet de CR qui configure les services
linuxptp
en tant qu'horloge ordinaire avec des événements PTP rapides, voir Configuration des services linuxptp en tant qu'horloge ordinaire.
18.5.6. Configuration de l'ordonnancement des priorités FIFO pour le matériel PTP
Dans les télécoms ou autres configurations de déploiement nécessitant une faible latence, les threads du démon PTP s'exécutent dans un espace CPU restreint, aux côtés du reste des composants de l'infrastructure. Par défaut, les threads PTP s'exécutent avec la stratégie SCHED_OTHER
. En cas de forte charge, ces threads risquent de ne pas bénéficier de la latence de planification dont ils ont besoin pour fonctionner sans erreur.
Pour atténuer les erreurs potentielles de latence d'ordonnancement, vous pouvez configurer les services linuxptp
de l'opérateur PTP pour permettre aux threads de s'exécuter avec une politique SCHED_FIFO
. Si SCHED_FIFO
est défini pour un CR PtpConfig
, alors ptp4l
et phc2sys
s'exécuteront dans le conteneur parent sous chrt
avec une priorité définie par le champ ptpSchedulingPriority
du CR PtpConfig
.
Le réglage de ptpSchedulingPolicy
est facultatif et n'est nécessaire que si vous rencontrez des erreurs de latence.
Procédure
Modifier le profil
PtpConfig
CR :$ oc edit PtpConfig -n openshift-ptp
Modifiez les champs
ptpSchedulingPolicy
etptpSchedulingPriority
:apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: <ptp_config_name> namespace: openshift-ptp ... spec: profile: - name: "profile1" ... ptpSchedulingPolicy: SCHED_FIFO 1 ptpSchedulingPriority: 10 2
-
Sauvegardez et quittez pour appliquer les changements à
PtpConfig
CR.
Vérification
Obtenir le nom du pod
linuxptp-daemon
et du nœud correspondant où la CRPtpConfig
a été appliquée :$ oc get pods -n openshift-ptp -o wide
Exemple de sortie
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-gmv2n 3/3 Running 0 1d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-lgm55 3/3 Running 0 1d17h 10.1.196.25 compute-1.example.com ptp-operator-3r4dcvf7f4-zndk7 1/1 Running 0 1d7h 10.129.0.61 control-plane-1.example.com
Vérifier que le processus
ptp4l
s'exécute avec la priorité FIFO mise à jour dechrt
:$ oc -n openshift-ptp logs linuxptp-daemon-lgm55 -c linuxptp-daemon-container|grep chrt
Exemple de sortie
I1216 19:24:57.091872 1600715 daemon.go:285] /bin/chrt -f 65 /usr/sbin/ptp4l -f /var/run/ptp4l.0.config -2 --summary_interval -4 -m
18.5.7. Configuration du filtrage des journaux pour les services linuxptp
Le démon linuxptp
génère des journaux que vous pouvez utiliser à des fins de débogage. Dans les télécoms ou d'autres configurations de déploiement qui disposent d'une capacité de stockage limitée, ces journaux peuvent augmenter la demande de stockage.
Pour réduire le nombre de messages de journalisation, vous pouvez configurer la ressource personnalisée (CR) PtpConfig
afin d'exclure les messages de journalisation qui indiquent la valeur master offset
. Le message master offset
indique la différence entre l'horloge du nœud actuel et l'horloge principale en nanosecondes.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Installer l'opérateur PTP.
Procédure
Modifier le CR
PtpConfig
:$ oc edit PtpConfig -n openshift-ptp
Dans
spec.profile
, ajoutez la spécificationptpSettings.logReduce
et fixez la valeur àtrue
:apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: <ptp_config_name> namespace: openshift-ptp ... spec: profile: - name: "profile1" ... ptpSettings: logReduce: "true"
NoteÀ des fins de débogage, vous pouvez renvoyer cette spécification à
False
pour inclure les messages de décalage du maître.-
Sauvegardez et quittez pour appliquer les changements à
PtpConfig
CR.
Vérification
Obtenir le nom du pod
linuxptp-daemon
et du nœud correspondant où la CRPtpConfig
a été appliquée :$ oc get pods -n openshift-ptp -o wide
Exemple de sortie
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-gmv2n 3/3 Running 0 1d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-lgm55 3/3 Running 0 1d17h 10.1.196.25 compute-1.example.com ptp-operator-3r4dcvf7f4-zndk7 1/1 Running 0 1d7h 10.129.0.61 control-plane-1.example.com
Vérifiez que les messages de décalage du maître sont exclus des journaux en exécutant la commande suivante :
$ oc -n openshift-ptp logs <linux_daemon_container> -c linuxptp-daemon-container | grep "master offset" 1
- 1
- <linux_daemon_container> est le nom du pod
linuxptp-daemon
, par exemplelinuxptp-daemon-gmv2n
.
Lorsque vous configurez la spécification
logReduce
, cette commande ne signale aucune instance demaster offset
dans les journaux du démonlinuxptp
.