Redundancja HSRP

Damian Michalak
Damian Michalak Komentarze: 2

HSRP, czyli Hot Standby Router Protocol, jest protokołem zastrzeżonym przez Cisco, powstałym w 1994 roku i zdefiniowanym w RFC 2281. Protokół ten możemy zatem używać jedynie na urządzeniach wyprodukowanych przez Cisco. Zadaniem HSRP jest świadczenie redundancji bramy domyślnej, o której możesz przeczytać we wcześniejszym artykule „FHRP – wszystko co musisz wiedzieć o redundancji bramy domyślnej„.

Na wstępie chciałbym podkreślić, że wszędzie gdzie będzie mowa o routerach, możemy równie dobrze mówić o switchach warstwy trzeciej.

Podstawy

W artykule tym rozważania będę opierał na poniższej topologii, która przedstawia typowy przypadek użycia protokołu HSRP:

Topologia HSRP

W HSRP routery przypisujemy do wspólnej grupy HSRP, której numer może wynosić od 0 do 255. Przypisania tego dokonujemy na poziomie interfejsu, któremu chcemy zapewnić redundancję. Pierwsza podstawowa komenda to zdefiniowanie wirtualnego adresu IP, który będzie współdzielony przez routery należące do tej samej grupy HSRP. Do konfiguracji HSRP używamy słowa kluczowego „standby„, a następnie numeru grupy, którą chcemy konfigurować.

R1(config)# interface f0/0
R1(config-if)# standby 1 ip 10.0.0.1
R2(config)# interface f0/0
R2(config-if)# standby 1 ip 10.0.0.1

Warto zwrócić uwagę, że nie trzeba podawać maski sieciowej – router użyje maski z interfejsu, na którym konfigurujemy daną grupę HSRP. Standby IP konfigurujemy oczywiście na obu routerach.

W momencie utworzenia wirtualnego adresu IP, router automatycznie tworzy także wirtualny adres MAC. W momencie gdy host PC1 będzie chciał rozwiązać adres bramy sieciowej 10.0.0.1 na adres MAC, router będący w danej chwili w stanie active odpowie na komunikat ARP wirtualnym adresem MAC. Adres ten ma następującą postać:

0000.0C07.AC01
gdzie:
0000.0C – identyfikator producenta – w tym przypadku Cisco (24 bity)
07.AC – identyfikator protokołu HSRP (16 bitów)
01 – identyfikator grupy HSRP (8 bitów)

Dobrą praktyką jest przypisywanie do grupy HSRP takiego samego numeru, jak numer VLANu, dla którego dana grupa będzie świadczyła redundancję (jeśli oczywiście konfigurujemy HSRP dla interfejsów SVI). Warto jednak podkreślić, że wiele switchy Cisco Catalyst obsługuje jedynie do 16 unikalnych numerów grup. Co istotne, grupy muszą być unikalne jedynie w obrębie danego interfejsu – innymi słowy, są lokalnie znaczące (locally significant). Możemy więc przykładowo przypisać grupę 1 zarówno do interfejsu VLAN 10 jak i VLAN 11:

R1(config)# interface vlan 10
R1(config-if)# standby 1 ip 10.0.10.1
R1(config-if)# exit
R1(config)# interface vlan 11
R1(config-if)# standby 1 ip 10.0.11.1

Aby grupa spełniała warunki redundancji musimy mieć oczywiście przynajmniej dwa routery, możliwe jest jednak aby w jednej grupie znajdowały się więcej niż dwa urządzenia. Jedno z urządzeń zostaje wybrane w drodze elekcji jako pełniące funkcję aktywnej bramy – czyli active router, inne natomiast jako brama zapasowa – czyli standby router. Wszystkie pozostałe urządzenia w grupie HSRP przechodzą natomiast w stan nasłuchiwania (listen).

Timery

Router będący w stanie active wysyła w regularnych interwałach (domyślnie co 3 sekundy) komunikaty Hello. Na komunikaty te nasłuchuje jedynie urządzenie w stanie standby, dzięki czemu pozostaje ono świadome stanu aktywnego routera. Komunikaty te wysyłane są na multicastowy adres 224.0.0.2 (wszystkie routery) przy użyciu portu UDP 1985. Standby router posiada również Hold-timer, ustawiony domyślnie na 10 sekund. Oznacza to, że jeśli komunikat Hello od aktywnego urządzenia nie zostanie odebrany w ciągu 10 sekund to router standby stwierdzi jego niedostępność i przejdzie w stan active. Warto mieć na uwadze, że HSRP, jako protokół z 1994 roku ma domyślne wartości timerów niedostosowane do dzisiejszych realiów. Dobrą praktyką jest zatem zmniejszenie ich wartości aby skrócić czas konwergencji. W komendzie najpierw podajemy wartość timera Hello, a następnie Holdtime. Domyślnie wartości są interpretowane w sekundach, możemy natomiast zejść na poziom milisekund, poprzedzając każdą wartość słowem kluczowym „msec„:

R1(config-if)# standby 1 timers 1 3
R1(config-if)# standby 1 timers msec 100 msec 300

Priorytety

