Мрежовият протокол VRRP (Virtual Router Redundancy Protocol) предоставя механизъм за отказоустойчивост, който повишава наличността и надеждността в IP мрежи. VRRP позволява използването на един и същи (виртуален) IP адрес от множество маршрутизатори. Целта на VRRP е успешна комуникация между всички маршрутизатори, участващи в мрежата (имащи еднакви Virtual Router ID).
Всички съобщения се изпращат чрез мултикаст съобщения. Адресът на получателя е 224.0.0.12 (фиг. 1). В IP хедъра се задава TTL=255. Ако по някаква причина маршрутизатор получи пакет с TTL различен от 255, пакетът се изхвърля.
В RouterOS са имплементирани както версия 2 на протокола (RFC 3768), така и VRRP версия 3 (RFC 5798). VRRPv3 предлага възможност за работа с IPv6.
В RFC 5798 ясно са дефинирани основни понятия като VRRP Router, Virtual Router, IP Address Owner, Primary IP Address, Virtual Router Master и Virtual Router Backup. Тяхната имплементация е описана в документацията на MikroTik RouterOS (Manual:Interface/VRRP).
Базова конфигурация
Мрежовият симулатор GNS3 предоставя отлични възможности за бързо изграждане и тестване на конфигурация чрез VRRP. На фиг. 2 е показан проста мрежова диаграма, която може да послужи като основа за по-сложни конфигурации.
Конфигурация на R1:
/interface vrrp
add interface=ether2 name=vrrp1 priority=254 vrid=25
/ip address
add address=192.168.0.254/24 interface=ether2 network=192.168.0.0
add address=192.168.1.1/32 interface=vrrp1 network=192.168.1.1
Конфигурация на R2:
/interface vrrp
add interface=ether2 name=vrrp1 priority=253 vrid=25
/ip address
add address=192.168.0.253/24 interface=ether2 network=192.168.0.0
add address=192.168.1.1/32 interface=vrrp1 network=192.168.1.1
Видео демонстрация
Видео демонстрацията представя базова конфигурация с VRRP в GNS3.
Всеки път, когато в мрежата стане наличен маршрутизатор с по-висок приоритет (по-висока стойност за priority (integer: 1..254; Default: 100)), той става Virtual Router Master и той поема контрол над трафика. При необходимост тази функционалност може да се изключи чрез опцията preemption-mode=no.
При събитие като смяната на статуса на рутер от Virtual Router Master на Virtual Router Backup и обратно позволява изпълнение на скриптове, които могат да намери разнообразни приложения.
VRRP в режим Load sharing
По-оптимална конфигурация би била използването на двата маршрутизатора едновременно, изпълнявайки ролите Virtual Router Master на Virtual Router чрез различни IP адреси и съответните приоритети.
На фигура 3 е показана мрежова диаграма на по-сложна мрежова конфигурация с VRRP в режим Load sharing. R-1 и R-2 са от мрежата на клиента, а R-3 и R-4 от мрежата на доставчика.
По-долу е представен експорт на маршрутизаторите (фиг. 3).
#R-1
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 /interface vrrp add interface=ether1 name=vrrp1 priority=2 vrid=211 add interface=ether1 name=vrrp2 priority=1 vrid=212 /ip address add address=172.16.1.3/24 interface=bridge1 network=172.16.1.0 add address=192.168.0.1/24 interface=vrrp1 network=192.168.0.0 add address=192.168.0.2/24 interface=vrrp2 network=192.168.0.0 add address=10.0.0.9/30 interface=ether1 network=10.0.0.8 /ip route add check-gateway=ping distance=1 gateway=172.16.1.2,172.16.1.1 /ip firewall nat add action=masquerade chain=srcnat out-interface=bridge1 /system identity set name=R-1 /tool romon set enabled=yes /tool romon port add disabled=no
Интерфейси ether2 и ether3 са в bridge1 за да могат ether3(R-3) и ether2(R-4) да комуникират (на фиг. 3 са отбелязани в синьо).
На интерфейс ether1 са добавени 2 VRRP интерфейса (vrrp1 и vrrp2), които съответстват на същите с R-2. Целта е да се постигне постигне разпределяне на натоварването и отказоустойчивост.
#R-2
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 /interface vrrp add interface=ether1 name=vrrp1 priority=1 vrid=211 add interface=ether1 name=vrrp2 priority=2 vrid=212 /ip address add address=172.16.0.3/24 interface=bridge1 network=172.16.0.0 add address=10.0.0.10/30 interface=ether1 network=10.0.0.10 add address=192.168.0.1/24 interface=vrrp1 network=192.168.0.0 add address=192.168.0.2/24 interface=vrrp2 network=192.168.0.0 /ip route add distance=1 gateway=172.16.0.2,172.16.0.1 /ip firewall nat add action=masquerade chain=srcnat out-interface=bridge1 /system identity set name=R-2 /tool romon set enabled=yes /tool romon port add disabled=no
Интерфейси ether2 и ether3 са в bridge1 за да могат ether2(R-3) и ether3(R-4) да комуникират (на фиг. 3 са отбелязани в оранжево).
На интерфейс ether1 са добавени 2 VRRP интерфейса (vrrp1 и vrrp2), които съответстват на същите с R-1. Целта е да се постигне постигне разпределяне на натоварването и отказоустойчивост.
За илюстриране на маршрутизацията R-1 и R-2 използват ECMP – подход, който не е оптимален, но подходящ при демонстрация. В практиката могат да се използват други механизми за разпределяне на трафика.
#R-3
/interface vrrp add interface=ether2 name=vrrp1 priority=1 vrid=11 add interface=ether2 name=vrrp2 priority=2 vrid=12 add interface=ether3 name=vrrp3 priority=1 vrid=111 add interface=ether3 name=vrrp4 priority=2 vrid=112 /ip address add address=10.0.0.2/30 interface=ether2 network=10.0.0.0 add address=10.0.0.6/30 interface=ether3 network=10.0.0.4 add address=172.16.0.1/24 interface=vrrp1 network=172.16.0.0 add address=172.16.0.2/24 interface=vrrp2 network=172.16.0.0 add address=172.16.1.1/24 interface=vrrp3 network=172.16.1.0 add address=172.16.1.2/24 interface=vrrp4 network=172.16.1.0 /ip dhcp-client add default-route-distance=0 \ dhcp-options=hostname,clientid disabled=no interface=ether1 /ip firewall nat add action=masquerade chain=srcnat out-interface=ether1 /system identity set name=R-3 /tool romon set enabled=yes /tool romon port add disabled=no
#R-4
/interface vrrp add interface=ether3 name=vrrp1 priority=2 vrid=11 add interface=ether3 name=vrrp2 priority=1 vrid=12 add interface=ether2 name=vrrp3 priority=2 vrid=111 add interface=ether2 name=vrrp4 priority=1 vrid=112 /ip address add address=10.0.0.1/30 interface=ether3 network=10.0.0.0 add address=10.0.0.5/30 interface=ether2 network=10.0.0.4 add address=172.16.0.1/24 interface=vrrp1 network=172.16.0.0 add address=172.16.0.2/24 interface=vrrp2 network=172.16.0.0 add address=172.16.1.1/24 interface=vrrp3 network=172.16.1.0 add address=172.16.1.2/24 interface=vrrp4 network=172.16.1.0 /ip dhcp-client add default-route-distance=0 \ dhcp-options=hostname,clientid disabled=no interface=ether1 /ip firewall nat add action=masquerade chain=srcnat out-interface=ether1 /system identity set name=R-4 /tool romon set enabled=yes /tool romon port add disabled=no
R-3 и R-4 изпълняват същата роля (VRRP с разпределяне на трафика) както R-1 и R-2 в клиентската мрежа, но предоставят такива възможности в транспортната мрежа между маршрутизаторите.
Остава въпросът как двойките рутери ще поддържат една и съща конфигурация, освен IP адресите. На пр. правилата в защитните стени, маршрутите, статичните DHCP leases и др. Има различни подходи за това: използване на външен софтуер чрез API, създаване на скриптове, които регулярно да прехвърлят конфигурацията чрез export, fetch, import и др.
Може ли да се добяват трети и четвърти рутер във DR сайт?