Skip to content

Configured TAPRIO - ptp4l do not sync #24

@rezabfil-sec

Description

@rezabfil-sec

Hi,
I am having a simple three node setup formed in a triangle:

source-->hop-->sink
source-->sink

All of the connections are done using the Intel i210 cards. After I configured the hop using TAPRIO (w/ flags 0x1 and also w/o), the ptp4l stops to be in sync with other hops and also stops to exchange messages. When I try to setup ETF, CBS, or not qdisc on the hop, everything works as expected and clocks are in sync.

Are you aware of similar issues by the TAPRIO qdisc?

On the source is configured ETF qdisc as follows:

qdisc replace dev enp3s0 parent root handle 100 mqprio        \
      num_tc 3                                        \
      map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
      queues 1@0 1@1 2@2 \
      hw 0

qdisc replace dev enp3s0 parent 100:1 etf \
    clockid CLOCK_TAI delta 500000 offload  skip_sock_check

qdisc replace dev enp3s0 parent 100:2 etf \
    clockid CLOCK_TAI delta 500000 offload deadline_mode skip_sock_check

The hop has a following TAPRIO + ETF configuration:

qdisc replace dev enp5s0 parent root handle 100 taprio  \
  num_tc 3                                  \ 
  map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \  
  queues 1@0 1@1 2@2 \
  base-time 1605802187000000000          \ 
  flags 0x1                                                       \
  txtime-delay 400000 \
  sched-entry S 01 250000 \
  sched-entry S 00 50000 \ 
  sched-entry S 02 250000 \
  sched-entry S 00 50000 \ 
  sched-entry S 04 350000 \
  sched-entry S 00 50000 \ 
  clockid CLOCK_TAI                                                                                                                                                                                                                         
  
  qdisc replace dev enp5s0 parent 100:1 etf \
    clockid CLOCK_TAI delta 500000 offload  skip_sock_check                                                                                                                                                                                     
  qdisc replace dev enp5s0 parent 100:2 etf \   
     clockid CLOCK_TAI delta 500000 offload deadline_mode skip_sock_check           

I am collecting traffic on the sink using TCPDUMP.

ptp4l gPTP.cfg on the hop, sink and source follow same logic :

[global]
gmCapable               1
priority1               248
priority2               248
logAnnounceInterval     2
logSyncInterval         2
logMinDelayReqInterval  2
logMinPdelayReqInterval 2
syncReceiptTimeout      5
announceReceiptTimeout  5
neighborPropDelayThresh 1000
min_neighbor_prop_delay -20000000
assume_two_step         1
path_trace_enabled      1
follow_up_info          1
transportSpecific       0x1
ptp_dst_mac             01:80:C2:00:00:0E
network_transport       L2

[enp3s0]
boundary_clock_jbod     1
[enp4s0]
boundary_clock_jbod     1

Executing following ptp4l command:

ptp4l -f gPTP.cfg --step_threshold=1 --socket_priority 1

What have I tried so far:

  • Changing various parameters regarding the delays, retransmissions, (logMinDelayReqInterval, neighborPropDelayThresh, announceReceiptTimeout,...), but it did not help.
  • Various socket_priority values
  • With and without flags 0x1 on the TAPRIO parent qdisc.
  • Various configs on ETF child qdisc on the hop.
  • Changing SW/HW timestamping.

To note, I also opened an issue on linuxptp, but after looking more into, it seems like the issue is caused by the TAPRIO itself, as other qdiscs do not introduce this problem...
nxp-archive/openil_linuxptp#19

Any pointers on how to solve this issue would be appreciated!
Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions