Mikrotik i zabawy z MPLS

Jak połączyć nadmiarowość, sieć radiową i konieczność zachowania L2? Czyli moje pierwsze kroki z MPLS/VPLS.

Niewielka sieć radiowa i kilka vlanów. Pojawiła się chęć zrobienia nadmiarowych linków między bazami radiowymi, ale z zachowaniem funkcjonalności L2. Jak to zrobić? Pierwsza myśl, to STP. Jednak zabawa w STP na radiu i różnych switchach to proszenie o kłopoty. Sieć zrobiona na Mikrotiku, wiec dlaczego tego nie wykorzystać? Wymyśliliśmy z właścicielem sieci, że pobawimy się z MPLS oraz VPLS w wydaniu Mikrotika. Brzmi super. Zwłaszcza, że nigdy tego nie robiłem 🙂

Segment sieci na którym pracowaliśmy składa się z czterech punktów. Wszystkie połączone ze sobą w ring. Do tej pory nadmiarowe linki były uruchamiane w razie konieczności. Teraz dba o to OSPF. Jednak właściciel chciał zachować warstwę drugą między punktami (przerzucanie vlanów) stąd pomysł, by wraz z OSPF uruchomić MPLS, a na nim utworzyć tunele VPLS. Co nam z tego wyszło widać poniżej:

Mamy cztery routery. Główny nazwany Core który terminuje tunele z trzech pozostałych. Żeby całość była jeszcze bardziej zwariowana, to router Core oparliśmy o platformę Mikrotik CHR (wirtualizacja). Routery na bazach to RB450Gx4.

Kilka zdań na temat konfiguracji. Jak wspomniałem całość opiera się o OSPF. Dlatego w pierwszej kolejności tworzymy sobie vlany połączeniowe i spinamy routery ze sobą. Następnie tworzymy sobie interfejsy loopback (bridge), adresujemy je i uruchamiamy OSPF.

Core:

/routing ospf interface
add interface=vlan0101 network-type=broadcast
add interface=vlan0102 network-type=broadcast
/routing ospf network
add area=backbone network=172.16.10.100/32
add area=backbone network=172.16.10.8/29
add area=backbone network=172.16.10.0/29

R1:

/routing ospf interface
add interface=vlan0101 network-type=broadcast
add interface=vlan0103 network-type=broadcast
/routing ospf network
add area=backbone network=172.16.10.101/32
add area=backbone network=172.16.10.0/29
add area=backbone network=172.16.10.16/29

R2:

/routing ospf interface
add interface=vlan0102 network-type=broadcast
add cost=50 interface=vlan0104 network-type=broadcast
/routing ospf network
add area=backbone network=172.16.10.102/32
add area=backbone network=172.16.10.8/29
add area=backbone network=172.16.10.24/29

R3:

/routing ospf interface
add interface=vlan0103 network-type=broadcast
add cost=50 interface=vlan0104 network-type=broadcast
/routing ospf network
add area=backbone network=172.16.10.103/32
add area=backbone network=172.16.10.16/29
add area=backbone network=172.16.10.24/29

Adresy loopback będą nam potrzebne do MPLSa:

Core:

/mpls ldp
set lsr-id=172.16.10.100 transport-address=172.16.10.100
/mpls ldp interface
add interface=vlan0101
add interface=vlan0102

R1:

/mpls ldp
set lsr-id=172.16.10.101 transport-address=172.16.10.101
/mpls ldp interface
add interface=vlan0101
add interface=vlan0103


R2:
/mpls ldp
set lsr-id=172.16.10.102 transport-address=172.16.10.102
/mpls ldp interface
add interface=vlan0102
add interface=vlan0104


R3:
/mpls ldp
set lsr-id=172.16.10.103 transport-address=172.16.10.103
/mpls ldp interface
add interface=vlan0103
add interface=vlan0104

Zasada działania jest prosta. OSPF rozgłasza z routerów R1, R2 i R3 do routera Core adresy loopbacków i na tych adresach uruchomiony jest MPLS. Dzięki OSPF adresy zawsze będą osiągalne przez któryś z linków i routerów. Teraz wystarczy utworzyć tunel VPLS między interesującymi nas routerami i ewentualnie zbridzować je z odpowiednim interfejsem.

Core:

/interface vpls
add name=vpls-r1 remote-peer=172.16.10.101 vpls-id=1:1
add name=vpls-r2 remote-peer=172.16.10.102 vpls-id=1:2
add name=vpls-r3 remote-peer=172.16.10.103 vpls-id=1:3

R1:
/interface vpls
add name=vpls-core remote-peer=172.16.10.100 vpls-id=1:1

R2:
/interface vpls
add name=vpls-core remote-peer=172.16.10.100 vpls-id=1:2

R3:
/interface vpls
add name=vpls-core remote-peer=172.16.10.100 vpls-id=1:3