VRRP协议小结
定义:vrrp是虚拟冗余网关协议,可以将多台路由设备虚拟成一台实现网关的备份和负载。
版本:vrrp v2仅适用于ipv4,vrrp v3适用于IPv4和ip v6。
报文:vrrp只有一种报文:Advertisement,其目的地址是224.0.0.18,其目的mac地址是01-00-5e-00-00-12,协议号112.
任何运行了vrrp协议的路由器都属于224.0.0.18这个组播地址,报文发向这个地址,那么组内的所有路由器都会收到。
虚拟网关:
- 虚拟IP地址:是所有终端设备的网关。
- 虚拟mac地址:00-00-5e-00-01-vid 此mac地址和组播的mac地址不一样,是不固定的。vid表示设备的编号。
- 虚拟vrid:不同的vrid代表不同的虚拟路由器组。
工作过程:
1:选举出master,master 设备周期性发送vrrp通告报文给组内的其他设备,以通知自己处于正常的工作状态。默认1s发送一次。根据设备的优先级选举出master,默认优先级是100,越大越优先。优先级范围是1-255.可设置是1-254,255时,物理接口地址和虚拟网关地址冲突。
2:当master出现问题时,backup设备在间隔时间内未收到master发送的通告报文,则立即成为master。间隔时间默认是3倍的报文通告时间
3:当master故障修复之后,则立即抢占成为master(默认),可以设置抢占时延,避免出现短暂的链路故障。抢占时延不能随意设置,必须结合当前网络的整体环境,和上游整体网络的收敛相吻合。否则,主备切换回来之后,上游网络并没有完成收敛,就会导致网络故障。
vrrp 的故障场景:
当vrrp组上游链路出现故障的时候,主备之间的链路通告是正常的,并不会发生切换。数据从主设备发送出去后,回不来,那么就会影响网络通讯。
解决方法:
利用vrrp的联动功能,监听上游链路的状态,当上游链路出现故障之后,主设备将自己的优先级降低,使备设备升级为主设备。
利用track功能,监听直连的链路,当链路发生故障时,降低优先级,如果是非直连的链路发生故障时,则,监听不到,不能降低优先级,就需要和bfd实现联动了。
会话跟踪bfd:双向检测机制,检测整条链路的状态,从源到目的整条链路的连接状态。可以和多种路由协议相联动,比如ospf、is-is、bgp等。
案例1:实现虚拟冗余
实验拓扑如上
第一步:将各个路由设备配置上IP地址(略)。
第二步:配置vrrp协议,我们将AR1设备配置为master。
AR1:所有关于vrrp的配置基本都是在接口视图里面配置的
interface GigabitEthernet0/0/0
ip address 192.168.1.2 255.255.255.0 物理接口的实际IP地址
vrrp vrid 1 virtual-ip 192.168.1.1 添加虚拟网关地址,也是所有终端设备的网关
vrrp vrid 1 priority 200 设置设备的优先级,默认为100.数值大的优先
vrrp vrid 1 preempt-mode timer delay 10 (选配) 设置设备的抢占时延10s,默认为0,即立即抢占,会出现短暂的网络丢包。
vrrp vrid 1 timer advertise 3 vrrp通告报文的发送间隔,默认为1s(选配)
AR2:
interface GigabitEthernet0/0/0
ip address 192.168.1.3 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.1 虚拟网关地址
其他参数可不配置。
验证:display vrrp brief 查看vrrp基础信息
可以看到,AR1是vrrp的主网关,承担数据的转发,AR2是备份状态,不转发数据。当主设备接口down掉时,备设备升级成主设备开始转发数据,这样就实现了简单的网关冗余。
查看详细信息:display vrrp
详细信息可以看到我们设置的详细的参数
实验2:端口跟踪和BFD双向检测
当网关接口down掉时,主备可以实现切换,但是要是上行链路出现故障,那么vrrp组检测不到,数据还是从主设备转发出去,但是回不来,就会出现通讯故障,这时,可以使用端口跟踪,检测出口状态,当与外界连接的端口出现故障时,设备将自己的优先级减至低于备设备,那么备用设备会升级成主网关,开始转发数据。
配置:在实验1的基础上
interface GigabitEthernet0/0/0
vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 150
在网关接口下配置,track设备的出接口,故障时,优先级减掉150,那么备设备就会升级成主网关。
验证:将g0/0/1口down掉再次查看
可见,AR1的优先级以成为50,并且主网关的IP地址成为了AR2。
但是端口跟踪只能检测直连的链路的状态,要是与自己非直连的链路发生故障仍然检测不到,不会发生主备切换,那么就需要BFD技术了。BFD可以检测整条数据链路的状态,只要链路中的任何一个节点出现问题,就会引起主备切换。
配置如下:
AR1:
bfd 全局开启bfd功能
bfd 1 bind peer-ip 192.168.13.2 source-ip 192.168.13.1 创建一个bfd会话,绑定对端的IP地址和本端的IP地址,这两个IP地址可不在一个网段,只要保证路由可达即可。
discriminator local 1 本端标识符,用来标识此次会话本端的唯一身份
discriminator remote 3 对端标识符,用来标识对端的唯一身份
commit 执行
本端标识符也可以在绑定IP时多加上auto 命令,这样就不用单独指定,而是有双方协商生成。
AR3:在对端设备上也得配置
bfd 1 bind peer-ip 192.168.13.1 source-ip 192.168.13.2
discriminator local 3
discriminator remote 1
commit
AR1:
interface GigabitEthernet0/0/0
vrrp vrid 1 track bfd-session 1 reduced 120 在接口下再添加这么一条,track bfd 会话 注意,bfd-session 后面的1表示的时本端标识符,并不是bfd会话。
这样就保证了主设备的上行链路不管哪个节点出现问题,都可以实现主备切换。
实验三:实现网关的负载均衡
以上都是主设备运行,备设备并没有转发数据,造成设备的浪费,我们可以再创建一个虚拟组,再添加一个虚拟网关,使得不同的网关走不同的设备,两两互为备份。
AR1:
interface GigabitEthernet0/0/0
vrrp vrid 2 virtual-ip 192.168.1.5 创建一个vrid 2的组,添加虚拟网关
AR2:在路由2设备配置vrid 2为主设备
interface GigabitEthernet0/0/0
vrrp vrid 2 virtual-ip 192.168.1.5
vrrp vrid 2 priority 200
vrrp vrid 2 preempt-mode timer delay 10
vrrp vrid 2 timer advertise 3
这样就实现了网关的负载均衡,不同的网关走不同的出口设备,路由2上也可以配BFD会话。和路由1一样。
验证:
可以看到两组互为主备。
再次查看详细信息,会看到有两组vrrp组的信息。
OK,本次关于vrrp的小结就这样了!!!