Cisco IOS 16 - HSRP - Hot Standby Routing Protocol

Zdroj seriálu: https://www.samuraj-cz.com/serie/cisco-ios/
HSRP je Cisco protokol, který je užitečný a jednoduše se konfiguruje. Slouží k zajištění vysoké dostupnosti v síti pomocí redundance routerů (bran). Tak jako STP řeší redundanci cest v síti (a potřebujeme zdvojit propojení), tak HSRP řeší redundanci prvního hopu na Layer 3 OSI (musíme zdvojit router). Článek nerozebírá teorii HSRP, ale věnuje se jeho praktickému významu a popisu (základní, ale dostatečné) konfigurace. Stručně jsou zmíněny i další protokoly – IRDP, VRRP a GLBP.

Článek byl doplněn o stručné informace o dalších protokolech pro zajištění redundance gatewaye.

Princip HSRP
V praxi je běžné, že máme v lokální síti redundantní cesty na L2 (podle OSI modelu), takže výpadek některého aktivního prvku nebo propojovacího kabelu nepřeruší komunikaci v celé síti. V takovéto síti běžně provozujeme celou řadu VLAN a ty jsou mezi sebou spojené pomocí inter-VLAN routingu. Tato komunikace je již na L3 a my potřebujeme řešit výpadek switche/routeru, který všechny VLANy propojuje a slouží jako brána (gateway). Je to o to složitější, že všechny stanice mají zadánu IP adresu tohoto routeru jako svoji gateway. Právě tuto situaci nám řeší HSRP, kdy sice potřebujeme záložní router, ale v případě výpadku se komunikace automaticky přepne na tento záložní. Navíc záložní router může být méně výkonný.

Pozn.: Stejná je i situace, kdy se jedná o centrální bránu, kterou jsme připojeni do internetu. Ovšem bývá to složitější o to, že zde většinou běží Firewall.

HSRP je proprietární protokol firmy Cisco. Existuje i standardizovaný protokol, svou funkcí shodný, který se jmenuje Virtual Router Redundancy Protocol - VRRP. Podle mých zkušeností se však v praxi více používá právě verze od Cisca, tedy HSRP.

Princip funkce je takový, že máme virtuální IP adresu (interfacu) brány, kterou používají klienti, a k ní virtuální MAC adresu. Tyto virtuální adresy sdílí nakonfigurovaná skupina routerů (jejich rozhraní mají svoji vlastní IP a MAC adresu). Jeden z routerů je vybraný jako aktivní, ten drží virtuální adresy, a ostatní jsou standby (záložní). HSRP detekuje výpadek aktivního routeru a v tom případě standby router převezme virtuální IP a MAC adresu a tím se stane aktivním zařízením, které routuje provoz. Informace o dostupnosti routeru se provádí pomocí Hello paketů.

HSRP redundance

HSRP redundance

Jak je vidět, tak standardně máme jeden aktivní router, který pracuje, a jeden záložní, který pouze čeká na výpadek aktivního. Pomocí Hot Standby group můžeme vytvořit více konfigurací pro různé skupiny VLAN a rozdílně nastavit aktivní a standby router, takže dochází k vyvažování (manuálnímu) zátěže.

Hlavní vlastnosti
popsáno v RFC 2281
z routerů, které jsou součástí HSRP skupiny, se jeden zvolí jako primární – active, jeden jako záložní – standby a ostatní poslouchají – listen
HSRP skupiny mohou mít čísla 0 až 255, ale často můžeme použít maximálně 16 skupin dohromady
podporuje Ethernet, FDDI, Token Ring
skupina používá virtuální IP adresu a MAC adresu 0000.0c07.acXX, kde XX je číslo skupiny
aktivní router se volí podle standby priority, vyšší hodnota vítězí, defaultní je 100 z rozsahu 1 až 255
standby track interface priority je 10
to že je aktivní router živý se ověřuje pomocí hello paketu, který se standardně posílá každé 3s
pokud po dobu holdtime (defaultně 10s) neobdrží hello paket, tak prohlásí aktivní router za nefunkční
prochází se několik stavů - Disabled, Init, Learn, Listen, Speak (začíná posílat hello pakety), Standby, Active
Konfigurace HSRP
HSRP můžeme konfigurovat na L3 rozhranní:

VLAN interface (SVI)
fyzický routovaný port
etherchannel
Vlastní zapnutí HSRP na interfacu se provádí příkazem

SWITCH(config-if)#standby 1 ip 192.168.1.1
Kde číslo 1 je číslo skupiny, může nabývat hodnot 0 až 255, kdy 0 je defaultní a nemusí se zadávat. IP adresa je virtuální adresa brány.

Příklad základního nastavení

SWITCH1(config)#interface vlan 100
SWITCH1(config-if)#ip address 192.168.1.2 255.255.255.0 // vlastní adresa interfacu
SWITCH1(config-if)#standby 1 ip 192.168.1.1 // zapnutí HSRP a nastavení virtuální adresy
Aby mělo nastavení smysl, tak je třeba nakonfigurovat i druhý router:

SWITCH2(config)#interface vlan 100
SWITCH2(config-if)#ip address 192.168.1.3 255.255.255.0
SWITCH2(config-if)#standby 1 ip 192.168.1.1
Dalším, co asi v praxi nakonfigurujeme, je určení priority, podle které se volí aktivní router.

SWITCH1(config-if)#standby 1 priority 150 // nastaví prioritu na 150, defaultní je 100 (rozsah 1 - 255), vhodné je volit hodnoty větší
SWITCH1(config-if)#standby 1 preempt // zajistí, aby po naběhnutí původního aktivního routeru se stal opět aktivním
Takže náš předchozí příklad můžeme doplnit tak, aby SWITCH1 byl primárně aktivní:

