Transparently Bridge two Networks using MPLS
Applies to RouterOS: v3, v4+
Overview
This is a very basic example on how to enable MPLS, establish a VPLS tunnel between two wireless links and use it to transparently bridge two networks.
There are several other ways to create this type of setup:
The MPLS/VPLS approach has some advantages:
- VPLS tunnel is about 60% faster and less overhead than EoIP tunnel
- 802.11n speed is limited over WDS bridges, this method doesn't have such limitations
Configuration
Let us assume the following network setup:
Note: For this setup to work in RouterOS 3.x, routing and mpls-test package must be installed. These features are included by default in 4.x.
AP
# --configure wireless access point-- /interface wireless set wlan1 disabled=no ssid=MPLS frequency=5180 band=5ghz mode=bridge # --configure IP-- /ip address add address=172.16.0.1/30 interface=wlan1 # --enable LDP-- /mpls ldp set enabled=yes lsr-id=172.16.0.1 transport-address=172.16.0.1 /mpls ldp interface add interface=wlan1 # --configure VPLS tunnel-- /interface vpls add name=vpls1 remote-peer=172.16.0.2 vpls-id=1:1 disabled=no # --add bridge and bridge ports -- /interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=vpls1
station
# --configure wireless access point-- /interface wireless set wlan1 disabled=no ssid=MPLS band=5ghz mode=station # --configure IP-- /ip address add address=172.16.0.2/30 interface=wlan1 # --enable LDP-- /mpls ldp set enabled=yes lsr-id=172.16.0.2 transport-address=172.16.0.2 /mpls ldp interface add interface=wlan1 # --configure VPLS tunnel-- /interface vpls add name=vpls1 remote-peer=172.16.0.1 vpls-id=1:1 disabled=no # --add bridge and bridge ports -- /interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=vpls1
Confirm that LDP is running
[admin@MikroTik] /mpls ldp neighbor> print Flags: X - disabled, D - dynamic, O - operational, T - sending-targeted-hello, V - vpls # TRANSPORT LOCAL-TRANSPORT PEER SEND-TARGETED ADDRESSES 0 DOTV 172.16.0.2 172.16.0.1 172.16.0.2:0 no 172.16.0.2 [admin@MikroTik] /mpls forwarding-table print Flags: L - ldp, V - vpls, T - traffic-eng # IN-LABEL OUT-LABELS DESTINATION INTERFACE NEXTHOP 0 expl-null 1 V 18 vpls1
Confirm that VPLS tunnel is established:
[admin@MikroTik] /interface vpls> monitor vpls1 once remote-label: 17 local-label: 18 remote-status: transport-nexthop: 172.16.0.2 imposed-labels: 17
Connect more stations to the same Bridge
It is possible to connect more than one Station to the same Bridge, by simply creating more VPLS tunnels (one for Station, also don't forget to increase subnet size from /30 to /24 for example, depending how much clients you need):
AP
# --change wireless access point mode to AP Bridge-- /interface wireless set wlan1 mode=ap-bridge # --configure second VPLS tunnel-- /interface vpls add name=vpls2 remote-peer=172.16.0.3 vpls-id=2:2 disabled=no # --add vpls2 to bridge -- /interface bridge port add bridge=bridge1 interface=vpls2
2nd Station
# --configure wireless access point-- /interface wireless set wlan1 disabled=no ssid=MPLS band=5ghz mode=station # --configure IP-- /ip address add address=172.16.0.3/30 interface=wlan1 # --enable LDP-- /mpls ldp set enabled=yes lsr-id=172.16.0.3 transport-address=172.16.0.3 /mpls ldp interface add interface=wlan1 # --configure VPLS tunnel-- /interface vpls add name=vpls1 remote-peer=172.16.0.1 vpls-id=2:2 disabled=no # --add bridge and bridge ports -- /interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=vpls1
MTU
When router encapsulates Ethernet frame to forward over VPLS pseudowire, it checks if packet size + VPLS CW + MPLS labels exceeds MPLS MTU of outgoing interface. If it does, VPLS will fragment the frame. In this example 1514 byte layer2 packets are forwarded over VPLS, router adds CW (4 bytes) and one MPLS tag (4 bytes) it means that to avoid fragmentation MPLS MTU must be increased to 1522
/mpls interface set 0 mpls-mtu=1522
For more information and supported L2MTU values on RouterBoards refer to Maximum_Transmission_Unit_on_RouterBoards
Note: If interface does not support L2MTU specified as mpls-mtu, then packets will be silently dropped