基本思路:
多个运行HSPR协议的路由,他们都被映射到同一个虚拟IP上,自动生成虚拟MAC地址,终端的默认网关设置成虚拟IP地址。当终端要发送信息到目的IP时,广播ARP请求,对应HSPR组中的活跃路由会把虚拟MAC地址返送给终端。

虚拟MAC地址结构:

如:0000.0c07.ac2f

1-6位:为标识厂商的编码,0000.0c为CISCO
7-10位:如果是07.ac表示此MAC为虚拟MAC地址
11-12位:HSRP组编号

当HSRP协议完成选择程序后,只有活活跃路由器和备份路由器将会周期性的广播HSRP消息(在这以前HSRP所有路由器都发送或接收HSRP消息)。并利用Hello消息包来选择主动路由器和备用路由器及判断路由器是否失效。该协议运行在UDP之上,端口号为1985,目的地址为多播地址224.0.0.2,TTL标记为1(TTL:生存时间,表示经过物理结点的数量)。数据包用他自己的IP地址作为在周期性HELLO组播中的源地址,而不是虚拟地址,这样可以用来标记不同的路由器。
一、活动路由和备份路由的选举
通过在设置了HSRP协议的路由器之间(即HSRP组)广播HSRP优先级(能过hello消息包,参考下图包格式),HSRP协议选出当前的活动路由器。如果HSRP在一定时间内(Hold Time 缺省为10秒)没有检测到活路由hello消息,将认为主动路由器有故障,这时HSRP会选择优先级最高的备用路由器变为主动路由器,同时将按HSRP优先级在配置了HSRP的路由器中再选择一台路由器作为新的备用路由器。(默认优先级100,范围0-255,如果优先级相同,IP地址大的路由器获胜。)

下面是一个简单的例子:

OSPFDR和BDR的组播地址 hsrp的组播地址_IP

如图所示,PC将数据包发送到设置的缺省网关(配置HSRP路由器所共享的虚拟IP地址),假设图中的7609设置了较高的优先级,7609将被选为主动路由器,并负责转发网络中所有由PC发送到其网关(HSRP地址)的数据包。当7609发生故障时,7609就不会广播Hello信息包,HSRP如果经过Hold Time还未收到来自7609的Hello信息包,将认为7609实效,这时HSRP将选择备用的5500作为主动路由器,并由5500来负责转发网络中所有由PC发送到其网关(HSRP地址)的数据包。而当7609恢复后,将继续发送Hello信息包,HSRP检测到其发送的Hello信息包具有高的优先级,则会重新将7609选为主动路由器,5500则仍将恢复成为备用路由器



当在一个局域网上有多个热等待组存在时,把主机分布到不同的热等待组,可以使负载得到分担。 如果在一个局域网中设置了多个HSRP组,那么分配主机给不同的备份组就会使网络产生负载爆炸。



二、HSRP协议数据包格式




版本: 指示HSPR的版本信息。


操作码: 用来描述数据包中报文的类型,可能的值为0、1和2,如表1所示。


状态: 描述发出该报文的路由器的当前状态。在一个热等待组内的所有路由器都运行着这样的状态机,有以下6种状态,见表2。


呼叫时间: 只在呼叫报文中有意义,表示路由器定时发送呼叫报文的间隔时间,以秒为单位。如果该参数没有在路由器上配置,它可能要从活动路由器上学习获得。如果没有配置也没有学习,那么建议使用缺省值3。


保持时间: 只在呼叫报文中有意义,被接收路由器用来判断该呼叫报文是否合法,单位为秒,其值至少是呼叫时间的3倍。如果该参数没有配置,也同样可以从活动路由器上学习。活动路由器不能从等待路由器学习呼叫时间和保持时间,它只能继续使用从先前的活动路由器学习来的该值。建议的缺省值为10。


优先级: 该参数用来选择活动和等待路由器,2个具有不同优先级的路由器,优先级高的将成为活动路由器。2个具有相同优先级的路由器,IP地址高的将成为活动路由器。


组: 用来标记路由器所在的热等待组。对令牌环类型的网络,合法的值是0、1和2,对于其他类型的网络,合法值是0~255。


认证码: 包括8个明文的字符作为密码,如果没有配置,缺省值为0×63 0×69 0×73 0×63 0×6F 0×00 0×00 0×00。


虚拟IP地址: 4个8位组,用来指定本热等待组的虚拟IP地址,它可以是从活动路由器的呼叫报文中学习来的。如果没有配置该地址,并且呼叫报文是需要认识的,那么只能通过活动路由器学习。


---- 在配置路由器或路由交换模块(Route Switch Module,RSM)时需要为上述侄胃持怠?br>




三、 HSRP中路由器的状态及状态转换


●Hello──hello消息通知其他路由器,发送路由器的HSRP优先级和状态信息,HSRP路由器默认为每3秒钟发送一个hello消息;

●Coup──当一个备用路由器变为一个主动路由器时发送一个coup消息;

●Resign──当主动路由器要宕机或者当有优先级更高的路由器发送hello消息时,主动路由器发送一个resign消息。



在热等待组中,每个路由器运行着一个简单的状态机,通过当前的状态和事件的触发,而转换成不同的状态。其中包括以下状态。


1.初始状态 HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或端口刚刚启动时进入该状态。


2.学习状态 在该状态下,路由器还没有决定虚拟IP地址,也没有看到认证的、来自活动路由器的HELLO报文。路由器仍在等待活动路由器发来的HELLO报文。


3.监听状态 路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是等待路由器。它一直监听从活动路由器和等待路由器发来的HELLO报文。


4.说话状态 在该状态下,路由器定期发送HELLO报文,并且积极参加活动路由器或等待路由器的竞选。如果选出活动路由和等待路由,则变成监听状态。而此时只有活动路由和等待路由处于说话状态。


5.等待状态 处于该状态的路由器是下一个候选的活动路由器,它定时发送HELLO报文。


6.活动状态 处于活动状态的路由器承担转发数据包的任务,这些数据包是发给该组的虚拟MAC地址的。它定时发出HELLO报文。


另外,每一个路由器都有3个计时器,即活动计时器、等待计时器和呼叫计时器。


状态的变化都是由事件引起的,不同的事件作用于不同的状态在就会产生不同的动作,如启动计时器、发报文等。


四、基本配置

standby [group-number] track type number [interface-priority] //在活动路由接口配置跟踪。接口自动降低优先级。type:接口类型 number:接口号 interface-priority:是中间的差数

standby [group-number] ip [ip-address [secondary]] //配置虚拟IP

standby [group-number] priority priority-number //配置HSRP优先级

standby [group-number] timers hellotime holdtime //配置HELLO和HOLD时间

standby [group-number] preempt //HSRP每个端口配置占有权