Der vierte und letzte Teil der EthSwt-Grundserie zeigt drei Laufzeit-Themen: VLAN-Umschaltung, Port-Mirroring und MAC-Learning-Modi. Besonders das Mirroring fällt beim Blick in die reale SWS deutlich mächtiger aus, als man mit einem einfachen "Source-Port/Target-Port"-Modell erwarten würde.

VLAN-Umschaltung zur Laufzeit

EthSwt_EnableVlan schaltet kein neues VLAN frei, sondern aktiviert oder deaktiviert ein bereits vorkonfiguriertes VLAN an einem bestimmten Port:

Std_ReturnType EthSwt_EnableVlan(
    uint8   SwitchIdx,
    uint8   SwitchPortIdx,
    uint16  VlanId,
    boolean Enable          // TRUE  = VLAN an diesem Port aktivieren
                             // FALSE = Frames mit dieser VLAN-ID werden verworfen
);

EthSwt_EnableVlan setzt laut SWS ausdrücklich eine vorkonfigurierte VLAN-Zuordnung voraus ("VLAN-ID to a preconfigured configuration"). Die VLAN selbst — welche Ports zu ihr gehören dürfen, welche Default-VLAN-ID gilt — kommt aus der ARXML-Konfiguration (Teil 3). Zur Laufzeit lässt sich also nur an-/abschalten, nicht neu definieren.

Bei Enable = FALSE werden Frames mit der betreffenden VLAN-ID am Port verworfen — praktisch relevant z. B. um einen Diagnose- oder Werkstatt-Port temporär vom Rest des Fahrzeugnetzes zu isolieren, ohne die komplette ARXML-Konfiguration neu aufzuspielen.

Port-Mirroring: mächtiger als gedacht

Die reale EthSwt_PortMirrorCfgType-Struktur (Kapitel 8.2.5) geht weit über ein simples "Port A spiegelt auf Port B" hinaus:

FeldBedeutung

srcMacAddrFilter / dstMacAddrFilter

Nur Frames mit passender Quell-/Ziel-MAC-Adresse spiegeln; 00:00:00:00:00:00 = kein Filter

VlanIdFilter

Nur Frames einer bestimmten VLAN-ID spiegeln; 65535 = kein Filter

MirroringPacketDivider

Nur jeden n-ten Frame spiegeln (z. B. 2 = jeden zweiten) — reduziert die Bandbreitenlast auf dem Capture-Port

MirroringMode

0x00 kein Retagging, 0x01 VLAN-Retagging, 0x02 VLAN-Double-Tagging

TrafficDirectionIngressBitMask / …​EgressBitMask

Bitmasken (ein Bit pro EthSwtPortIdx), die getrennt steuern, ob Ingress- bzw. Egress-Traffic eines Ports gespiegelt wird

CapturePortIdx

Der Port, an dem der gespiegelte Traffic ausgegeben wird

ReTaggingVlanId / DoubleTaggingVlanId

VLAN-ID(s) für Re-/Double-Tagging, sofern nicht bereits durch die Switch-Konfiguration vorgegeben

Eine Port-Mirror-Konfiguration wird laut SWS pro Ethernet-Switch gepflegt (nicht pro Port) — die Bitmasken für Ingress/Egress erlauben es aber, mehrere Quell-Ports gleichzeitig auf einen einzigen Capture-Port zu spiegeln.

Relevante APIs: EthSwt_WritePortMirrorConfiguration, EthSwt_ReadPortMirrorConfiguration, EthSwt_DeletePortMirrorConfiguration, EthSwt_SetPortMirrorState / EthSwt_GetPortMirrorState.

MirroringPacketDivider ist in der Praxis Gold wert: Ein voller 1000BASE-T1-Uplink lässt sich oft gar nicht 1:1 auf einen einzelnen Diagnose-Port spiegeln, ohne diesen selbst zu überlasten. Ein Divider von z. B. 10 reduziert die gespiegelte Last auf ein Zehntel — ausreichend für viele statistische Analysen, ohne den Capture-Port zu fluten.

MAC-Learning-Modi

EthSwt_SetMacLearningMode / EthSwt_GetMacLearningMode kennen laut SWS genau drei Modi:

ModusBedeutung

HW-Learning aktiviert

Der Switch-Chip lernt MAC-Adressen eigenständig in Hardware

HW-Learning deaktiviert

Kein automatisches Lernen — die ARL-Tabelle bleibt statisch, wie sie konfiguriert wurde (siehe den ARL-Tabelle-Post dieser Serie)

SW-Learning aktiviert

Lernen erfolgt softwareseitig, z. B. über eine Integrationsroutine, die unbekannte Quelladressen auswertet

Die SWS betont ausdrücklich, dass dieses Feature hardwareabhängig ist — nicht jeder Switch-Chip unterstützt alle drei Modi. SetMacLearningMode kann daher E_NOT_OK liefern, wenn ein angeforderter Modus von der konkreten Hardware nicht unterstützt wird.

Diagnose über Zähler

Für die laufende Diagnose stehen mehrere Zähler-APIs zur Verfügung: EthSwt_GetCounterValues, EthSwt_GetRxStats, EthSwt_GetTxStats und EthSwt_GetTxErrorCounterValues. In Kombination mit Mirroring und MAC-Learning-Status lassen sich damit typische Netzwerkprobleme eingrenzen, ohne den Datenverkehr selbst zu beeinflussen.

Fallstudie: Broadcast-Sturm eingrenzen

  1. Verdacht erhärtenEthSwt_GetRxStats an mehreren Ports zeigt ungewöhnlich hohe Broadcast-/Multicast-Raten

  2. Gezielt spiegeln — Port-Mirror-Konfiguration mit VlanIdFilter auf das betroffene VLAN und MirroringPacketDivider auf einen praktikablen Wert setzen, Capture-Port auf den Diagnose-Anschluss legen

  3. MAC-Learning prüfenEthSwt_GetMacLearningMode je beteiligtem Port abfragen; ein Loop im Netz zeigt sich oft durch ständig wechselnde ARL-Einträge für dieselbe Quelladresse

  4. Isolieren — betroffenes VLAN an einem verdächtigen Port per EthSwt_EnableVlan(…​, FALSE) temporär deaktivieren, um die Fehlerquelle einzugrenzen

Serie (abgeschlossen)

TeilThemaStatus

1

Grundlagen, SWS & Architektur

fertig

2

API & Initialisierung

fertig

3

ARXML-Konfiguration

fertig

4

VLAN-Management, Mirroring & Diagnose

dieser Post

Die Grundserie ist damit komplett. Die folgenden Einzelposts vertiefen Spezialthemen: Hardware-Architektur, TSN, MACsec im Switch, Firewall-Interaktion, Global-Time-Support, ARL-Tabelle/MAC-Learning im Detail sowie Diagnose- und Registerzugriff.