VBRP技术.docx
《VBRP技术.docx》由会员分享,可在线阅读,更多相关《VBRP技术.docx(11页珍藏版)》请在冰豆网上搜索。
VBRP技术
VBRP技术手册
目录
第1章简介1
第2章VBRP协议相关术语解析2
第3章VBRP协议介绍3
3.1VBRP在TCP/IP协议栈中基本层次结构4
3.2VBRP的报文结构4
3.3VBRP的工作流程概述5
3.4VBRP的功能特点7
第4章调试命令及调试信息8
第1章简介
本章主要讲述VBRP协议的原理及实现。
本章主要内容:
¾VBRP协议相关术语解析
¾VBRP协议介绍
¾调试命令及调试信息
第2章VBRP协议相关术语解析
VBRP――虚拟备份路由协议(VirtualBackupRouterProtocol)。
兼容Cisco的HSRP协议。
HSRP――热备份路由协议(HotStandbyRouterProtocol)。
ActiveRouter――活动路由器,当前负责转发报文的路由器。
StandbyRouter――备份路由器,主备份路由器。
StandbyGroup――加入VBRP的一组路由器,它们共同维护一个虚拟的路由器。
第3章VBRP协议介绍
VBRP协议提供一个网关备份的功能,这个功能可以使主机能够解决只能有一个默认网关的限制。
多数IP主机都使用唯一一个路由器作为它们的默认网关。
所有不准备到本地网络的流量将通过指定的路由器,如果那个路由器变得不可到达,这个缺点将妨碍连通性。
VBRP通过使多个路由器能够发出关于单个IP地址的请求来解决这个问题,而这一IP地址对于终端系统而言是完全透明的。
无论使用哪一个路由器来传送互联网络的流量,这个过程对于终端系统来说都是相同的,在网络主机上无须额外的配置。
如上图所示,每个都有独一无二IP地址的两个路由器存在同一个网络中。
正常情况下,用户将必须选择两个路由器之一为默认网关。
然而,当两个路由器上的VBRP起作用时,就产生了第三个虚拟路由器并且给它分配一个自己的IP地址,然后使用这个地址作为主机的默认网关。
在任何一个给定的时间里,一个VBRP路由器是活动的路由器,同时一个VBRP路由器是备份路由器。
活动的路由器对通过虚拟的IP地址的流量起作用。
如果活动的路由器变得不可用了,备份的路由器将接管操作,成为活动的路由器。
预定到虚拟IP地址的任何流量实际上是通过当前处于活动状态的路由器。
3.1VBRP在TCP/IP协议栈中基本层次结构
VBRP报文是一种UDP报文,源和目的端口都是1985。
3.2VBRP的报文结构
VBRP的报文结构如下。
Verion:
版本号。
等于0。
Opcode:
报文类型。
0-Hello,1-Coup,2-Resign。
Hello消息:
表示路由器正在运行,能够成为active或standby路由器。
Coup消息:
当一个路由器希望成为active路由器,发送此消息。
Resign消息:
当一个路由器不再希望成为active路由器,发送此消息。
State:
路由器当前的状态。
0x00-Initial,0x01-Learn,0x02-Listen,0x04-Speak,0x08-Standby,0x10-Active。
Hellotime:
表示Hello报文发出者的Hello间隔(秒)。
该字段在Hello报文中才有效。
发送Hello报文的路由器必须将自己使用的Hellotime填入报文。
Hellotime缺省是3秒。
Holdtime:
表示Hello报文的有效期(秒)。
在Hello报文中才有效。
Hello报文的接收者,将报文中的Holdtime确认为该Hello报文的有效期。
Holdtime应该至少是Hellotime的3倍。
Priority:
优先级字段。
选举active和standby使用。
数值大的优先。
priority相同的路由器,地址大的优先。
Group:
Standby组号。
有效值是0~255。
AuthenticationData:
认证密码。
如果没有配置认证密码,缺省值是0x63,0x69,0x73,0x63,0x6F,0x00,0x00。
VirtualIPAddress:
Standby组使用的虚拟IP地址。
3.3VBRP的工作流程概述
为了使VBRP工作,首先要创建一个虚拟IP地址,这样在这个网络上就加入了一个虚拟路由器。
而这个网络上的主机与虚拟路由器通信,无须了解这个网络上物理路由器的任何信息。
一个VBRP路由器被指定为活动路由器,同时另外一个物理路由器充当一个备份,以防活动路由器出故障。
活动路由器不仅响应他自己的IP地址,同时也响应虚拟IP地址。
当主机发送一个到本地网络之外的报文时,主机的配置会告诉报文下一跳是默认网关。
尽管已经配置了默认网关的IP地址,但为了真正地发送以太网帧给路由器,主机需要知道路由器的MAC地址。
主机发送一个地址解析协议(ARP)请求给网络,询问默认网关的MAC地址。
因为网络上真实主机都没有虚拟路由器的MAC地址,活动的路由器响应这个ARP请求。
活动的路由器也监听任何流向虚拟IP地址的流量,同时维护那些流量,就好像那些流量是寻址到活动路由器一样。
配置了VBRP的路由器利用组播用户数据报协议(UDP)呼叫报文来通告它们的存在。
使用这些通告来检测路由器的失效及协商参数,例如虚拟IP地址、认证密码等,这些通告还用于路由器的选择。
在任何时候,网络上只能有一个活动的和一个备份的路由器存在。
配置在同一备份组中的所有其他路由器将处于监听(Listen)状态,一直到下一次路由选择,下一次选择会发生在活动的或备份的路由器变得不可用的时候。
在VBRP中定义了三种类型的报文。
第一种报文是Hello报文,由活动路由器和备份路由器及处在竞选状态的路由器发送,向它们所在的那个组的成员通知它们的存在。
Hello报文也包含配置参数,如IP地址和定时器值等。
没有明确定义这些值的路由器可以通过Hello报文来获得参数值。
第二种报文是Resign报文,当活动路由器由于配置改变或关闭路由器等原因从VBRP组退出时,活动路由器将发送这个Resign报文。
第三种报文是Coup报文。
由于preempt配置命令导致一个路由器替换活动路由器时送出这个报文。
如果那个路由器是最高优先级备份路由器,它将成为活动路由器。
VBRP协议有六种状态:
初始化状态(INITIAL)、学习状态(LEARN)、倾听状态(LISTEN),竞
选状态(SPEAK)、备份状态(STANDBY)、活跃状态(ACTIVE)。
1.初始化状态
所有路由器都是从初始化状态开始。
这是一种起始状态,同时它表明VBRP还没有运行。
当一个接口的状态处于DOWN状态时,或者转换到DOWN状态时,它就进入该状态。
2.学习状态
在学习状态时,路由器等待来自于ACTIVE的hello报文,并打算从中学习它的虚拟IP地址。
当一台配置了某个虚拟路由器组的路由器没有配置VIP时,才会出现这种状态。
3.倾听状态
在倾听状态,路由器知道了自己的VIP,但既不是ACTIVE路由器,也不是STANDBY路由器,它只接受来自于ACTIVE路由器和STANDBY路由器的协议报文。
当在一定时间来没有收到某个路由器的协议报文,它将会改变自己的状态,参与ACTIVE路由器或者STANDBY路由器的竞选。
(稳定情况下,除ACTIVE和STANDBY路由器之外的其它路由器都保持在倾听状态)。
4.竞选状态
在竞选状态,路由器发送周期性的hello报文,并参与ACTIVE/STANDBY路由器的竞选。
路由器在没有获得VIP之前,不能进入竞选状态。
5.备份状态
在备份状态,路由器成为下一个ACTIVE路由器的候选设备,并且它也发送周期性的hello报文。
在一个虚拟路由器组中,只能有一台备份路由器。
6.活跃状态
在活跃状态,路由器负责转发被发送到该虚拟路由器组的虚拟MAC地址的数据包和响应目的IP为该VIP的ARP请求。
活跃路由器发送周期性的hello报文。
在一个虚拟路由器组中,只能有一台活跃路由器。
3.4VBRP的功能特点
¾网关备份;使多个路由器分享一个IP地址,防止多点接入的单点失效,使网络黑洞最小化。
这是VBRP的主要功能。
¾负载均衡;通过在同一宿主接口配置两个或者两个以上虚拟路由器组,当这些虚拟路由器组都处于正常运行状态时,它们可以均衡地转发该网段的数据包。
当某台路由器出现故障时,其它路由器就会接替出现故障路由器的工作;而当故障解除时,又可以均衡工作。
¾跟踪功能;通过对某些重要接口状态进行跟踪,当某个接口状态发生变化时,通过适当调整它们的优先级,当优先级达到一定的程度后(比如说处于Standby状态的路由器因为某个接口状态由DOWN转换到UP状态时,它的优先级可能会增加到超过Active状态的路由器的优先级),就会进行状态之间的转换。
从而保证当别的链路出现故障时也能够提供适当的备份功能。
¾远程登录;虚拟路由器的IP地址像一个接口IP地址一样,可以对处于ACTIVE状态的路由器进行远程登录。
¾安全认证;VBRP提供8字节的文本认证方式。
第4章调试命令及调试信息
1.报文调试
debugstandbypacketshello
该命令用来打印Hello报文的信息。
00:
28:
18:
VBRP:
fastethernet0Grp0Helloout128.255.17.54ActivePri100vIP2.2.2.2
表示从以太口f0发出了VBRPHello报文,VBRP的组号是0,以太口的主地址是128.255.17.54,当前的状态是Active,优先级是100,虚拟IP地址是2.2.2.2。
00:
38:
44:
VBRP:
fastethernet0Grp0Helloin128.255.16.3Standbypri100vIP2.2.2.2
表示从以太口f0收到了VBRPHello报文,VBRP的组号是0,发送端源地址是128.255.16.3,当前状态是Standby,优先级是100,虚拟IP地址是2.2.2.2。
只有Speak,Standby,Active状态的VBRP路由器才会发出Hello报文。
debugstandbypacketscoup
该命令用来打印Coup报文的信息。
00:
28:
18:
VBRP:
fastethernet0Grp0Coupout128.255.17.54ActivePri100vIP2.2.2.2
表示从以太口f0发出了VBRPCoup报文,VBRP的组号是0,以太口的主地址是128.255.17.54,当前的状态是Active,优先级是100,虚拟IP地址是2.2.2.2。
02:
43:
54:
VBRP:
fastethernet0Grp0Coupin128.255.16.3Activepri110vIP2.2.2.2
表示从以太口f0收到了VBRPCoup报文,VBRP的组号是0,发送端源地址是128.255.16.3,当前状态是Active,优先级是110,虚拟IP地址是2.2.2.2。
debugstandbypacketsresign
02:
46:
26:
VBRP:
fastethernet0Grp0Resignout128.255.17.54ActivePri100vIPunknown
02:
45:
37:
VBRP:
fastethernet0Grp0Resignin128.255.16.3Activepri110vIP0.0.0.0
以上两个信息分别表示了从f0口发送和收到了resign报文。
debugstandbypacketsdetail
该命令和以上的debug命令联合使用,可以打印指定类型报文的详细信息。
如下:
r2#debugstandbypacketsdetail
r2#debugstandbypacketshello
02:
50:
30:
VBRP:
fastethernet0Grp0Helloout128.255.17.54ActivePri100vIP5.5.5.5
02:
50:
30:
hel3hol10authcisco
信息详细显示了Hello报文的详细信息。
Hellotime是3秒,Holdtime是10秒,认证密码是cisco。
2.事件调试
debugstandbyevents
此命令是非常重要的一个调试命令,通过此命令可以详细观察出VBRP路由器的状态变化。
03:
01:
15:
%LINEPROTO-5-UPDOWN:
LineprotocolonInterfacefastethernet0,changedstatetoup
03:
01:
15:
VBRP:
fastethernet0APISoftwareinterfacegoingup
03:
01:
15:
VBRP:
fastethernet0Grp0Init:
a/VBRPenabled
03:
01:
15:
VBRP:
fastethernet0Grp0Init->Listen
配置了VBRP的接口UP,VBRP首先从Init状态转变为Listen状态。
03:
01:
25:
VBRP:
fastethernet0Grp0Listen:
d/Standbytimerexpired(unknown)
03:
01:
25:
VBRP:
fastethernet0Grp0Listen->Speak
由于没有收到其它路由器的Hello报文,VBRP从Listen转为Speak。
03:
01:
25:
VBRP:
fastethernet0Grp0Speak:
c/Activetimerexpired(unknown)
03:
01:
35:
VBRP:
fastethernet0Grp0Speak:
d/Standbytimerexpired(unknown)
03:
01:
35:
VBRP:
fastethernet0Grp0Standbyrouterislocal,wasunknown
03:
01:
35:
VBRP:
fastethernet0Grp0Speak->Standby
由于没有收到其它路由器的Hello报文,VBRP从Speak转为Standby。
03:
01:
35:
VBRP:
fastethernet0Grp0Standby:
c/Activetimerexpired(unknown)
03:
01:
35:
VBRP:
fastethernet0APIMACaddressupdate
03:
01:
35:
VBRP:
fastethernet0Grp0Activerouterislocal,wasunknown
03:
01:
35:
VBRP:
fastethernet0Grp0Standbyrouterisunknown,waslocal
03:
01:
35:
VBRP:
fastethernet0Grp0Standby->Active
由于没有收到其它路由器的Hello报文,VBRP从Stadnby转为Active。
r2(config-if-fastethernet0)#shutdown
03:
08:
32:
%LINEPROTO-5-UPDOWN:
LineprotocolonInterfacefastethernet0,changedstatetodown
03:
08:
32:
VBRP:
fastethernet0APISoftwareinterfacegoingdown
03:
08:
32:
VBRP:
fastethernet0Grp0Active:
b/VBRPdisabled
03:
08:
32:
VBRP:
fastethernet0APIMACaddressupdate
03:
08:
32:
VBRP:
fastethernet0Grp0Activerouterisunknown,waslocal
03:
08:
32:
VBRP:
fastethernet0Grp0Active->Init
由于f0口down掉,VBRP从Active重新转为Init。
以下调试信息显示了从Active到Standby的转变过程。
03:
11:
53:
VBRP:
fastethernet0Grp0Active:
g/HellorcvdfromhigherpriActiverouter(110/128.255.16.3)
03:
11:
53:
VBRP:
fastethernet0APIMACaddressupdate
03:
11:
53:
VBRP:
fastethernet0Grp0Activerouteris128.255.16.3,waslocal
03:
11:
53:
VBRP:
fastethernet0Grp0Active->Speak
已经是Active的路由器,从另一台路由器(128.255.16.3)上收到了一个高优先级Hello报文。
由于路由器配置为可抢占,这台路由器进入Speak状态。
03:
11:
56:
VBRP:
fastethernet0Grp0Speak:
g/HellorcvdfromhigherpriActiverouter(110/128.255.16.3)
03:
11:
59:
VBRP:
fastethernet0Grp0Speak:
g/HellorcvdfromhigherpriActiverouter(110/128.255.16.3)
03:
12:
02:
VBRP:
fastethernet0Grp0Speak:
g/HellorcvdfromhigherpriActiverouter(110/128.255.16.3)
03:
12:
03:
VBRP:
fastethernet0Grp0Speak:
d/Standbytimerexpired(unknown)
03:
12:
03:
VBRP:
fastethernet0Grp0Standbyrouterislocal,wasunknown
03:
12:
03:
VBRP:
fastethernet0Grp0Speak->Standby
由于没有收到其它Standby路由器的Hello报文,路由器从Speak进入Standby状态。
在将这台Standby路由器的优先级调整至200,它又将转变为Active。
r2(config-if-fastethernet0)#standbypriority200
03:
20:
29:
VBRP:
fastethernet0Grp0Standby:
h/HellorcvdfromlowerpriActiverouter(110/128.255.16.3)
03:
20:
29:
VBRP:
fastethernet0APIMACaddressupdate
03:
20:
29:
VBRP:
fastethernet0Grp0Activerouterislocal,was128.255.16.3
03:
20:
29:
VBRP:
fastethernet0Grp0Standbyrouterisunknown,waslocal
03:
20:
29:
VBRP:
fastethernet0Grp0Standby->Active