多台路由器组成一个“热备份组”,用来模拟为一个虚拟的路由器(拥有虚拟的IP地址和虚拟的MAC地址),在一个备份组中,只有一台路由器作为活动路由器发送数据包,只有当活动路由器失效后,将选择一台备份路由器才能成为活动路由器转发数据包,但对于网络中的主机来说,虚拟路由器并没有发生任何改变。

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被动状态,当主动路由器失效时路由器准备接包传输功能。

6) Active活动状态,路由器执行包传输功能。


HSRP路由器体系

1)活动路由器,负责转发发送到虚拟路由器的数据。它通过发送HELLO消息(基于UDP,端口号为1985的广播)来通告它的活跃状态

2)备份路由器,监视HSRP组中的运行状态,并且在当前活跃路由器不可用时,迅速承担起负责数据转发的任务。备份路由器也发送HELLO消息来通告组中其他的路由器它备份路由器的角色。

3)虚拟路由器,向最终的用户来代表一台能持续工作的路由器设备。它有自己的MAC和IP地址。但是实际上它是不用来转发数据包,它的作用仅仅是代表一台可用的路由设备。

虚拟MAC地址组成:

Vendor ID:厂商ID,构成MAC地址的头3个字节

HSRP代码:表示该地址是HSRP虚拟路由器的。XX07.acxx

组ID:最后一个字节是组ID,由组号组成

如我们可以通过命令:show ip arp命令查看

      0000.0007.ac01

4)其他路由器,也监听HELLO消息,但是不作应答,这样它就不会在备份组有身份的概念,同时它也不参与发送到虚拟路由器的数据包,但是还是转发其他路由器发来的数据包。

选举过程

a)当活动路由器失效后,备份路由器替代成为活动路由器,当活动和备份路由器都失效后,其他路由器将参与活动和备份路由器的选举工作

b)优先级高的成为活动路由器,默认为100,取值为0~255

c)优先级别相同时,接口IP地址高的将成为活动路由器


HSRP的抢占Preempt技术

HRSP技术能够保证优先级高的路由器失效恢复后总能处于活动状态。活动路由器失效后,优先级最高的备用路由器处于活动状态,如果没有使用preempt技术,则当活动路由器恢复后,只能处于备用状态,先前的备用服务器代替其角色处于活动状态,直到下一次选举发生。

HSRP的端口跟踪track技术

如果所监测的端口出现故障,则也可以进行路由器的切换。如果主路由器上有多条线路被跟踪,则当一条线路出现故障时,就会切换到备份路由器上,即使其他都线路正常工作,直到主路由器该线路正常工作,才能重新切换回来。接口跟踪使得能够根据HSRP组路由器的接口是否可用,来自动调整该路由器的优先级。当被跟踪的接口不可用时,路由器的HSRP优先级将降低。HSRP跟踪特性确保当HSRP活跃路由器的重要入站接口不可用时,该路由器不再是活跃路由器。


HSRP+SLA实验

005359908.png

当跟踪的对象失效后,默认5秒重发一次,尝试3次,3次都失败,开始切换。

R2配置:

track 10 ip sla 10 reachability

ip sla 10

tcp-connect 4.4.4.4 23 source-ip 123.1.1.2

ip sla schedule 10 life forever start-time now



interface FastEthernet0/0

ip address 123.1.1.2 255.255.255.0

duplex auto

speed auto

standby 1 ip 123.1.1.254

standby 1 priority 150

standby 1 preempt

standby 1 track 10 decrement 50


R3配置:

track 20 ip sla 20 reachability

ip sla 20

tcp-connect 4.4.4.4 23 source-ip 123.1.1.3

ip sla schedule 20 life forever start-time now


interface FastEthernet0/0

ip address 123.1.1.3 255.255.255.0

duplex auto

speed auto

standby 1 ip 123.1.1.254

standby 1 priority 110

standby 1 preempt

standby 1 track 20 decrement 80


R4配置:

ip sla responder


VRRP

与HSRP相同,VRRP也是一种默认网关冗余方法,它让一组路由器构成一台虚拟路由器。HSRP是cisco私有的,只适用于cisco设备。VRRP是符合internet标准(RFC2338)。

