Ich habe einen netten Shaper mit Hash-Filter, der auf einer Linux-Bridge gebaut wurde. Kurz gesagt, br0
Verbindungen external
und internal
physische Schnittstellen, VLAN-gekennzeichnete Pakete werden "transparent" überbrückt (ich meine, es gibt keine VLAN-Schnittstellen).
Jetzt machen es verschiedene Kernel anders. Ich kann mit genauen Kernel-Versionsbereichen falsch liegen, bitte verzeihen Sie mir. Vielen Dank.
2.6.26
Also, in debian 2.6.26 und höher (bis 2.6.32, glaube ich) --- das funktioniert:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
Hier stimmt "Kernel" mit zwei Bytes im Feld "Protokoll" mit 0x8100 überein, zählt aber den Anfang des IP-Pakets als "Null-Position" (Entschuldigung für mein Englisch, wenn ich etwas unklar bin).
2.6.32
Wieder in Debian (ich habe keinen Vanille-Kernel erstellt), 2.6.32-5 --- das funktioniert:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 at 20 flowid 1:200
Hier stimmt "Kernel" mit dem Protokoll überein, zählt jedoch ab dem Anfang des Protokoll-Headers versetzt --- Ich muss 4 Bytes zum Versatz addieren (20, nicht 16 für dst-Adresse). Es ist in Ordnung, scheint logischer, was mich betrifft.
3.2.11, der neueste Stall jetzt
Dies funktioniert --- als gäbe es überhaupt kein 802.1q-Tag:
tc filter add dev internal protocol ip parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
Das Problem ist, dass ich bisher keine Möglichkeit gefunden habe, mit dem 802.1q-Tag übereinzustimmen.
Übereinstimmendes 802.1q-Tag in der Vergangenheit
Ich könnte das vorher so machen:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 match u16 0x0ed8 0x0fff at -4 flowid 1:300
Jetzt bin ich nicht in der Lage 802.1Q - Tag mit übereinstimmen at 0
, at -2
, at -4
, at -6
oder so. Das Hauptproblem, dass ich null Treffer habe, zählt --- dieser Filter wird überhaupt nicht überprüft, "falsches Protokoll", mit anderen Worten.
Bitte, irgendjemand, hilf mir :-)
Vielen Dank!
protocol all
gibt mirRTNETLINK answers: Invalid argument
(3.3.4 Kernel hier). Ich werde dies mit neueren Kerneln testen. Vielen Dank.