Virtual Router Redundancy Protocol,虚拟路由冗余协议,一个很大气的名字
正常情况下,假如HOST 10.0.0.2经过一个二层交换机,然后经过一个Router(假如只有R1,没有R2)出去;对于这种单点链路,假如 Router或者连接switch的接口故障,那么整条链路就出现事故,原因就是网关只有一个,没有冗余;此时可以添加一个Router,R1的GE0/0/1和R2的GE0/0/2连到了同一个二层交换机上,这时可以在这两个口上分别激活VRRP,将这两个口放到同一个VRRP组里,指定一个IP地址,这样VRRP就会产生一个Virtual Router,如图中的VR和10.0.0.254,这时候就会提供冗余的网关功能;所有的HOST可以将网关地址指定为VRRP的IP地址,由VRRP来选择VRRP组里由谁来响应
1:冗余的选路
如上图R1是Master,那么Host一开始的ARP请求全部都由R1来应答,进而后续的数据流量也全部都走R1;此时如果R1如果故障DOWN掉,或者GE0/0/1口异常,VRRP会检测到,此时R2就从Backup切到了Master,此时所有ARP也数据流量都全部都R2通过,达到了冗余的效果;除此之外,Master口也在周期性地发送VRRP消息给Backup报备自己的存活情况
2:Master和Backup的选择
Master是真正VRRP组里响应和通信流量的,同时也告诉Backup自己的存活;而Backup一直在监听Master的存活情况,一旦Master挂了,自己就开始切主工作;在一开始都添加到VRRP组的时候,可以自行配置Master和Backup,具体规则是先比较VRRP的优先级,默认值100,谁大谁Master;优先级一样就比较接口IP地址的大小,因为是同一个二层广播域,谁IP地址大谁Master
比如R1的口里这么配置
ip address 10.0.0.11 24 vrrp vrid 1 virtual-ip 10.0.0.254 vrrp vrid 1 priority 101
而R2的口里这么配置
ip address 10.0.0.22 24 vrrp vrid 1 virtual-ip 10.0.0.254
尽管R2接口的IP地址更大,但是Priority是100比R1的小,因此在抢占的过程中,R1还是会是Master
3:VRRP相关
每个VRRP组里只能有一个Master,而Virtual Router是抽象出来的一个逻辑东西作为Host的网关,并非实际存在,只需要知道其IP地址,至于冗余选路,主备切换从上面可以看出来都是VRRP协议的分内工作,同时一个接口可以加到多个VRRP组里,不同的组通过group ID来进行区分
4:Virtual Router
虚拟网关作为Host指向的IP地址,要进行通信必须有对网关进行ARP请求,这里除了Virtual IP之外,还有对应的一个Virtual Mac,该MAC的最后一个字节对应了VRRP的group ID,一般来说是00-00-5E-00-01-$VRID
对于ARP请求,这里有个疑惑:
当Host发送ARP请求,请求的IP地址是VR的Virtual IP,得到的响应应该也是Virtual Mac,是如何让Master进行转发的?
我大概这样理解,VR只是一个逻辑概念,并非真实存在,甚至Master和所有Backup合起来可以理解成一个整体Virtual Router,而这个整体有一个Virtual IP和Virtual Mac对外暴露,这样对于响应ARP就应该响应Virtual Mac,至于在VR内部,通过VRRP协议最终响应的是Master,以及最终Host学习了Virtual Mac之后,将流量转发到VR,最后通过VRRP协议,也是通过Master来进行转发,并且仅有Master才能响应和转发
还有一个问题,这里Backup一直在监听Master的VRRP消息,假如整个Master挂了,能够监听到,但是如果仅仅是Master上行口挂了,那么这里流量还是正常转发到Master,但是没出上行口,这个就比较难探测,在交换机上可以把上行口和下行口绑定一个link-group,假如上行口挂了,下行口也会挂;而这里VRRP有一个track特性,配置了之后可以跟踪上行口的状态,假如此时Master上行口异常,track失败,就会降低Master的VRRP优先级数据,使得Backup优先级更大,从而进行切换
假如Master上行口GE 0/0/2,具体配置可以在对应下行口GE 0/0/1里检测
ip address 10.0.0.11 24 vrrp vrid 1 virtual-ip 10.0.0.254 vrrp vrid 1 priority 101 vrrp vrid 1 track interface GE 0/0/2 reduced 10
下行口里跟踪上行口状态,如果挂了,降低10优先级,就小于Backup的100,就会进行主备切换
初步研究了下VRRP,还有一些抢占,联动,用到的时候再慢慢熟悉