SWITCH1(config-if)#standby 1 priority 150
SWITCH1(config-if)#standby 1 preempt

SWITCH2(config-if)#standby 1 priority 120
SWITCH2(config-if)#standby 1 preempt
Pozn.: Pro inter-VLAN routing samozřejmě musíme nakonfigurovat HSRP i pro další VLANy, které jsou routovány. Pro různé VLANy můžeme použít jednu HSRP skupinu, ale často je lepší rozdělit VLANy do několika skupin. Celá skupina se vždy přepíná najednou.

Pro zobrazení informací o HSRP máme příkaz

SWITCH#show standby
Následující příkaz nám zobrazí, která strana je aktivní, a jestli je dostupný další člen.

SWITCH#show standby brief
Při běžném provozu nesmíme zapomenout na to, že se mezi routery v dané VLANě musí šířit multicasty s hello pakety, jinak nám přepínání nebude fungovat. Takže když konfigurujeme ACL na VLANu, musíme povolit tuto komunikaci, například něco jako:
permit udp any 224.0.0.0 0.0.0.255

Multiple HSRP
Pro load balancing můžeme použít rozšíření HSRP nazvané MHSRP. To nám dovolí zadat do konfigurace více skupin s rozdílnou prioritou a část klientů nakonfigurovat pro jeden router a část pro druhý.

To se může hodit pro některé situace, ale pro běžný inter-VLAN routing spíše využijeme různé skupiny, takže některé VLANy budou standardně routovány jedním routerem a ostatní druhým.

Příklad nastavení:

SWITCH1(config)#interface g1/0/1
SWITCH1(config-if)#no switchport // aby se interface stal pouze L3 (routovací)
SWITCH1(config-if)#ip address 192.168.1.10 255.255.255.0
SWITCH1(config-if)#standby 1 ip 192.168.1.1
SWITCH1(config-if)#standby 1 priority 150
SWITCH1(config-if)#standby 1 preempt
SWITCH1(config-if)#standby 2 ip 192.168.1.2
SWITCH1(config-if)#standby 2 priority 110
SWITCH1(config-if)#standby 2 preempt

SWITCH2(config)#interface g1/0/1
SWITCH2(config-if)#no switchport // aby se interface stal pouze L3 (routovací)
SWITCH2(config-if)#ip address 192.168.1.11 255.255.255.0
SWITCH2(config-if)#standby 1 ip 192.168.1.1
SWITCH2(config-if)#standby 1 priority 110
SWITCH2(config-if)#standby 1 preempt
SWITCH2(config-if)#standby 2 ip 192.168.1.2
SWITCH2(config-if)#standby 2 priority 150
SWITCH2(config-if)#standby 2 preempt
Pro konfiguraci HSRP je k dispozici ještě řada dalších možností, pro běžnou praxi však stačí pouze to výše uvedené.

ICMP Internet Router Discovery Protocol - IRDP
popsáno v RFC 1256
host si pomocí ICMP zjistí skutečnou adresu routeru (nepoužívá se virtuální)
poslouchá multicastové pakety od routerů a podle nich nalezne GW na svém subnetu
používá zprávy ICMP router advertisement (periodicky) a router solicitation
pokud nedostane pravidelnou zprávu od své GW, tak přepne na záložní
perioda odesílání advertisement bývá v řádu minut, takže přepnutí na záložní router může trvat dlouho
pokud stanice nastartuje, tak nemusíme čekat, než dorazí advertisement, ale můžeme odeslat solicitation zprávu jako dotaz na údaje
Virtual Router Redundancy Protocol – VRRP
standard popsaný v RFC 2338
velice podobné HSRP
používá virtuální router, který má virtuální IP adresu a MAC 0000.5e00.01xx, kde xx je číslo skupiny v hexa (VRID)
hlavní router je master, má nejvyšší prioritu (může nabývat hodnot 1 až 254, 100 je default) ve skupině (skupiny mají číslo 0 až 255)
ostatní routery jsou backup
každou 1s (default) posílá advertisement
defaultně používá preempt – když je dostupný router s vyšší prioritou, přebírá roli master
nemá žádný mechanismus pro interface tracking (sledování stavu interfacu a podle toho úprava priority)
jako virtuální IP adresa se může použít skutečná IP adresa jednoho z routerů
Gateway Load Balancing Protocol – GLBP
Cisco proprietární protokol, který k vlastnostem obdobným jako HSRP přidává Load Balancing
všechny routery ve skupině forwardují data, využívá Load Balancing per host pomocí Round Robin (nemá žádný vztah k zátěži)
Load Balancing je pomocí ARP odpovědí, kdy se odesílá MAC adresa vybraného routeru ze skupiny
klienti mají stejnou IP adresu brány, ale jinou MAC adresu
routery posílají (defaultně) hello paket každé 3s na multicast adresu 224.0.0.102 UDP port 3222
volí Active Virtual Gateway (AVG), která přiděluje virtuální MAC adresy
routery, které přijmou tuto MAC, se označují jako Active Virtual Forwarder (AVF), může jich být max. 4 pro skupinu
podporuje weighting – určuje, zda router funguje jako AVF, když hodnota klesne, pod danou mez, tak není AVF a tracking – sleduje stav interfacu, a když jde interface dolů, tak se sníží hodnota weighting
Příklad funkce weighting a interface tracking:

SWITCH(config)#track 1 interface serial 2/0 line-protocol
SWITCH(config)#interface f0/1
SWITCH(config-if)#glbp 10 weighting 110 lower 95 upper 105
SWITCH(config-if)#glbp 10 weighting track 1 decrement 10