Once you’ve had the ability to read the first article in this series or if you have previous knowledge of Cisco’s Hot Standby Redundancy Protocol (HSRP), you should then read this article. This article takes the concepts that were covered in the initial article and offers a little more information about how the HSRP devices communicate together. It will then get into the commands and configuration steps required to get HSRP up and operating between devices.
HSRP Communications
With HSRP, three types of multicast messages are sent between the devices:
- Hello – The hello message is sent between the active and standby devices (by default, every 3 seconds). If the standby device does not hear from the active device (via a hello message) in about 10 seconds, it will take over the active role.
- Resign – The resign message is sent by the active HSRP device when it is getting ready to go offline or relinquish the active role for some other reason. This message tells the standby router to be ready and take over the active role.
- Coup – The coup message is used when a standby router wants to assume the active role (preemption).
HSRP version 1 devices use the multicast IP address 224.0.0.2 to send these messages; HSRP version 2 devices use the multicast IP address 224.0.0.102.
HSRP States
When in operation, HSRP devices are configured into one of many states:
- Active – This is the state of the device that is actively forwarding traffic.
- Init or Disabled – This is the state of a device that is not yet ready or able to participate in HSRP.
- Learn – This is the state of a device that has not yet determined the virtual IP address and has not yet seen a hello message from an active device.
- Listen – This is the state of a device that is receiving hello messages.
- Speak – This is the state of a device that is sending and receiving hello messages.
- Standby – This is the state of a device that is prepared to take over the traffic forwarding duties from the active device.
HSRP Configuration Process and Commands
A few basic commands are used to configure HSRP on a device (see Table 1). This section goes over the commands that are required, along with a sequence that can be used to configure them. The next section will go into some examples of how HSRP can be configured.
Table 1 - HSRP Configuration Commands
1 |
Enter privileged EXEC mode. |
router>enable |
2 |
Enter global configuration mode. |
router#configure terminal |
3 |
Enter interface configuration mode. |
router(config)#interface interface |
4 |
Configure an IP address on the interface. |
router(config-if)#ip address address netmask |
5 |
Configure an HSRP virtual IP address. Note: If the group-numberis not entered, then it will default to a group number of 0. The ip-address parameter is not required but does need to be entered on at least one HSRP device. The other devices are able to learn the virtual IP address from this device. |
router(config-if)#standby [group-number] ip [ip-address] |
6 |
Configure the HSRP priority (optional). Note: If the group-numberis not entered, then it will default to a group number of 0. The valid values for the priorityare from 0 through 255. |
router(config-if)#standby [group-number] priority priority |
7 |
Configure HSRP preemption (optional). |
router(config-if)#standby [group-number] preempt |
8 |
Associate a tracked object to the HSRP group (optional). Note: If the group-numberis not entered, then it will default to a group number of 0. By default, the decrement-value is 10; what this means is that the HSRP priority will go down by 10 if the object is not ‘up’. The shutdown parameter will disable the HSRP group if the tracked object goes down. |
router(config-if)#standby [group-number] track object-number [decrement decrement-value][shutdown] |
9 |
Create a tracked object (optional). Note: The object-numbercan be any number between 1 and 1000. The line-protocolparameter will track the protocol state of the configured interface. The ip routingparameter will track the IP routing capability of an interface (is it configured with an IP address and operational). |
router(config)#track object-number interface interface {line-protocol | ip routing} |
HSRP Configuration Example
For the example in this section, the topology shown in Figure 1 is used. HSRP is configured between two devices which each have a single interface that goes towards the core of the network, an interface that connects them together (not an HSRP requirement), and an interface that connects into a common subnet.
Figure 1 HSRP example topology
The configuration performs the following (see Tables 2 and 3):
- Configure the IP addresses 10.10.20.1/30 (R1) and 10.10.20.2/30(R2) on their Fa0/1 interfaces.
- Configure the IP addresses 172.16.1.1/24 (R1) and 172.16.2.1 (R2) on their Fa0/0 interfaces.
- Configure HSRP version 2 between R1 and R2 using the IP addresses 10.10.10.1/24 (R1) and 10.10.10.2/24(R2) and a virtual IP address of 10.10.10.5 on their Fa1/0 interfaces.
- Configure HSRP preemption on both R1 and R2.
- Configure R1 with a HSRP priority of 140.
- Configure the HSRP process to track the respective Fa0/0 interfaces (line-protocol) and decrement the HSRP priority by 50 should a failure occur.
Table 2 - R1 Example Configuration
1 |
Enter privileged EXEC mode. |
R1>enable |
2 |
Enter global configuration mode. |
R1#configure terminal |
3 |
Enter interface configuration mode. |
R1(config)#interface fa0/1 |
4 |
Configure an IP address on the interface. |
R1(config-if)#ip address 10.10.20.1 255.255.255.252 |
5 |
Enter interface configuration mode. |
R1(config-if)#interface fa0/0 |
6 |
Configure an IP address on the interface. |
R1(config-if)#ip address 172.16.1.1 255.255.255.0 |
7 |
Enter interface configuration mode. |
R1(config-if)#interface fa1/0 |
8 |
Configure an IP address on the interface. |
R1(config-if)#ip address 10.10.10.1 255.255.255.0 |
9 |
Configure the HSRP virtual IP address. |
R1(config-if)#standby ip 10.10.10.5 |
10 |
Configure the use of HSRP version 2. |
R1(config-if)#standby version 2 |
11 |
Configure the use of HSRP preemption. |
R1(config-if)#standby preempt |
12 |
Configure the HSRP priority. |
R1(config-if)#standby priority 140 |
13 |
Configure HSRP object tracking. |
R1(config-if)#standby track 1 decrement 50 |
14 |
Create a tracked object. |
R1(config)#track 1 interface fa0/0 line-protocol |
Table 3 - R2 Example Configuration
1 |
Enter privileged EXEC mode. |
R2>enable |
2 |
Enter global configuration mode. |
R2#configure terminal |
3 |
Enter interface configuration mode. |
R2(config)#interface fa0/1 |
4 |
Configure an IP address on the interface. |
R2(config-if)#ip address 10.10.20.2 255.255.255.252 |
5 |
Enter interface configuration mode. |
R2(config-if)#interface fa0/0 |
6 |
Configure an IP address on the interface. |
R2(config-if)#ip address 172.16.2.1 255.255.255.0 |
7 |
Enter interface configuration mode. |
R2(config-if)#interface fa1/0 |
8 |
Configure an IP address on the interface. |
R2(config-if)#ip address 10.10.10.2 255.255.255.0 |
9 |
Configure the HSRP virtual IP address. |
R2(config-if)#standby ip 10.10.10.5 |
10 |
Configure the use of HSRP version 2. |
R2(config-if)#standby version 2 |
11 |
Configure the use of HSRP preemption. |
R2(config-if)#standby preempt |
12 |
Configure HSRP object tracking. |
R2(config-if)#standby track 1 decrement 50 |
13 |
Create a tracked object. |
R2(config)#track 1 interface fa0/0 line-protocol |
With this configuration, R1 is always the preferred active HSRP device unless its Fa0/0 interface goes down, in which case R2 will take over the active role from R1 preemptively.
Summary
This article introduced the commands that can be used to configure HSRP in a “normal” way. A number of different additional commands can be used to enable HSRP to work better in specific situations but were not covered in this article for brevity’s sake. For those seriously looking at implementing HSRP on a production network, look over Cisco’s documentation on all of the available options.