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
    ...

    1
    La valeur du paramètre name est identique au nom du nœud parent.
    2
    La collection devices comprend une liste des dispositifs compatibles PTP que l'opérateur PTP découvre pour le nœud.

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).

Note

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

  1. Créez le CR PtpConfig suivant, puis enregistrez le YAML dans le fichier ordinary-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 exemple ens787f1.

    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 service phc2sys. Pour les cartes réseau Intel Columbiaville 800 Series, définissez les options de phc2sysOpts sur -a -r -m -n 24 -N 8 -R 16. -m imprime les messages sur stdout. 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 sur 50.

    boundary_clock_jbod

    Pour les cartes réseau de la série 800 d'Intel Columbiaville, définissez boundary_clock_jbod sur 0.

    ptpSchedulingPolicy

    Politique d'ordonnancement des processus ptp4l et phc2sys. La valeur par défaut est SCHED_OTHER. Utilisez SCHED_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 et phc2sys lorsque ptpSchedulingPolicy est défini sur SCHED_FIFO. Le champ ptpSchedulingPriority n'est pas utilisé lorsque ptpSchedulingPolicy est défini sur SCHED_OTHER.

    ptpClockThreshold

    Facultatif. Si ptpClockThreshold n'est pas présent, les valeurs par défaut sont utilisées pour les champs ptpClockThreshold. 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ètres maxOffsetThreshold et minOffsetThreshold configurent les valeurs de décalage en nanosecondes qui se comparent aux valeurs de CLOCK_REALTIME (phc2sys) ou au décalage du maître (ptp4l). Lorsque la valeur de décalage ptp4l ou phc2sys est en dehors de cette plage, l'état de l'horloge PTP est réglé sur FREERUN. Lorsque la valeur de décalage est comprise dans cette plage, l'état de l'horloge PTP est réglé sur LOCKED.

    recommend

    Spécifier un tableau d'un ou plusieurs objets recommend qui définissent les règles d'application de profile aux nœuds.

    .recommend.profile

    Indiquez le nom de l'objet .recommend.profile défini dans la section profile.

    .recommend.priority

    Réglez .recommend.priority sur 0 pour une horloge ordinaire.

    .recommend.match

    Spécifiez les règles .recommend.match avec nodeLabel ou nodeName.

    .recommend.match.nodeLabel

    Mettez à jour nodeLabel avec le key de node.Labels à partir de l'objet nœud en utilisant la commande oc get nodes --show-labels. Par exemple : node-role.kubernetes.io/worker.

    .recommend.match.nodeLabel

    Mettez à jour nodeName avec la valeur de node.Name de l'objet nœud en utilisant la commande oc get nodes. Par exemple : compute-0.example.com.

  2. Créez le CR PtpConfig en exécutant la commande suivante :

    $ oc create -f ordinary-clock-ptp-config.yaml

Vérification

  1. Vérifiez que le profil PtpConfig est appliqué au nœud.

    1. 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

    2. Vérifiez que le profil est correct. Examinez les journaux du démon linuxptp qui correspond au nœud spécifié dans le profil PtpConfig. 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

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).

Note

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

  1. Créez le CR PtpConfig suivant, puis enregistrez le YAML dans le fichier boundary-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 et ens1f3 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 sur 50.

    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 sur 0. Pour les cartes d'interface réseau de la série Intel Fortville X710, assurez-vous que boundary_clock_jbod est défini sur 1.

    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 service phc2sys.

    ptpSchedulingPolicy

    Politique d'ordonnancement pour les processus ptp4l et phc2sys. La valeur par défaut est SCHED_OTHER. Utilisez SCHED_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 et phc2sys lorsque ptpSchedulingPolicy est défini sur SCHED_FIFO. Le champ ptpSchedulingPriority n'est pas utilisé lorsque ptpSchedulingPolicy est défini sur SCHED_OTHER.

    ptpClockThreshold

    Facultatif. Si ptpClockThreshold n'est pas présent, les valeurs par défaut sont utilisées pour les champs ptpClockThreshold. 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ètres maxOffsetThreshold et minOffsetThreshold configurent les valeurs de décalage en nanosecondes qui se comparent aux valeurs de CLOCK_REALTIME (phc2sys) ou au décalage du maître (ptp4l). Lorsque la valeur de décalage ptp4l ou phc2sys est en dehors de cette plage, l'état de l'horloge PTP est réglé sur FREERUN. Lorsque la valeur de décalage est comprise dans cette plage, l'état de l'horloge PTP est réglé sur LOCKED.

    recommend

    Spécifier un tableau d'un ou plusieurs objets recommend qui définissent les règles d'application de profile aux nœuds.

    .recommend.profile

    Indiquez le nom de l'objet .recommend.profile défini dans la section profile.

    .recommend.priority

    Spécifiez le champ priority avec une valeur entière comprise entre 0 et 99. Un nombre plus élevé est moins prioritaire, de sorte qu'une priorité de 99 est inférieure à une priorité de 10. Si un nœud peut être associé à plusieurs profils conformément aux règles définies dans le champ match, le profil ayant la priorité la plus élevée est appliqué à ce nœud.

    .recommend.match

    Spécifiez les règles .recommend.match avec nodeLabel ou nodeName.

    .recommend.match.nodeLabel

    Mettez à jour nodeLabel avec le key de node.Labels à partir de l'objet nœud en utilisant la commande oc get nodes --show-labels. Par exemple : node-role.kubernetes.io/worker.

    .recommend.match.nodeLabel

    Mettez à jour nodeName avec la valeur de node.Name de l'objet nœud en utilisant la commande oc get nodes. Par exemple : compute-0.example.com.

  2. Créez le CR en exécutant la commande suivante :

    $ oc create -f boundary-clock-ptp-config.yaml

Vérification

  1. Vérifiez que le profil PtpConfig est appliqué au nœud.

    1. 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

    2. Vérifiez que le profil est correct. Examinez les journaux du démon linuxptp qui correspond au nœud spécifié dans le profil PtpConfig. 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

18.5.4. Configuration des services linuxptp en tant qu'horloges limites pour le matériel à double carte réseau

Important

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

  1. 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 :

    1. Créez boundary-clock-ptp-config-nic1.yaml, en spécifiant des valeurs pour phc2sysOpts:

      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 et ens5f1 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.
    2. Créez boundary-clock-ptp-config-nic2.yaml, en supprimant complètement le champ phc2sysOpts pour désactiver le service phc2sys 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.
      Note

      Vous devez supprimer complètement le champ phc2sysOpts du deuxième CR PtpConfig pour désactiver le service phc2sys sur le deuxième NIC.

  2. Créez les CR double NIC PtpConfig en exécutant les commandes suivantes :

    1. Créez le CR qui configure le PTP pour le premier NIC :

      $ oc create -f boundary-clock-ptp-config-nic1.yaml
    2. 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émon linuxptp 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.

Tableau 18.3. Paramètres PTP recommandés pour Intel Columbiaville NIC
Configuration PTPRéglage recommandé

phc2sysOpts

-a -r -m -n 24 -N 8 -R 16

tx_timestamp_timeout

50

boundary_clock_jbod

0

Note

Pour phc2sysOpts, -m imprime des messages à stdout. linuxptp-daemon DaemonSet analyse les journaux et génère des métriques Prometheus.

Ressources supplémentaires

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.

Note

Le réglage de ptpSchedulingPolicy est facultatif et n'est nécessaire que si vous rencontrez des erreurs de latence.

Procédure

  1. Modifier le profil PtpConfig CR :

    $ oc edit PtpConfig -n openshift-ptp
  2. Modifiez les champs ptpSchedulingPolicy et ptpSchedulingPriority:

    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
    1
    Politique d'ordonnancement pour les processus ptp4l et phc2sys. Utilisez SCHED_FIFO sur les systèmes qui prennent en charge l'ordonnancement FIFO.
    2
    Requis. Définit la valeur entière 1-65 utilisée pour configurer la priorité FIFO pour les processus ptp4l et phc2sys.
  3. Sauvegardez et quittez pour appliquer les changements à PtpConfig CR.

Vérification

  1. Obtenir le nom du pod linuxptp-daemon et du nœud correspondant où la CR PtpConfig 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

  2. Vérifier que le processus ptp4l s'exécute avec la priorité FIFO mise à jour de chrt:

    $ 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

  1. Modifier le CR PtpConfig:

    $ oc edit PtpConfig -n openshift-ptp
  2. Dans spec.profile, ajoutez la spécification ptpSettings.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.

  3. Sauvegardez et quittez pour appliquer les changements à PtpConfig CR.

Vérification

  1. Obtenir le nom du pod linuxptp-daemon et du nœud correspondant où la CR PtpConfig 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

  2. 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 exemple linuxptp-daemon-gmv2n.

    Lorsque vous configurez la spécification logReduce, cette commande ne signale aucune instance de master offset dans les journaux du démon linuxptp.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.