Rozbudowa sieci radiowych nie zawsze należy do łatwych, szczególnie, kiedy w świeżo wyremontowanym czy nowo wykończonym mieszkaniu nie możemy zainstalować nowych kabli.
W takim momencie na pomoc przychodzi protokół Hybrydowej Sieci Mesh, czyli standard 802.11s. Firma Mikrotik zaimplementowała ten standard w formie protokołu HWMP Plus, dzięki któremu nasza sieć typu Mesh wykorzysta zarówno łącza kablowe (Ethernet) jak i radiowe (WDS). W efekcie w całym mieszkaniu lub biurze dostępna będzie sieć Wifi o tej samej nazwie, a podczas przemieszczania się po domu telefony i laptopy będą płynnie przełączały się na kolejne nadajniki naszej sieci, podobnie jak czyni to telefon komórkowy pomiędzy nadajnikami sieci. Doskonały zasięg WiFi w każdym miejscu – brzmi dobrze, prawda?
W przykładzie poniżej używamy statycznych połączeń WDS, które są automatycznie dodawane jako porty sieci Mesh. Używamy w tym przypadków dwóch różnych częstotliwości: jednej do połączeń pomiędzy routerami, oraz drugiej na potrzeby dostępu naszych urządzeń klienckich. To wymaga zastosowania routerów z co najmniej dwoma interfejsami radiowymi. Użycie różnych częstotliwości jest zalecane, gdyż w przeciwnym razie łącza między routerami oraz router – klient będą się wzajemnie zakłócały.
Na każdym urządzeniu wprowadzamy następującą konfigurację:
/interface mesh add disabled=no
/interface mesh port add interface=wlan1 mesh=mesh1
/interface mesh port add interface=wlan2 mesh=mesh1
# interfejs dla połączeń międzyrouterowych - 2.4 GHz
/interface wireless set wlan1 disabled=no ssid=mesh frequency=2437 band=2.4ghz-b/g/n mode=ap-bridge \
wds-mode=static-mesh wds-default-bridge=mesh1
# interfejs dla połączeń urządzeń klienckich - telefonów i laptopów - 5 GHz
/interface wireless set wlan2 disabled=no ssid=mesh-clients frequency=5180 band=5ghz-a/n/ac mode=ap-bridge
# statyczny interfejs WDS dla każdego routera, do którego się łączymy
/interface wireless wds add disabled=no master-interface=wlan1 name=<;opis drugiej strony połączenia> \
wds-address=<;MAC address drugiej strony połączenia>
W tym wpyadku musimy ręcznie dodawać interfejsy WDS, gdyż użyliśmy trybu statycznego. Alternatywą jest dynamiczna sieć Mesh (wds-mode=dynamic-mesh), gdzie interfejsy WDS tworzona są w pełni automatycznie. Ze względów bezpieczeństwa łącza należy zabezpieczyć odpowiednim protokołem szyfrowania, co na Mikrotiku skonfigurujemy poleceniem /interface wireless security-profile.
Po wykonaniu powyższej konfiguracji i podłączeniu jednego telefonu uzyskamy następujący wynik:
[admin@RouterA] > /interface mesh print
Flags: X - disabled, R - running
0 R name="mesh1" mtu=1500 arp=enabled mac-address=00:0C:42:0C:B5:A4 auto-mac=yes
admin-mac=00:00:00:00:00:00 mesh-portal=no hwmp-default-hoplimit=32
hwmp-preq-waiting-time=4s hwmp-preq-retries=2 hwmp-preq-destination-only=yes
hwmp-preq-reply-and-forward=yes hwmp-prep-lifetime=5m hwmp-rann-interval=10s
hwmp-rann-propagation-delay=1s hwmp-rann-lifetime=22s
[admin@RouterA] > /interface mesh port print detail
Flags: X - disabled, I - inactive, D - dynamic
0 interface=wlan1 mesh=mesh1 path-cost=10 hello-interval=10s port-type=auto port-type-used=wireless
1 interface=wlan2 mesh=mesh1 path-cost=10 hello-interval=10s port-type=auto port-type-used=wireless
2 D interface=router_B mesh=mesh1 path-cost=105 hello-interval=10s port-type=auto port-type-used=WDS
3 D interface=router_D mesh=mesh1 path-cost=76 hello-interval=10s port-type=auto port-type-used=WDS
Baza danych FDB (Forwarding Database) zawiera wyłącznie informację o lokalnych adresach MAC, urządzeniach połączonych w inny sposób niż Mesh, oraz najbliżsi sąsiedzi typu Mesh:
[admin@RouterA] /interface mesh fdb print
Flags: A - active, R - root
MESH TYPE MAC-ADDRESS ON-INTERFACE LIFETIME AGE
A mesh1 local 00:0C:42:00:00:AA 3m17s
A mesh1 neighbor 00:0C:42:00:00:BB router_B 1m2s
A mesh1 neighbor 00:0C:42:00:00:DD router_D 3m16s
A mesh1 direct 00:0C:42:0C:7A:2B wlan2 2m56s
A mesh1 local 00:0C:42:0C:B5:A4 2m56s
[admin@RouterA] /interface mesh fdb print detail
Flags: A - active, R - root
A mac-address=00:0C:42:00:00:AA type=local age=3m21s mesh=mesh1 metric=0 seqnum=4294967196
A mac-address=00:0C:42:00:00:BB type=neighbor on-interface=router_B age=1m6s mesh=mesh1 metric=132 seqnum=4294967196
A mac-address=00:0C:42:00:00:DD type=neighbor on-interface=router_D age=3m20s mesh=mesh1 metric=79 seqnum=4294967196
A mac-address=00:0C:42:0C:7A:2B type=direct on-interface=wlan2 age=3m mesh=mesh1 metric=10 seqnum=0
A mac-address=00:0C:42:0C:B5:A4 type=local age=3m mesh=mesh1 metric=0 seqnum=0
W tym momencie możemy przetestować naszą sieć poleceniem ping:
[admin@RouterA] > /ping 00:0C:42:00:00:CC
00:0C:42:00:00:CC 64 byte ping time=108 ms
00:0C:42:00:00:CC 64 byte ping time=51 ms
00:0C:42:00:00:CC 64 byte ping time=39 ms
00:0C:42:00:00:CC 64 byte ping time=43 ms
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 39/60.2/108 ms
Router A musi znaleźć optymalną ścieżkę do routera C, więc pierwszy pakiet potrzebuje odrobinę więcej czasu. Teraz w bazie FDB pojawi się również adres MAC Routera C (00:0C:42:00:00:CC) i będzie miał typ „mesh”.
Warto sprawdzić, czy protokół ARP poprawnie działa w naszej sieci, używając polecenia ping z adresem IP routera C:
[admin@RouterA] > /ping 10.4.0.3
10.4.0.3 64 byte ping: ttl=64 time=163 ms
10.4.0.3 64 byte ping: ttl=64 time=46 ms
10.4.0.3 64 byte ping: ttl=64 time=48 ms
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 46/85.6/163 ms