Der Stream-Identification-Post
dieser Serie hat gezeigt, wie EthSwt Frames als Streams identifiziert.
Dieser Post zeigt, wofür das Firewall-Modul diese Information braucht —
und warum alle beteiligten APIs laut SWS noch den Status DRAFT tragen.
Alle in diesem Post genannten APIs ( |
Warum braucht die Firewall den Switch?
Ethernet-Frame-Inspektion mit per-Stream-Filterung kann durch das AUTOSAR Firewall-Modul um fortgeschrittene Inspektionstechniken wie Stateful Packet Inspection und Deep Packet Inspection erweitert werden. Wenn ein Frame beim Firewall-Modul zur Prüfung ankommt, hat es die Vorfilterung durch das Per-Stream-Filtering (siehe Stream-Identification-Post) bereits durchlaufen — die Firewall muss aber wissen, welche Filterregel das Frame passieren ließ, um korrekt weiter zu inspizieren.
StreamHandleIdentifier extrahieren
Std_ReturnType EthSwt_ExtractStreamHandleIdx(
const Eth_DataType* DataPtr, // Payload des empfangenen Frames
uint16 LenByte, // Länge des Payloads in Byte
uint16* StreamHandleIdxPtr
);Die Funktion extrahiert den StreamHandleIdx aus dem switch-
herstellerspezifischen Teil des Netzwerkpaket-Headers. Die Switch-Fabric
(siehe Switch-Fabric-Architektur-Post)
fügt diesen Wert dem Frame hinzu, indem sie den Header modifiziert bzw.
Meta-Informationen zum Netzwerkpaket ergänzt.
Die SWS stellt ausdrücklich klar: Diese Meta-Information ist nicht
standardisiert und hängt vom Switch-Hersteller ab.
|
Statistiken auslesen: Bucket-Konzept
Viele Switches zählen, wie oft eine Filterregel des Per-Stream-Filterings zutrifft — meist in Form von Buckets, wobei ein Bucket die Treffer mehrerer Filterregeln gemeinsam zählt.
void EthSwt_GetStreamStatistics(
uint8 SwitchIdx
);
// Ergebnis kommt asynchron über EthIf_StreamStatisticsIndication zurückDer Ablauf ist bewusst asynchron: EthSwt_GetStreamStatistics stößt das
Auslesen nur an (void-Rückgabewert!), das Ergebnis liefert der Treiber
später über EthIf_StreamStatisticsIndication mit NumberOfBuckets und
einem Zeiger auf die konkatenierten Bucket-Werte.
Je nach Switch-Typ werden die Bucket-Werte beim Auslesen entweder
zurückgesetzt oder bleiben bestehen. Damit die Firewall unabhängig vom
konkreten Switch-Typ einheitlich rechnen kann, schreibt die SWS vor, dass
|
Laufzeit-Umschaltung von Filterregeln
Das Firewall-Modul kann von BswM in unterschiedliche Zustände geschaltet
werden (andere Regelsätze aktiv). Damit die Per-Stream-Filterregeln
konsistent mitziehen, gibt es EthSwt_SetStreamState:
void EthSwt_SetStreamState(
uint8 SwitchIdx,
uint8 StreamHandleIdx,
boolean StreamActivityStatus // TRUE = aktiv, FALSE = inaktiv
);Laut SWS wird diese Funktion typischerweise von einer
Diagnoseanwendung über EthIf aufgerufen, um eine konfigurierte
Stream-Filterregel gezielt zu (de)aktivieren — z. B. wenn die Firewall in
einen anderen Betriebszustand wechselt und dadurch bestimmte Streams nicht
mehr relevant sind.
Zusammenfassung
| Aspekt | Kernaussage |
|---|---|
StreamHandleIdentifier | Wird aus vendor-spezifischen Frame-Metadaten extrahiert, nicht aus einem standardisierten Header-Feld |
Statistik | Asynchrones Bucket-Konzept, monoton steigend über die gesamte Boot-Laufzeit |
Laufzeit-Steuerung |
|
Reifegrad | Alle drei APIs sind in R25-11 noch als |