Rechnernetze
Home Nach oben Stichworte

filter-Gruppe (filter (rmon 7))

Die siebte Gruppe ist die Filter-Gruppe (filter (rmon 7)). In der filterTable wird mit jeder Zeile ein Datenpaket aufgrund von gewissen Kriterien ausgewählt oder abgelehnt. Dazu gibt filterPktDataOffset das erste relevante Bit des zu prüfenden Ausschnitts in einem Datenpaket an. Mit filterPktDataMask kann die Länge dieses Ausschnitts bzw. können mehrere relevante Bitbereiche des Datenpakets festgelegt werden, die mit filterPktData bitweise übereinstimmen müssen. Zusätzlich kann noch verlangt werden, dass mindestens an einem in filterPktDataNotMask gesetzten Bit filterPktData und der relevante Ausschnitt nicht übereinstimmen, während an den in filterPktDataNotMask nicht gesetzten Bits filterPktData und der relevante Ausschnitt übereinstimmen müssen.

Ergebnis :=

((Ausschnitt XOR filterPktData) AND filterPktDataMask AND (NOT filterPktDataNotMask) == 0)

AND

((Ausschnitt XOR filterPktData) AND filterPktDataMask AND filterPktDataNotMask <> 0)

Man beachte, dass

FehlerhafteBits := (Ausschnitt XOR filterPktData) AND filterPktDataMask

genau an jenen Stellen gesetzte Bits enthält, an denen ein relevantes Bit nicht mit filterPktData übereinstimmt. Der erste der obigen Ausdrücke untersucht, ob sämtliche Bits an den Stellen filterPktDataNotMask=0 mit filterPktData übereinstimmen, währende der zweite besagt, dass an mindestens einer Stelle von filterPktDataNotMask=1 diese Werte verschiedenen sind.

Für den Status eines Pakets gibt es vergleichbare Filter, die gleichzeitig ausgewertet werden. Der Status hängt von dem Fehlertyp ab und wird als Bitfolge beschrieben, z.B. 1 für "Paket zu lang", 10 für "Paket zu kurz", 100 für Pakete mit CRC-Fehler, oder 110 für ein Ethernetfragment (zu kurz, CRC-Fehler). Die Auswertung von Status und Bitfilter müssen beide wahr ergeben, damit ein Paket durch diesen Filter akzeptiert wird.

Ein oder mehrere Filter werden einem Channel zugeordnet, welcher in der ChannelTable definiert wird. In dieser identifiziert ChannelIfIndex die jeweilige Schnittstelle, von welcher die Pakete überprüft werden. Mit ChannelAcceptType wird festgelegt, ob die von den Filtern akzeptierten oder abgelehnten Pakete ausgewählt werden. Ein Paket wird bei ChannelAcceptType=acceptMatched akzeptiert, wenn mindestens ein Filter das Paket akzeptiert; ein Paket wird bei ChannelAcceptType=acceptFailed akzeptiert, wenn alle Filter das Paket ablehnen. Die Anzahl akzeptierter Pakete wird in channelMatches gezählt. Pakete werden durchgelassen (und z.B. in der Capture-Guppe gespeichert), wenn channelDataFlowControl eingeschaltet ist, sonst nicht.

Ein Channel lässt sich mit den in channelTurnOnEventIndex bzw. channelTurnOffEventIndex definierten Events aus- bzw. einschalten. Diese Events werden über ihren Index in der Event-Gruppe identifiziert. Wird ein Paket akzeptiert und ist channelDataFlowControl eingeschaltet, so wird das Event channelEventIndex ausgelöst. Um eine Überflutung mit Events zu verhindern, wird der Wert eventReady in channelEventStatus auf eventFired gesetzt; ein weiteres Event kann nur ausgelöst werden, wenn dieser Wert vom Manager wieder zurückgesetzt wird. Events werden jedoch ständig gesendet, wenn dieser Wert auf eventAlwaysReady gesetzt ist.