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:
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.
System- und Netzwerkadministrator
Informationstechnik – Netzwerktechnik – Consulting
MCSA+M | MCSE | MTCNA