11.7. linuxptp 서비스를 경계 클록으로 구성


PTP Operator는 PtpConfig.ptp.openshift.io CRD(custom resource definition)를 OpenShift Container Platform에 추가합니다. PtpConfig CR(사용자 정의 리소스) 오브젝트를 생성하여 linuxptp 서비스 (ptp4l, phc2sys)를 구성할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • PTP Operator를 설치합니다.

절차

  1. 다음 PtpConfig CR을 만든 다음 YAML을 boundary-clock-ptp-config.yaml 파일에 저장합니다.

    apiVersion: ptp.openshift.io/v1
    kind: PtpConfig
    metadata:
      name: boundary-clock-ptp-config 1
      namespace: openshift-ptp
    spec:
      profile: 2
      - name: "profile1" 3
        interface: "" 4
        ptp4lOpts: "-2" 5
        ptp4lConf: | 6
          [ens1f0] 7
          masterOnly 0
          [ens1f3] 8
          masterOnly 1
          [global]
          #
          # Default Data Set
          #
          twoStepFlag                       1
          #slaveOnly                        1
          priority1                         128
          priority2                         128
          domainNumber                      24
          #utc_offset                       37
          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       10
          #was 1 (default !)
          unicast_listen          0
          unicast_master_table  0
          unicast_req_duration  3600
          use_syslog              1
          verbose                   0
          summary_interval      -4
          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    UDPv4
          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 9
          #
          # Clock description
          #
          productDescription    ;;
          revisionData            ;;
          manufacturerIdentity  00:00:00
          userDescription         ;
          timeSource              0xA0
        phc2sysOpts: "-a -r" 10
        ptpSchedulingPolicy: SCHED_OTHER 11
        ptpSchedulingPriority: 10 12
      recommend: 13
      - profile: "profile1" 14
        priority: 10 15
        match: 16
        - nodeLabel: "node-role.kubernetes.io/worker" 17
          nodeName: "compute-0.example.com" 18
    1
    PtpConfig CR의 이름입니다.
    2
    하나 이상의 profile 오브젝트의 배열을 지정합니다.
    3
    프로파일 오브젝트를 고유하게 식별하는 프로파일 오브젝트의 이름을 지정합니다.
    4
    이 필드는 경계 클록에 대해 비어 있어야 합니다.
    5
    ptp4l 서비스에 대한 시스템 구성 옵션을 지정합니다(예: -2). 옵션은 네트워크 인터페이스 이름과 서비스 구성 파일이 자동으로 추가되므로 네트워크 인터페이스 이름 -i <interface> 및 서비스 구성 파일 -f /etc/ptp4l.conf를 포함하지 않아야 합니다.
    6
    ptp4l을 경계 클록으로 시작하는 데 필요한 구성을 지정합니다. 예를 들어 ens1f0 은 그랜드 마스터 클록에서 동기화되고 ens1f3은 연결된 장치를 동기화합니다.
    7
    동기화할 인터페이스 이름입니다.
    8
    인터페이스에 연결된 장치를 동기화하는 인터페이스입니다.
    9
    Intel Columbiaville 800 시리즈 NIC의 경우 boundary_clock_jbod0 으로 설정되어 있는지 확인합니다. Intel Fortville X710 시리즈 NIC의 경우 boundary_clock_jbod1 로 설정되어 있는지 확인합니다.
    10
    phc2sys 서비스에 대한 시스템 구성 옵션을 지정합니다(예: -a -r). 이 필드가 비어 있으면 PTP Operator에서 phc2sys 서비스를 시작하지 않습니다.
    11
    ptp4l 및 phc2sys 프로세스에 대한 스케줄링 정책. 기본값은 SCHED_OTHER 입니다. FIFO 예약을 지원하는 시스템에서 SCHED_FIFO 를 사용합니다.
    12
    ptpSchedulingPolicy 가ECDHE _FIFO로 설정된 경우 ptp4lphc2sys 프로세스의 FIFO 우선 순위를 설정하는 데 사용되는 1-65의 정수 값입니다. ptpSchedulingPriority 필드는 ptpSchedulingPolicy 가ECDHE _OTHER 로 설정된 경우 사용되지 않습니다.
    13
    프로필 을 노드에 적용하는 방법에 대한 규칙을 정의하는 하나 이상의 recommend 오브젝트 배열을 지정합니다.
    14
    profile 섹션에 정의된 profile 오브젝트 이름을 지정합니다.
    15
    0에서 99 사이의 정수 값으로 priority를 지정합니다. 숫자가 클수록 우선순위가 낮으므로 우선순위 99는 우선순위 10보다 낮습니다. match 필드에 정의된 규칙에 따라 여러 프로필과 노드를 일치시킬 수 있는 경우 우선 순위가 높은 프로필이 해당 노드에 적용됩니다.
    16
    nodeLabel 또는 nodeName으로 일치 규칙을 지정합니다.
    17
    oc get nodes --show-labels 명령을 사용하여 노드 오브젝트에서 node.Labels 키를 사용하여 nodeLabel 을 지정합니다.
    18
    oc get nodes 명령을 사용하여 노드 오브젝트에서 node.Name 으로 nodeName 을 지정합니다.
  2. 다음 명령을 실행하여 CR을 생성합니다.

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

검증 절차

  1. PtpConfig 프로필이 노드에 적용되었는지 확인합니다.

    1. 다음 명령을 실행하여 openshift-ptp 네임스페이스에서 Pod 목록을 가져옵니다.

      $ oc get pods -n openshift-ptp -o wide

      출력 예

      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. 프로필이 올바른지 확인합니다. PtpConfig 프로필에 지정한 노드에 해당하는 linuxptp 데몬의 로그를 검사합니다. 다음 명령을 실행합니다.

      $ oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-container

      출력 예

      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
      I1115 09:41:17.117626 4143292 daemon.go:116] ------------------------------------

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.