[Linuxptp-users] Using gPTP profile on multiple devices
PTP IEEE 1588 stack for Linux
Brought to you by:
rcochran
From: André S. <and...@gm...> - 2018-07-30 14:46:32
|
I am currently trying to use ptp4l with a gPTP profile with 3 devices connected to a switch. Step 1) Used default ptp4l profile, all 3 devices worked and I was able to fiddle with master selection and priority levels without any problems. Step 2) Used gPTP profile, devices B and C worked as slaves and selected the switch as master. Device A uses its local clock as master and seems disconnected from device B and C. Step 3) Used gPTP profile with device A connected directly to B or C. It works without problems. Step 4) I switched back to using the default ptp4l profile with the -P (P2P) flag only. I am able to use any 2 devices together successfully but as soon as I turn on the third device it fails. Questions: 1) From step 2, why would A not use the switch as its master clock or react to the other 2 devices? 2) From step 4, does the failure mean that you cannot use P2P with more than 2 devices connected through a switch? 3) From step 4, I thought it could mean that the switch does not support P2P but why would it work with 2 devices then? 4) Could device A be the problem? Software and hardware details listed below as well as logs from Step 4 and the gPTP profile used. Any help would be appreciated. Please let me know if any other information is required. ### SOFRWARE ### OS: UBUNTU 18.04.1 LTS PTP4L: 1.92 ### HARDWARE ### Device A: NUC7i3BNH ethtool -T eno1: Time stamping parameters for eno1: 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) ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC) ptpv1-l4-delay-req (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) ptpv2-l4-sync (HWTSTAMP_FILTER_PTP_V2_L4_SYNC) ptpv2-l4-delay-req (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ) ptpv2-l2-sync (HWTSTAMP_FILTER_PTP_V2_L2_SYNC) ptpv2-l2-delay-req (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT) ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC) ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) Devices B & C: Identical Supermicro X10SDV-4C-TLN4F with Intel I210 network card Time stamping parameters for ens2: 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) ### STEP 4 LOGS ### # STARTING DEVICE A # sudo ./ptp4l -i eno1 -m -P ptp4l[15537.834]: selected /dev/ptp0 as PTP clock ptp4l[15537.834]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[15537.834]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[15544.999]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_ EXPIRES ptp4l[15544.999]: selected local clock 94c691.fffe.1d75f9 as best master ptp4l[15544.999]: assuming the grand master role # STARTING DEVICE B # sudo ./ptp4l -i ens2 -m -P ptp4l[15077.735]: selected /dev/ptp0 as PTP clock ptp4l[15077.736]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[15077.736]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[15078.870]: port 1: new foreign master 94c691.fffe.1d75f9-1 ptp4l[15082.870]: selected best master clock 94c691.fffe.1d75f9 ptp4l[15082.870]: assuming the grand master role ptp4l[15082.870]: port 1: LISTENING to GRAND_MASTER on RS_GRAND_MASTER ### DEVICE A DETECTS NEW MASTER ### ptp4l[15595.007]: port 1: new foreign master 6805ca.fffe.4ab9c5-1 ptp4l[15599.007]: selected best master clock 6805ca.fffe.4ab9c5 ptp4l[15599.007]: port 1: MASTER to UNCALIBRATED on RS_SLAVE ptp4l[15600.007]: master offset 5135529 s0 freq -8491 path delay 38425 ptp4l[15601.007]: master offset 5139643 s1 freq -4377 path delay 38439 ptp4l[15602.007]: master offset -359 s2 freq -4736 path delay 38453 ptp4l[15602.007]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED ptp4l[15603.007]: master offset -217 s2 freq -4702 path delay 38453 ptp4l[15604.007]: master offset 8 s2 freq -4542 path delay 38453 ptp4l[15605.007]: master offset 155 s2 freq -4393 path delay 38453 ptp4l[15606.007]: master offset -312 s2 freq -4813 path delay 38462 # STARTING UP DEVICE C # sudo ./ptp4l -i ens2 -m -P ptp4l[15185.095]: selected /dev/ptp0 as PTP clock ptp4l[15185.096]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[15185.096]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[15185.570]: port 1: rogue peer delay response ptp4l[15185.570]: port 1: LISTENING to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) ptp4l[15201.572]: port 1: FAULTY to LISTENING on INIT_COMPLETE # DEVICE A ERROR # ptp4l[15702.882]: port 1: multiple peer responses ptp4l[15702.882]: port 1: rogue peer delay response ptp4l[15702.882]: port 1: SLAVE to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) # DEVICE B ERROR # ptp4l[15190.747]: port 1: received pdelay_resp msg with unexpected peer port id 6805ca.fffe.5a75d6-1 ptp4l[15190.747]: port 1: multiple peer responses ptp4l[15190.747]: port 1: rogue peer delay response ptp4l[15190.747]: port 1: GRAND_MASTER to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) ptp4l[15206.748]: port 1: FAULTY to LISTENING on INIT_COMPLETE ### gPTP PROFILE ### [global] # # Default Data Set # twoStepFlag 1 gmCapable 1 priority1 248 priority2 248 domainNumber 0 clockClass 248 clockAccuracy 0xFE offsetScaledLogVariance 0xFFFF free_running 0 freq_est_interval 1 # # Port Data Set # logAnnounceInterval 1 logSyncInterval -3 logMinPdelayReqInterval 0 announceReceiptTimeout 3 syncReceiptTimeout 3 delayAsymmetry 0 fault_reset_interval 4 neighborPropDelayThresh 800 min_neighbor_prop_delay -20000000 # # Run time options # assume_two_step 1 logging_level 6 path_trace_enabled 1 follow_up_info 1 hybrid_e2e 0 tx_timestamp_timeout 1 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 # # Transport options # transportSpecific 0x1 ptp_dst_mac 01:80:C2:00:00:0E p2p_dst_mac 01:80:C2:00:00:0E uds_address /var/run/ptp4l # # Default interface options # network_transport L2 delay_mechanism P2P time_stamping hardware tsproc_mode filter delay_filter moving_median delay_filter_length 10 egressLatency 0 ingressLatency 0 boundary_clock_jbod 0 |