Cisco热备份路由协议HSRPWord格式.docx
《Cisco热备份路由协议HSRPWord格式.docx》由会员分享,可在线阅读,更多相关《Cisco热备份路由协议HSRPWord格式.docx(19页珍藏版)》请在冰豆网上搜索。
本文对热备份路由协议(HSRP)进行了详细说明。
此协议的目的在于使主机看上去只使用
了一个路由器,并且即使在它当前所使用的首跳路由器失败的情况下仍能够保持路由的连通
性。
此协议中所涉及到的多路由器都映射为一个虚拟的路由器。
本协议保证同时有且只有一个
路由器在代表虚拟路由器进行包的发送。
而终端则是把数据包发向该虚拟路由器。
这个转发包的路由器被成为活路由器。
如果这个活路由器在某个时候由于某种原因而无法
工作的话,则那个备份的路由器将被选择来代替原来的活路由器。
本协议为活路由器和备份路
由器的定义提供了一种机制。
在协议所设计到的路由器上使用IP地址,如果这个活路由器失效
的话则那个备份路由器马上代替活路由器工作而不会在对主机的连通性上产生大的中断,另外
本文还对ARP,MAC地址,以及相关的安全问题进行了讨论。
目录
1介绍..............................................2
2使用前提.........................................3
3范围.....................................................4
3.1术语...............................................4
4定义...............................................4
5协议..................................................4
5.1包格式............................................4
5.2操作参数....................................7
5.3状态....................................................8
5.4时钟....................................................9
5.5事件....................................................9
5.6操作...................................................10
5.7过渡状态..........................................11
6对MAC地址的考虑................................13
6.1概要...................................................13
6.2地址过滤器............................................14
6.3ICMP重定向.............................................14
6.4ARP代理.................................................15
7对安全的考虑...................................15
8参考................................................15
9作者地址........................................16
10完全版权声明..................................17
1.介绍
所谓的热备份路由协议(HSRP)主要是向我们提供了这样一种机制,它的设计目的主要在
于支持IP传输失败情况下的不中断服务。
具体说,就是本协议用于在源主机无法动态地学习到
首跳路由器IP地址的情况下防止首跳路由的失败。
它主要用于多接入,多播和广播局域网(例
如以太网)。
当然HSRP并不是有意要取代现有的动态路由发现机制,而这些现有的路由协议仍
可以继续使用只不过不是在任何可能的情况下。
以前的大部分主机都不支持动态路由发现协
议,他们是通过配置缺省路由来进行工作的。
而HSRP却为它们提供了一种失败服务机制
在HSRP中所涉及到的所有路由器都被假设为已经配好了合适的IP路由协议,并且也已经
存在了若干条路由。
而讨论哪种协议更加合适并且这些路由在各种情况下是否一致就已经超出
了我们这个声明的范围了。
在使用HSRP时,一组路由器的工作将一致的表现为局域网上通往主机的一个虚拟路由器
的工作。
这组路由器就称为一个HSRP组,或备份组。
这个组中将选出一个路由器来负责转发
由主机发给虚拟路由器的数据包。
这个路由器就是所谓的活路由器。
另一台路由器将被选为备
份路由器。
在活路由器失效的情况下,备份路由器将承担活路由器的包的转发功能。
即使你可
以任意制定运行HSRP的路由器的数量,但只有活路由器才能转发发送给虚拟路由器的数据包。
为了把网络阻塞降到最底限度,网络中只有活路由器和备份路由器可以在完成HSRP协议
选择过程后发送一次HSRP消息包。
如果活路由器失效,则备份路由器将取代它作为新的活路由
器工作。
而当备份路由器失效或者它变成了活路由器时,另外一个路由器将被选为备份路由
器。
在某个局域网里,多个热备组可以共存和重叠。
每个备份组都仿效一个虚拟路由器。
对于
每个备份组来说都有一个为别人所知的MAC地址,以及一个IP地址。
而这个IP地址应该是这
个局域网中第一个子网中的地址,但必须不同于设置在所有路由器端口上的地址和局域网中主
机的地址,甚至包括为其他HSRP组设的地址。
如果在一个局域网中设置了多个HSRP组,那么分配主机给不同的备份组就会使网络产生
负载爆炸。
本说明下面要讨论的是对单个备份组的操作。
在多备份组的例子中,每个组依照这个说明
来在局域网中与其他组相互独立的工作。
注意一个路由器有可能会加入到多个组中,这样这个
路由器将需要为每个组维护不同的状态和时钟。
2使用前提
Cisco系统公司已在美国为HSRP申请了专利号5,473,599[2]。
如果任何应用中需要使
用专利5,473,599中的任何声明,需要cisco公司对标准的使用者一视同仁的依据给予许可
证。
另外这个许可证付费后只能使用一次。
3范围
本文档描述的是关于包、信息、状态以及事件在本协议中的使用。
本文档不讨论关于网络
管理或者互联网的应用问题
3.1术语
本文档将会使用到RFC2119[3]中的相关协议语言。
4定义
活路由器-当前代表虚拟路由器转发数据包的路由器
备份路由器-第一备份路由器
备份组-参与到HSRP中,用已仿效虚拟路由器的一组路由器
Hellotime-一个给定路由器成功地发出两个HSRPhello消息包之间的间隔
HoldTime-假定发送路由器失败的情况下,收到两个hello消息包之间的间隔
5协议
在备份组里,路由器通过发送各种不同的消息周期性的广播状态信息
5.1包格式
备份协议运行在UDP层上,使用1985端口号。
包发送个多播地址224.0.0.2,TTL为1
在包的格式里,路由器使用他们的真IP地址做为源地址,而不使用虚拟地址。
这对于使
HSRP路由器们能够准确定义彼此是非常重要的。
下面是UDP帧格式的数据部分的格式
123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|版本号|操作码|说明|Hellotime|
|Holdtime|优先权|组|保留|
|授权数据|
|虚拟IP地址|
版本号:
1个字节
HSRP信息的版本号,本文所描述的版本号为0
操作码:
操作码说明的是包含在这个包里的信息的类型,可能的值有:
0-Hello
1-Coup
2-Resign
Hello类型消息是用来表明路由器正在工作,并且有能力成为活路由器或者备份路由
Coup类型消息是在当一个路由器希望变成活路由器是才被发送的信息。
Resign类型消息则是当一个路由器不希望再做活路由器是才被发送的信息。
状态:
在备份组中的每个路由器都在运行着一个状态机制。
这个状态域描述的是发送消息的路
由器的当前状态。
每种状态的具体描述将在后面说明。
可能的状态值有:
0-Initial
1-Learn
2-Listen
4-Speak
8-Standby
16–Active
Hellotime:
这个域在Hello消息中是非常有意义的。
它包含了路由器发送Hello消息的大约的间隔时
间。
这个时间是用秒来表示的。
如果路由器上没有配置Hellotime,那么它将会向活路由器发送的Hello消息学习。
而如果Hellotime没有被设置而且Hello消息已经被授权,则只能通过学习来获取
Hellotime。
发送Hello消息的路由器必须引入在Hello消息中的Hellotime域中使用的
Hellotime值。
如果没有从活路由器发过来的Hello消息中学习到Hellotime并且也没有手工
配置Hellotime,那么将把它的值缺省的定为3秒钟。
Holdtime:
1个字节
这个域只在Hello消息中有效。
它标明了当前的Hello消息的有效期。
这个时间也是用秒
来表示的。
如果一个路由器发送Hello消息,那么接受者会认为在一个Holdtime时间内这个Hello消
息是有效的。
Holdtime的值必须要比Hellotime的值大而且至少是Hellotime值的3倍。
如果
一个路由器上没有配置Holdtime值,则它会向由活路由器发来的Hello消息学习到一个
Holdtime值。
如果Hello消息是被认证授权过的,则Holdtime值就只能通过学习来得到了。
同Hellotime一样,一个路由器必须引入那个在Hello消息中的Holdtime域所定义的
Holdtime值.
一个状态为活的路由器不能向其他路由器学习Hellotime和Holdtime值,尽管它也许会继
续使用从前一任活路由器那学到的Hellotime和Holdtime值。
另外,它也许会使用手工配置的
值。
而活路由器也不能使用一个配置的时间或一个学习来的时间值。
如果它没有学习到,而且
也没有配置Holdtime,则它会使用10秒作为缺省值。
优先级:
这个域用来选择活路由器和备份路由器。
当把两个路由器的优先级进行比较时,优先级数
值高的将获胜。
如果两个路由器的优先级相同的话,则IP地址高的将获胜。
组:
1个字节
这个域定义了备份组。
在令牌环网络中,它的值为0到2,而在其他媒质中,它的值为0
到255之间的数。
授权数据:
8字节
这个域包含了8个用做password的文本字符如果授权数据没有被设置,则使用推荐的缺省
值:
0x630x690x730x630x6F0x000x000x00.
虚拟IP地址:
4字节
虚拟IP地址将在组中使用
如果一台路由器本身没有配置虚拟IP地址,那么他可以从活路由器那发来的Hello消息中
学到。
而如果路由器没有设置而且这个虚拟IP地址,而且Hello消息已经被授权,则只能通过
学习来获取这个地址。
5.2操作参数
在备份组里,每个路由器必须了解以下的信息。
当然,讨论这些信息是如何决定的则超出
了本文的范围。
备份组号
虚拟MAC地址
优先级
授权数据
Hellotime
Holdtime
下面的信息则是每个备份组中必须至少有一台路由器要掌握的信息,当然,也有可能这个
组中的每一台路由器都知道它。
虚拟IP地址
下面的信息可以在任何一台路由器上配置
优先权能力
如果一个路由器具有比活路由器高的优先级,而且也配置了优先权,则它就可以使用Coup
消息来取代当前的活路由器。
5.3状态
备份组中的每一台路由器都通过执行一个简单的状态机制来参与到这个协议中来。
下面我
们就来描述一下这个状态机制在表面上我们所能看到的一些运行情况。
运行时可能会根据状态
机制对不同功能的规定而在内部产生不同的操作过程。
所有的路由器都从初试状态开始。
这一段讨论每种状态的目的。
为了详细说明每一种状态
下所发生的动作,请看5,7节的状态转换表
1.Initial初始状态
这是个开始的状态,它表明HSRP不在运行中。
当配置改变或端口首次启动时就会进入
这个状态。
2.Learn学习
这是在路由器还没有确定虚拟IP地址,并且还没有收到一个从活路由器发送来的已经
认证过的Hello消息时的状态。
在这个状态中,路由器仍然在等待着从活路由器那里接受
信息。
3.Listen监听
路由器知道了虚拟IP地址,但它既不是活路由器也不是备份路由器。
并且该路由器是
在从活路由器或备份路由器那里监听Hello消息。
4.Speak会话
路由器周期地发送Hello消息,并且积极地参与到活路由器或备份路由器的选拔中。
只有在它已经有了虚拟IP地址的前提下,它才能进入到这个状态。
5.Standby备份
这个状态下的路由器作为下一个活路由器的侯选者,周期性地发送Hello消息。
除了
极短暂的情况外,每个组中最多只能有一个处于备份状态的路由器。
6.Active激活
路由器的当前状态为把数据包转发到组的虚拟MAC地址。
路由器周期地发送Hello消
息。
除了极短暂的情况外,每个组中最多只能有一个处于激活状态的路由器。
5.4时钟
每台路由器都要维护3个时钟,一个激活时钟,一个备份时钟,和一个Hello时钟。
激活时钟是用来监视活路由器的,在任何时候,只要路由器发现了从活路由器发过来的被
认证过的Hello消息,激活时钟就开始计时,直到到达Hello消息中所设定的Holdtime值为
止。
备份时钟用于监视备份路由器。
该时钟也是在路由器发现了从活路由器发过来的被认证过
的Hello消息,随时开始计时,直到到达Hello消息中所设定的Holdtime值为止。
Hello时钟是在每一个Hellotime时间段终止一次。
如果路由器是处于会话、备份或激活
状态下,它会在Hello时钟停止时产生一个Hello消息。
Hello消息必须是不稳定的。
5.5事件
下面是在HSRP有限的状态机制下所能发生的事件
a-在一个使能的端口上配置HSRP
b-在一个端口上禁用HSRP,或这个端口被禁用。
c-活时钟期满。
活时钟从路由器收到从活路由器发送来的最后一个Hello消息开始计
时,时长为Hello消息中所设定的Holdtime值。
d-备份时钟期满。
备份时钟从路由器收到从活路由器发送来的最后一个Hello消息开
始计时,时长为Hello消息中所设定的Holdtime值。
e-Hello时钟期满。
用于发送Hello消息的周期性时钟期满。
f-收到一个发自一台处于对话状态路由器的高优先级Hello消息。
g-收到一个发自活路由器的高优先级的Hello消息。
h-收到一个来自活路由器的低优先级的Hello消息。
i-收到一个来自活路由器的Resign消息。
j-收到一个来自一台高优先级路由器的Coup消息。
k-收到一个来自备份路由器的高优先级的Hello消息。
l-收到一个来自备份了路由器的低优先级的Hello消息。
5.6操作
本节说明了这种状态机制中所要采取的一系列操作
A、启动活时钟
如果这个动作是作为从活路由器接受到认证过的Hello消息的结果来发生的话,那
么活时钟要在Hello消息中的Holdtime域中设定。
否则,活时钟将使用路由器当前的
Holdtime值启动。
B、启动备份时钟
如果这个动作是由于从备份路由器接受到认证过的Hello消息而导致发生的话,那
么备份时钟要在Hello消息中的Holdtime域中设定。
否则,备份时钟将使用路由器当
前的Holdtime值启动。
C、终止活时钟
活时钟被终止。
D、终止备份时钟
备份时钟被终止。
E、学习参数
这个动作在接收到一个来自活路由器的一个已认证的消息时发生。
如果这个组没有
手工配置虚IP地址,它就会从消息中学到一个虚IP地址。
路由器也可能从消息中学习
Hellotime和Holdtime值。
F、发送Hello消息
路由器以它当前的状态、Hellotime和Holdtime值来发送Hello消息。
G、发送Coup消息
路由器发送Coup消息包给活路由器,通知它发现了一个更高优先级的
路由器。
H、发送Resign消息
路由器发送Resign消息来允许其他路由器成为活路由器。
I、发送无偿ARP消息
路由器通过广播ARP应答包来把组的虚IP地址和虚MAC地址广播出去。
如同
ARP包一样,这个包使用虚拟MAC地址作为链路层包头中的源MAC地址。
5,7状态过渡
下面的表格说明了这种状态机制的各状态间的转换过程。
对于每个时间以及路由器所
处的每个状态来说,路由器必须执行前面已说明的一系列操作并转换为即定的状态。
如果没有
操作被事先声明,也就不会有任何操作发生,如果没有声明任何状态改变,也不会有任何的状
态的改变。
下面表中所使用的符号是在5,6节的操作列表中所列出的一系列操作所对应的字母。
状态
则是用在5,3节中的状态列表中个状态所对应的数字来表示。
斜线(‘/’)是操作和状态的
分隔符。
状态的转变可以是二选一的,这主要取决于外部状态。
二选一的状态用‘|’来分隔。
详细情况请见附加说明
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