HSRP 的概念
b8798550e0d614718535240d.jpg
           HSRP 是 Hot Standby Routing Protocol(热备份路由协议)的缩写。它的作用是能够把一台或多台路由器用来做备份,所谓热备份是指当使用的路由器不能正常工作时,候补的路由器能够实现平滑的替换,尽量不被察觉。 通常,我们的网络上主机设置一条缺省路由,指向主机所在 网段 内的一个路由器 R,这样, 主机 发出的目的地址不在本网段的报文将被通过缺省路由发往路由器 R,从而实现了主机与外部网络的通信。在这种情况下,当路由器 R 坏掉时,本网段内所有以路由器 R 为缺省路由下一跳的主机将断掉与外部的通信。HSRP 实现容错备份功能,可以有效解决上述可靠性问题。
HSRP 解决的问题:
       主机 Pat 设置缺省 网关 Router A,这样访问主机 Marceau 需要通过 Router A 来进行。一旦 Router A 出现故障,主机 Pat 将失去与主机 Marceau 的联系,除非主机 Pat 重新指定其它的缺省网关,如Router B。
HSRP 的引入
 
让我们看一下引入 HSRP 是如何解决问题的。通过在 Router A 和Router B上配置 HSRP,使它们共同组成一个备份组,可以把这个组抽象成一个虚拟路由器,它有自己的 IP 地址和 MAC 地址,分别称作虚拟IP 地址和虚拟 MAC 地址。这样主机 Pat 可以把自己的缺省网关设置成虚拟 IP 地址,访问主机Marceau 就可以通过虚拟路由器来进行。当然,虚拟路由器是一个抽象的概念,实际的网关工作是由Router A 和Router B中的一个来完成的,我们称完成实际网关工作的路由器为活动路由器,另外一个路由器为备份路由器。如果活动路由器出现故障,就像前面提到的 Router A 发生故障,备份路由器(如Router B)会接替成为活动路由器,因此,主机 Pat 在不察觉情况下,仍然可以通过 Router B来访问主机 Marceau。
 
HSRP 的用途
 
HSRP 用于广播或多播局域网上的路由器热备份,并适于静态的路由配置,实际上 HSRP 正是解决设备不能动态适应路由改变的问题。 HSRP 主要用途: 1、主机设置缺省网关 假设主机 A 是局域网中一台需要访问远程数据的服务器,要求远程访问能力可靠。由于主机 A 中静态设置缺省网关,一旦想更换网关,必须在主机中重新配置。 通过使用 HSRP,主机中设置虚拟路由器为缺省网关,具体由虚拟路由器中的哪台路由器完成网关的实际工作,主机并不关心,这就为应用提供了较好的可靠性和灵活性。 2、设置静态路由 可以通过配置静态缺省路由指向虚拟路由器来实现另外一种备份。
HSRP 工作原理
 
当采用 HSRP, 用户看到的是一台虚拟路由器,该虚拟路由器有自己的虚拟 IP 地址和虚拟 MAC 地址,该虚拟路由器是由一组路由器组成的,这组路由器称为备份组。备份组内由一台活动路由器、一台备份路由器,以及群众路由器构成。一般情况下,一旦活动路由器坏掉,该备份路由器成为活动路由器,然后备份组内选举组内的另一台路由器为备份路由器。 组内路由器通过接受来自活动路由器的周期性 Hello 报文来判断活动路由器是否工作正常。如果组内备份路由器 R 在一定时间间隔未收到活动路由器 Hello 报文,就认为活动路由器坏掉了,优先级高的备份路由器最终成为活动路由器。备份路由器也是通过类似过程产生的。这样总能保证备份组中有一台活动路由器,一台备份路由器。
HSRP 报文
 
Version :1 Byte HSRP 报文的版本号。
本文档的 HSRP 报文版本为 0 。
 ? Oper Code :1 Byte描述了 HSRP 报文的类型,共有3 种报文类型:
1)0 —— Hello Hello 类型报文说明发送者处在运行状态,有能力成为活动/备份路由器。
2)1 —— COUP COUP 类型报文说明发送者希望成为活动路由器。
3)2 —— RESIGN COUP 类型报文说明发送者不再是活动路由器。  ?State :1 Byte 描述发送者发送报文时所处的状态。 ? Hello Time :1 Byte 该域只在 Hello 报文中有意义。它包含发送者发送 Hello 报文的时间间隔,以秒计; 如果路由器上未配置 Hello Time 值,它可以从组中活动路由器发送的 Hello 报文中学习到,但须本路由器认证该 Hello 报文; 如果路由器上既未配置 Hello Time,也未学习到,则赋予缺省值 3。
? Hold Time :1 Byte 该域只在 Hello 报文中有意义。它包含发送者发送 Hello 报文的持有时间,以秒计; Hold Time 必须大于 Hello Time ,而且最好大于三倍 Hello Time ;如果路由器上未配置 Hold Time ,它可以从组中活动路由器发送的 Hello 报文中学习到,但须本路由器认证该 Hello 报文; 如果路由器上既未配置 Hello Time ,也未学习到,则赋予缺省值10 。
 ? Priority :1 Byte 该域用来选举活动/备份路由器。当选举过程中出现竞争(多个路由器都想成为活动/备份路由器)时,优先级最高的竞争者胜,对于优先级相等的竞争者,IP 地址最大的竞争者胜。
 ? Group :1 Byte 此域中记录发送者所在的备份组号。对于以太网,Group 取值范围为0-255 。
? Authentication Data :8 Byte 8 字符长的的口令,用于组内成员相互鉴别。
 ? Vritual IP Address :4 Byte 备份组的虚拟IP地址,备份组模拟的虚拟路由器的 IP 地址。虚拟路由器还有一 MAC 地址,它由组号直接映射而成:0X00 00 0C 07 AC ** ,其中“**”为备份组号。 组内各成员须至少有如下信息:
(1)备份组号(Group);
(2)虚拟 MAC 地址(Virtual MAC Address);
(3)优先级(Priority);
(4)Authentication Data;
(5)Hello Time;
(6)Hold Time;
至少一位组员有如下信息:
(1)虚拟 IP 地址(Virtual IP Address);
 每位组员可选择配置如下信息:
(1)抢占标志(Preempt); 如果某位组员的 Preempt 置位,又收到活动路由器的 Hello 报文,发现自己的优先级比活动路由器高,则该组员可强行取代成为活动路由器。