O wyborze aktywnego routera decyduje mechanizm elekcji wykorzystujący priorytety, których wartość może wynosić od 0 do 255. Każdy router w grupie HSRP posiada domyślny priorytet wynoszący 100. Elekcję wygrywa urządzenie posiadające najwyższy priorytet. Do ustawienia priorytetu używamy słowa kluczowego (a jakże by inaczej) – priority:

R1(config)# interface f0/0
R1(config-if)# standby 1 priority 110

Preemption

Jeśli wszystkie priorytety są równe to elekcję wygrywa urządzenie posiadające najwyższy adres IP na interfejsie przynależącym do grupy HSRP. Urządzenie, które uzyskało drugi rezultat przyjmuje stan standby. W przypadku gdy dopiero uruchamiamy urządzenia w sieci to pierwszy router, który „podniesie” swój interfejs HSRP przejdzie w stan active – nawet jeśli jego priorytet nie jest najwyższy. Aby router z największym priorytetem przejął stan active należy na nim skonfigurować specjalną funkcjonalność – preemption. W przeciwnym wypadku priorytet będzie znajdował swoje zastosowanie tylko w sytuacji kiedy aktywny router przestaje działać.

R1(config-if)# standby 1 preempt

Przejęcie stanu active możemy opóźnić. Jest to często pożądane – wyobraźmy sobie sytuację, w której poprzednio aktywny router “flapuje”. W takiej sytuacji preemption spowoduje oddanie stanu active routerowi, który lada chwila stanie się nieosiągalny. Skutki można sobie łatwo wyobrazić. W celu skonfigurowania opóźnienia dodajemy do komendy słowo kluczowe delay, a po nim opcję minimum lub reload. Możemy też użyć obie te opcje. „Minimum” określa nam opóźnienie przejęcia po wykryciu przez router, że to on ma najwyższy priorytet. Reboot opóźnia natomiast próbę przejęcia stanu active po zrestartowaniu urządzenia. Cisco rekomenduje, aby wartość ta wynosiła połowę czasu, jaki routerowi zajmuje pełny restart (przykładowo dla 2 minut będzie to 60 sekund). Wartość opóźnienia podajemy w sekundach:

R1(config-if)# standby 1 preempt delay minimum 10 reload 60

Stany HSRP

Przechodzenie w stan active jest wieloetapowe – proces HSRP na każdym urządzeniu musi przejść przez szereg stanów:

1. Disabled
2. Initialize
3. Learn
4. Listen
5. Speak
6. Standby
7. Active

Maszyna stanowa HSRP jest nieco bardziej złożonym tematem, który zostanie pewnie kiedyś przeze mnie omówiony w osobnym artykule. Zainteresowanych samodzielnym zgłębieniem tego tematu odsyłam tymczasem na stronę Cisco.

Tracking

HSRP będzie doskonale zapewniało redundancję w wypadku awarii jednego z routerów. Co jednak z sytuacją, w której łącze WAN na aktywnym routerze staje się nieużywalne (przykładowo interfejs zmienia stan na up/down lub down/down)? Z pomocą przychodzi funkcja śledzenia/monitorowania stanu interfejsu – track. Konfiguracja jest banalna i polega na określeniu wartości o jaką zostanie zmniejszony priorytet aktywnego routera w przypadku wykrycia zmiany stanu interfejsu:

R1(config-if)# standby 1 track s0/0 20

W powyższym przykładzie, gdy interfejs Serial0/0 zmieni status na down, priorytet HSRP dla grupy 10 zostanie zmniejszony o 20.

Sytuacja ulega skomplikowaniu, gdy co prawda łącze WAN na aktywnym routerze działa, ale problem z komunikacją pojawia się gdzieś dalej, np. u dostawcy usług internetowych. W takim wypadku z pomocą przychodzi dostępna na urządzeniach Cisco funkcja IP SLA, o której jednak porozmawiamy w jednym z kolejnych artykułów.

Load-balancing HSRP

HSRP nie posiada co prawda mechanizmu load-balancingu (w przeciwieństwie do GLBP), możemy jednak użyć funkcje HSRP w taki sposób, aby użyć posiadane routery w maksymalnie efektywny sposób. W tym celu posiadając przykładowo dwa routery, należy jeden z nich skonfigurować jako active router dla połowy używanych w naszej sieci VLANów, odpowiednio manipulując priorytetem. Oczywiście drugi router konfigurujemy w takim wypadku jako active router dla drugiej połowy VLANów.

Uwierzytelnianie HSRP

Jedną z ciekawych funkcji HSRP jest uwierzytelnianie, dzięki któremu dodatkowo zabezpieczysz routery. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.

Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSletterze 27. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.

TAGI:
Komentarze: 2
Otrzymuj powiadomienia z tej dyskusji
Powiadom mnie o
guest

2 - Ilość komentarzy
Sortuj wg najlepszych
Sortuj wg najnowszych Sortuj wg najstarszych
Inline Feedbacks
View all comments
kamil
kamil
4 lat temu

Czy tu nie ma błędu?
W powyższym przykładzie, gdy interfejs FastEthernet0/1 zmieni status na “down”, priorytet HSRP dla grupy 10 zostanie zmniejszony o 20.
Powinno być
W powyższym przykładzie, gdy interfejs Serial 0/0