一:vrrp简介:
1:VRRP(虚拟路由器冗余协议)是一种备份冗余解决方案,它共享多路访问介质(如以太网)上终端ip设备的默认网关,并进行冗余备份,从而在其中一台路由设备宕机时,备份路由设备能够及时接管转发工作,为用户提供透明的切换,提高网络服务质量。冗余备份如图所示:
2:vrrp状态:
initialize状态:系统启动后进入initialize状态,路由器不对vrrp报文做任何处理。当收到接口up的消息后,将进入backup或master状态
master状态:(1):定期发送vrrp通告(2):发送免费ARP报文,以便网络内个主机知道虚拟ip地址所对应的虚拟mac地址(3):响应对虚拟ip地址的ARP请求,且响应的是虚拟mac地址,而不是接口的真是mac地址(4):转发目的mac地址为虚拟mac地址的ip报文(5):如果路由器是虚拟ip地址的拥有者,则接收目的ip地址为虚拟ip地址的报文,否则丢弃ip报文
backup状态:(1):接收master发送的vrrp报文,从中了解master的状态(2):对虚拟ip地址的ARP请求不做响应(3):丢弃目的mac地址为虚拟mac地址的ip报文(4):丢弃目的ip地址为虚拟ip地址的ip报文
3:vrrp的选举机制:
运行vrrp的路由器都会发送和接收vrrp通告消息,在通告消息中包含了自身的vrrp优先级信息。vrrp通过比较路由器的优先级进行选举,优先级高的将成为主路由器(master),其他路由器都为备份路由器(backup)。如果vrrp组中存在ip地址拥有者,即虚拟ip地址与某台vrrp路由器的地址相同时,ip地址拥有者将成为主路由器,并且具有最高优先级255。如果vrrp组中不存在ip地址拥有者,vrrp路由器将通过比较优先级来确定主路由器。默认情况下,vrrp路由器的优先级为100.当优先级相同时,vrrp通过比较ip地址来进行选举,ip地址大的路由器将成为主路由器。
4:vrrp定时器:
通告定时器:主路由器以该定时器的时间间隔定期发送vrrp通告报文,告知其他备份路由器自己仍在线。通告时间默认为1秒。
主路由器失效定时器:主路由器失效间隔指的是备用路由器多长时间没有收到主路由器的通告报文后,将认为主路由器已失效,并开始选举新的主路由器。主路由器失效间隔是通告间隔的3倍,默认是3秒。
5:vrrp负载均衡:
在标准的vrrp运行环境中,主路由器负责转发到虚拟ip地址的数据,备份路由器不负责数据的转发,如果主路由器一直处于数据转发状态时,备份路由器链路将处于空闲状态,造成了带宽资源的浪费。为了提高冗余性,并避免造成带宽资源的浪费,可以再vrrp中使用负载均衡。vrrp负载均衡是将路由器加入多个vrrp组中实现,是vrrp路由器在不同的组中担任不同的角色。负载均衡如图所示:
二:HSRP简介:
1:热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一跳路由器不出故障。
2:hsrp状态:
初始状态(initial):接口初次启动或者配置变更后进入此状态
学习状态(learn):路由器尚未确定虚拟IP地址,未从活动路由器接收到需要鉴权的helllo消息,等待活动路由器的消息。
监听状态(listen):路由器知道了虚拟IP地址,但自己不是活动或是备份路由器,此时监听来自活动和备份路由器的hello消息。
发言状态(speak):路由器定时发送hello消息,积极参与竞选,无虚拟IP地址的路由器将无法参与选举。
备份状态(standby):路由器候选成为下一个活动路由器,它会定时发送hello消息,一组最多只有一个备份路由器。
活动状态(active):此状态的路由器负责转发发往改组的虚拟MAC地址的数据包,定时发送hello消息,一组最多只有一台活动路由器。
三:vrrp与hsrp的相同点与不同点:
1、两个都支持认证
2、两个都支持抢占,VRRP抢占默认开启
3、都可以做负载均衡(不同组之间)
4、HSRP中路由状态有6中,VRRP有3种
5、HSRP中叫做active路由器和standby路由器,VRRP叫做master路由器和backup路由器。HSRP是cisco私有,VRRP公有
6、HSRP standby路由器也主动发送hello包,这样HSRP活动路由器可以发现网络当中的备份路由器 VRRP backup路由器不主动发送hello包,所以master路由器不可以主动发现网络当中的backup路由器 。
7、HSRP虚拟路由器的Ip不能是活动路由器接口的ip,VRRP可以:
8、HSRP的standby路由器选举只有优先级起作用,ip地址不起作用。 VRRP的活动路由器选举优先级和ip地址都起作用
9、HSRP的hello时间为3秒,间隔hold时间为10秒 VRRP中失效间隔时间是通告间隔时间的3倍,通告间隔时间默认1秒
10、VRRP支持辞职,HSRP不支持辞职(辞职是指将接口优先级改为0后不参加活动路由器的选举)
11、虚拟MAC:00-00-5e-00-01-01 VRRP 组播地址224.0.0.18
00-00-0c-07-ac-01 HSRP 组播地址 224.0.0.2
案例一:VRRP冗余备份及负载均衡(H3C设备):
原理:vrrp进行冗余备份,并且实现负载均衡,如图:在路由器R5和R10上创建子接口,实现链路的冗余备份;并创建2个vrrp组,实现R5和R10的负载均衡。
拓扑方案:
配置:
R5:
[R5]int eth 0.1 #划分子接口
[R5-Ethernet0.1]vlan-type dot1q vid 10 #封装类型为dot1q,添加vlan10标签
[R5-Ethernet0.1]ip add 192.168.10.1 24
[R5]int eth 0.2 #划分子接口
[R5-Ethernet0.2]vlan-type dot1q vid 20 #封装类型为dot1q,添加vlan20标签
[R5-Ethernet0.2]ip add 192.168.20.1 24
[R5]vrrp ping-enable
[R5]int e 0.1
[R5-Ethernet0.1]vrrp vrid 10 virtual-ip 192.168.10.254 #为vlan10创建虚拟ip地址
[R5-Ethernet0.1]vrrp vrid 10 priority 120 #在e 0.1子接口上设置vlan10链路的优先级为120
[R5-Ethernet0.1]int e 0.2
[R5-Ethernet0.2]vrrp vrid 20 virtual-ip 192.168.20.254 #为vlan20创建虚拟ip地址
[R5-Ethernet0.2]vrrp vrid 20 priority 100 #在e 0.2子接口上设置vlan20链路的优先级为100
R10:
[R10]interface e0.1 #划分子接口
[R10-Ethernet0.1]vlan-type dot1q vid 10 #封装类型dot1q,添加vlan10标签
[R10-Ethernet0.1]ip add 192.168.10.2 24
[R10-Ethernet0.1]interface e0.2
[R10-Ethernet0.2]vlan-type dot1q vid 20 #封装类型dot1q,添加vlan20标签
[R10-Ethernet0.2]ip add 192.168.20.2 24
[R10]vrrp ping-enable
[R10]interface e0.1
[R10-Ethernet0.1]vrrp vrid 10 virtual-ip 192.168.10.254 #为vlan10创建虚拟ip地址
[R10-Ethernet0.1]vrrp vrid 10 priority 100 #在e 0.1子接口上设置vlan10链路的优先级为100
[R10-Ethernet0.1]interface e0.2
[R10-Ethernet0.2]vrrp vrid 20 virtual-ip 192.168.20.254 #为vlan20创建虚拟ip地址
[R10-Ethernet0.2]vrrp vrid 20 priority 120 #在e 0.2子接口上设置vlan20链路的优先级为120
SW-8:
[SW8]int e 0/24
[SW8-Ethernet0/24]port link-type trunk #将e 0/24端口设置为trunk
[SW8-Ethernet0/24]port trunk permit vlan all #该端口允许所有vlan通过
[SW8]int Ethernet 0/2
[SW8-Ethernet0/2]port link-type trunk #设置e0/2端口设置为trunk
[SW8-Ethernet0/2]port trunk permit vlan all #该端口允许所有vlan通过
[SW8]vlan 10
[SW8-vlan10]port Ethernet 0/5 to Ethernet 0/10 #将该范围端口划分到vlan10
[SW8]vlan 20
[SW8-vlan20]port Ethernet 0/11 to Ethernet 0/15 #将该范围端口划分到vlan20
SW-9:
[SW9]interface Ethernet 0/24
[SW9-Ethernet0/24]port link-type trunk #将e0/24设置为 trunk
[SW9-Ethernet0/24]port trunk permit vlan all #该端口允许所有vlan通过
[SW9]interface Ethernet 0/2
[SW9-Ethernet0/2]port link-type trunk #设置e0/2端口设置为trunk
[SW9-Ethernet0/3]port trunk permit vlan all #该端口允许所有vlan通过
[SW9]vlan 10
[SW9-vlan10]port Ethernet 0/5 to Ethernet 0/10 #将该范围端口划分到vlan10
[SW9-vlan10]vlan 20
[SW9-vlan20]port Ethernet 0/11 to Ethernet 0/15 #将该范围端口划分到vlan20
测试:
1:查看R5和R10路由器的master和backup状态:互为备份:
2:测试网络连通性,并跟踪数据走向:
左侧vlan10 ping 右侧vlan20:
右侧vlan20 ping 左侧 vlan10:
3:当断掉R5和SW-8之间的链路时,观察网络的连同性,然后跟踪数据走向:
左侧vlan10 ping 右侧vlan20:
右侧vlan20 ping 左侧 vlan10:
4:断掉R5链路后,R10的全部是master状态:
案例二:HSRP冗余备份及负载均衡:HSRP与vrrp相似(cisco设备)
拓扑方案:
配置:
R1:
R1(config)#interface ethernet 0/0
R1(config-if)#no shut #开启e0/0接口
R1(config-if)#full-duplex #配置全双工
R1(config)#interface ethernet 0/0.1
R1(config-subif)#encapsulation dot1Q 10 #子接口封装dot1q ,添加vlan10标签
R1(config-subif)#ip add 192.168.10.1 255.255.255.0
R1(config-subif)#no shut
R1(config-subif)#standby 10 ip 192.168.10.254 #配置vlan10的虚拟地址
R1(config-subif)#standby 10 preempt #配置抢先模式
R1(config-subif)#standby 10 priority 120
R1(config)#interface ethernet 0/0.2
R1(config-subif)#encapsulation dot1Q 20 #子接口封装dot1q ,添加vlan20标签
R1(config-subif)#ip add 192.168.20.1 255.255.255.0
R1(config-subif)#no shut
R1(config-subif)#standby 20 ip 192.168.20.254 #配置vlan20的虚拟地址
R1(config-subif)#standby 20 preempt
R2:
R2(config)#interface ethernet 0/0
R2(config-if)#no shut
R2(config-if)#full-duplex
R2(config)#interface ethernet 0/0.1
R2(config-subif)#encapsulation dot1Q 10
R2(config-subif)#ip add 192.168.10.2 255.255.255.0
R2(config-subif)#no shut
R2(config-subif)#standby 10 ip 192.168.10.254
R2(config-subif)#standby 10 preempt
R2(config)#interface ethernet 0/0.2
R2(config-subif)#encapsulation dot1Q 20
R2(config-subif)#ip add 192.168.20.2 255.255.255.0
R2(config-subif)#no shut
R2(config-subif)#standby 20 ip 192.168.20.254
R2(config-subif)#standby 20 preempt
R2(config-subif)#standby 20 priority 120
SW-1:
SW-1(config)#no ip routing #在路由器上关闭路由功能
SW-1(config)#interface fastEthernet 0/0
SW-1(config-if)#switchport mode trunk #将f0/0设置为trunk链路
SW-1(config)#interface fastEthernet 0/1
SW-1(config-if)#switchport mode trunk #将f0/1设置为trunk链路
SW-1(config)#interface fastEthernet 0/2
SW-1(config-if)#switchport mode trunk #将f0/2设置为trunk链路
SW-1(config)#interface fastEthernet 0/3
SW-1(config-if)#switchport mode trunk #将f0/3设置为trunk链路
SW-1(config)#interface fastEthernet 0/4
SW-1(config-if)#switchport mode trunk #将f0/4设置为trunk链路
SW-1(config)#interface range fa0/2 -3
SW-1(config-if-range)#channel-group 1 mode on #将f0/2和f0/3设置为聚合端口,组号为1
SW-1# vlan database
SW-1(vlan)#vlan 10 #创建vlan10 和vlan20
SW-1(vlan)#vlan 20
SW-1(config)#spanning-tree vlan 10 root primary #将SW-1设置为vlan10的根交换机
SW-2:
SW-2(config)#no ip routing #在路由器上关闭路由功能
SW-2(config)#interface fastEthernet 0/0
SW-2(config-if)#switchport mode trunk
SW-2(config)#interface fastEthernet 0/1
SW-2(config-if)#switchport mode trunk
SW-2(config)#interface fastEthernet 0/2
SW-2(config-if)#switchport mode trunk
SW-2(config)#interface fastEthernet 0/3
SW-2(config-if)#switchport mode trunk
SW-2(config)#interface fastEthernet 0/4
SW-2(config-if)#switchport mode trunk
SW-2(config)#interface range fastEthernet 0/2 - 3
SW-2(config-if-range)#channel-group 1 mode on #将f0/2和f0/3设置为聚合端口,组号为1
SW-2#vlan database
SW-2(vlan)#vlan 20
SW-2(vlan)#vlan 10
SW-2(config)#spanning-tree vlan 20 root primary #将SW-2设置为vlan20的根交换机
SW-3:
SW-3#vlan database
SW-3(vlan)#vlan 10 #创建vlan10和vlan20
SW-3(vlan)#vlan 20
SW-3(config)#interface range f0/2 -5
SW-3(config-if-range)#switchport access vlan 10 #将f0/2-5加入vlan10中
SW-3(config)#interface range f0/6 -10
SW-3(config-if-range)#switchport access vlan 20 #将f0/6-10加入vlan20中
SW-3(config)#interface f0/0
SW-3(config-if)#switchport mode trunk #将f0/0设置为trunk链路
SW-3(config)#interface f0/1
SW-3(config-if)#switchport mode trunk #将f0/1设置为trunk链路
SW-4:
SW-4#vlan database
SW-4(vlan)#vlan 10 #创建vlan10和vlan20
SW-4(vlan)#vlan 20
SW-4(config)#interface range f0/2 –5
SW-4(config-if-range)#switchport access vlan 10 #将f0/2-5加入vlan10中
SW-4(config)#interface range f0/6 - 10
SW-4(config-if-range)#switchport access vlan 20 #将f0/6-10加入vlan20中
SW-4(config)#interface f0/0
SW-4(config-if)#switchport mode trunk #将f0/0设置为trunk链路
SW-4(config)#interface f0/1
SW-4(config-if)#switchport mode trunk #将f0/1设置为trunk链路
PC-1:
PC-1(config)#interface ethernet 0/0
PC-1(config-if)#ip add 192.168.10.5 255.255.255.0 #将pc-1配置为vlan10中的主机
PC-1(config-if)#no shut
PC-1(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.254 #为pc-1配置默认路由,也即网关
PC-2:
PC-2(config)#interface e0/0
PC-2(config-if)#ip add 192.168.20.5 255.255.255.0 #将pc-2配置为vlan20中的主机
PC-2(config-if)#no shut
PC-2(config-if)#exit
PC-2(config)#ip route 0.0.0.0 0.0.0.0 192.168.20.254 #为pc-2配置默认路由,也即网关
测试:
左边vlan10主机 ping 右边vlan20 ,测试网络连通性,并跟踪数据走向:
右边vlan 20主机 ping 左边vlan 20,测试网络连通性,并跟踪数据走向:
在sw-1上面断掉f0/0之后查看网络通信状况:
在SW-1上面回复f0/0后,查看:
查看路由器的master和backup状态:
案例三:利用H3C设备,配置vrrp协议实现两台路由器的负载均衡,并配置vrrp跟踪端口监控上网接口。并且使用网络地址转换实现内网主机上网:
拓扑方案:
配置:
R2:
[R2]interface s0
[R2-Serial0]ip add 192.168.1.1 255.255.255.0
[R2]interface e0.10
[R2-Ethernet0.10]vlan-type dot1q vid 10 #封装dot1q,为vlan10添加标签
[R2-Ethernet0.10]ip add 192.168.10.1 255.255.255.0
[R2-Ethernet0.10]interface e0.20
[R2-Ethernet0.20]vlan-type dot1q vid 20 #封装dot1q,为vlan20添加标签
[R2-Ethernet0.20]ip add 192.168.20.1 255.255.255.0
[R2]ip route-static 0.0.0.0 0.0.0.0 192.168.1.2 #默认路由实现对外网也即R14的访问
[R2]acl 2000 #定义标准访问控制列表
[R2-acl-2000]rule permit source any #定义规则:允许所有源地址通过
[R2]interface s0
[R2-Serial0]nat out 2000 interface #将acl2000运用在出口方向
[R2]vrrp ping-enable #开启vrrp的ping命令用于测试网络连通性
[R2]interface e0.10
[R2-Ethernet0.10]vrrp vrid 10 virtual-ip 192.168.10.254 #配置vlan10的虚拟地址
[R2-Ethernet0.10]vrrp vrid 10 preempt #配置该子接口下vlan10为抢占模式
[R2-Ethernet0.10]vrrp vrid 10 priority 120 #配置该子接口下vlan10的优先级为120
[R2-Ethernet0.10]vrrp vrid 10 track s0 reduced 30 #跟踪s0口,如果down掉,优先级减少30
[R2-Ethernet0.10]interface e0.20
[R2-Ethernet0.20]vrrp vrid 20 virtual 192.168.20.254 #配置vlan20的虚拟地址
[R2-Ethernet0.20]vrrp vrid 20 preempt #配置vlan20为抢占模式
[R2-Ethernet0.20]vrrp vrid 20 priority 100 #配置该子接口下vlan20的优先级为120
R11:
[R11]interface s1
[R11-Serial1]ip add 192.168.2.1 255.255.255.0
[R11-Serial1]interface e0.10
[R11-Ethernet0.10]vlan-type dot1q vid 10
[R11-Ethernet0.10]ip add 192.168.10.2 255.255.255.0
[R11-Ethernet0.10]interface e0.20
[R11-Ethernet0.20]vlan-type dot1q vid 20
[R11-Ethernet0.20]ip add 192.168.20.2 255.255.255.0
[R11]ip route-static 0.0.0.0 0.0.0.0 192.168.2.2 #配置默认路由,实现对外网也即对R14的访问
[R11]acl 2000 #定义标准访问控制列表
[R11-acl-2000]rule permit source any #定义规则:允许所有源地址通过
[R11]interface s1
[R11-Serial1]nat out 2000 interface #将acl2000运用到出口方向
[R11]vrrp ping-enable #开启vrrp的ping命令
[R11]interface e0.10
[R11-Ethernet0.10]vrrp vrid 10 virtual-ip 192.168.10.254
[R11-Ethernet0.10]vrrp vrid 10 preempt
[R11-Ethernet0.10]vrrp vrid 10 priority 100
[R11]interface e0.20
[R11-Ethernet0.20]vrrp vrid 20 virtual-ip 192.168.20.254
[R11-Ethernet0.20]vrrp vrid 20 preempt
[R11-Ethernet0.20]vrrp vrid 20 priority 120
[R11-Ethernet0.20]vrrp vrid 20 track s1 reduced 30 #如果s1down掉,则优先级减少30
SW-9:
[SW-9]interface Ethernet 0/1
[SW-9-Ethernet0/1]port link-type trunk #将e0/1配置为trunk链路
[SW-9-Ethernet0/1]port trunk permit vlan all #该trunk链路允许所有vlan通过
[SW-9]interface Ethernet 0/2
[SW-9-Ethernet0/2]port link-type trunk #将e0/2配置为trunk链路
[SW-9-Ethernet0/2]port trunk permit vlan all #该trunk链路允许所有vlan通过
[SW-9]vlan 10
[SW-9-vlan10]port Ethernet 0/3 to Ethernet 0/10 #将这些接口划分到vlan10中
[SW-9-vlan10]vlan 20
[SW-9-vlan20]port Ethernet 0/11 to Ethernet 0/15 #将这些接口划分到vlan20中
SW-12:
[SW-12]interface Ethernet 0/1
[SW-12-Ethernet0/1]port link-type trunk
[SW-12-Ethernet0/1]port trunk permit vlan all
[SW-12]interface Ethernet 0/2
[SW-12-Ethernet0/2]port link-type trunk
[SW-12-Ethernet0/2]port trunk permit vlan all
[SW-12]vlan 10
[SW-12-vlan10]port Ethernet 0/3 to Ethernet 0/10
[SW-12-vlan10]vlan 20
[SW-12-vlan20]port Ethernet 0/11 to Ethernet 0/15
R14:
[R14]interface s0
[R14-Serial0]ip add 192.168.1.2 255.255.255.0
[R14-Serial0]shut #重启该接口
[R14-Serial0]undo shut
[R14-Serial0]interface s1
[R14-Serial1]ip add 192.168.2.2 255.255.255.0
[R14-Serial1]shut #重启该接口
[R14-Serial1]undo shut
[R14-Serial1]interface e0
[R14-Ethernet0]ip add 172.168.1.1 255.255.255.0
[R14-Ethernet0]loopback #将e0接口配置为回环接口,用于测试
测试:
1:左边vlan10 ping 右边vlan 20 ,测试网络的连通性,并跟踪数据走向:
断开R2 上的s0口后:
当接通R2上的s0后:
2:右边vlan 20 ping 左边vlan 10 , 测试网络连通性,并跟踪数据走向:
当断开R11上s1口后:
当接通R11上的s1口后: