This section describes how to configure a Dual Intel Westport NIC in the LLS-C1 T-GM mode using the PTP timing pod.
Prerequisites
Create and Apply a Host Profile to a Cell Site Group.
Note:While creating the host profile, add a dedicated PCI Group for each vmnic you want to use for PTP (Server and Client).
The following topology diagram is an example configuration:
NIC1 PF3 is connected to RU1 NIC2
PF1 is connected to RU2 NIC1
(Optional) PF1 is connected to Midhaul and serves as a secondary source of PTP and SyncE
Procedure
- Navigate to Catalog > Network Function in the Telco Cloud Automation UI.
- Select the Network Function you want to set up in LLS-C1 T-GM mode and click EDIT.
- Click the Topology tab, and select and drag 'Helm' from Components to the workspace.
- Enter all the required details for the VMware PTP Timing Pod:
- Properties:
Name: tca-timing-pod
Description: Description of the helm chart
Chart Name: Chart name of the timing-pod. The value must be 'tca-timing-pod'
Chart Version: tca-timing-pod helm version
Helm Version: tca-timing-pod helm version (v3)
- Help Property Overrides: Add an entry for the values.yaml file
- Depends On (Optional): Select the timing pod helm chart and add it as a dependency to your DU Helm chart.
Note: tca-timing-pod must start before any other pods that are part of the network function.
- Properties:
- Edit the network function helm charts to add the dependency on the timing pod.
- Save the changes.
- Click the Infrastructure Requirements tab.
- Add a PTP device for each port that is connected to RU.
Caution:
To sync the PTP Hardware Clock (PHC) from GNSS, a PTP device from PF0 is also required.
PF0 can also be used for other purposes, for example, to connect to an RU or the secondary source of PTP.
Secondary timing source:
If a secondary source of PTP is available, tca-timing-pod can also sync DU to the secondary source in case GNSS is down. Add a PTP device for the secondary PTP source, but it is optional.
If a secondary source of SyncE is available, tca-timing-pod can increase the DU holdover time by using SyncE in the following scenarios. Add a device of PTP type in CSAR for the secondary SyncE source, but is optional.
GNSS is down and secondary source of PTP is not provided.
GNSS is down and secondary source of PTP is also down.
- Instantiate the network function.
Namespace for tca-timing-pod helm: For tca-timing-pod helm charts, do not use 'tca-system' namespace. Use the same namespace where the DU application will be installed.
In the following screenshot, 'testnf' namespace is used for both the DU application and tca-timing-pod.
values.yaml for tca-timing-pod:
In the below sample file, the value of GNSSHoldoverTimeout is set to 14400s (=4 hours) based on Intel’s recommendation of the Holdover period for Intel Westport NICs. You can change this value.
Modify other fields such as SecondaryPTPSource, SecondarySynceSource, interface names in Synce4lNic1GmConf, Synce4lNic1BcConf, and Ptp4lNic1Conf based on the setup in use.
The name of the PTP device from the first port must be 'ptp'.
Notes:
Use 'tca-system' as namespace in the tca-timing-pod values.yaml
Use 3 as the ProfileId for Single WPC.
Example: values.yaml for tca-timing-pod
ProfileId: "4" # 1: T-TSC, 2: T-BC, 3: T-GM, 4: Dual WPC # GNSS state Polling interval in seconds GnssStatePollInterval: "2" # When the timing pod is stated with ProfileId 3 (T-GM), once GNSS disconnection # is detected it goes into the HOLDOVER state and continue operating in T-GM mode. # At the end of the Holdover period, if a secondary PTP source is available, it switches # to Boundary Clock Mode. If a secondary PTP source is not available it transitions to # FREERUN state GnssHolderoverTimeout: "14400" # In seconds # If SecondaryPTPSource is provided, # then Timing source will be switched to SecondaryPTPSource from MH when GNSS status is offline # Provide Interface name on worker node VM where PTP packets are received from secondary source on primary NIC e.g Intel Westport # or secondary NIC e.g Intel Salem channel SecondaryPTPSource: "" # Boolean flag to indicate if secondary ptp source is on secondary(OCP) NIC # "true" if secondary source in on secondary(OCP) NIC # "false" if secondary source is on primary NIC SecondaryPTPSourceOnSecondaryNIC: "" # If SecondarySynceSource is provided, # then Timing source will be switched to SecondarySynceSource when: a. GNSS status is offline and SecondaryPTPSource is not present # b. SecondaryPTPSource goes out of sync # Provide Interface name on worker node VM where synce packets are received from secondary synce source SecondarySynceSource: "" namespace: tca-system nodeSelector: { key: value } Containers: TimingController: name: timing-controller image: vmwaresaas.jfrog.io/registry/tca-timing-controller:5.0.0 MessageQueue: name: rabbitmq image: vmwaresaas.jfrog.io/registry/rabbitmq:3.12-management Monitor: name: monitor image: vmwaresaas.jfrog.io/registry/ptp-ocloud-notifications-monitor:5.0.0 # tsp2hc config for 1st NIC (with GNSS module) Ts2phcNic1Conf: | [global] use_syslog 1 verbose 0 logging_level 6 ts2phc.pulsewidth 100000000 ts2phc.nmea_serialport /dev/ttyGNSS_0300 message_tag ts2phc_nic1 [ptp] ts2phc.extts_polarity rising # tsp2hc config for 2nd NIC (without GNSS module) Ts2phcNic2Conf: | [global] use_syslog 0 verbose 1 logging_level 7 ts2phc.pulsewidth 100000000 message_tag ts2phc_nic2 [nic2-eth1] ts2phc.channel 1 ts2phc.extts_polarity rising ts2phc.pin_index 1 # tsp2hc cmdline options for 1st NIC (with GNSS module) Ts2phcNic1Opts: | -m -s nmea --leapfile /usr/share/zoneinfo/leap-seconds.list # path inside timing pod where leap-seconds file should be mounted. # same path should be provided in Ts2phcNic1Opts for using leapfile LeapfileMountPath: "/usr/share/zoneinfo/leap-seconds.list" # tsp2hc cmdline options for 2nd NIC (without GNSS module) Ts2phcNic2Opts: | -m -s generic --leapfile /usr/share/zoneinfo/leap-seconds.list # synce4l config for 1st NIC, when operating in T-GM Mode Synce4lNic1GmConf: | [global] logging_level 7 use_syslog 0 verbose 1 message_tag [synce4l_nic1] [<synce1>] input_mode external network_option 1 external_input_QL 1 external_input_ext_QL 33 extended_tlv 1 recover_time 20 eec_get_state_cmd cat /sys/class/net/ptp/device/dpll_0_state eec_holdover_value 4 eec_locked_ho_value 3 eec_locked_value 2 eec_freerun_value 1 eec_invalid_value 0 # interface connected to RU [nic1-eth2] tx_heartbeat_msec 1000 rx_heartbeat_msec 500 recover_clock_enable_cmd echo 1 0 > /sys/class/net/nic1-eth2/device/phy/synce recover_clock_disable_cmd echo 0 0 > /sys/class/net/nic1-eth2/device/phy/synce # synce4l config for 2nd NIC Synce4lNic2Conf: | [global] logging_level 7 use_syslog 0 verbose 1 message_tag [synce4l_nic2] [<synce2>] input_mode external network_option 1 external_input_QL 1 external_input_ext_QL 33 extended_tlv 1 recover_time 20 eec_get_state_cmd cat /sys/class/net/nic2-eth1/device/dpll_0_state eec_holdover_value 4 eec_locked_ho_value 3 eec_locked_value 2 eec_freerun_value 1 eec_invalid_value 0 # interface connected to RU [nic2-eth2] tx_heartbeat_msec 1000 rx_heartbeat_msec 500 recover_clock_enable_cmd echo 1 0 > /sys/class/net/nic2-eth2/device/phy/synce recover_clock_disable_cmd echo 0 0 > /sys/class/net/nic2-eth2/device/phy/synce # synce4l config for 1st NIC, when operating in T-BC Mode Synce4lNic1BcConf: | [global] logging_level 7 use_syslog 0 verbose 1 message_tag [synce4l] [<synce1>] input_mode line network_option 1 extended_tlv 1 recover_time 20 eec_get_state_cmd cat /sys/class/net/ptp/device/dpll_0_state eec_holdover_value 4 eec_locked_ho_value 3 eec_locked_value 2 eec_freerun_value 1 eec_invalid_value 0 # interface connected to secondary synce source [nic1-eth2] tx_heartbeat_msec 1000 rx_heartbeat_msec 500 recover_clock_enable_cmd echo 1 0 > /sys/class/net/nic1-eth2/device/phy/synce recover_clock_disable_cmd echo 0 # interface connected to RU [nic1-eth4] tx_heartbeat_msec 1000 rx_heartbeat_msec 500 recover_clock_enable_cmd echo 0 recover_clock_disable_cmd echo 0 # ptp4l config for 1st WPC when operating in T-GM mode Ptp4lNic1Conf: | [global] # # Default Data Set # twoStepFlag 1 clientOnly 0 socket_priority 0 priority1 128 priority2 128 domainNumber 24 utc_offset 37 clockClass 6 clockAccuracy 0x21 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 maxStepsRemoved 255 # # Port Data Set # logAnnounceInterval -3 logSyncInterval -4 operLogSyncInterval 0 logMinDelayReqInterval -4 logMinPdelayReqInterval 0 operLogPdelayReqInterval 0 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval 4 neighborPropDelayThresh 20000000 serverOnly 0 G.8275.portDS.localPriority 128 asCapable auto BMCA ptp inhibit_announce 0 inhibit_delay_req 0 ignore_source_id 0 # # 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 300 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 0.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 msg_interval_request 0 servo_num_offset_values 10 servo_offset_threshold 0 write_phase_mode 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_nic1 uds_ro_address /var/run/ptp4lro_nic1 # # 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 1 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0x20 clock_class_threshold 7 # interface's connected to RUs [nic1-eth4] serverOnly 1 Ptp4lNic2Conf: | [global] # # Default Data Set # twoStepFlag 1 clientOnly 0 socket_priority 0 priority1 128 priority2 128 domainNumber 24 utc_offset 37 clockClass 6 clockAccuracy 0x21 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 maxStepsRemoved 255 # # Port Data Set # logAnnounceInterval -3 logSyncInterval -4 operLogSyncInterval 0 logMinDelayReqInterval -4 logMinPdelayReqInterval 0 operLogPdelayReqInterval 0 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval 4 neighborPropDelayThresh 20000000 serverOnly 1 G.8275.portDS.localPriority 128 asCapable auto BMCA ptp inhibit_announce 0 inhibit_delay_req 0 ignore_source_id 0 # # 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 300 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 0.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 msg_interval_request 0 servo_num_offset_values 10 servo_offset_threshold 0 write_phase_mode 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_nic2 uds_ro_address /var/run/ptp4lro_nic2 # # 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 1 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0x20 # interface's connected to RUs [nic2-eth2] serverOnly 1 Phc2sysOpts: | -s ptp -c CLOCK_REALTIME -O -37 -m -R 16 -u 16 LeapSeconds: | # ATOMIC TIME # Coordinated Universal Time (UTC) is the reference time scale derived # from The "Temps Atomique International" (TAI) calculated by the Bureau # International des Poids et Mesures (BIPM) using a worldwide network of atomic # clocks. UTC differs from TAI by an integer number of seconds; it is the basis # of all activities in the world. # # # ASTRONOMICAL TIME (UT1) is the time scale based on the rate of rotation of the earth. # It is now mainly derived from Very Long Baseline Interferometry (VLBI). The various # irregular fluctuations progressively detected in the rotation rate of the Earth led # in 1972 to the replacement of UT1 by UTC as the reference time scale. # # # LEAP SECOND # Atomic clocks are more stable than the rate of the earth's rotation since the latter # undergoes a full range of geophysical perturbations at various time scales: lunisolar # and core-mantle torques, atmospheric and oceanic effects, etc. # Leap seconds are needed to keep the two time scales in agreement, i.e. UT1-UTC smaller # than 0.9 seconds. Therefore, when necessary a "leap second" is applied to UTC. # Since the adoption of this system in 1972 it has been necessary to add a number of seconds to UTC, # firstly due to the initial choice of the value of the second (1/86400 mean solar day of # the year 1820) and secondly to the general slowing down of the Earth's rotation. It is # theoretically possible to have a negative leap second (a second removed from UTC), but so far, # all leap seconds have been positive (a second has been added to UTC). Based on what we know about # the earth's rotation, it is unlikely that we will ever have a negative leap second. # # # HISTORY # The first leap second was added on June 30, 1972. Until the year 2000, it was necessary in average to add a # leap second at a rate of 1 to 2 years. Since the year 2000 leap seconds are introduced with an # average interval of 3 to 4 years due to the acceleration of the Earth's rotation speed. # # # RESPONSIBILITY OF THE DECISION TO INTRODUCE A LEAP SECOND IN UTC # The decision to introduce a leap second in UTC is the responsibility of the Earth Orientation Center of # the International Earth Rotation and reference System Service (IERS). This center is located at Paris # Observatory. According to international agreements, leap seconds should be scheduled only for certain dates: # first preference is given to the end of December and June, and second preference at the end of March # and September. Since the introduction of leap seconds in 1972, only dates in June and December were used. # # Questions or comments to: # Christian Bizouard: [email protected] # Earth orientation Center of the IERS # Paris Observatory, France # # # # COPYRIGHT STATUS OF THIS FILE # This file is in the public domain. # # # VALIDITY OF THE FILE # It is important to express the validity of the file. These next two dates are # given in units of seconds since 1900.0. # # 1) Last update of the file. # # Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat) # # The following line shows the last update of this file in NTP timestamp: # #$ 3929093563 # # 2) Expiration date of the file given on a semi-annual basis: last June or last December # # File expires on 28 June 2025 # # Expire date in NTP timestamp: # #@ 3960057600 # # # LIST OF LEAP SECONDS # NTP timestamp (X parameter) is the number of seconds since 1900.0 # # MJD: The Modified Julian Day number. MJD = X/86400 + 15020 # # DTAI: The difference DTAI= TAI-UTC in units of seconds # It is the quantity to add to UTC to get the time in TAI # # Day Month Year : epoch in clear # #NTP Time DTAI Day Month Year # 2272060800 10 # 1 Jan 1972 2287785600 11 # 1 Jul 1972 2303683200 12 # 1 Jan 1973 2335219200 13 # 1 Jan 1974 2366755200 14 # 1 Jan 1975 2398291200 15 # 1 Jan 1976 2429913600 16 # 1 Jan 1977 2461449600 17 # 1 Jan 1978 2492985600 18 # 1 Jan 1979 2524521600 19 # 1 Jan 1980 2571782400 20 # 1 Jul 1981 2603318400 21 # 1 Jul 1982 2634854400 22 # 1 Jul 1983 2698012800 23 # 1 Jul 1985 2776982400 24 # 1 Jan 1988 2840140800 25 # 1 Jan 1990 2871676800 26 # 1 Jan 1991 2918937600 27 # 1 Jul 1992 2950473600 28 # 1 Jul 1993 2982009600 29 # 1 Jul 1994 3029443200 30 # 1 Jan 1996 3076704000 31 # 1 Jul 1997 3124137600 32 # 1 Jan 1999 3345062400 33 # 1 Jan 2006 3439756800 34 # 1 Jan 2009 3550089600 35 # 1 Jul 2012 3644697600 36 # 1 Jul 2015 3692217600 37 # 1 Jan 2017 # # A hash code has been generated to be able to verify the integrity # of this file. For more information about using this hash code, # please see the readme file in the 'source' directory : # https://hpiers.obspm.fr/iers/bul/bulc/ntp/sources/README # #h be738595 57b0cf1b b0218343 fb77062f 5a775e7