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