在VRRP协议中,有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。该虚拟路由器对外表现为一个具有唯一固定IP地址和MAC地址的逻辑路由器。处于同一个VRRP组中的路由器具有两种互斥的角色:主控路由器和备份路由器,一个VRRP组中有且只有一台处于主控角色的路由器,可以有一个或者多个处于备份角色的路由器。VRRP协议使用选择策略从路由器组中选出一台作为主控,负责ARP响应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。当由于某种原因主控路由器发生故障时,备份路由器能在几秒钟的时延后升级为主路由器。由于此切换非常迅速而且不用改变IP地址和MAC地址,故对终端使用者系统是透明的。


如上图,路由器A,路由器B,路由器C都是VRRP路由器组成了一台虚拟路由器,这个虚拟路由器的IP地址为路由器A的IP地址为10.0.0.1,网络中其它的主机的默认网关都为虚拟路由器的IP地址。

由于虚拟路由器使用路由器A的物理以太网接口的IP地址,因此路由器A担当了主虚拟路由器的角色,被称为IP地址拥有者(owner)。作为主虚拟路由器,路由器A控制虚拟路由器的IP地址,并负责对发送到该IP地址的数据包进行转发。路由器B和路由器C为备用虚拟路由器。如果主虚拟路由器A发生故障,路由器B和路由器C作为备用虚拟路由器优先级高的将替代为主虚拟路由器。当路由器A恢复正常后,将再次成为主虚拟路由器。


工作原理

一个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。默认为100。若VRRP路由器的IP地址和虚拟路由器的接口IP地址相同,则称该虚拟路由器作VRRP组中的IP地址所有者;IP地址所有者自动具有最高优先级:255。优先级0一般 IP地址所有者主动放弃主控者角色时使用。可配置的优先级范围为1-254。优先级的配置原则可以依据链路的速度和成本路由器性能和可靠性以及其它管理策略设定。主控路由器的选举中,高优先级的虚拟路由器获胜,因此,如果在VRRP组中有IP地址所有者,则它总是作为主控路由的角色出现。对于相同优先级的候选路由器,按照IP地址大小顺序选举。VRRP还提供了优先级抢占策略,如果配置了该策略,高优先级的备份路由器便会剥夺当前低优先级的主控路由器而成为新的主控路由器。

VRRP有两个时间:通告间隔和主路由器失效(master-down)间隔。通告间隔是通告之间的间隔时间(秒),默认为1秒。主路由器失效间隔指的是多长时间没有收到通告后,备用路由器将认为主路由器已失效,单位为秒。主路由器失效间隔是不能配置的,其值至少是为通告间隔的3倍。


VRRP状态

组成虚拟路由器的路由器会有三种状态 分别是Initialize Master和Backup

1)Initialize

系统启动后进入此状态,当收到接口startup的消息,将转入Backup(优先级不为255时)或Master状态(优先级为255时)。在此状态时,路由器不会对VRRP报文做任何处理。

2)Master

当路由器处于Master状态时 它将会做下列工作

*定期发送VRRP组播报文

*发送免费(gratuitous)ARP报文,以使网络内各主机知道虚拟IP地址所对应的虚拟MAC地址

*响应对虚拟IP地址的ARP请求,并且响应的是虚拟MAC地址,而不是接口的真实MAC地址

*转发目的MAC地址为虚拟MAC地址的IP报文

*如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文,否则,丢弃这个IP报文。需要注意的是,由于有这一点要求,所以除非主路由器是IP地址拥有者,否则主机ping虚拟IP地址不能ping通。

在Master状态中只有接收到比自己的优先级大的VRRP报文时,才会转为Backup。只有当接收到接口的Shutdown事件时才会转为Initialize

3)Backup

当路由器处于Backup状态时 它将会做下列工作:

*接收Master发送的VRRP组播报文 从中了解Master的状态

*对虚拟IP地址的ARP请求 不做响应

*丢弃目的MAC地址为虚拟MAC地址的IP报文

*丢弃目的IP地址为虚拟IP地址的IP报文

