It sounds like the problem isn't "it picked the subnet I didn't want"
but rather "different instances of ptp4l didn't consistently pick the
same subnet, but I don't really care which one they pick as long as
it's stable"?

If it's the former, I'd rather see some sort of option that lets you
specify the subnet. However, being deterministic is reasonably
useful.

Is my description of the second option accurate? Can you describe the
symptoms that happen when the wrong subnet is chosen?

This issue and patch precede me, and the historical information is incomplete, so I recompiled without our patch and ran some tests.

I'd put the problem in the "it picked the subnet I didn't want" bucket. Worse, it (ptp4l) also picked the "wrong" interface.

Without the patch, ptpl4 is sending Sync and Announce messages out the incorrect interface and using a source IP address that isn't on the "-i" argument interface.

ptp4l is bound to eno1 which has two address:
    169.254.52.4/16
    169.254.53.4/16

But Sync and Announce traffic is being sourced from 10.10.100.188, which is on en02. Oy vey!

Note, I'm building off the 2.0.0 tag, but that makes no difference. The multicast binding code hasn't changed.

Below is a data dump.

Rebuilding with the patch back in then traffic is sourced from the correct interface. With multiple IP addresses on the interface, it appears the traffic is sourced from the IP address with the lowest address.

= = = = = = = = =

octoscope@SuperMicro:~$ ps ax | grep ptp
2003 ? Ss 0:00 /usr/local/sbin/ptp4l -i eno1 -f /usr/local/etc/linuxptp/ptp4l.conf -m -q 3850 ? Ss 0:00 /usr/local/sbin/phc2sys -s CLOCK_REALTIME -c /dev/ptp0 -f /usr/local/etc/linuxptp/ptp4l.conf -m -q -w

= = = = = = = = =

octoscope@SuperMicro:~$ 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)

= = = = = = = = =

octoscope@SuperMicro:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ac:1f:6b:1b:8b:c0 brd ff:ff:ff:ff:ff:ff
    inet 169.254.52.4/16 brd 169.254.255.255 scope link noprefixroute eno1
       valid_lft forever preferred_lft forever
inet 169.254.53.4/16 brd 169.254.255.255 scope link secondary noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::520a:9c21:95be:5b0a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ac:1f:6b:1b:8b:c1 brd ff:ff:ff:ff:ff:ff
inet 10.100.100.188/24 brd 10.100.100.255 scope global dynamic noprefixroute eno2
       valid_lft 259006sec preferred_lft 259006sec
    inet6 fe80::d8e:f266:544b:7274/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: eno3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether ac:1f:6b:1b:8c:ec brd ff:ff:ff:ff:ff:ff
5: eno4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether ac:1f:6b:1b:8c:ed brd ff:ff:ff:ff:ff:ff
6: br-065bfd282d7c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:26:5e:4a:03 brd ff:ff:ff:ff:ff:ff
    inet 172.28.0.1/16 brd 172.28.255.255 scope global br-065bfd282d7c
       valid_lft forever preferred_lft forever
    inet6 fe80::42:26ff:fe5e:4a03/64 scope link
       valid_lft forever preferred_lft forever
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:2d:8f:ca:2f brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
9: veth06d724e@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-065bfd282d7c state UP group default
    link/ether c6:fe:7f:c2:10:a3 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::c4fe:7fff:fec2:10a3/64 scope link
       valid_lft forever preferred_lft forever
11: vethb7a6f3b@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-065bfd282d7c state UP group default
    link/ether 32:ad:77:18:09:6b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::30ad:77ff:fe18:96b/64 scope link
       valid_lft forever preferred_lft forever
13: veth32e8e1e@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-065bfd282d7c state UP group default
    link/ether 0e:18:50:70:d0:89 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet6 fe80::c18:50ff:fe70:d089/64 scope link
       valid_lft forever preferred_lft forever
15: veth28b1f09@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-065bfd282d7c state UP group default
    link/ether fe:68:30:3e:d9:b1 brd ff:ff:ff:ff:ff:ff link-netnsid 3
    inet6 fe80::fc68:30ff:fe3e:d9b1/64 scope link
       valid_lft forever preferred_lft forever
17: veth3485d29@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-065bfd282d7c state UP group default
    link/ether da:c4:3c:52:d4:aa brd ff:ff:ff:ff:ff:ff link-netnsid 4
    inet6 fe80::d8c4:3cff:fe52:d4aa/64 scope link
       valid_lft forever preferred_lft forever
19: veth0495409@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-065bfd282d7c state UP group default
    link/ether be:85:b9:27:af:50 brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::bc85:b9ff:fe27:af50/64 scope link
       valid_lft forever preferred_lft forever

=========================

No. Time Source Destination Protocol Length Info 1 0.000000000 10.100.100.188 224.0.1.129 PTPv2 86 Sync Message

Frame 1: 86 bytes on wire (688 bits), 86 bytes captured (688 bits) on interface 0 Ethernet II, Src: SuperMic_1b:8b:c0 (ac:1f:6b:1b:8b:c0), Dst: IPv4mcast_01:81 (01:00:5e:00:01:81)
Internet Protocol Version 4, Src: 10.100.100.188, Dst: 224.0.1.129
User Datagram Protocol, Src Port: 319, Dst Port: 319
    Source Port: 319
    Destination Port: 319
    Length: 52
    Checksum: 0x0764 [unverified]
    [Checksum Status: Unverified]
    [Stream index: 0]
Precision Time Protocol (IEEE1588)
    0000 .... = transportSpecific: 0x0
    .... 0000 = messageId: Sync Message (0x0)
    .... 0010 = versionPTP: 2
    messageLength: 44
    subdomainNumber: 0
    flags: 0x0200
    correction: 0.000000 nanoseconds
    ClockIdentity: 0xac1f6bfffe1b8bc0
    SourcePortID: 1
    sequenceId: 216
    control: Sync Message (0)
    logMessagePeriod: 0
    originTimestamp (seconds): 0
    originTimestamp (nanoseconds): 0

No. Time Source Destination Protocol Length Info 2 0.000029588 10.100.100.188 224.0.1.129 PTPv2 86 Follow_Up Message

Frame 2: 86 bytes on wire (688 bits), 86 bytes captured (688 bits) on interface 0 Ethernet II, Src: SuperMic_1b:8b:c0 (ac:1f:6b:1b:8b:c0), Dst: IPv4mcast_01:81 (01:00:5e:00:01:81)
Internet Protocol Version 4, Src: 10.100.100.188, Dst: 224.0.1.129
User Datagram Protocol, Src Port: 320, Dst Port: 320
    Source Port: 320
    Destination Port: 320
    Length: 52
    Checksum: 0x2c63 [unverified]
    [Checksum Status: Unverified]
    [Stream index: 1]
Precision Time Protocol (IEEE1588)
    0000 .... = transportSpecific: 0x0
    .... 1000 = messageId: Follow_Up Message (0x8)
    .... 0010 = versionPTP: 2
    messageLength: 44
    subdomainNumber: 0
    flags: 0x0000
    correction: 0.000000 nanoseconds
    ClockIdentity: 0xac1f6bfffe1b8bc0
    SourcePortID: 1
    sequenceId: 216
    control: Follow_Up Message (2)
    logMessagePeriod: 0
    preciseOriginTimestamp (seconds): 1552671081
    preciseOriginTimestamp (nanoseconds): 604860668


_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to