The article has been supplemented with brief information about other protocols for ensuring gateway redundancy.
HSRP Principle
In practice, it is common to have redundant paths on L2 (according to the OSI model) in a local network, so the failure of an active element or connecting cable does not interrupt communication in the entire network. In such a network, we typically operate a number of VLANs, which are interconnected using inter-VLAN routing. This communication is already on L3, and we need to address the failure of the switch/router that connects all VLANs and serves as the gateway. This is more complicated because all stations have the IP address of this router set as their gateway. HSRP solves this situation by requiring a backup router, but in the event of a failure, communication automatically switches to this backup. Additionally, the backup router can be less powerful.
Note: The same situation applies when it is a central gateway through which we are connected to the internet. However, it is usually more complicated because a firewall is typically running here.
HSRP is a proprietary protocol from Cisco. There is also a standardized protocol with the same function called Virtual Router Redundancy Protocol - VRRP. Based on my experience, the Cisco version, HSRP, is more commonly used in practice.
The principle is that we have a virtual IP address (interface) of the gateway used by clients, and a virtual MAC address. These virtual addresses are shared by a configured group of routers (their interfaces have their own IP and MAC addresses). One of the routers is selected as active, holding the virtual addresses, and the others are standby (backup). HSRP detects the failure of the active router, and in that case, the standby router takes over the virtual IP and MAC address, becoming the active device that routes traffic. Availability information is exchanged using Hello packets.

As seen, we typically have one active router working and one standby router waiting for the active one to fail. Using a Hot Standby group, we can create multiple configurations for different VLAN groups and set different active and standby routers, thus achieving (manual) load balancing.
Main Features
- described in RFC 2281
- from the routers that are part of the HSRP group, one is selected as primary - active, one as backup - standby, and the others listen - listen
- HSRP groups can have numbers 0 to 255, but often we can use a maximum of 16 groups together
- supports Ethernet, FDDI, Token Ring
- the group uses a virtual IP address and MAC address
0000.0c07.acXX, whereXXis the group number - the active router is selected based on standby priority, higher value wins, default is 100 from the range 1 to 255
- standby track interface priority is 10
- the active router's liveliness is verified using hello packets, which are sent every 3s by default
- if no hello packet is received during the holdtime (default 10s), the active router is declared non-functional
- several states are traversed - Disabled, Init, Learn, Listen, Speak (starts sending hello packets), Standby, Active
HSRP Configuration
HSRP can be configured on L3 interfaces:
- VLAN interface (SVI)
- physical routed port
- etherchannel
HSRP is enabled on the interface with the command
SWITCH(config-if)#standby 1 ip 192.168.1.1
Where 1 is the group number, which can range from 0 to 255, with 0 being the default and not needing to be entered. The IP address is the virtual address of the gateway.
Example of basic configuration
SWITCH1(config)#interface vlan 100 SWITCH1(config-if)#ip address 192.168.1.2 255.255.255.0 // interface's own address SWITCH1(config-if)#standby 1 ip 192.168.1.1 // enable HSRP and set virtual address
To make the configuration meaningful, the second router must also be configured:
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
Next, we typically configure the priority to select the active router.
SWITCH1(config-if)#standby 1 priority 150 // sets priority to 150, default is 100 (range 1 - 255), it is advisable to choose higher values SWITCH1(config-if)#standby 1 preempt // ensures that the original active router becomes active again after recovery
So, we can supplement our previous example to make SWITCH1 the primary active router:
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
Note: For inter-VLAN routing, we must configure HSRP for other VLANs that are routed. For different VLANs, we can use one HSRP group, but it is often better to divide VLANs into several groups. The entire group always switches at once.
To display HSRP information, we have the command
SWITCH#show standby
The following command shows which side is active and whether another member is available.
SWITCH#show standby brief
In normal operation, we must not forget that multicasts with hello packets must be propagated between routers in the given VLAN, otherwise, the switching will not work. So, when configuring an ACL on the VLAN, we must allow this communication, for example, something like:
permit udp any 224.0.0.0 0.0.0.255
Multiple HSRP
For load balancing, we can use an extension of HSRP called MHSRP. This allows us to configure multiple groups with different priorities and configure part of the clients for one router and part for the other.
This can be useful for some situations, but for normal inter-VLAN routing, we will rather use different groups, so some VLANs will be routed by one router and others by the second.
Example configuration:
SWITCH1(config)#interface g1/0/1 SWITCH1(config-if)#no switchport // to make the interface L3 (routed) only 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 // to make the interface L3 (routed) only 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
There are many other options available for configuring HSRP, but the above is sufficient for common practice.
ICMP Internet Router Discovery Protocol - IRDP
- described in RFC 1256
- the host uses ICMP to find the actual address of the router (does not use virtual)
- listens to multicast packets from routers and finds the GW on its subnet
- uses ICMP router advertisement (periodically) and router solicitation messages
- if it does not receive a regular message from its GW, it switches to the backup
- the advertisement sending period is usually in minutes, so switching to the backup router can take a long time
- if the station starts, we do not have to wait for the advertisement to arrive, but we can send a solicitation message as a query for data
Virtual Router Redundancy Protocol – VRRP
- standard described in RFC 2338
- very similar to HSRP
- uses a virtual router with a virtual IP address and MAC
0000.5e00.01xx, wherexxis the group number in hex (VRID) - the main router is master, has the highest priority (can range from 1 to 254, 100 is default) in the group (groups have numbers 0 to 255)
- other routers are backup
- sends advertisement every 1s (default)
- default uses preempt – when a router with higher priority is available, it takes over the master role
- has no mechanism for interface tracking (monitoring the interface state and adjusting priority accordingly)
- the virtual IP address can be the actual IP address of one of the routers
Gateway Load Balancing Protocol – GLBP
- Cisco proprietary protocol that adds Load Balancing to features similar to HSRP
- all routers in the group forward data, using Load Balancing per host with Round Robin (no relation to load)
- Load Balancing is done via ARP responses, where the MAC address of the selected router from the group is sent
- clients have the same IP address of the gateway but different MAC addresses
- routers send (default) hello packet every 3s to multicast address
224.0.0.102 UDP port 3222 - selects Active Virtual Gateway (AVG), which assigns virtual MAC addresses
- routers that receive this MAC are called Active Virtual Forwarder (AVF), there can be a maximum of 4 per group
- supports weighting – determines whether the router functions as AVF, if the value drops below a certain threshold, it is not AVF and tracking – monitors the interface state, and if the interface goes down, the weighting value decreases
Example of weighting and 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
Možná jenom doplním.
Vrrp nabízí jednu zajímavou vlastnost, můžete využít jako "virtuální ip" ip adresu rozhraní jednoho ze směrovačů.
Ještě existuje GLBP, možná někdy příště o něm napíšete, mezi hodně zajímavou vlastnost u něj patří, že umí loadbalancing mezi směrovači (není zde rozděleno striktně na forwarding a stand-by, takže můžete využívat kapacitu dostupných linků, ale hůře se debuguje chování sítě :) )
Ohľadom HSRP,mi tam niečo chýba...
Najprv musíme na smerovačoch nakonfigurovať objeky pre sledovanie, aby HSRP mohol sledovať stav rozhraní. A to príkazom track xx int [wan rozhranie] line-protocol - kde xx je čislo traku.
Napríklad pri Vašej konfigurácii MHSRP by som doplnil ešte sledovanie WAN rozhrania do sveta, či nieje down.
Napríklad R1 a R2 su smerovače ktoré rutujú pre rôzne VLANy.
SWITCH1(config)#track 10 interface Serial0/0/0 line-protocol
SWITCH1(config)#interface g1/0/1
SWITCH1(config-if)#no switchport
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
SWITCH1(config-if)#track 10
SWITCH2(config)#track 11 interface Serial0/0/0 line-protocol
SWITCH2(config)#interface g1/0/1
SWITCH2(config-if)#no switchport
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
SWITCH2(config-if)#track 11
A ešte by som doplnil k tomu prikazu dielči príkaz decrement xx kde xx je hodnota o ktorú sa zníži priorita rozhrania pri výpadku.
respond to [2]MacGyver: Nevím, jestli je to na routerech nějak jinak. Ale na switchi to co píšete nefunguje. Tedy sledování interfacu tam je, ale konfiguruje se jinak a rozhodně není povinné. Je tam pouze kvůli změně priority, pokud bychom ji chtěli.
respond to [3]Samuraj: No na rútroch to je tak ako som písal. Layer 3 switche na routing som nskúšal,.. Vychádzal som z toho, že to bude zhodné...:-)
Díky za moc pěknou sérii článků. Chtěl bych se zeptat k HSRP a určení cesty v síti. Předpokládejme, že máme jeden L2 switch-SW1 v přístupové vrstvě připojený k dvěma routerům/L3 switchům -R2 a R3 v distribuční vrstvě pracující v HSRP. PC připojená na SW1 mají default gateway HSRP IP adresu a aktivní router je R2. Tudíž PC při odesílání paketů do jiného subnetu obdrží na ARP žádost virtuální HSRP MAC adresu od R2 (je aktivní) a SW1 si tuto MAC adresu uloží do CAM tabulky. Nyní R2 umře, aktivním se stane R3. PC opět odesílá pakety do jiného IP subnetu na HSRP MAC adresu kterou má v ARP cache (a vše je v pořádku, protože tuto MAC adresu převzal záložní a nyní aktivní R3). Paket dorazí na SW1 a ten má ve své CAM ovšem uloženu tuto cílovou HSRP MAC adresu na portu vedoucím k R2 (který není aktuálně funkční) a pošle tedy paket z rozhraní k R2, což způsobí nedoručitelnost, protože R2 je mrtvý a aktuálně aktivní je R3...Jak je toto ošetřeno? Díky. Milan.
Omlouvám se za zavádějící pojmy paket. V případě, SW1 (L2 zařízení) pojmem paket v příspěvku výše myslím rámec...
respond to [5]Milan: Nechce se mi nad tím dlouhým popisem moc přemýšlet, tak snad to řeknu správně :-).
Je to jednoduché a plyne to z toho, jakým způsobem si switch vytváří CAM tabulku. Na portu 1 přijde rámec s MAC, tato dvojice se uloží do CAM tabulky. Pokud ale přijde na portu 2 rámec se stejnou MAC, tak se uloží tato nová dvojice (a ta stará se smaže). Pokud by komunikovala přes dva porty stejná MAC, tak se nám do logu ukládá address flapping a je to problém (i když třeba u load balancingu by se to hodilo).
Jasne,tomu rozumim. Jedna se mi o to,jakym zpusobem si SW zmeni CAM tabulku v pripade, ze aktivni HSRP router umre a druhy zapojeny do tohoto SW prevezme jeho funkci. Toto SW nevi a ma ve sve CAM tabulce stale svazanu virtualni HSRP MAC adresu s portem za kterym je nyni jiz neaktivni/mrtvy HSRP routern.
respond to [8]Milan: No to je přeci jasné :-). Kvůli tomu, aby záložní server zjistil, že se má stát aktivním máme hello paket. Když standby převezme active roli, tak informuje svoje okolí.
Taky jasne:-) ale porad me trapi toto: switch si ulozi do sve CAM tabulky cislo portu a MAC adresu(fiktivni HSRP MAC adresu),cislo portu switche bude korespondovat s rozhranim na kterem je aktivni HSRP router. Tento HSRP aktivni router umre,aktivnim se stane do te doby standby HSRP router,ktery je ovsem zapojen na fyzicky jiny port switche. Switch ovsem o teto zmene aktivnich routeru nevi a v CAM tabulce ma porad onu virtualni HSRP MAC adresu svazanu s portem na kterem byl predchozi(nyni mrtvy) akivni router. Tudiz prichozi ramec bude forwardovat na rozhrani na kterem je mrtvy router...Tudiz se mi zda,ze zde bude blackhole do doby nez vyprsi ARP cache v klientovi a pozada si znova nebo do doby zestarnuti zaznamu v CAM tabulce a jeji aktualizaci.
respond to [10]Milan: No to jsem přeci popsal hned v první odpovědi. Switch si dělá záznamy do CAM tabulky podle příchozích rámců na interfacu (ne podle ARP rámců). Aktivní router posílá Hello Packety ze své IP adresy a virtuální MAC adresy (té, o které se pořád bavíme). Takže jakmile se standby router stane aktivním, tak hned odešle Hello Packet s virtuální MAC adresou a switch si aktualizuje CAM tabulku.
Tak co, jasné? :-)
Diky,uz temer jasne :-) Kdyz uvazuji,ze by mezi dvema routery v HSRP byl primy L3 propoj,tak by hello pakety tekly pres tento propoj(domnivam se) a ne pres L2 infrastrukturu smerem k switchi v access vrstve.
respond to [12]Milan: Řekl bych, že je to naprosto nesmyslné zapojení a navíc nefunkční. To by byl jako druhý interface připojen do switche pro komunikaci klientů nebo by se klienti naučili čarovat a GW by adresovali na L3 a jak by se směrovaly ty multicasty (Hello Packet) do toho L3 propoje ....
Ne,myslim standardni(Cisco doporucene zapojeni). Z access switche 2cesty (jedna ke kazdemu ze dvou routeru v distribucni vrstve) a tyto routery prpojeny navzajem pres L3 cestu(routovane porty s IP dresou). L3 propoj mezi routery,ze VLANy nepresahuji jedotlive switche (VLANy jsou omezeny vzdy na jeden access switch),coz je doporuceny design.
Super clanek.
Diky!
Myslím, že to není Routing Protocol, ale Router Protocol...
Moc pěkný srozumitelný článek. Měl bych ale dotaz (tím se článek nezabývá) jak je řešena konfigurace IP adres na portech routeru, jestliže máme do jednoho routeru připojeny 2 a více kabelů (ze spodních switchů, viz. obrázek článku)? Routovací porty jednoho routeru přeci neumožňují mít IP adresy ze stejné sítě. Řeším to, že návodem v článku nastavím pouze jeden z těchto portů, ale další porty (kvůli redundanci zařízení) již nevím jak nastavit.
respond to [17]Knight: Je mi líto, ale nějak nechápu ten dotaz. Já to v praxi řeším jen na switchích a ne pro port interface, ale VLAN interface. Ale stejně vždy pro jednu VLANu mám jednu IP (plus VIP). Takže i kdyby to bylo na porty, tak by to měl být vždy jiný subnet. Ale možná mi něco uniká.
respond to [18]Samuraj: Mám například jednoduchou síť (jedna vlan, jeden subnet 192.168.0.0 /24). Zde nastavit záložní router umím. Pokud chci ale síť rozšířit podle doporučeného cisco hierarchického modelu, kde figurují zdvojené nejen routery (resp. L3 switche) ale i L2 switche, mám problém s tím co nastavit na routerech na další připojené porty. Tyto porty jsou ve stejné síti jako ty již nastavené a nevím co dál, protože IP adresu tam již nedám.
Pro názornost přikládám obrázek: imgur.com/2yjokxA
Zatím neřeším další vlany, pouze chci aby bylo zajištěno připojení ze sítě ven, i v případě, že by se vyskytl v sítí výpadek na routeru nebo switchi. Kdybych dal interfacy na jednom routeru do jiné vlany, tak udělám spíše nějaký traffic control, ale nedocílím toho, že kdyby jeden vypadl, tak pořád bude fungovat druhý.
Je to vůbec možné, nebo řeším blbost, kterou v praxi nikdo nedělá?
respond to [19]Knight: To zdvojení je jasné, ale to je na L2, takže tam žádné IP adresy neřeším. L3 nastavuji na VLANě, ne na portu. Takže oba porty, kde jsou připojené různé switche, používají stejnou jednu adresu (v rámci VLANy).
respond to [20]Samuraj: Děkuji za odpověd. Myslel jsem, že už to chápu, ale když jsem to zkusil zapojit, tak se nespojím s L3 switchem a jeho IP na vlan interface. Porty do lokální sítě jsem na L3SW nastavil "no switchport", ale tím pádem reálně nemají žádnou IP adresu a tudíž se nespojím ani s adresou vlany na stejném L3SW.
Obrázek: imgur.com/BGPirUa
Všude mám vlan1. Pingy na L2SW .3 a .4 fungují jelikož zařízení jsou propojené switchovacími porty. Na L3SW .10 se ale již nedostanu pokud nastavím pouze vlan IP. Můžete mi prosím poradit co mám ještě nastavit, abych měl konektivitu na L3SW přes danou vlan IP? Takto jsem se nedostal ke konfiguraci HSRP, jelikož mi nefunguje ani základní konektivita.
respond to [21]Knight: Vy vůbec nerozumíte úplným základům, to se pak těžko něco vysvětluje. Když mluvíte o L2 switchcích, tak kde na nich máte nastavenou IP adresu, abyste se na ně dostal? Asi na VLANě, ne? A úplně stejně to uděláte na tom L3. Ale nechcete routovat porty, na co by to bylo? Takže příkaz no switchport je totální nesmysl.
respond to [22]Samuraj: Nemusíte hned vyvozovat závěry a říkat, že lidé nic neumí... Myslel jsem, že právě kvůli dotazům a problémům tu jsou komentáře.
VLANy a jejich interface jsem nastavil na SW již v předchozím postu. Chybu jsem ale dělal v tom, že porty na L3SW směrem do LAN jsem nastavoval jako routovací. Vždy jsem pracoval jen přímo s routery, ale ne L3SW. Tím pádem jsem měl naučeno, že na routeru mají být automaticky porty routovací. Bohužel to mi zadělalo na problém zde. Po úpravě mi zapojení již funguje (i když důsledkem switchovacích portů vzniká smyčka a STP mi stejně jeden redundantní spoj odpojí - což jde proti mému původnímu záměru mít zdvojené připojení)
Nicméně děkuji za trpělivost a poslední odpověď, to bylo to co jsem hledal - nedávat "no switchport" na L3.
Na závěr tedy k mé původní otázce: z tohoto tedy plyne, že dané redundantní zapojení není realizovatelné s použitím routerů (s routovacími porty)? Protože pak vzniká uplně stejný problém, který jsem já vytvořil u L3SW.
respond to [23]Knight: Je mi líto, ale stále se potkávám s lidmi, kteří se pouštějí do nějakých konfigurací a vůbec nerozumí co nastavují. Na webu mám spoustu článků, které různé základy vysvětlují. Třeba váš další problém.
Je jasné, že komunikace jedné stanice na L2 (MAC) nemůže přicházet ze dvou portů, došlo by k flapování MAC adresy a tím k mnoha problémům. Proto vzniklo STP a proto se vypínají porty. Dneska existují mnohem lepší řešení. Nastudujte si Port Channel (LACP) u Cisca dříve EtherChannel. Mám na to téma několik článků.
Ahoj. Řešil jste někdo HSRP mezi lokalitami? Příklad: Mám dvě LAN na dvou budovách. Každá budova má L3 box a ty jsou v HSRP. Každá budova má přípoj do jednoho stejného ISP, ale každý přípoj je v jiné OSPF Area. A teď mi padne linka mezi budovami. Z HSRP clusteru se stanou dva ostrůvky a oba se budou tvářit jako Primary. Ven z LAN do ISP OK, ale návratový trafic mi může chodit pak přes druhou stranu a bude nedostupný host. Na internetu jsem našel možnost rozjet L2 tunel přes ISP mezi oběma L3 boxy a tím by chodilo HSRP pak. Ale bohužel tohle nelze tady použít. Řešil jste to někdo?
HSRP version IP Protocol Group address UDP Port Virtual MAC address range
1 IPv4 224.0.0.2 (all routers)respond to respond to [1]tomfi: tomfi: 1985 00:00:0c:07:ac:XX
2 IPv4 224.0.0.102 (HSRP)respond to respond to [1]tomfi: tomfi: 1985 00:00:0c:9f:fX:XX
IPv6 ff02::66 2029 00:05:73:a0:0X:XX
HSRP - If the priorities are the same, the highest physical address will be selected as active in the group.