1.vrrp原理
vrrp(虚拟路由冗余协议)实现对终端设备的默认网关进行冗余备份,在一台路由出现故障时,备份路由器及时接管数据转发,避免网络的单点失效。
在基于TCP/IP协议的网络中,为了保证和出本网之外的其它网络通信,主机必须指定默认路由。常用的方法有两种:一种是通过路由协议动态学习;另一种是静态配置。在每一个终端都运行动态路由协议,会增加路由协议的收敛时间,甚至由于户端操作系统平台问题造成网络的不稳定。因此一般是给终端设备指定一个或者多个默认网关。静态路由的方法简化了网络管理的复杂度和减轻了终端设备的通信开销,但是它仍然有一个缺点:如果一台默认路由器出现故障,终端不会自动切换到备份路由。采用虚拟路由冗余协议可以很好的避免静态指定网关的缺陷。
在VRRP协议中,有两组重要的概念:VRRP路由器和虚拟路由器,主控(master)路由器和备(backup)路由器。VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑的。一组VRRP路由器协同工作,共同构成一台虚拟路由器。该虚拟路由器对外表现为一个具有唯一固定IP地址和MAC地址的逻辑路由器。处于同一个VRRP组中的路由器具有两种互斥的角色:主控路由器和备份路由器,一个VRRP组中有且只有一台处于主控角色的路由器,可以有一个或者多个处于备份角色的路由器。VRRP协议使用选择策略从路由器组中选出一台作为主控,负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色。一个VRRP路由器有唯一的标识:VRID,范围为0—255。该路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]。主控路由器负责对ARP请求用该MAC地址做应答。这样,无论如何切换,保证给终端设备的是唯一一致的IP和MAC地址,减少了切换对终端设备的影响。
VRRP控制报文只有一种:VRRP通告(advertisement)。它使用IP组播(224.0.0.18)发送通告,发布范围只限于同一局域网内。这保证了VRID在不同网络中可以重复使用。为了减少网络带宽消耗只有主控路由器才可以周期性的发送VRRP通告报文。备份路由器在连续三个通告间隔内收不到VRRP或收到优先级为0的通告后启动新的一轮VRRP选举。 在VRRP路由器组中,按优先级选举主控路由器,VRRP协议中优先级范围是0—255。若VRRP路由器的IP地址和虚拟路由器的接口IP地址相同,则称该虚拟路由器作VRRP组中的IP地址所有者;IP地址所有者自动具有最高优先级:255。优先级0一般用在IP地址所有者主动放弃主控者角色时使用。优先级的配置原则可以依据路由器性能和可靠性以及其它管理策略设定。如果在VRRP组中有IP地址所有者,则它总是作为主控路由的角色出现。对于相同优先级的候选路由器,按照IP地址大小顺序选举。VRRP还提供了优先级抢占策略,如果配置了该策略,高优先级的备份路由器便会剥夺当前低优先级的主控路由器而成为新的主控路由器。
2.案例配置
1)用到的拓扑图
2)所用平台
华为(quidway-2600serial)路由器(r1,r2,r3);两台华为交换机(quidway s3526)
3)R1配置命令
[Router]interface serial0
[Router-Serial0]ip address 202.102.1.2 24
[Router-Serial0]interface serial1
[Router-Serial1]ip address 202.102.2.2 24
[Router-Serial1]interface loopback 1
[Router-LoopBack1]ip address 202.102.3.1 24
4)R2配置命令
[Router]interface eth1.10 //vlan10 子接口
[Router-Ethernet1.10]vlan-type dot1q vid 10
[Router-Ethernet1.10]ip address 192.168.10.1 24
[Router-Ethernet1.10]vrrp vrid 10 virtual-ip 192.168.10.254 //配置vlan10 虚拟网关
[Router-Ethernet1.10]vrrp vrid 10 track serial1 reduced 30 // 监控serial 1端口如果此端口失效优先级减少30
[Router]acl 2000
[Router-acl-2000]rule permit source 192.168.0.0 0.0.0.255 // 允许192.168.0.0 网段的私有地址作nat 转换
[Router]interface serial1
[Router-Serial1]ip address 202.102.2.1 24
[Router-Serial1]nat outbound 2000 interface //在接口作nat转换
[Router-Ethernet1.10]interface eth1.20
[Router-Ethernet1.20]vlan-type dot1q vid 20
[Router-Ethernet1.20]ip address 192.168.20.1 24
[Router-Ethernet1.20]vrrp vrid 20 priority 120 //设置优先级为120
[Router-Ethernet1.20]vrrp vrid 20 track serial1 reduced 30
[Router-Ethernet1.20]vrrp vrid 20 preempt-mode // 设置为抢占模式
[Router-Ethernet1.20]vrrp vrid 20 virtual-ip 192.168.20.254
[Router]ip route-static 0.0.0.0 0.0.0.0 202.102.2.2 //到达外网的默认路由
5)R3配置命令
[Router]interface eth1.10
[Router-Ethernet1.10]vlan-type dot1q vid 10
[Router-Ethernet1.10]ip address 192.168.10.2 24
[Router-Ethernet1.10]vrrp vrid 10 virtual-ip 192.168.10.254
[Router-Ethernet1.10]vrrp vrid 10 priority 120
[Router-Ethernet1.10]vrrp vrid 10 track serial0 reduced 30
[Router-Ethernet1.10]vrrp vrid 10 preempt-mode
[Router-Ethernet1.10]interface eth1.20
[Router-Ethernet1.20]vlan-type dot1q vid 20
[Router-Ethernet1.20]ip address 192.168.20.2 24
[Router-Ethernet1.20]vrrp vrid 20 virtual-ip 192.168.20.254 //配置vlan10 虚拟网关
[Router-Ethernet1.20]vrrp vrid 20 track serial0 reduced 30 // 监控serial 0端口如果此端口失效优先级减少30
[Router]acl 2000
[Router-acl-2000]rule permit source 192.168.0.0 0.0.255.255
[Router]interface serial0
[Router-Serial0]ip address 202.102.1.1 24
[Router-Serial0]nat outbound 2000 interface
[Router]ip route-static 0.0.0.0 0.0.0.0 202.102.1.2
6)两台交换机的配置命令
[Quidway]vlan 10 //创建vlan10
[Quidway-vlan10]port eth0/5 to eth0/10 //把eth0/5-10 分配给vlan10
[Quidway]vlan 20
[Quidway-vlan20]port eth0/11 to eth0/15 // 把eth0/11-15 分配给vlan20
[Quidway]interface eth0/20
[Quidway-Ethernet0/20]port link-type trunk //配置eth0/20 为干道
[Quidway-Ethernet0/20]port trunk permit vlan all //干道链路允许所有vlan通过
[Quidway]interface eth0/24
[Quidway-Ethernet0/24]port link-type trunk
[Quidway-Ethernet0/24]port trunk permit vlan all
[s38]vlan 10
[s38-vlan10]port eth0/5 to eth0/10
[s38-vlan10]vlan 20
[s38-vlan20]port eth0/11 to eth0/15
[s38]interface eth0/20
[s38-Ethernet0/20]port link-type trunk
[s38-Ethernet0/20]port trunk permit vlan all
[s38-Ethernet0/20]interface eth0/24 //两台交换机之间连接的端口
[s38-Ethernet0/24]port link-type trunk
[s38-Ethernet0/24]port trunk permit vlan all
7)测试结果
在R3上关于vrrp的信息
在R4上关于vrrp的信息
其中一台主机的ip
在这台主机上ping 外网地址
在R3上关闭连接交换机的ethernet1 端口
从新测试连通性
3.hsrp原理
hsrp(Hot Standby Router Protocol)是cisco的专有协议它实现和vrrp类似的功能。HSRP中有多台路由器,它们组成一个“热备份组”,这个组形成一个虚拟路由器。在任一时刻,一个组内只有一个路由器是活动的,并由它来转发数据包,如果活动路由器发生了故障,将选择一个备份路由器来替代活动路由器,但是在本网络内的主机看来,虚拟路由器没有改变。所以主机仍然保持连接,没有受到故障的影响,这样就较好地解决了路由器切换的问题。HSRP协议利用一个优先级方案来决定哪个配置了HSRP协议的路由器成为默认的主动路由器。如果一个路由器的优先级设置的比所有其他路由器的优先级高,则该路由器成为主动路由器。路由器的缺省优先级是100,所以如果只设置一个路由器的优先级高于100,则该路由器将成为主动路由器。通过在设置了HSRP协议的路由器之间广播HSRP优先级,HSRP协议选出当前的主动路由器。当在预先设定的一段时间内主动路由器不能发送hello消息时,优先级最高的备用路由器变为主动路由器。
HSRP 状态 备份组内的路由器处于各自的状态,根据相互间发送 HSRP 报文来调整新的状态。
(1)init:所有备份组内组员的初始状态为 INIT,当组员配置属性或端口 UP 时,进入 INIT 状态。
(2)learn:该组员未设定虚拟IP地址,并等待从本组活动路由器发出的认证的Hello 报文中学习得到自己的虚拟IP 地址。
(3)listen :该组员已得知或设置了虚拟 IP 地址,通过监听 Hello 报文监视活动/备份路由器,一旦发现活动/备份路由器长时间未发送 Hello 报文,则进入 SPEAK 状态,开始竞选。
(4)speak: 参加竞选活动/备份路由器的组员所处的状态,通过发送 Hello 报文使竞选者间相互比较、竞争。
(5)standby: 组内备份路由器所处的状态,备份组员监视活动路由器,准备随时在活动路由器坏掉时接替活动路由器。备份路由器也周期性发送 Hello 报文告诉其他组员自己没有坏掉。
(6)ACTIVE:组内活动路由器即负责虚拟路由器实际路由工作的组员所处的状态。活动路由器周期性发送 Hello 报文告诉其他组员自己没有坏掉。
4.hsrp案例配置
1)用到的拓扑图
2)r1配置命令
r1(config)#interface FastEthernet0/0.10
r1(config-if)#encapsulation dot1Q 10
r1(config-if)#ip address 192.168.10.1 255.255.255.0
r1(config-if)#standby 10 ip 192.168.10.254
r1(config-if)#standby 10 priority 150
r1(config)#interface FastEthernet0/0.20
r1(config-if)#encapsulation dot1Q 20
r1(config-if)#ip address 192.168.20.1 255.255.255.0
r1(config-if)#standby preempt
r1(config-if)#standby 20 ip 192.168.20.254
3)r2配置命令
r1(config)#interface FastEthernet0/0.10
r1(config-if)#encapsulation dot1Q 10
r1(config-if)#ip address 192.168.10.2 255.255.255.0
r1(config-if)#standby 10 ip 192.168.10.254
r1(config-if)#standby 10 priority 150
r1(config)#interface FastEthernet0/0.20
r1(config-if)#encapsulation dot1Q 20
r1(config-if)#ip address 192.168.20.2 255.255.255.0
r1(config-if)#standby preempt
r1(config-if)#standby 20 ip 192.168.20.254
4)R14配置命令
R14#vlan database
R14(vlan)#vlan 10
R14(vlan)#vlan 20
R14(config)#interface range fa1/0 –2
R14(config-if-range)#switchport mode trunk
R14(config-if-range)#channel-group 1 mode on
R14(config)#interface range fa1/0 –4
R14(config-if-range)#switchport mode trunk
5)R15配置命令
R15#vlan database
R15(vlan)#vlan 10
R15(vlan)#vlan 20
R15(config)#interface range fa1/0 –2
R15(config-if-range)#switchport mode trunk
R15(config-if-range)#channel-group 1 mode on
R15(config)#interface range fa1/0 –4
R15(config-if-range)#switchport mode trunk
6)R13配置命令
R13(config)#interface range fa1/0 –2
R13(config-if-range)#switchport mode trunk
R13(config)#vlan 10
R13(config)#vlan 20
R13(config)#interface range fa1/4 –5
R13(config-if-range)#switchport access vlan 10
R13(config)#interface range fa1/6 –7
R13(config-if-range)#switchport access vlan 20
7)测试在host1的连通性
关闭一个路由器在测试