只有当Backup接收到MASTER_DOWN这个定时器到时的事件时,才会转为Master而当接收到比自己的优先级小的VRRP报文时,它只是做丢弃这个报文的处理,从而就不对定时器做重置处理。这样定时器就会在若干次这样的处理之后到时,于是就转为Master。只有当接收到接口的Shutdown事件时才会转为Initialize

HSRP和VRRP的区别

                 HSRP                                         VRRP

-------------------------------------------------------------------------------------------------

通告类型: Hello、Coup、Resign3种                         VRRP广播报文通告

状态: Init,listen,learn,speak,standby,active6               Init,master,backup3种

虚拟IP地址:不能为接口的实际IP地址可以使用路由器的接口地址

虚拟MAC地址: 0000.0007.acxx                                                      0000.5e00.01xx

认证:明文(12.3IOS支持md5) 明文,无认证,md5

报文承载: UDP1985 224.0.0.1                                                          TCP

路由器特征:一组中只能有一个活动路由器一组中必须有一个主路由器

和一个备份路由器有一个或多个备份路由器


VRRP+SLA配置和HSRP+SLA 配置相同.


GLBP

为了提供虚拟路由器,将多台交换机分配到一个GLBP中,组中所有设备都能够参与到负载均衡。

而不是只让活动留有起代表虚拟路由器地址转发数据流。

这种做法的优点是,客户端无需指向特定的网关地址,所有客户端的默认网关都相同,为虚拟

路由器的IP地址。通过使用返回给客户端的ARP应答中虚拟路由器MAC地址,来实现负载均衡。

客户端发送查询虚拟路由器地址的ARP请求时,GLBP返回一个ARP应答,其中包含从组中选择

路由器的虚拟MAC地址。这样,所有客户端都使用相同的网关地址,但提供给他们的MAC地址不同。

活动虚拟网关 AVG

1这种负载均衡背后的秘密是GLBP组。其中一台路由器被选做AVG,该路由器要么优先级最高,

要么IP地址最高。AVG应答所有有关虚拟路由器地址的ARP请求。它返回哪个MAC地址取决于

配置的负载均衡算法。

2 AVG还给GLBP组的每台路由器分配必要的虚拟MAC,每个组最多可使用4个虚拟MAC地址。其中

每台路由器都被称为AVF,负责转发在其虚拟MAC地址上收到的数据流。组中的其他路由器都

是备用或辅助虚拟转发器,以防AVG出现故障。

  sw(config-if)#glbp group  priority level


3和HSRP一样,除非当前活动路由器出现故障,否则其他路由器不能接管活动角色。GLBP允许

路由器抢占成为AVG,如果该路由器的优先级比当前的AVG更高。可以配置抢夺。

  sw(config-if)#glbp grouppreempt [delay minimum seconds]

4、参与GLBP的路由器必须彼此监控,以便一台路由器出现故障时,其他路由器能承担其职责。

为此AVG定期向其他所有GLBP路由器发送hello消息,并期望从它们哪里收到hello消息。

默认3秒,如果在保持时间10s 内抑制没有收到hello消息,将认为对等体出现了故障。

  sw(config-if)# glbp grouptimers [msec] hellotime [msec] holdtime


活动虚拟转发器(AVF)

1、默认情况下,GLBP也使用定期的HELLO消息来检测AVF故障,GLBP组中的每台路由器都必须向

其他所有GLBP对等体发送hello消息,并期望收到来自其他所有对等体的hello消息。如果在

保持时间定时器过期前,没有收到来自AVF的HELLO消息,AVG将认为AVF出现了故障,从而将

  AVF角色分配给另一台路由器。

显然,被授予新AVF角色的路由器可能已经是另一个虚拟MAC地址的AVF,虽然路由器可以伪装

成提供两个不同的虚拟MAC地址,以承担2个AVF的角色,但长时间这样做是没有意义的。AVG

维护了两个定时器,用于帮助解决这种问题。

重定向定时器用于决定AVG何时停止在ARP应答中使用旧的MAC地址。该地址对应的AVF将继续

充当使用这个地址的客户的网关。默认10分钟

   sw(config-if)#glbp grouptimers redirect redirect timeout


