网关冗余和负载平衡 

一.简介

    为了减少交换机故障的影响,交换机上有STP 技术。 然而作为网关的路由器故障了,又有什么办法?HSRP 和VRRP 是最常用的网关冗余技术,HSRP 和VRRP 类似,由多个路由器共同组成一个组,虚拟出一个网关,其中的一台路由器处于活动状态,当它故障时由备份路由器接替它的工作,从而实现对用户透明的切换。然而我们希望在冗余的同时,能同时实现负载平衡,以充分利用设备的能力,GLBP 同时提供了冗余和负载平衡的能力。

二.几种常用的协议:

2.1 HSRP

    HSRP 是Cisco 的专有协议。HSRP(Hot Standby Router Protocol)把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内只有一个路由器是活动的(Active),并由它来转发数据包,如果活动路由器发生了故障,备份路由器将成为活动路由器。从网络内的主机来看,网关并没有改变。HSRP 路由器利用HELLO 包来互相监听各自的存在。当路由器长时间没有接收到HELLO包,就认为活动路由器故障,备份路由器就会成为活动路由器。HSRP 协议利用优先级决定哪个路由器成为活动路由器。如果一个路由器的优先级比其它路由器的优先级高,则该路由器成为活动路由器。路由器的缺省优先级是100。 一个组中,最多有一个活动路由器和一个备份路由器。

    HSRP 路由器发送的多播消息有以下三种:

(1) HELLO: HELLO 消息通知其它路由器发送路由器的HSRP 优先级和状态信息,HSRP 路由器默认为每3 秒钟发送一个HELLO 消息;

(2) Coup:当一个备用路由器变为一个活动路由器时发送一个coup 消息;

(3) Resign:当活动路由器要宕机或者当有优先级更高的路由器发送HELLO 消息时,主动发送一个resign 消息。

   HSRP 路由器有以下六种状态:

(1)Initial:HSRP 启动时的状态,HSRP 还没有运行,一般是在改变配置或接口刚刚启动时进入该状态;

(2) Learn:路由器已经得到了虚拟IP 地址,但是它既不是活动路由器也不是备份路由器。它一直监听从活动路由器和备份路由器发来的HELLO 报文;

(3)Listen:路由器正在监听HELLO 消息;

(4)Speak:在该状态下,路由器定期发送HELLO 报文,并且积极参加活动路由器或备份路由器的竞选;

(5) Standby:当活动路由器失效时路由器准备接管数据传输功能

  

2.2 VRRP协议

    2.21  VRRP备份组简介         

VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成,功能上相当于一台虚拟路由器。

VRRP备份组具有以下特点:

l  虚拟路由器具有IP地址,称为虚拟IP地址。局域网内的主机仅需要知道这个虚拟路由器的IP地址,并将其设置为缺省路由的下一跳地址。

2  网络内的主机通过这个虚拟路由器与外部网络进行通信。

3   备份组内的路由器根据优先级,选举出Master路由器,承担网关功能。其他路由器作为Backup路由器,当Master路由器发生故障时,取代Master继续履行网关职责,从而保证网络内的主机不间断地与外部网络进行通信。

     VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成,功能上相当于一台虚拟路由器。

VRRP备份组具有以下特点:

l  虚拟路由器具有IP地址,称为虚拟IP地址。局域网内的主机仅需要知道这个虚拟路由器的IP地址,并将其设置为缺省路由的下一跳地址。

2  网络内的主机通过这个虚拟路由器与外部网络进行通信。

3  备份组内的路由器根据优先级,选举出Master路由器,承担网关功能。其他路由器作为Backup路由器,当Master路由器发生故障时,取代Master继续履行网关职责,从而保证网络内的主机不间断地与外部网络进行通信。

     图1-2 VRRP组网示意图

 

     如图所示:Router A、Router B和Router C组成一个虚拟路由器。此虚拟路由器有自己的IP地址。局域网内的主机将虚拟路由器设置为缺省网关。Router A、Router B和Router C中优先级最高的路由器作为Master路由器,承担网关的功能。其余两台路由器作为Backup路由器。

1. 备份组中路由器的优先级

VRRP根据优先级来确定备份组中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。

VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给特殊用途来使用,255则是系统保留给IP地址拥有者。当路由器为IP地址拥有者时,其优先级始终为255。因此,当备份组内存在IP地址拥有者时,只要其工作正常,则为Master路由器。

 

2. 备份组中路由器的工作方式

备份组中的路由器具有以下两种工作方式:

l  非抢占方式:如果备份组中的路由器工作在非抢占方式下,则只要Master路由器没有出现故障,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

 2   抢占方式:如果备份组中的路由器工作在抢占方式下,它一旦发现自己的优先级比当前的Master路由器的优先级高,就会对外发送VRRP通告报文。导致备份组内路由器重新选举Master路由器,并最终取代原有的Master路由器。相应地,原来的Master路由器将会变成Backup路由器。

 

3. 备份组中路由器的认证方式

为了防止非法用户构造报文***备份组,VRRP通过在VRRP报文中增加认证字的方式,验证接收到的VRRP报文。VRRP提供了两种认证方式:

  simple:简单字符认证。发送VRRP报文的路由器将认证字填入到VRRP报文中,而收到VRRP报文的路由器会将收到的VRRP报文中的认证字和本地配置的认证字进行比较。如果认证字相同,则认为接收到的报文是真实、合法的VRRP报文;否则认为接收到的报文是一个非法报文。

   md5:MD5认证。发送VRRP报文的路由器利用认证字和MD5算法对VRRP报文进行摘要运算,运算结果保存在Authentication Header(认证头)中。收到VRRP报文的路由器会利用认证字和MD5算法进行同样的运算,并将运算结果与认证头的内容进行比较。如果相同,则认为接收到的报文是真实、合法的VRRP报文;否则认为接收到的报文是一个非法报文。

在一个安全的网络中,用户也可以不设置认证方式。

 

2.2.2  VRRP工作过程

    VRRP的工作过程如下:

(1) 备份组中的路由器根据优先级和IP地址确定自己在备份组中的角色。优先级高的路由器成为Master路由器;优先级低的成为Backup路由器;如果优先级相同,则IP地址大的成为Master路由器。Master路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;Backup路由器则启动定时器等待通告报文的到来。

(2)  在抢占方式下,当Backup路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master路由器;否则将保持Backup状态。抢占方式可以确保承担转发任务的Master路由器始终是备份组中优先级最高的路由器。

(3) 在非抢占方式下,只要Master路由器没有出现故障,备份组中的路由器始终保持Master或Backup状态,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。非抢占方式可以避免频繁地切换Master路由器。

(4) 如果Backup路由器的定时器超时后仍未收到Master路由器发送来的VRRP通告报文,则认为Master路由器已经无法正常工作,此时Backup路由器会认为自己是Master路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级和IP地址选举出Master路由器,承担报文的转发功能。

2.23 VRRP监视功能 

1. 监视指定接口功能

    VRRP的监视接口功能更好地扩充了备份功能:不仅能在备份组中某路由器的接口出现故障时提供备份功能,还能在路由器的其它接口(如连接上行链路的接口)不可用时提供备份功能。

    路由器连接上行链路的接口出现故障时,备份组无法感知上行链路接口的故障,如果该路由器此时处于Master状态,将会导致局域网内的主机无法访问外部网络。通过监视指定接口的功能,可以解决该问题。当连接上行链路的接口处于Down或Removed状态时,路由器主动降低自己的优先级,使得备份组内其它路由器的优先级高于这个路由器,以便优先级最高的路由器成为Master,承担转发任务。

 

2. 监视Track项功能

通过VRRP监视Track项功能,可以实现:

 

  根据上行链路的状态,改变路由器的优先级。当上行链路出现故障,局域网内的主机无法通过路由器访问外部网络时,被监视Track项的状态为Negative,并将路由器的优先级降低指定的数额。从而,使得备份组内其它路由器的优先级高于这个路由器的优先级,成为Master路由器,保证局域网内主机与外部网络的通信不会中断。

 

   在Backup路由器上监视Master路由器的状态。当Master路由器出现故障时,工作在切换模式的Backup路由器能够迅速成为Master路由器,以保证通信不会中断。 

 

2.2.4 VRRP 定时器

 

VRRP定定时器分为两种:VRRP通告报文间隔时间定时器和VRRP抢占延迟时间定时器。

 

1.VRRP通告报文时间间隔定时器

VRRP备份组中的Master路由器会定时发送VRRP通告报文,通知备份组内的路由器自己工作正常。

   用户可以通过设置VRRP定时器来调整Master路由器发送VRRP通告报文的时间间隔。如果Backup路由器在等待了3个间隔时间后,依然没有收到VRRP通告报文,则认为自己是Master路由器,并对外发送VRRP通告报文,重新进行Master路由器的选举。

2. VRRP抢占延迟时间定时器

为了避免备份组内的成员频繁进行主备状态转换,让Backup路由器有足够的时间搜集必要的信息(如路由信息),Backup路由器接收到优先级低于本地优先级的通告报文后,不会立即抢占成为Master,而是等待一定时间——抢占延迟时间后,才会对外发送VRRP通告报文取代原来的Master路由器

 

