Transparently Bridge two Networks using MPLS

From MikroTik Wiki
Revision as of 22:09, 4 September 2018 by Antonsb (talk | contribs) (→‎Configuration)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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