超时定时器过期后,所有GLBP将删掉旧的MAC地址以及使用它的虚拟转发器。AVG假定AVF不会恢复。

默认4个小时。

 GLBP还可以使用加权函数来决定哪台路由器成为组中虚拟MAC地址的AVF,每台路由器开始都有一个最大

权值(1-254),接口失效时,将权值降低一个配置的值。GLBP使用阀值来确定路由器能否成为AVF。如果

权值降到小于下限阀值,路由器必须放弃AVF角色,如果权值超过上限阀值可以继续承担AVF角色。

在缺省的情况下,路由器设置的最大权值为100,如果要动态改变权值,GLBP必须要知道所跟踪的接口

并且知道如何调整权值,首先必须定义跟踪的接口,可以使用下面的全局配置命令

 SW(config)#track object-number interface type mod/num {line-protocol | ip routing}

 object-number是一个任意的索引值1-500,这个值用作权值的调节,触发调整的条件可以是线协议也可以是路由协议。

还必须定义接口权值门槛:

 SW(config)#glbp group weighing maximum[lower lower] [upper upper]

最大权值的范围从1-254缺省值为100较高门槛值缺省值为MAXIMUM,较小门槛值缺省值为1,各自定义为可以或者不能成为AVF的门槛。

还必须配置GLBP知道跟踪了哪个接口,以便权值可以使用下面接口配置命令来改变权值:

 SW(config)#glbp group weighting trackobject-number [decrement value]

当所跟踪的接口失效的时候,权值减少了VALUE从1-254缺省值是10,在AVF的路由器有更高权值的时候,它也不能剥夺另一台路由器

在AVF路由器上,用下面的接口命令来定义负载均衡的方式:

SW(config)#glbp groupload-balancing [round-robin | weighted | host-dependent]


要启动GLBP,必须给该组分配一个虚拟IP地址,可以通过以下的接口配置命令来实现:

  sw(config-if)#glbp group ip [ip-address [secondary] ]

默认时 GLBP 的负载平衡策略是轮询方式,可以在接口下使用“

   sw(config-if)#glbp 1load-balancing weighted

命令修改,有以下选项:

z host-dependent:根据不同主机的源 MAC 地址进行平衡

z round-robin:轮询方式,即每响应一次 ARP 请求,轮换一个地址

z weighted:根据路由器的权重分配,权重高的被分配的可能性越大。

R1(config-if)# glbp 1 ip 192.168.1.254

R1(config-if)# glbp 1priority 200

R1(config-if)# glbp 1preempt delay minimum1           设置抢占的最小延迟1S

R1(config-if)# glbp 1weighting 200 lower 120 up 200    设置GLBP加权最大值200,门槛值最小120,最大200

当GLBP组成员加权值小于最小门槛值时,放弃AVF(活动转发器)角色


R1(config-if)# glbp 1weighting track 1 decrement 100

R1(config-if)# glbp 1forwarder preempt delay minimum 2  转发最小延迟2S

R2(config-if)# glbp 1 ip 192.168.1.254

R2(config-if)# glbp 1priority 150

R2(config-if)# glbp 1preempt delay minimum1            设置抢占的最小延迟1S

R2(config-if)# glbp 1weighting 200 120 up 200              设置GLBP加权最大值200,门槛值最小120,最大200

R2(config-if)# glbp 1weighting track 1 decrement 100

R2(config-if)# glbp 1forwarder preempt delay minimum 2  转发路由器抢夺最小延迟2S,


还可以根据某条路由的可达性或者metrice 值作为状态跟踪(track)的对象(适用于HSRP,VRRP,GLBP),参考命令:

track 200 ip route 4.4.4.0 255.255.255.0 metric threshold

threshold metric up 65 down 100   路由阀值小于65算正常,不会降低优先级或者权值,路由阀值大于100算路由失效,会降低优先级或者权值

track resolution ip route {ospf |eigrp |bgp |isis|static } 路由路由阀值分母。

路由阀值=某条路由度量值/阀值分母

查看路由默认阀值分母:

R3#show track resolution

Route type    Metric Resolution

static           10

EIGRP          2560

OSPF           1

ISIS            10

BGP           2560