2.2.5 VRRP负载均衡模式

    在VRRP标准协议模式中,只有Master路由器可以转发报文,Backup路由器处于监听状态,无法转发报文。虽然创建多个备份组可以实现多个路由器之间的负载分担,但是局域网内的主机需要设置不同的网关,增加了配置的复杂性。

    VRRP负载均衡模式在VRRP提供的虚拟网关冗余备份功能基础上,增加了负载均衡功能。其实现原理为:将一个虚拟IP地址与多个虚拟MAC地址对应,VRRP备份组中的每个路由器都对应一个虚拟MAC地址;使用不同的虚拟MAC地址应答主机的ARP请求,从而使得不同主机的流量发送到不同的路由器,备份组中的每个路由器都能转发流量。在VRRP负载均衡模式中,只需创建一个备份组,就可以实现备份组中多个路由器之间的负载分担,避免了VRRP备份组中Backup路由器始终处于空闲状态、网络资源利用率不高的问题。

 

虚拟MAC地址的分配

     VRRP负载均衡模式中,Master路由器负责为备份组中的路由器分配虚拟MAC地址,并为来自不同主机的ARP/ND请求,应答不同的虚拟MAC地址,从而实现流量在多个路由器之间分担。备份组中的Backup路由器不会应答主机的ARP/ND请求。

VRRP负载均衡模式的具体工作过程为:

(1)  Master为备份组中的路由器(包括Master自身)分配虚拟MAC地址。如图所示,虚拟IP地址为10.1.1.1/24的备份组中,Router A作为Master,Router B作为Backup。Router A为自己分配的虚拟MAC地址为000f-e2ff-0011,为Router B分配的虚拟MAC地址为000f-e2ff-0012。

图为Master分配虚拟MAC地址

(2)Master接收到主机发送的目标IP地址为虚拟IP地址的ARP请求后,根据负载均衡算法使用不同的虚拟MAC地址应答主机的ARP请求。如图1-7所示,Host A发送ARP请求获取网关10.1.1.1对应的MAC地址时,Master(即Router A)使用Router A的虚拟MAC地址应答该请求;Host B发送ARP请求获取网关10.1.1.1对应的MAC地址时,Master使用Router B的虚拟MAC地址应答该请求。

1-7 Master应答ARP请求

(3) 通过使用不同的虚拟MAC地址应答主机的ARP请求,可以实现不同主机的流量发送给不同的路由器。如图所示,Host A认为网关的MAC地址为Router A的虚拟MAC地址,从而保证Host A的流量通过Router A转发;Host B认为网关的MAC地址为Router B的虚拟MAC地址,从而保证Host B的流量通过Router B转发。

1-8 主机通过不同路由器转发流量

2.3 GLBP

       HSRP和VRRP能实现网关的冗余,然而如果要实现负载平衡,需要创建多个组,并让客户端指向不同的网关。GLBP(Gateway Load Balance Protocol)也是Cisco的专有协议,不仅提供冗余网关功能,还在各网关之间提供负载均衡。GLBP也是由多个路由器组成一个组,虚拟一个网关出来。GLBP选举出一个AVG(Avtive Virtual Gateway),AVG不是负责转发数据的。

       AVG分配最多四个MAC地址给一个虚拟网关,并在计算机进行ARP请求时,用不同的MAC进行响应,这样计算机实际就把数据发送给不同的路由器了,从而实现负载平衡。在GLBP中,真正负责转发数据的是AVF(Avtive Virtual Forwarder),GLBP会控制GLBP组中哪个路由器是哪个MAC地址的活动路由器。

      AVG的选举和HRSP中活动路由器的选举非常类似,优先级最高的路由器成为AVG,次之的为Backup AVG,其余的为监听状态。一个GLBP组只能有一个AVG和一个Backup AVG,主的AVG失败,备份AVG顶上。一台路由器可以同是AVG和AVF。AVF是某些MAC的活动路由器,也就是说如果计算机把数据发往这个MAC,它将接收。当某一MAC的活动路由器故障,其它AVF将成为这一MAC的新的活动路由器,从而实现冗余功能。GLBP 的负载平衡策略可以是根据不同主机、简单的轮询或者根据路由器的权重平衡.

 

四.案例:

     利用虚拟冗余技术实现公司内部网络的负载均衡和网关冗余(要求通过单臂路由实现不同vlan之间的通信,并且用两台路由器来实现网卡冗余和负载,交换机之间通过端口聚合来实现负载均衡!!)

拓扑图如下:

(1)配置sw1:

