MIKROTIK_NET.EXE v4.0 // EVPN-VXLAN MODULE SLD:01/14 00:00:00
HW-OFFLOAD ENGINE READY
BGP SESSION: ESTABLISHED
VTEP AUTO-DISCOVERY: ON

[VXLAN] UDP/4789 ENC:ACTIVE
[EVPN ] RT-TYPE 2/3/5 OK
[BGP ] EVPN eBGP MESH OK
[ASIC ] 98DX3255 ARMED

[ DEEP DIVE // SWITCHING FABRIC ]

HARDWARE-OFFLOADED
VXLAN & EVPN/BGP

auf MikroTik CRS3xx + CRS309 Switches
VTEP-frei · BGP-gesteuert · automatisches L2-Stretching

Wie der ASIC VXLAN tunnelt ohne CPU · wie EVPN VTEPs verteilt · wie gebridgte VLANs als Trunks überall ankommen

CRS309 CRS312 CRS317 CRS354 CRS326-24S+2Q+ RouterOS 7.18+ 98DX8xxx ASIC BGP RFC 7432
MIKROTIK_NET.EXE // PROBLEM SPACE SLD:02/14

DAS PROBLEM

Mehrere Gebäude/Racks mit CRS3xx/CRS309. Abteilungs-VLANs sollen als 802.1Q-Trunk an beliebiger Stelle verfügbar sein — ohne STP-L2-Ringe, ohne manuelle Tunnel, ohne pro-VTEP-Config.

L3 UNDERLAY — eBGP — alle Loopbacks erreichbar RACK-A CRS326-24G-2S+RM VLAN 6, 29 RACK-B CRS354-48G-4S+2Q+ VLAN 6, 30 RACK-C CRS309-1G-8S+IN VLAN 29, 30 Abt-SW · VLAN6+29 Trunk Abt-SW · VLAN6+30 Trunk Abt-SW · VLAN29+30 Trunk

WARUM NICHT STP?

  • STP funktioniert nicht über L3-Grenzen hinweg
  • Manuelle VXLAN-Tunnel: O(n²) Config — pro neuem VTEP alle anderen anfassen
  • EVPN löst das: BGP als Control-Plane, automatische VTEP-Discovery
MIKROTIK_NET.EXE // HW-OFFLOAD COMPATIBILITY SLD:03/14

WELCHER SWITCH KANN VXLAN HW-OFFLOAD?

Nur explizit von MikroTik bestätigte Modelle. Quelle: L3HW Device Support Tabelle, help.mikrotik.com.

ModellASIC-FamilieVXLAN HW-OffloadAnmerkung
CRS309-1G-8S+IN98DX8208✓ ab ROS 7.18passiv gekühlt, lüfterlos
CRS312-4C+8XG98DX8212✓ ab ROS 7.184×Combo + 8×10G
CRS317-1G-16S+98DX8216✓ ab ROS 7.1816×SFP+, Spine
CRS354-48G-4S+2Q+98DX8xxx-Featureset✓ ab ROS 7.1848×GbE + 4×SFP+ + 2×QSFP+
CRS326-24S+2Q+98DX8xxx✓ ab ROS 7.1824×SFP+ + 2×QSFP+, 320 Gbps
alle CRS326-24G-2S+ Varianten98DX3236✗ kein VXLAN HW98DX3xxx — MikroTik-Doku: explizit ausgeschlossen
CSS326-24G-2S+88E6393X✗ SwOS onlykein RouterOS

KEINE FAUSTREGEL AUS DEM MODELLNAMEN

MikroTik verbaut verschiedene Chips unter identischen oder ähnlichen Bezeichnungen — Board-Revisionen ändern das manchmal still. Die einzige verlässliche Quelle ist die L3HW Device Support Tabelle in der offiziellen Doku, dort steht pro Modell explizit ob VXLAN offloaded wird.

→ help.mikrotik.com → L3 Hardware Offloading → L3HW Device Support

CRS309 — PASSIV, LÜFTERLOS

98DX8208 ASIC. VXLAN HW-Offload ab ROS 7.18. 8×SFP+ Ports. Passiv gekühlt — ideal für lautlose Setups, Home-Lab, Edge-Nodes.

MIKROTIK_NET.EXE // HW-OFFLOAD ENGINE SLD:04/14

ASIC DATAPLANE

ASIC MACHT

  • VXLAN Encap/Decap, Linerate
  • VTEP-Src/Dst-Auswahl per Flow
  • VLAN→VNI / VNI→VLAN in TCAM
  • BUM: Ingress Replication
  • MAC-Learning auf Overlay-Interface

CPU MACHT

  • BGP/EVPN-Protokoll-Stack
  • ARP/ND-Proxy für EVPN Type-2
  • Erstmaliges MAC-Learning
  • IGMP Snooping (teilweise SW)
CPU-Load bei reinem L2-Forwarding: <5%. Datenpfad vollständig in Hardware.

DATAPLANE-PFAD

— ENCAP — Eingehend: Ethernet-Frame VLAN 6 ASIC INGRESS · VLAN-ID Lookup VNI-Map: VLAN 6 → VNI 10006 VTEP-Src=lo-IP VTEP-Dst=BGP UDP/4789 + VXLAN Header → Ausgang Uplink-Port (Underlay) — DECAP — UDP/4789 → strip · VNI→VLAN10 Bridge-Lookup → Ziel-Port
MIKROTIK_NET.EXE // VXLAN KONZEPT SLD:05/14

VXLAN GRUNDKONZEPT

RFC 7348. Ethernet-Frames in UDP kapseln. 24-Bit VNI — 16 Mio. Segmente statt 4096 VLANs.

PAKETSTRUKTUR

Outer Ethernet Header Outer IP Src:VTEP-A Dst:VTEP-B UDP Src:random Dst:4789 VXLAN Header | VNI 24 bit Inner Ethernet Frame (original, inkl. 802.1Q-Tag)

VTEP

Loopback-IP = VTEP-Adresse. Muss im Underlay geroutet sein. Alle CRS3xx mit VXLAN-fähigem ASIC sind automatisch VTEP.

VLAN ↔ VNI MAPPING

VLANVNIZweck
610006Telefon
2910029Office
3010030Werkstatt
9910099Mgmt

BUM-TRAFFIC

  • Ingress Replication: Sender schickt Unicast-Kopien an alle bekannten VTEPs — kein Multicast im Underlay
  • EVPN lernt VTEPs via BGP Type-3
  • ASIC repliziert in HW, kein CPU-Overhead
MIKROTIK_NET.EXE // EVPN CONTROL PLANE SLD:06/14

EVPN CONTROL PLANE

BGP Address-Family AFI 25 / SAFI 70. Verteilt MAC/IP-Erreichbarkeit und VTEP-Membership automatisch.

ROUTE-TYPEN

TypeInhaltWann
Type 1Eth. Auto-DiscoveryMulti-homing
Type 2MAC/IP AdvertisementMAC gelernt
Type 3Inclusive MulticastVTEP join/leave
Type 4Ethernet SegmentMulti-homing DF
Type 5IP Prefix RouteL3-Routing
L2-Stretching: primär Type 2 (MACs) + Type 3 (VTEP-Discovery).

BGP EVPN FLOW

VTEP-A AS 65001 MAC AA:BB gelernt sendet Type-2 VTEP-B AS 65002 empfängt Type-2 ASIC lernt MAC VTEP-C AS 65003 Type-3 joined VNI 10006 VTEP-D AS 65004 NEU · zero-touch eBGP zu Nachbarn eBGP EVPN jede AS spricht direkt mit ihren Nachbarn

KEIN ROUTE REFLECTOR

Bei eBGP (jeder Switch eigene AS) darf jeder Peer Routen beliebig weitergeben — keine Full-Mesh-Pflicht, kein RR nötig. Jeder Switch spricht direkt mit seinen Nachbarn — eigene AS, /30-Links.

MIKROTIK_NET.EXE // ARCHITECTURE OVERVIEW SLD:07/14

EVPN MESH — TOPOLOGIE

A↔C CRS354 AS 65001 VTEP-A lo:10.0.1.1 Peers: B C E CRS317 AS 65002 VTEP-B lo:10.0.1.2 Peers: A C D E CRS312 AS 65003 VTEP-C lo:10.0.1.3 Peers: A B CRS309 AS 65004 VTEP-D lo:10.0.1.4 Peers: B E · passiv CRS354 AS 65005 VTEP-E lo:10.0.1.5 Peers: A B D SW-F an A VLAN 6+29 Trunk SW-G an E VLAN 30 Trunk SW-H an B VLAN 6+30 Trunk SW-I an D VLAN 29+30 Trunk SW-J an C VLAN 6/29/30 Trunk VXLAN OVERLAY · eBGP EVPN · HW-OFFLOADED
UNDERLAY: L3, eBGP (jeder Switch eigene AS), Loopback-IPs als stabile VTEP-Adressen.
OVERLAY: VXLAN im ASIC. BGP EVPN verteilt automatisch. Abt-Switches: nur 802.1Q.
MIKROTIK_NET.EXE // CONFIG :: UNDERLAY SLD:08/14

CONFIG: UNDERLAY

Auf jedem CRS: Loopback als stabile VTEP-IP, L3-Uplinks zu Nachbarn (/30), eBGP pro Link.

# === LOOPBACK (VTEP-IP) ===
/interface bridge add name=loopback protocol-mode=none
/ip address add address=10.0.1.1/32 interface=loopback

# === L3-UPLINKS (kein Bridge-Member!) ===
/ip address add address=10.1.0.1/30 interface=ether1   # → Nachbar SW2
/ip address add address=10.1.0.5/30 interface=ether2   # → Nachbar SW3

# === eBGP UNDERLAY (eigene AS 65001, Nachbar-AS jeweils verschieden) ===
/routing bgp connection add \
  name=underlay-sw2 \
  remote.address=10.1.0.2 remote.as=65000 \
  local.role=ebgp local.address=10.1.0.1 \
  address-families=ip

/routing bgp connection add \
  name=underlay-sw3 \
  remote.address=10.1.0.6 remote.as=65000 \
  local.role=ebgp local.address=10.1.0.5 \
  address-families=ip

# Loopback via eBGP announcen (redistribute connected)
/routing bgp network add network=10.0.1.1/32

# Verify: alle Loopbacks erreichbar?
# /ping 10.0.1.2  /ping 10.0.1.3
Strikte Trennung: Uplink-Ports dürfen nicht Mitglied der Overlay-Bridge sein.
MIKROTIK_NET.EXE // CONFIG :: VXLAN + BRIDGE SLD:09/14

CONFIG: VXLAN + BRIDGE

# === VXLAN INTERFACE ===
/interface vxlan add \
  name=vxlan1 vni=10006 \
  local-address=10.0.1.1 port=4789 \
  learning=yes mtu=1500

# === OVERLAY BRIDGE ===
/interface bridge add \
  name=br-overlay vlan-filtering=yes \
  frame-types=admit-all \
  protocol-mode=none   # STP aus — EVPN Split-Horizon verhindert Loops

# === VXLAN IN BRIDGE ===
/interface bridge port add \
  bridge=br-overlay interface=vxlan1 pvid=1

# === DOWNLINK ZU ABTEILUNGSSWITCH ===
/interface bridge port add \
  bridge=br-overlay interface=ether10 frame-types=admit-all

# === VLAN-MAP ===
/interface bridge vlan add \
  bridge=br-overlay vlan-ids=6 tagged=vxlan1,ether10   # Telefon
/interface bridge vlan add \
  bridge=br-overlay vlan-ids=29 tagged=vxlan1,ether10  # Office
/interface bridge vlan add \
  bridge=br-overlay vlan-ids=30 tagged=vxlan1,ether10  # Werkstatt
/interface bridge vlan add \
  bridge=br-overlay vlan-ids=99 tagged=vxlan1,ether10  # Mgmt
HW-Offload: /interface vxlan set vxlan1 hw-offload=yes
Prüfen: /interface bridge port print detailhw=yes. Falls nein: keine IP auf Bridge, kein RSTP/MSTP, alle Ports auf gleichem ASIC-Chip.
MIKROTIK_NET.EXE // CONFIG :: BGP EVPN SLD:10/14

CONFIG: BGP EVPN

# ===== eBGP EVPN zu direkten Nachbarn (auf jedem Switch) =====
# Eigene AS 65001, Nachbar-AS 65002 bzw. 65003
/routing bgp connection add \
  name=evpn-sw2 \
  remote.address=10.1.0.2 remote.as=65000 \
  local.role=ebgp \
  address-families=ip,l2vpn-evpn   # Underlay + EVPN in einer Session

/routing bgp connection add \
  name=evpn-sw3 \
  remote.address=10.1.0.6 remote.as=65000 \
  local.role=ebgp \
  address-families=ip,l2vpn-evpn

# ===== EVPN INSTANCE an VXLAN binden =====
/routing evpn instance add \
  name=evpn1 vxlan=vxlan1 \
  rd=10.0.1.1:10006 \
  route-target.import=65000:10006 \
  route-target.export=65000:10006 \
  auto-discovery=yes arp-proxy=yes
Route Target = der Kleber: alle VTEPs die VNI 10006 teilen müssen denselben RT importieren/exportieren. Bei eBGP leitet jeder Nachbar empfangene EVPN-Routen an seine anderen Peers weiter — Routenverteilung ergibt sich aus der Mesh-Topologie, kein expliziter Reflektor nötig.
MIKROTIK_NET.EXE // VTEP AUTO-DISCOVERY SLD:11/14

VTEP-FREIHEIT: ZERO-TOUCH SCALE-OUT

Abteilungsswitches wissen nichts von VXLAN. Neuer CRS/CRS309 im Mesh: eBGP-Sessions zu direkten Nachbarn konfigurieren, fertig.

① eBGP 10.0.1.4/32 announced alle VTEPs sehen VTEP-D ② BGP→RR Type-3 Route: VTEP-D joined VNI 10006 ③ Peers fwd A,B,C: ASIC BUM→auch VTEP-D kein manuelles Update ④ VTEP-D ready empfängt Type-2 kennt alle MACs kein Flooding nötig KEIN BESTEHENDER SWITCH WURDE ANGEFASST

ZERO-TOUCH

N neue Nodes → eBGP-Sessions zu direkten Nachbarn. Jeder Peer leitet EVPN-Routen automatisch weiter.

ARP-SUPPRESSION

EVPN Type-2 enthält IP-Bindung. arp-proxy=yes: lokaler VTEP beantwortet ARP aus BGP-Cache — kein BUM-Flood für bekannte Hosts.

MIKROTIK_NET.EXE // ACCESS TRUNK SLD:12/14

TRUNK AN ABTEILUNGSSWITCH

Abteilungsswitch am Downlink-Port. Bekommt 802.1Q-Trunk — sieht VLANs aus dem gesamten EVPN-Mesh.

# Port ether10 am CRS326-RM (VTEP-A)
/interface bridge port add \
  bridge=br-overlay \
  interface=ether10 \
  frame-types=admit-all pvid=1

/interface bridge vlan set \
  [find vlan-ids=6] \
  tagged=ether10,vxlan1   # Telefon

/interface bridge vlan set \
  [find vlan-ids=29] \
  tagged=ether10,vxlan1  # Office

/interface bridge vlan set \
  [find vlan-ids=30] \
  tagged=ether10,vxlan1  # Werkstatt

/interface bridge vlan set \
  [find vlan-ids=99] \
  tagged=ether10,vxlan1  # Mgmt

# /interface bridge port print detail
# → hw=yes bei ether10
MTU: Underlay ≥ Overlay + 50 Byte VXLAN-Overhead. Empfehlung: Underlay 9000, Overlay 8950.
Abt-SW (Cisco SG350) kein VXLAN-Wissen 802.1Q Trunk VLAN 6, 29, 30 CRS326-RM · VTEP-A ether10: Bridge-Port ASIC: VLAN6 → VNI10006 UDP/4789 UNDERLAY · L3 Routed CRS354 · VTEP-B decap: VNI10006 → VLAN6 Abt-SW-B · gleiche Broadcast-Domain
MIKROTIK_NET.EXE // CONFIG :: VLAN-SWITCH SLD:13/16

CONFIG: VLAN-SWITCH (SW-J)

Abteilungsswitch ohne VXLAN-Wissen. Uplink zu VTEP-C als 802.1Q-Trunk — sieht VLANs aus dem EVPN-Mesh.

# SW-J — L2-Abteilungsswitch (CRS326 oder Cisco SG)
# kein VXLAN, kein BGP — nur 802.1Q

/interface bridge add \
  name=br-vlans vlan-filtering=yes \
  protocol-mode=none

# Uplink zu VTEP-C: ether1 — tagged Trunk
/interface bridge port add \
  bridge=br-vlans interface=ether1 \
  frame-types=admit-all

# Access-Ports (untagged je VLAN)
/interface bridge port add bridge=br-vlans \
  interface=ether2 pvid=6  frame-types=admit-only-untagged-and-priority-tagged
/interface bridge port add bridge=br-vlans \
  interface=ether3 pvid=29 frame-types=admit-only-untagged-and-priority-tagged
/interface bridge port add bridge=br-vlans \
  interface=ether4 pvid=30 frame-types=admit-only-untagged-and-priority-tagged

# VLAN-Map: tagged auf Uplink, untagged auf Access
/interface bridge vlan add bridge=br-vlans \
  vlan-ids=6  tagged=ether1 untagged=ether2   # Telefon
/interface bridge vlan add bridge=br-vlans \
  vlan-ids=29 tagged=ether1 untagged=ether3  # Office
/interface bridge vlan add bridge=br-vlans \
  vlan-ids=30 tagged=ether1 untagged=ether4  # Werkstatt
/interface bridge vlan add bridge=br-vlans \
  vlan-ids=99 tagged=ether1                   # Mgmt (nur tagged)

TOPOLOGIE SW-J

  • Hängt an VTEP-C (CRS312 · AS 65003)
  • Verbindung: ether10 am VTEP-C → ether1 am SW-J
  • VTEP-C übergibt 802.1Q-Trunk mit VLANs 6, 29, 30, 99
  • SW-J braucht keine VXLAN-Config — EVPN-Transparenz

VLAN-ÜBERSICHT SW-J

VLANPortZweck
6ether2Telefon
29ether3Office
30ether4Werkstatt
99taggedMgmt
HW-Offload: Nur wenn VTEP-C (CRS312) ASIC-fähig — auf SW-J irrelevant, er macht nur L2-Switching.
MIKROTIK_NET.EXE // VERIFY + TROUBLESHOOT SLD:14/16

VERIFY

# BGP Sessions
/routing bgp session print
# → State: established

# EVPN MACs via BGP
/routing evpn mac print

# VTEPs bekannt?
/interface vxlan vtep print

# HW-Offload aktiv?
/interface bridge port print detail
# → hw=yes für alle Ports

# Bridge FDB (MAC-Table)
/interface bridge host print

# Overlay Ping
/tool flood-ping address=10.0.1.2 \
  count=100 interval=1ms

FALLSTRICKE

  • hw=no: keine IP auf Bridge, kein RSTP/MSTP, alle Ports auf gleichem ASIC. Explizit: set vxlan1 hw-offload=yes
  • BGP AF fehlt: address-families=l2vpn-evpn explizit setzen
  • RT-Mismatch: route-target auf allen VTEPs für gleichen VNI identisch
  • Loopback nicht in eBGP announced: VTEP-IP unerreichbar → Tunnel baut nicht auf
  • CRS326 falsches Modell: ohne RM → alter ASIC → kein HW-Offload
  • MTU zu klein: Underlay-MTU ≥ Overlay + 50 Byte
  • ROS-Version: VXLAN HW-Offload erst ab 7.18. BGP/EVPN stabil ab 7.6+
MIKROTIK_NET.EXE // LIMITS + GOTCHAS SLD:15/16

HARDWARE-GRENZEN

HW-OFFLOAD: JA

ModellASIC
CRS309-1G-8S+98DX8208
CRS312-4C+8XG98DX8212
CRS317-1G-16S+98DX8216
CRS326-24S+2Q+98DX8332
CRS354-48G-4S+2Q+98DX8548
CRS326-24G-2S+RM98DX8xxx

HW-OFFLOAD: NEIN

  • CRS326-24G-2S+ ohne RM → 98DX3xxx
  • CRS224S, CRS226S, CRS2528, CRS3236
  • alle 98DX3xxx / 98DX2xxx ASICs
  • ROS < 7.18

KONFIGURATIONS-FALLEN

  • IP auf Overlay-Bridgehw=no
    Management-IP auf Loopback, nie auf br-overlay
  • RSTP/MSTP aktivhw=no
  • RT-Mismatch → kein Fehler, nur Stille
    route-target auf allen VTEPs pro VNI identisch
  • Loopback nicht announced → VTEP unerreichbar, kein Tunnel
  • MTU zu klein → Black-Hole bei großen Frames
    PMTUD oft kaputt; Underlay ≥ Overlay + 50 B
  • BGP AF fehlt → kein EVPN-Exchange
    address-families=l2vpn-evpn explizit setzen
  • Ports auf versch. ASICs → kein gemeinsames HW-Offload
MIKROTIK_NET.EXE // SUMMARY SLD:16/16

ZUSAMMENFASSUNG

GEWONNEN

  • L2-Segmente beliebig über L3-Mesh
  • Neue VTEPs: eBGP zu direkten Nachbarn
  • Abt-Switches: reine 802.1Q-Welt
  • Linerate durch ASIC-Offload
  • ARP-Suppression reduziert BUM
  • CRS309: passiv, lüfterlos, VXLAN-fähig

DREI SCHICHTEN

  • UNDERLAY: eBGP, Loopbacks, L3-Uplinks
  • CONTROL: BGP EVPN AFI25/SAFI70, eBGP Mesh
  • DATA: VXLAN HW-offloaded im ASIC

AUFBAUREIHENFOLGE

  1. Underlay routen, Loopbacks pingen
  2. eBGP zu Nachbarn (ip + l2vpn-evpn AF)
  3. VXLAN + Bridge + VLAN-Map
  4. EVPN Instance binden (RD+RT)
  5. hw=yes verifizieren
  6. Trunk zu Abt-Switch freischalten
EVPN/VXLAN MESH OPERATIONAL // ZERO-TOUCH VTEP-SCALE