HSRP协议介绍

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。

msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn

参考资料: RFC2281

1. 前言

HSRP(Hot Standby Router Protocol)是CISCO公司制定的专有路由器备份协议,支持多台路由器形成热备而消除单台设
备失效造成的网络中断。HSRP并不是IETF的相关工作组制定的,只是因为CISCO设备应用广泛,所以由其提交的协议就
采纳为RFC,使其他厂商也可以实现,但Cisco申请了专利,要得到Cisco的授权(巨FT)。

2. 协议说明

HSRP协议基本是用在终端主机的第一跳路由器上,而不是骨干网络中运行动态路由协议的路由器上。HSRP可以在多台路
由器上运行,但有且只有一台路由器是活动(active)、真正进行网络数据转发的,其他都是备份,但会根据设备优先级
选出一台作为第一热备机(standby),主机失效后由其替代,其他备份机再重新选standby。

HSRP是按网络接口配置的,即配置HSRP协议具体运行在哪个接口卡上。

HSRP协议数据只周期性在active机和standby机之间通信,其他机就只接收数据不发送数据。

HSRP协议可以同时运行多个组,每个组代表应该虚拟路由器,而一台路由器可以同时加入多个HSRP组。每个组只有一个
虚拟IP和一个虚拟MAC地址。

运行HSRP必须要配置的参数为:
备份组号: Standby group number
虚拟MAC地址: Virtual MAC address
优先级: Priority
认证数据(口令):Authentication Data
Hello间隔时间: Hellotime
失效时间: Holdtime
组内至少有一台设备必须配置而其他设备可能配置的参数为:
虚拟IP地址: Virtual IP Address

任何设备可选配置:
抢占能力: Preemption capability

HSRP协议状态说明
1. 初始化: Initial
这是个起始状态表示HSRP还没运行下,通过改变路由器配置或网卡第一次启动时会进入这个状态。
2. 学习:Learn
这时路由器还没确定虚拟IP地址,也没收到认证过的活动路由器的Hello信息,这个状态下路由器
仍在等待来自活动路由器的信息。
3. 监听:Listen
路由器已经知道虚拟IP地址,但本身既不是活动路由器也不是热备路由器,本机接收来自其他路由
器的hello信息。
4. 说话:Speak
路由器周期性的发送发送hello信息,并主动参加活动路由器和热备路由器的选举。如果路由器已
经拥有虚拟IP地址的话就不进入此状态。
5. 热备:Standby
路由器是下一个活动路由器的候选,并周期地发送hello信息,除了及其短暂的时间内,一个组里
最多只能有一个热备路由器。
6. 活动:Active
路由器当前要进行目的MAC是HSRP组的虚拟MAC地址的网络数据的转发,并周期性的发送Hello信息。
除了及其短暂的时间内,一个组里 最多只能有一个活动路由器。

以下是HSRP协议事件有限状态机的事件说明:
a - HSRP协议被配置到一个网卡使能
b - HSRP在一个网卡上禁用,或者网卡停用
c - 活动定时器超时,在失效时间内没收到hello信息
d - 热备定时器超时,在热备失效时间内没收到hello信息
e - Hello定时器超时,定时发送hello信息
f - 在说话状态下接收到有更高优先权的路由器的hello信息
g - 接收到来自活动路由器的更高优先权的hello信息
h - 接收到来自活动路由器的更低优先权的hello信息
i - 接收到活动路由器的退出消息
j - 接收到更高优先权的路由器的Coup消息
k - 接收到从热备路由器发来的更高优先权的hello消息

HSRP协议动作说明:
A 启动活动定时器:Start Active Timer
如果接收到认证过的活动路由器的hello信息时该事件触发,此定时器的超时设置为
hello信息中的失效时间(hold time);没收到的话超时设为路由器自身配置的失效
时间,活动定时器启动。

B 启动热备定时器:Start Standby Timer
如果接收到认证过的热备路由器的hello信息时该事件触发,此定时器的超时设置为
hello信息中的失效时间(hold time);没收到的话超时设为路由器自身配置的失效
时间,热备定时器启动。
C 停止活动定时器:Stop Active Timer
活动定时器停止。
D 停止活动定时器:Stop Standby Timer
热备定时器停止。
E 学习参数:Learn Parameters
当接收到经过认证的活动路由器的消息时进行动作,如果该路由器没有手动配置
虚拟IP地址,则虚拟IP地址可以从这些消息中学习到,路由器也可以从信息中学
习到hello间隔时间和失效时间。
F 发送hello消息:Send Hello Message
路由器发送hello消息,描述自身状态,hello间隔时间和失效时间。
G 发送Coup消息:Send Coup Message
路由器发送Coup消息来通知活动路由器现在有优先权更高的路由器存在。
H 发送退出消息:Send Resign Message
路由器发送退出消息允许其他路由器成为活动路由器。
I 发送假ARP消息:Send Gratuitous ARP Message
路由器发送对应HSRP组的虚拟IP和虚拟MAC的ARP广播信息,这些消息中的源MAC地址
为虚拟MAC地址。