1.端口聚合:

 

sw1(config)#interface range fastEthernet 0/4

sw1(config-if-range)#channel-group 1 mode on

 

2.创建vlan

 

sw1#vlan database

sw1(vlan)#vlan 10

 

sw1(vlan)#vlan 20

 

3.指定端口类型:(trunk or access)

 

sw1(config)#interface fastEthernet 0/2

sw1(config-if)#switchport mode trunk

 

 

sw1(config)#interface fastEthernet 0/4

sw1(config-if)#switchport mode trunk

 

sw1(config)#interface fastEthernet 0/5

sw1(config-if)#switchport mode trunk

 

sw1(config-if)#interface fastEthernet 0/3

sw1(config-if)#switchport access vlan 10

 

(2).配置sw2:

 

1.端口聚合:

 

sw2(config)#interface range fastEthernet 0/4

sw1(config-if-range)#channel-group 1 mode on

 

2.创建vlan

 

sw2#vlan database

sw2(vlan)#vlan 10

 

sw2(vlan)#vlan 20

 

3.指定端口类型:(trunk or access)

 

sw2(config)#interface fastEthernet 0/2

sw2(config-if)#switchport mode trunk

 

 

sw2(config)#interface fastEthernet 0/4

sw1(config-if)#switchport mode trunk

 

sw1(config)#interface fastEthernet 0/5

sw1(config-if)#switchport mode trunk

 

sw2(config-if)#interface fastEthernet 0/3

sw2(config-if)#switchport access vlan 20

 

 (3)路由器 R-IN-2的配置:

 

1.逻辑子接口:

R-IN-2(config-subif)#interface ethernet 0/2.10

R-IN-2(config-subif)#encapsulation dot1Q 10

R-IN-2(config-subif)#ip address 192.168.1.100   255.255.255.0

 

 

R-IN-2(config-subif)#interface ethernet 0/2.20

R-IN-2(config-subif)#encapsulation dot1Q 20

R-IN-2(config-subif)#ip address 192.168.2.200   255.255.255.0

 

 

2.将逻辑子接口加入组,设置公共ip地址

R-IN-2(config-subif)#inte ethernet 0/2.10

R-IN-2(config-subif)#standby 10 ip 192.168.1.254

 

 

R-IN-2(config-subif)#inte ethernet 0/2.20

R-IN-2(config-subif)#standby 20 ip 192.168.2.254

 

3.配置接口优先级 作为主路由器,并添加抢占模式

 

R-IN-2(config-subif)#interface ethernet 0/2.20

R-IN-2(config-subif)#standby priority 130

R-IN-2(config-subif)#standby preempt

 

4.跟踪端口 降低优先级(当端口阻塞时)

R-IN-2(config-subif)#interface ethernet 0/2.20

R-IN-2(config-subif)#standby  track 20 decrement 30

 

R-IN-2(config-subif)#interface ethernet 0/2.10

R-IN-2(config-subif)#standby  track 10 decrement 30

 

 

(4)路由器 R-IN-1的配置:

 

1.逻辑子接口:

R-IN-1(config-subif)#interface ethernet 0/2.10

R-IN-1(config-subif)#encapsulation dot1Q 10

R-IN-1(config-subif)#ip address 192.168.1.10   255.255.255.0

 

 

R-IN-1(config-subif)#interface ethernet 0/2.20

R-IN-1(config-subif)#encapsulation dot1Q 20

R-IN-1(config-subif)#ip address 192.168.2.20   255.255.255.0

 

 

2.将逻辑子接口加入组,设置公共ip地址

R-IN-1(config-subif)#inte ethernet 0/2.10

R-IN-1(config-subif)#standby 10 ip 192.168.1.254

 

 

 

R-IN-1(config-subif)#inte ethernet 0/2.20

R-IN-1(config-subif)#standby 20 ip 192.168.2.254

 

3.配置接口优先级 作为主路由器,并添加抢占模式

 

R-IN-1(config-subif)#interface ethernet 0/2.10

R-IN-1(config-subif)#standby priority 130

R-IN-1(config-subif)#standby preempt

 

4.跟踪端口 降低优先级(当端口阻塞时)

R-IN-1(config-subif)#interface ethernet 0/2.10

R-IN-1(config-subif)#standby  track 10 decrement 30

 

R-IN-1(config-subif)#interface ethernet 0/2.20

R-IN-1(config-subif)#standby  track 20 decrement 30

 

测试结果:

R-PC-1#ping 192.168.2.254

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.254, timeout is 2 seconds

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms

 

R-PC-2#ping 192.168.1.254

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.254, timeout is 2 seconds

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms