赞
踩
结合网盘文档,已经基本全面介绍了vrrp相关的东西;
尊重原创,以下是本文档原文链接: http://my.oschina.net/moooofly/blog/155491?p=1
我司(很有钱)vrrp的某些实现细节:
1、master及slave等的选举,报文交互按照标准状态机转化,不谈。
2、其实相当于vrrp组中的每个vlan端口都配置了子ip(ifconfig eth1:0),也可以用ip addr add...实现子ip的配置。
3、当然,当l2 sw请求 vrrp组的虚ip对应的mac的时候,若不进行特殊处理,回复的则是子ip所在的vlan的mac,而实际应该回复的是虚mac;
所以修改了协议栈,在arp回复时,内核判断一下 请求的ip 是不是vrrp的虚ip(CLI配置的时候内核会保存所有虚ip),如果是vrrp的虚ip,则回复的是对应的虚mac。
4,如何使slave不回复 虚ip 的arp请求:我司是,当处于slave状态时,直接把其子ip给删除了,所以即使收到arp请求也不会回复;
但是其他公司可能是 设置该net_device的属性,使不回复arp。
5,每个vrrp组有一个master,所以每个master所在的vlan要周期发送vrrp通告报文;我司是每个vrrp组维护一个定时器,即thread_add_timer,所以当vrrp组二十多个过多时,导致slect一直处于有事件的情况,导致系统故障,所以是设计缺陷,需要重新设计该定时器!!!
6、处于同一vrrp group的vlan接口,可以是不同的VID,但这些vlan接口必须处于同一网段,即,和该vrrp组的虚ip是同一网段。
注: 只有一种 报文---通告报文(组播ip报文)。
2: src mac: 00 00 5e 00 01 VRRPID
SRC IP: vlan接口实ip
dst mac: 01 00 5e 00 00 12
dst ip : 224.0.0.18
1
2
3
4
5
6
7
8
9
10
11
12
|
+---------------+
+--------->| |<-------------+
| | Initialize | |
| +------| |----------+ |
| | +---------------+ | |
| | | |
| V V |
+---------------+ +---------------+
| |---------------------->| |
| Master | | Backup |
| |<----------------------| |
+---------------+ +---------------+
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
+-----------+ +-----------+
| Rtr1 | | Rtr2 |
|(MR VRID=1)| |(BR VRID=1)|
|(BR VRID=2)| |(MR VRID=2)|
VRID=1 +-----------+ +-----------+ VRID=2
IP A ---------->* *<---------- IP B
| |
| |
------------------+------------+-----+--------+--------+--------+--
^ ^ ^ ^
| | | |
(IP A) (IP A) (IP B) (IP B)
| | | |
+--+--+ +--+--+ +--+--+ +--+--+
| H1 | | H2 | | H3 | | H4 |
+-----+ +-----+ +--+--+ +--+--+
Legend:
---+---+---+-- = Ethernet, Token Ring, or FDDI
H = Host computer
MR = Master Router
BR = Backup Router
* = IP Address
(IP) = default router
for
hosts
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
0 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| Type | Virtual Rtr ID| Priority | Count IP Addrs|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Auth Type | Adver Int | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Address (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Address (n) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication Data (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication Data (2) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,是一种容错协议。该协议通过把几台路由设备联合组成一台虚拟的路由设备,使用一定的机制保证当主机的下一跳交换机出现故障时,及时将业务切换到其它交换机,从而保持通讯的连续性和可靠性。
以下是与VRRP协议相关的基本概念:
VRRP 交换机(VRRP Router):运行VRRP的设备,它可能属于一个或多个虚拟交换机。
虚拟交换机(Virtual Router):由VRRP管理的抽象设备,又称为VRRP备份组,被当作一个共享局域网内主机的缺省网关。它包括了一个虚拟交换机标识符和一组虚拟IP地址。
虚拟IP地址(Virtual IP Address):虚拟 交换机的IP地址,一个虚拟交换机可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IP Address Owner):如果一个VRRP 交换机将虚拟交换机的IP地址作为真实的接口地址,则该设备是IP地址拥有者。当这台设备正常工作时,它会响应目的地址是虚拟IP地址的报文,如ping、TCP连接等。
虚拟MAC地址:是虚拟交换机根据虚拟交换机 ID生成的MAC地址。一个虚拟交换机拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}(VRRP);00-00-5E-00-02-{VRID}(VRRP6)。当虚拟交换机回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
主IP地址(Primary IP Address):从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。VRRP广播报文使用主IP地址作为IP报文的源地址。
Master 交换机(Virtual Router Master):是承担转发报文或者应答ARP请求的VRRP交换机,转发报文都是发送到虚拟IP地址的。如果IP地址拥有者是可用的,通常它将成为Master。
Backup 交换机(Virtual Router Backup):一组没有承担转发任务的VRRP 交换机,当Master设备出现故障时,它们将通过竞选成为新的Master。
抢占模式:在抢占模式下,如果Backup器的优先级比当前Master的优先级高,将主动将自己升级成Master。
随着Internet的发展,人们对网络的可靠性的要求越来越高。对于局域网用户来说,能够时刻与外部网络保持联系非常重要。
通常情况下,内部网络中的所有主机都设置一条相同的缺省路由,指向出口网关,实现主机与外部网络的通信。当出口网关发生故障时,主机与外部网络的通信就会中断。
配置多个出口网关是提高系统可靠性的常见方法,但局域网内的主机设备通常不支持动态路由协议,如何在多个出口网关之间进行选路是一个需要解决的问题。
VRRP协议由IETF(Internet Engineering Task Force,因特网工程任务组)推出,旨在解决局域网主机访问外部网络的可靠性问题,包括如下应用特性:
主备备份:这是VRRP提供IP地址备份功能的基本方式。主备备份方式需要建立一个虚拟交换机,该虚拟交换机包括一个Master设备和若干Backup设备,这些交换机构成一个备份组。正常情况下,业务全部由Master承担。Master出现故障时,Backup接替工作。
VRRP负载分担:负载分担方式是指多台交换机同时承担业务,单个VRRP备份组是不具备负载分担功能的,只有在多台设备上建立两个或更多的备份组,所有备份组均匀分担Master状态,此时就每台设备只承担了部分的业务,从而达到负载分担的作用。
VRRP监视接口状态:每个VRRP备份组可以监视所有与此VRRP备份组绑定的接口的状态,从而当接口出现故障时,VRRP通过改变优先级来重新选择主备关系。
虚拟IP地址Ping开关:提供了控制Ping通虚拟IP地址的开关命令。
VRRP的安全功能:对于安全程度不同的网络环境,可以在报头上设定不同的认证方式和认证字。
VRRP快速切换:VRRP通过监视BFD会话状态实现主备快速切换,主备切换时间毫秒级。
VRRP将局域网的一组路由设备构成一个VRRP备份组,相当于一台虚拟路由器。局域网内的主机只需要知道这个虚拟路由器的IP地址,并不需知道具体某台设备的IP地址,将网络内主机的缺省网关设置为该虚拟路由器的IP地址,主机就可以利用该虚拟网关与外部网络进行通信。
VRRP将该虚拟路由器动态关联到承担传输业务的物理设备上,当该设备出现故障时,再次选择新设备来接替业务传输工作,整个过程对用户完全透明,实现了内部网络和外部网络不间断通信。
如图6-1所示,虚拟路由器的实现原理如下:
SwitchA、SwitchB和SwitchC属于同一个VRRP备份组,组成一个虚拟的路由器,这个虚拟路由器有自己的IP地址10.110.10.1。虚拟IP地址可以直接指定,也可以借用该VRRP组所包含的设备上某接口地址。
SwitchA、SwitchB和SwitchC的实际IP地址分别是10.110.10.5、10.110.10.6和10.110.10.7。
局域网内的主机只需要将缺省路由设为10.110.10.1即可,无需知道具体设备上的接口地址。
主机利用该虚拟网关与外部网络通信。虚拟路由器工作机制如下:
比较优先级的大小,优先级高者当选为Master设备。
当两台优先级相同的设备同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master设备。
其它设备作为备份设备,随时监听Master设备的状态。
当主设备正常工作时,它会每隔一段时间(Advertisement_Interval)发送一个VRRP组播报文,以通知组内的备份设备,主设备处于正常工作状态。
当组内的备份设备一段时间(Master_Down_Interval)内没有接收到来自主设备的报文,则将自己转为主设备。一个VRRP组里有多台备份设备时,短时间内可能产生多个Master设备,此时,设备将会将收到的VRRP报文中的优先级与本地优先级做比较。从而选取优先级高的设备做Master。设备的状态变为Master之后,会立刻发送免费ARP来刷新交换机上的Mac表项,从而把用户的流量引到此台设备上来,整个过程对用户完全透明。
从上述分析可以看到,主机不需要增加额外工作,与外界的通信也不会因某台设备故障而受到影响。
VRRP报文用来将Master设备的优先级和状态通告给同一虚拟路由器的所有VRRP路由器。
VRRP报文封装在IP报文中,发送到分配给VRRP的IP组播地址。在IP报文头中,源地址为发送报文的主接口地址(不是虚拟地址或辅助地址),目的地址是224.0.0.18,TTL是255,协议号是112。VRRP报文的结构如图6-2所示。
Version:VRRP协议版本号。此处取值为2。
Type:VRRP通告报文的类型。只有一种取值1,表示Advertisement。
Virtual Rtr ID(VRID):虚拟路由器ID,取值范围是1~255。
Priority:发送VRRP通告报文的的设备在备份组中的优先级。取值范围是0~255,但可用的范围是1~254。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。
Count IP Addrs:VRRP通告报文中包含的虚拟IP地址的个数。
0:Non Authentication
1:Simple Text Password
2:Reserved
目前,S5700实现了明文认证方式和MD5认证方式。
Advertisement Interval:发送通告报文的时间间隔。缺省值为1秒。
Checksum:校验和。
IP Address(es):VRRP备份组的虚拟IP地址。
Authentication Data:认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于活动状态的设备才可以转发那些发送到虚拟IP地址的报文。
VRRP状态转换如图6-3所示。
Initialize:设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。在此状态时,不会对VRRP通告报文做任何处理。
定期发送VRRP通告报文。
以虚拟MAC地址响应对虚拟IP地址的ARP请求。
转发目的MAC地址为虚拟MAC地址的IP报文。
如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。
如果收到比自己优先级大的报文则转为Backup状态。
如果收到优先级和自己相同的报文,并且发送端的主IP地址比自己的主IP地址大,则转为Backup状态。
当接收到接口的Shutdown事件时,转为Initialize状态。
接收Master发送的VRRP通告报文,判断Master的状态是否正常。
对虚拟IP地址的ARP请求,不做响应。
丢弃目的MAC地址为虚拟MAC地址的IP报文。
丢弃目的IP地址为虚拟IP地址的IP报文。
如果收到比自己优先级小的报文时,丢弃报文,不重置定时器;如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。
当接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master状态。
当接收到接口的Shutdown事件时,转为Initialize状态。
这是VRRP提供IP地址备份功能的基本方式。主备备份方式需要建立一个虚拟路由器,该虚拟路由器包括一个Master和若干Backup设备。
正常情况下,业务全部由Master承担。
Master出现故障时,Backup设备接替工作。
允许一台设备为多个VRRP备份组作备份。通过多个虚拟路由器可以实现负载分担。负载分担方式是指多台虚拟路由器同时承担业务,因此需要建立两个或更多的备份组。
负载分担方式具有以下特点:
每个备份组都包括一个Master设备和若干Backup设备。
各备份组的Master设备可以不同。
同一台设备上的不同接口可以加入多个备份组,在不同备份组中有不同的优先级。
如图6-4所示,配置两个备份组:组1和组2。
SwitchA在备份组1中作为Master,在备份组2中作为Backup。
SwitchB在备份组1和2中都作为Backup。
SwitchC在备份组2中作为Master,在备份组1中作为Backup。
一部分主机使用备份组1作网关,另一部分主机使用备份组2作为网关。
这样,可以达到分担数据流而又相互备份的目的。
VRRP可以监视所有接口的状态。当被监视的接口Down或Up时,该设备的优先级会自动降低或升高一定的数值,使得备份组中各设备优先级高低顺序发生变化,VRRP设备重新进行Master设备竞选。
VRRP可以通过Increase方式和Reduce方式来监视接口(一个VRRP最多可以监视8个接口)。
如果VRRP以Increase方式监视一个接口,当被监视的接口状态变成Down后,VRRP的优先级增加(增加值可以配置)。
Increase方式只在VRRP状态为Backup时才生效。
如果VRRP以Reduce方式监视一个接口,当被监视的接口状态变为Down后,VRRP的优先级降低(降低值可以配置)。
Reduce方式在VRRP状态为Master或Backup时都生效。
具体的应用场景可以参考组网应用中的“VRRP监视接口状态”。
双向转发检测BFD(Bidirectional Forwarding Detection)机制能够快速检测、监控网络中链路或者IP路由的连通状况,VRRP通过监视BFD会话状态实现主备快速切换,主备切换的时间控制在1秒以内。
对于以下情况,BFD都能够将检测到的故障通知接口板,从而加快VRRP主备倒换的速度。
备份组包含的接口出现故障。
Master和Backup不直接相连。
Master和Backup直接相连,但在中间链路上存在传输设备。
BFD对Backup和Master之间的实际地址通信情况进行检测,如果通信不正常,Backup就认为Master已经不可用,升级成Master。在以下情况下Backup转换为Master:
当两台设备之间的背靠背连接全部断开时,Backup主动升级成Master,承载上行流量。
当两台设备之间的连接在如下情况下中断时,Backup主动升级成Master,承载上行流量。
VRRP快速切换的环境要求:
在Backup上,BFD Session检测的接口必须和Master设备相连;
在Master不可用时,Backup的优先级增加并大于原来Master的优先级,促使自己快速切换为Master。
解决的问题:VRRP无法感知非VRRP所在接口状态的变化,当上行链路出现故障时,VRRP感知不到,从而导致业务中断。
配置说明如下:
通过配置VRRP监视指定的接口。
VRRP可以以Increase方式和Reduce方式来监视一个上下链路接口,一个VRRP最多可以监视8个接口。
当VRRP监视的接口的状态发生变化时,通知VRRP,VRRP根据接口的状态来增加或者是减少VRRP的优先级,从而达到指导VRRP状态切换的目的。
如图6-5所示,SwitchA和SwitchB两台设备上面运行VRRP协议。并且SwitchB的优先级比SwitchA的优先级的高,SwitchB以Reduce方式监视接口。SwitchB为Master设备,用户侧的流量通过主用设备SwitchB出去,如图6-5中绿线所示。现在SwitchB连向Internet的出接口出现故障,由于SwitchB上面VRRP以Reduce方式监视了这个接口,VRRP的优先级降低,SwitchA抢占成为主用设备,以后用户侧的流量则通过SwitchA出去。
解决的问题:VRRP在检测出链路故障后流量丢失时间较长的问题。
配置说明如下:
通过在SwitchA和SwitchB上配置BFD来检测它们之间链路状态,由于BFD可以实现毫秒级别的快速链路检测,所以链路或者远端主机发生故障后可以迅速检测出来。
通过监视普通BFD,VRRP可以快速感知链路状态,BFD检测出链路故障后通知VRRP。
VRRP根据BFD通告过来的状态来进行优先级调整或者是快速切换来达到快速抢占的目的。
一个VRRP可以配置监视最多8个BFD会话。
通过监视普通BFD可以使VRRP主备切换的时间控制在200ms以内。
如图6-6所示,SwitchA和SwitchB之间配置VRRP备份组建立主备关系,SwitchA为主用设备,用户过来的流量从SwitchA出去。在SwitchA和SwitchB之间建立BFD会话,VRRP备份组监视该BFD会话,当BFD会话状态变化时,通过修改备份组优先级实现主备快速切换。当BFD检测到SwitchA和SwitchC之间的链路故障时,上报给VRRP一个BFD检测Down事件,SwitchB上VRRP备份组的优先级增加,增加后的优先级大于SwitchA上的VRRP备份组的优先级,于是,SwitchB立刻升为Master,后继的用户流量就会通过SwitchB转发,从而实现VRRP的主备快速切换。
缩略语 | 英文全称 | 中文全称 |
---|---|---|
VRRP | Virtual Router Redundancy Protocol | 虚拟路由冗余协议 |
ARP | Address Resolution Protocol | 地址解析协议 |
BFD | Bidirectional Forwarding Detection | 双向转发检测 |
L2VPN | Layer 2 virtual private network | 二层虚拟专用网 |
PW | Pseudo Wire | 虚电线 |
VSI | Virtual Switching Instance | 虚拟交换实例 |
QinQ | 802.1Q in 802.1Q | 802.1Q嵌套802.1Q |
ME | Metro Ethernet | 城域以太 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。