HSRP协议状态转换表(RFC里没画状态状态图,就给了这个表,看起来费劲一些,凑合看吧)
States
+-----+----------+----------+----------+----------+----------+----------+
| | 1 | 2 | 3 | 4 | 5 | 6 |
| | Initial | Learn | Listen | Speak | Standby | Active |
+-----+----------+----------+----------+----------+----------+----------+
|Event| |
+-----+----------+----------+----------+----------+----------+----------+
| a | AB/2|3+ | | | | | |
+-----+----------+----------+----------+----------+----------+----------+
| b | | CD/1 | CD/1 | CD/1 | CD/1 | CDH/1 |
+-----+----------+----------+----------+----------+----------+----------+
| c | | | AB/4 | | CDFI/6 | |
+-----+----------+----------+----------+----------+----------+----------+
| d | | | B/4 | D/5 | | |
+-----+----------+----------+----------+----------+----------+----------+
| e | | | | F | F | F |
+-----+----------+----------+----------+----------+----------+----------+
| f | | | | B/3 | B/3 | |
+-----+----------+----------+----------+----------+----------+----------+
| g | | EAB/3 | EA | EA | EA | AB/4 |
+-----+----------+----------+----------+----------+----------+----------+
| h | | EAB/3 | A|BGFI/6*| A|BGFI/6*| A|BGFI/6*| G |
+-----+----------+----------+----------+----------+----------+----------+
| i | | | AB/4 | A | CFI/6 | |
+-----+----------+----------+----------+----------+----------+----------+
| j | | | | | | ABH/4 |
+-----+----------+----------+----------+----------+----------+----------+
| k | | | B | B/3 | B/3 | B |
+-----+----------+----------+----------+----------+----------+----------+
| l | | | B/4 | D/5 | | B |
+-----+----------+----------+----------+----------+----------+----------+

3. 协议定义

3.1 包头头参数

HSRP包的源地址是本机地址,目的地址为224.0.0.2,为一多播地址,IP包的TTL值为1,因此数据不能跨网段;使用UDP
协议,目的端口为1985(纪念CISCO公司的成立年份?)。

3.2 HSRP协议数据格式
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Op Code | State | Hellotime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Holdtime | Priority | Group | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Virtual IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中:
Version: HSRP版本号,1字节,RFC2281中定义为0;
Op Code: 操作码,1字节,描述该HSRP信息的类型,可能的取值为:
0 - Hello,正常通告信息
1 - Coup,路由器希望成为活动路由器时发送
2 - Resign,路由器不再作为活动路由器时发送
State: 状态,1字节,用于描述路由器的状态,可能取值为:
0 - Initial
1 - Learn
2 - Listen
4 - Speak
8 - Standby
16 - Active
Hellotime: Hello信息的间隔时间,1字节,只在Hello包中有效,时间数值单位为秒,
通常是系统配置的,如果没有配置,则可从活动路由器的的经过认证的Hello信息中获取。
如果没从hello消息中学习到,缺省为3秒。

Holdtime: 失效时间,1字节,数值以秒为单位。只在Hello包中有效,时间数值单位为秒,
失效时间最少是hello时间的3倍,通常是手动配置的,如果没有配置,则可从活动路
由器的的经过认证的Hello信息中获取。发送hello信息的路由器必须设置失效时间。
路由器已经处于活动状态时不准再从hello信息中学习新的失效时间。
如果没从hello消息中学习到,缺省为10秒。

Priority: 优先权值,1字节,用来选举活动和热备路由器,数值大者优先级高,相同时IP地
址大者优先级高

Group: 组号,1字节,标志热备组,对于Token Ring,有效值为0~2,其他类型网络0~255都有效;

Authentication Data: 认证数据,8字节,明文的8字节口令值,缺省是:
0x63 0x69 0x73 0x63 0x6F 0x00 0x00 0x00.

Virtual IP Address: 虚拟IP地址,4字节,本组内使用的虚拟IP地址,如果该地址没有
配置到路由器上,则是通过经过了认证的Hello信息得到。

4. 结论

HSRP是比较早的路由器热备协议,对后来的热备协议有较大影响,VRRP和HSRP就很类似,不过这些协议最大的问题就是内部安全,如果攻击者在内部发送虚假协议信息的话是容易得手的,而从外部则比较难攻击。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值