Bei Verwendung von PTP auf einem DSA-Style-Switch erscheinen Pakete verzerrt

Bei Verwendung von PTP auf einem DSA-Style-Switch erscheinen Pakete verzerrt

Ich habe also ein Altera Cyclone V SoC-Board mit Linux 5.7.10, das einen BCM53125 rev4-Switch, drei LAN-Ports und einen CPU-Port (die NIC) enthält. Es wird Distributed Switch Architecture verwendet, daher sieht mein Setup wie folgt aus:

                 ------- lan1
                 |
eth0 (CPU) --- Switch -- lan2
                 |
                 ------- lan3

Ich möchte PTP mit Hardware-Zeitstempelung auf dieser Maschine zum Laufen bringen. Jetzt zeigt ethtool nur für eth0 korrekte Fähigkeiten an (getestet mit ethtool -T eth0), d. h.

# ethtool -T eth0
Time stamping parameters for eth0:
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-event        (HWTSTAMP_FILTER_PTP_V1_L4_EVENT)
        ptpv1-l4-sync         (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
        ptpv1-l4-delay-req    (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
        ptpv2-l4-event        (HWTSTAMP_FILTER_PTP_V2_L4_EVENT)
        ptpv2-l4-sync         (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
        ptpv2-l4-delay-req    (HWTSTAMP_FILTER_PTP_V2_L4_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)

Für lan1 und Freunde schlägt es fehl:

# ethtool -T lan1
Time stamping parameters for lan1:
Cannot get device time stamping settings: Operation not supported

Meine Frage ist also, wie kann ich eth0 und seine Fähigkeiten zur Kommunikation nutzen?

Ich habe versucht, eine Bridge einzurichten und alternativ IP-Adressen für jeden LAN-Port wie beschriebenHier. Dann starte ich einen PTP-Master auf der Karte und verwende eth0 als Netzwerkschnittstelle:

# ./ptp4l -qmi eth0
ptp4l[3658.796]: selected /dev/ptp0 as PTP clock
ptp4l[3658.807]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[3658.807]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[3666.525]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
ptp4l[3666.525]: selected local clock 664975.fffe.e52d47 as best master
ptp4l[3666.525]: port 1: assuming the grand master role

Keine Probleme gemeldet. Wenn ich jedoch einige Pakete mit Wireshark erfasse, sehen diese Pakete überhaupt nicht wie PTP aus:

Seltsame Ausgabe mit seltsamen Paketen

Darüber hinaus fehlt ihnen auch ein EtherType (wie 0x8000 für IP) im Ethernet-Header, sondern sie haben stattdessen Werte wie 0x0048 oder 0x005c, die, wenn sie als Nutzlastlänge gemäß IEEE 802.3 interpretiert werden, nicht einmal der tatsächlichen Nutzlastlänge entsprechen. Hier ist eine detaillierte Beschreibung des ersten Pakets im obigen Bild:

Details des ersten Pakets mit Erläuterungen zu den oben genannten Punkten

Hier ist auch ein Hex-Dump mit allen Einzelheiten:

01 00 5e 00 01 81 66 49 75 e5 2d 47 00 5c 02 48
40 00 01 11 8a 4d 0a 00 01 7b e0 00 01 81 01 40
01 40 00 48 06 d3 0b 02 00 40 00 00 00 08 00 00
00 00 00 00 00 00 00 00 00 00 66 49 75 ff fe e5
2d 47 00 01 00 00 05 01 00 00 00 00 00 00 00 00
00 00 00 25 00 80 f8 fe ff ff 80 66 49 75 ff fe
e5 2d 47 00 00 a0

Schon auf der Verbindungsebene läuft also aus irgendeinem Grund etwas schief. Ich vermute, es liegt daran, dass ich den PTP-Master an den CPU-Port anschließe, was das DSA-Subsystem irgendwie nicht verarbeiten kann/nicht erwartet.

Also, ich würde gerne wissen

  1. wenn dies der richtige Weg ist, um direkt an eth0 anzuschließen, nicht an einen LAN-Port und
  2. warum die Pakete so durcheinander sind.

Ich möchte DSA in gewisser Weise umgehen. Ich bin einfach damit festgefahren, aber ein Port mit Zeitstempelfunktionen würde für meine Zwecke völlig ausreichen.

Antwort1

Bei diesen Broadcom-Chipsätzen handelt es sich häufig entweder nicht um echte Switches und häufig sind nicht alle Ethernet-Ports per se vollwertige Ports.

Der BCM53125 scheint in dieser Hinsicht besser zu sein als die üblichen Modelle in günstigeren Boards, aber trotzdem stehen Ihnen möglicherweise weder die vollen Fähigkeiten eines kommerziellen Switches noch alle Ethernet-Ports zur Verfügung.

PTP-Unterstützung scheint auch im Switch nirgends zu sehen zu seinDatenblätter, seltsames Ethtool, das es anzeigt (könnte mir entgangen sein)

Ich vermute, dass Sie von solch bescheidenen Chipsätzen möglicherweise zu viel erwarten.

verwandte Informationen