Bridge / VLAN-Encapsulation

Wo findet bei Mikrotik unter ROS eigentlich die VLAN-Encapsulation/De-Encapsulation statt?
Leider schweigt sich Mikrotik darüber aus, es gibt nur in der (neuen!) Wiki einen Absatz dazu:

 

When bridge vlan-filtering is enabled, received untagged packets might get encapsulated into the VLAN header before the „DST-NAT“ block, which means these packets can be filtered using the mac-protocol=vlan and vlan-encap settings. Encapsulation can happen if frame-types is set to admit-all or admit-only-untagged-and-priority-tagged.

Tagged packets might get decapsulated on the „BRIDGING DECISION“ block, which means these packets will no longer match the mac-protocol=vlan and vlan-encap settings. Decapsulation can happen if the packet’s VLAN ID matches the port’s untagged VLAN membership. QUELLE

 

Nach mehreren Lab-Versuchen muss ich leider sagen, dass diese Aussage:

[…] before the „DST-NAT“ block […]

falsch ist! Demnach würde ja eine VLAN-Encapsulation VOR dem DST-NAT-Block stattfinden. In meinen Tests hat sich jedoch herausgestellt, dass dies nicht stimmt und der DST-NAT-Block nur auf untagged Frames matcht (sofern die Frames untagged eingehen – sind die Frames bereits getaggt, würde er natürlich auch auf tagged Frames matchen!). Dagegen matcht der Forward/Input-Block auf die gleichen Frames (getaggt mittels Packet-Mark) mit VLAN-Header in Abhängigkeit von der VLAN-Konfiguration!

 


Lab

Schauen wir uns das Ganze an. Anhand einer Fritzbox, die diverse Protokolle broadcastet, kann man das leicht testen.

Die Fritbox hängt an eth3, der Port hat die PVID = 1. Fritzboxen sind VLAN-unaware, deshalb wird alles von der Fritzbox kommend nach VLAN1 klassifiziert:

eth3 PVID = VID1

 

VLAN-Settings

 

Wird ein Bridge Filter angelegt (Input und Forward-Chain), matchen auf der Input-Chain nur VLAN-Frames (0x8100), auf der Forward-Chain nur HomePlug-AV-Frames (0x88E1):

  • Regel 0 = Bridge Forward + Ethertype 0x88E1 matcht
  • Regel 1 = Bridge Forward + Ethertype 0x8100 (VLAN) + VLAN-Encapsulation 0x88E1 matcht NICHT
  • Regel 2 = Bridge Input + Ethertype 0x88E1 matcht NICHT
  • Regel 3 = Bridge Input + Ethertype 0x8100 (VLAN) + VLAN-Encapsulation 0x88E1 matcht

 

Hier erkennt man, dass sich das Ganze exakt so verhält wie im VLAN-Tab konfiguriert:

Input = tagged (x8100) weil, BR0 = tagged
Forward = untagged (x88E1), weil eth1, 2, 3, 5 untagged

 

Das lässt einen zu dem Schluss kommen, dass irgendwo vor „Bridge Input“ bzw. „Bridge Forward“ das Tagging passiert.
Mikrotik spricht von „before the „DST-NAT“ block“. Also VOR Punkt 1 in der Zeichnung. Folglich müssten die exakt gleichen Regeln dort (DST-NAT-Chain) die exakt gleichen Resultate zeigen:

Aber es zeigt sich folgendes Bild:

  • Regel 0 = Bridge DST-NAT + Ethertype 0x88E1 matcht
  • Regel 1 = Bridge DST-NAT + Ethertype 0x8100 (VLAN) + VLAN-Encapsulation 0x88E1 matcht NICHT

 

Und dies widerlegt Mikrotiks Aussage, dass VOR dem DST-NAT-Block eine VLAN-Encapsulation geschieht!!
Weiter kann man folgern, dass die VLAN-Encapsulation/De-Encapsulation am Block „Bridge Decision“ geschehen muss. Da danach (siehe Input vs. Forward) ein Tagging in Relation zur Konfiguration (unter dem VLAN-Tab) stattfindet.

 

Das ganze wurde als Ticket an Mikrotik gemeldet. Eine Antwort steth noch aus.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert