VRRP这样的知识点并不是很密集,但是VRRP在各种场合却经常出现,比如在端口安全这一小节当中,比如在LINUX的集群当中,会有应用来调用VRRP协议从而实现某种功能,在这里我们不讲LINUX,所以不拿LINUX集群来举例子。有一次我去我们兄弟公司那边,他那连两台防火墙SEC PATH 1030连接双运营商用的也是用的VRRP。
VRRP还在端口安全那一章节当中的全局MAC地址漂移那小节当中出现过,VRRP有时会出现mac地址漂移现象,这个漂移是正常的,我们可以将其排除。还有VRRP的组与MSTP实例有点类似,track与静态路由当中的BFD和NQA有点类似。
第一层:基础- 为什么要使用VRRP?
主要用来解决网关的冗余性
- VRRP的全称是什么?
虚拟网关冗余协议
- 虚拟出的路由器是否拥有自己的IP和掩码?
是的,虚拟出的路由器拥有自己的IP和掩码
- 虚拟路由器的MAC地址的格式是?组播的MAC地址的前24位是多少来着?
0000-5e00-01XX、组播是01005e
- VRRP使用的组播IP是:
224.0.0.18
- 默认抢占是否打开?
是打开的
- 一个VRRP是否可以有多个VRRP虚拟地址?
是可以的
- 选举优先级比大还是比小,如果优先级一样比什么?
比大,比IP地址的大小
- 在什么情况下,设备发送的VRPP报文中的优先级为0?什么时候是255
当接口主动放弃VRRP配置的时候,这时候就会发现一个优先级等于0的通知报文,目的是告诉对方自己已经放弃。
255的最大的优先级,是当虚拟IP和接口的物理IP一样时,物理接口会把自己的优先级提高到255,这时候流量肯定会这边。
- 谈一谈VRRP的状态机(这部分没有详细描写,写的比较粗暴)
我们在学习TCP/IP的三次握手的时候,学过TCP的有限状态机,这个状态机的翻译是有些奇怪,其实这个有状态机就是在不同状态下的不同的名字而已。VRRP比较简单,只有三种:init(初始状态)、backup、master,我们要注意这三个状态并不是VRRP在完全收敛完成后的BACKUP和MASTER,完成收敛的VRRP当中的MASTER和BACKUP是指的角色,面这里的master和backup只是状态,并且这个状态是不稳定的,所以我们不能理解错误。
初始状态
那什么情况下会进入到初始状态呢?很简单,那就是初始的时候,当接口刚配置好VRRP时,这时候接口就处于初始状态,只要配置了VRRP就是初始状态,接口没有上电也是初始状态,正常情况下,在初始状态呆一会就会进入到backup状态(所谓的正常状态就是优先级不是255),但就是有不正常的情况下,在初始状态下,如果VRRP发现配置当中的虚拟IP与自己物理接口的IP是一样的,那就立马将自己的优先级拉满,所谓的拉满就是将自己的优先级调整成最优、最大,就是255,并且立马由初始状态转换成master状态。
backup状态
看了BACKUP状态之后,发现这个状态与上面这个表情包有点像,BAKCUP状态会暗中观察master,这时候可能还没选举出master,但是它不管,它会为master生成个计时器,然后等着master发心跳报文,正常发送的话会刷新这个计时器,正常情况下,如果收到真正master发送的心跳报文,这时候就开始对比优先级,如果对方的优先级经自己小,那就抢占对方的master,如果对方比自己大,自己则按兵不同,暗中观察。
- 关于免费arp
获胜者master要向下游的交换机发送一个免费arp,用来刷新交换机的MAC地址表,这时候会出现一个正常的MAC漂移现象。
第二层:故障与适配- 说一个VRRP面对常见的故障是如何应对的?
VRRP本身是一个非常成熟的协议,如果VRRP所在链路工作正常,流量全都会走某A端,A端这一链路没有问题,但A端的上游如果接口或协议down掉,VRRP是无感知的,流量还是正常走A端,可是这时候如果走A端已经没有任何的意义了。
其实说对这里,我们应该能回忆起路由基础那一章节,在那一章节当中,静态路由同样存在类似的问题,但静态路由是通过借助BFD或NQA这两种协议来解决的,在VRRP当中也类似,VRRP虽然没有借用任何的其它协议,但是VRRP本身带有一个检测工具,在配置的的时候我们可以通过track(跟踪)上行链接的某个接口,如果上行链接的某个接口或协议down掉,那VRRP的A端优先级立马会减去30(默认是100),这样backup路由器会自动顶上。
其实这个track的原理也非常简单,这一点又和zabbiz的监控项、触发器、动作这三者是比较类似的,监控项在VRRP的track当中先用可能就是调用了ICMP不断探测上行的IP,当请求超时的时候会触发触发器的当中的规定,然后执行动作,动作是什么呢?动作其实其实立马将接口减去优先级,目的是将master的身份让出来,让流量走对端。
- 谈一谈VRRP本身存在的浪费问题和应对办法?
其实第一次看到VRRP的配置有一些奇怪的,我们配置的主体并不是VRRP本身,而是VRRP的一个组,这种现象也很常见,我们可以联想到在MSTP的时候我们配置的主体也并不是MSTP而是一个实例,有点类似于VRRP当中的一个组,为什么要这么做呢?
一个VRRP组里面只能一个MASTER路由器,那这样的话,所有的流量都走master这一端,如果我们局域网内部有很多的vlan,所有的vlan都走A端,那B端就会一直闲着,这就是VRRP的浪费行为 ,针对这种浪费行为,我们可以通过组的方式将不同的vlan加入到不同的组里面,不组的组设置不同的master,这样两边的链路互为主备,并且同时都在工作。
- 如果我们采用上面的办法,将不同的vlan划入到不同VRRP组,然后不同的组设置不同的master,那与之对接的上游的设备应该如何配置呢?
如果上游是两个路由器,我们就得在路由器的接口上配置子接口并且交换机与路由器连接的接口肯定 是配置trunk。
如果上游是两个三层交换机,那三层交换机的接口也要配置成trunk,然后内部起vlanif接口,下游与之相连的接口肯定也是trunk接口,这一点非常好理解。
第三层:MSTP结合当VRRP与MSTP结合的时候我们要流量一些问题,要么是VRRP顺着MSTP, 要么是MSTP顺着VRRP,这个顺着是什么意思呢?就是VRRP的组与MSTP的实例要统一起来,因为无论是VRRR的组还是MSTP的实例都拥有改变流量走向的能力,当我们把A这个运行VRRP的三层交换机配置为master,vlan10-20的流量全都走这台交换机,那在vlan10-20所属的mstp实例当中我们也要将A这个三层交换机配置成根桥 ,这样的话,流量也要走A这一端,否则,你想想,肯定会出大问题。