2.2 第一跳冗余协议

第一跳冗余协议(First Hop Redundancy Protocol,FHRP)并不是指一项特定的协议,这个名词就像路由协议(Routing Protocol)一样,是一类协议的总称。这类协议所提供服务的共同特点就是为终端设备提供网关的冗余,因为对于局域网中的终端设备来说,局域网的网关就是它们经历的第一跳路由设备,配置在终端设备上的默认网关其实也就是一条将下一跳指向网关设备连接局域网接口的默认路由。

对于一个局域网来说,网关设备是连接局域网和外部网络的桥梁,局域网与网关设备之间的通信断开也就意味着局域网中所有终端断开了与外部网络的通信,比如在第 1章图1-3所示的网络中,只要交换机与路由器之间的链路、这条链路两端的任何一个端口、路由器、路由器连接Internet的链路或者这条链路的端口任意一点出现故障,所有终端都会失去与Internet的连接。考虑到网关设备的重要性,人们采用部署冗余网关的设计方案也就顺理成章了。在 2.2 节中,我们会介绍一项在部署冗余网关时最常用的FHRP,即虚拟路由器冗余协议(Virtual Router Redundancy Protocol,VRRP)。

2.2.1 VRRP概述

为了避免上文所说的这种单点故障的隐患,最直接的想法是让交换机通过两条上行链路分别连接两台路由器,这两台路由器再分别与Internet相连,如图2-8所示。

图2-8 一个包含了冗余网关的小型网络

从功能上看,这个拓扑足以避免与网关相关的单点故障,但如果没有配套机制,这种设计方案却存在实现方面的问题。在《网络基础》一书配套实验手册的图3-10中,读者可以清楚地看到,系统配置项中只能输入一个默认网关,并不存在备用默认网关的设置。这也就是说,网络中需要一种机制能够让冗余网关设备工作起来像是一台网关设备,而我们这一节要介绍的VRRP就提供了这样一种机制。

虚拟化技术的种类多种多样,我们在《路由与交换技术》中介绍的 VLAN 技术属于一种可以将单一广播域通过虚拟化手段虚拟为多个广播域的虚拟化技术,而2.2.1节我们要介绍的VRRP则正好相反,这个协议提供了将多台路由器虚拟成一台路由器的服务。

通过虚拟化手段,我们可以将多台物理设备在逻辑上合并为一台虚拟设备,同时让这些物理路由器对外隐藏各自的信息,以便针对其他设备提供一致性的服务,如图2-9所示。

图2-9 使用了VRRP环境的逻辑拓扑

如果我们在图2-8所示的物理拓扑中配置了 VRRP,将路由器 A和路由器 B连接交换机的接口配置成一个 VRRP 组,两台路由器的接口就会对外使用相同的 IP 地址(10.1.1.1/24)和MAC地址(00-00-5E-00-01-01)进行通信。此时,管理员只需要在所有终端设备上将这个IP地址(10.1.1.1/24)设置为默认网关的地址,就可以实现网关设备的冗余。当其中一台路由器出现故障时,在这个局域网与Internet之间路由数据包的操作虽然会由一台设备迁移到另一台设备,但是终端设备完全不知道原本的网关设备发生了故障,而当前充当网关的己经变成了另一台路由设备——因为虽然实际为它们提供流量转发的设备己经发生了切换,但它们仍然在使用原本的IP地址和MAC地址来发送需要由原先网关设备转发的流量。所以说,无论是在网关设备切换前,还是网关设备切换后,终端设备都认为这个网络的逻辑拓扑其实就是第1章中图1-1所示的拓扑。

在2.2.1节中,我们描述了VRRP提供的服务。在2.2.2节中,我们会对VRRP的工作原理进行简单的介绍。

2.2.2 VRRP工作原理

在2.2.1节中,我们曾经提到,VRRP可以在网关路由器出现故障时,让另一台同处一个VRRP组中的设备继续为局域网与Internet之间执行数据转发。这实际上从侧面说明了参与同一个VRRP组的路由器并不会同时都参与转发,VRRP路由器的角色分为主用(Master)和备用(Backup)两种,只有主用路由器才会为局域网和Internet之间的流量执行转发,而备用路由器只会监听主用设备的状态,这是为了在主用设备出现故障时能够及时接替主用设备。

注释:

主用vRRP路由器和备用vRRP路由器实际上指的都是路由器的接口,而不是路由器。鉴于读者已经在学习OSPF时,学习过指定路由器(DR)和备份指定路由器(BDR)的概念,因此读者应该不难理解参与主用/备用路由器选举的网络实体实际上是路由器接口这一情形。由于技术术语与网络实体存在偏差是既成的事实,读者在阅读后面的文字时应该保持清醒。为了帮助读者熟悉这一概念,在下面的术语介绍中,我们会使用“路由器(接口)”的方式来提醒读者,vRRP路由器其实指的是路由器接口。

为了说清楚VRRP的工作原理,我们有必要首先对一些VRRP术语进行说明,读者不妨参照图2-9来理解下面的说明。

·VRRP组:当管理员为了实现网关设备的冗余而通过配置的手段,将连接在同一个局域网中的一组VRRP路由器(接口)划分到同一个逻辑网关(接口)组中,让它们充当这个局域网中终端设备的主用/备用网关时,管理员所创建的这个逻辑组就是VRRP组。这些由VRRP路由器(连接在相同局域网中的接口)所组成的逻辑组,在这个局域网中的终端看来就像是一台网关路由器,因此VRRP组也称为虚拟路由器。例如,在图2-9中,VRRP路由器A和VRRP路由器B连接局域网交换机的接口就被划分到了同一个VRRP组中,这个VRRP组在终端设备看来也就是一台虚拟路由器。

·虚拟IP地址:由于在一个VRRP组中,多个路由器(的接口)需要作为一台虚拟路由器对外提供服务。因此,这些路由器(接口)需要对外使用相同的 IP地址来响应终端发送给默认网关目的IP地址的流量,这个IP地址也就是VRRP组的虚拟 IP 地址。在图2-9 中,VRRP 组(虚拟路由器)的虚拟 IP 地址为10.1.1.1/24。

注释:

同一个vRRP组可以有多个虚拟IP地址,但不同vRRP组的虚拟IP地址不能相同。

·IP地址拥有者:如果虚拟IP地址是某一个VRRP设备的真实IP地址,那么这台设备就是IP地址拥有者。比如,在图2-9中,VRRP组(虚拟路由器)的虚拟IP地址为10.1.1.1/24,这个IP地址与VRRP路由器A局域网接口的IP地址相同,因此VRRP路由器A就是这个VRRP组的IP地址拥有者。

·虚拟MAC地址:由于在一个VRRP组中,多个路由器(的接口)需要作为一台虚拟路由器对外提供服务。因此,这些路由器(接口)需要对外使用一个(不同于自己实际MAC地址的)一致的虚拟MAC地址来响应终端发送给默认网关流量的目的MAC地址,这个MAC地址也就是VRRP组的虚拟MAC地址,所以虚拟MAC地址与VRRP组(的组ID)之间存在对应关系。在图2-9中,VRRP组(虚拟路由器)的虚拟MAC地址为00-00-5E-00-01-01。

·VRID:同一个VRRP路由器(接口)有时需要参与多个VRRP组,因此需要有一种标识能够区分每个VRRP组,VRID就是标识不同VRRP组的标识符。例如,图2-9所示VRRP组(虚拟路由器)的VRID为“1”。

·优先级:每个VRRP组中会有一个VRRP路由器(接口)充当主用(Master)路由器,这个主用路由器会承担局域网网关的角色,为终端设备转发往返于局域网的数据流量;其他参与这个VRRP组的VRRP路由器接口则充当备用(Backup)路由器,以备在主用路由器无法为终端转发流量时有设备可以继任局域网的网关。优先级是管理员在每个VRRP组中分配给各个VRRP路由器(接口)的参数,一个VRRP组中优先级最高的那个VRRP路由器(接口)会在主用路由器选举中胜出,承担主用路由器的角色。

·抢占:如果一台VRRP路由器工作在抢占模式(Preempt Mode)下,那么当这台VRRP路由器(接口)的VRRP优先级值高于这个VRRP组中当前主用路由器的VRRP优先级值,这台VRRP路由器(的接口)就会成为主用路由器;如果一台VRRP路由器工作在非抢占模式下,那么即使这个VRRP路由器(接口)的VRRP优先级值高于这个VRRP组中当前主用路由器的VRRP优先级值,这个VRRP路由器也不会在该主用路由器失效之前,就替代它成为主用路由器。

VRRP当前包含VRRPv2和VRRPv3两个版本,前者仅适用于IPv4环境,后者则同时适用于IPv6环境中。目前,华为VRP系统默认的VRRP版本为VRRPv2。VRRP消息是封装在IP头部之内的,当内部封装的消息是VRRP消息时,IP头部的协议字段会取值“112”,

表示这个IP数据包内部封装的上层协议是VRRP;同时这个IP头部的目的IP地址封装的地址为组播地址224.0.0.18。下面,我们来介绍一下VRRP消息中包含的字段内容。VRRPv2的头部封装格式如图2-10所示。

图2-10 VRRPv2头部封装格式

通过图2-10,我们可以看到VRRP消息中会携带上文中介绍的虚拟路由器ID和优先级值。这两个字段在VRRPv2封装中定义的长度皆为8比特,因此虚拟路由器ID和优先级取值的上限皆为“255”,即8位二进制数全部取“1”时对应的十进制数。其中,虚拟路由器ID的取值范围是1~255,而优先级字段的取值范围是0~255,优先级值越大则这个接口在主用路由器选举中的优先级就越高,“0”表示这个VRRP路由器接口立刻停止参与这个VRRP组,如果管理员给主用路由器赋予了“0”这个优先级,那么优先级值最高的备用路由器就会被选举为新的主用路由器,而IP地址拥有者的优先级为“255”,优先级为“255”的设备会直接成为主用设备,华为路由器接口默认的优先级值为“100”。

除了这两个字段之外,VRRP封装中还包括了下列字段。

·版本:对于VRRPv2消息,这个字段的取值一律为“2”。

·类型:这个字段的取值一律为“1”,表示这是一个VRRP通告消息。目前VRRPv2只定义了通告消息这样一种类型的消息。

·IP地址数:我们在上文的备注中曾经提到,同一个VRRP组可以有多个虚拟IP地址。这个字段的作用就是标识这个VRRP组的虚拟IP地址数量。

·认证类型:VRRPv2定义了3种类型的认证:当这个字段取“0”时,表示该消息的始发VRRP设备未配置认证;取“1”表示其采用了明文认证;取“2”则表示其采用了MD5认证。关于认证的配置方法,我们会在2.2.3节中进行介绍和演示。

·通告时间间隔:这个字段标识了VRRP设备发送VRRP通告的时间间隔,单位为s。

·校验和:这个字段的表意顾名思义,其作用是让接收方VRRP设备检测这个VRRP消息是否与始发时一致。

·IP地址:这个字段的作用是标识这个VRRP组的虚拟IP地址。IP地址数字段显示这个VRRP组有多少虚拟IP地址,这个消息的头部封装中就会包含多少个IP地址字段。

·认证数据:即VRRP消息的认证字段。

到这里为止,我们己经介绍了 VRRP 所涉及的大部分基础知识。下面,我们需要结合上面介绍的内容,分步骤解释VRRP为局域网提供冗余网关的方式。

步骤1 VRRP组选举出主用路由器,如图2-11所示。

VRRP组中的路由器在选举主用路由器时,会首先对比优先级,优先级最高的接口会成为主用路由器。如果多个VRRP路由器接口的优先级相同,它们之间则会继续对比接口的IP地址,IP地址最高的接口会成为主用路由器。

注释:

具体描述 vRRP 主用路由器的选举机制需要花费大量篇幅,其中必须涉及 vRRP状态的迁移。从实用的角度出发,不了解vRRP状态机的管理员也可以通过配置命令轻松管理vRRP组中设备的主用/备用角色。因此,本书为求直白,刻意规避了vRRP状态机和状态迁移的介绍。感兴趣的读者可以阅读其他包含vRRP的图书或在线资源,课下向华为ICT学院的任课教师请教,或者报名华为认证培训机构来学习和掌握更多关于vRRP的原理与操作。

图2-11 VRRP主用路由器选举示意

步骤2 主用路由器主动在这个局域网中发送ARP响应消息来通告这个VRRP组虚拟的MAC地址,并且开始周期性地向VRRP组中的其他路由器通告自己的信息和状态,如图2-12所示。

注释:

一台设备不经请求就主动在局域网中泛洪的 ARP 响应消息称为gratuitous ARP(gARP),这类ARP被国内技术工作者翻译为“免费ARP”或“无偿ARP”。这种译法尽管有欠妥当但却十分普遍,本书在后文中也会沿用这种(并不贴切的)译法。

图2-12 VRRP主用路由器在局域网中发布免费ARP和VRRP通告的示意

同时,当这个局域网中的终端都获得了网关地址(也即VRRP组虚拟IP地址)所对应的MAC地址(即VRRP组虚拟MAC地址)之后,它们就会使用虚拟IP地址和虚拟MAC地址来封装数据。同时,在所有接收到发送给网关虚拟地址的VRRP组成员设备中,只有主用设备会对这些数据进行处理和/或转发,备用路由器则会丢弃发送给虚拟地址的数据,如图2-13所示。

图2-13 只有VRRP主用路由器负责为局域网中的终端转发往返于外部网络的流量

如果主用设备出现故障,那么 VRRP 组中的备用设备就会因为在指定时间内没有接收到来自主用设备的VRRP通告消息而发觉主用设备己经无法为局域网提供网关服务,于是它们就会重新选举新的主用设备,并且开始为这个局域网中的终端转发往返于外部网络的数据。这个物理网关设备切换的过程终端并不知情,这个过程也并不会影响终端设备继续使用VRRP虚拟地址来封装发送给网关设备和外部网络的数据包。尽管在实际上,对终端设备发送的数据包作出响应的物理设备己经不是过去那台网关设备了。

关于 VRRP 的原理,我们在 2.2.2 节中用图文并茂的方式进行了比较详细的介绍。在2.2.3节中,我们会演示如何在华为设备上配置VRRP组和相关参数。

2.2.3 VRRP的配置

在学习了VRRP的理论知识后,2.2.3节会在华为设备网络环境中展示VRRP的基本配置和认证部署。首先图2-14中展示了2.2.3节将会用到的拓扑图。

图2-14 VRRP基本配置环境

在图2-14所示的企业环境中,AR1和AR2是两台连接企业网关(GW)的路由器,它们充当企业内部主机的网关,并且通过 VRRP 向企业内部网络呈现出一台虚拟路由器的状态。GW设备连接ISP(服务器提供商)并提供Internet访问。在默认情况下,管理员要求AR1为主用网关路由器,用来实际传输数据流量。当AR1发生故障时,AR2自动从备用路由器切换为主用路由器,接替AR1来传输企业去往Internet的数据流量。企业内部用户(如图中的PC10)使用虚拟路由器的IP地址(10.10.10.254)作为网关地址,在主用网关路由器(AR1)发生故障时,用户PC10并不会意识到网络中出现了问题,它们与Internet之间的数据传输并不会受到影响。与本例配置相关的接口和IP地址规划见表2-1。

表2-1 VRRP基本配置环境中的IP地址规划

注释:

为了在案例网络中实现任意节点之间的路由,我们在所有接口上都启用了OSPF协议。为了实现全网互通而实施的接口IP地址和OSPF协议配置不再演示,读者可以根据《路由与交换技术》第7章(单区域OSPF)中介绍的配置命令,在自己的实验环境中搭建本例的拓扑环境。本书在后文的配置案例中也不再演示诸如接口配置和动态路由协议配置等内容,而是把重点放在新功能和新协议的配置上。

1.VRRP的基本配置

在本例中,管理员把VRRP的虚拟路由器ID(VRID)设置为10,并且把虚拟路由器IP地址设置为10.10.10.254。为了使AR1成为VRRP主用路由器,AR2成为VRRP备用路由器,管理员在AR1和AR2的G0/0/0接口上分别配置了以下信息,详见例2-1所示。

例2-1 在路由器接口添加VRRP配置

[AR1]interface g0/0/0

[AR1-GigabitEthernet0/0/0]vrrp vrid 10 virtual-ip 10.10.10.254

[AR1-GigabitEthernet0/0/0]vrrp vrid 10 priority 150

[AR2]interface g0/0/0

[AR2-GigabitEthernet0/0/0]vrrp vrid 10 virtual-ip 10.10.10.254

如例2-1所示,管理员在AR1接口G0/0/0上配置了命令vrrp vrid 10 virtual-ip 10.10.10.254,这条命令中指定了VRRP备份组为VRID 10,虚拟IP地址为10.10.10.254。在实际工作中,管理员可以根据VLAN ID来设置VRRP备份组的VRID。同时这个接口上还配置了命令vrrp vrid 10 priority 150,这条命令会把这个接口在VRID 10中的优先级调整为150,使其大于默认值100,从而令AR1能够成为VRID 10的主用路由器。

管理员在AR2接口G0/0/0上也指定了VRID 10和虚拟IP地址10.10.10.254,同时保留VRRP优先级100的默认设置。我们通过例2-2所示命令先来查看一下两台路由器上的VRRP简化信息。

例2-2 检查VRRP状态

[AR1]display vrrp brief

Total:1 Master:1 Backup:0 Non-active:0

VRID State Interface Type Virtual IP

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

10 Master GE0/0/0 Normal 10.10.10.254

[AR1]

[AR2]display vrrp brief

Total:1 Master:0 Backup:1 Non-active:0

VRID State Interface Type Virtual IP

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

10 Backup GE0/0/0 Normal 10.10.10.254

在例2-2中,管理员在AR1和AR2上使用了相同的命令display vrrp brief,这条命令可以用来查看VRRP简化信息,从中不仅可以看到接口上配置的VRID和虚拟IP地址,还可以看到接口的角色:AR1上显示的“Master”表示本地路由器是VRRP主用路由器,用来传输数据流量;AR2上显示的“Backup”表示本地路由器是VRRP备用路由器,当主用路由器失效时,它能够成为VRRP主用设备。

要想查看当前路由器上运行的 VRRP 版本,管理员可以使用命令 display vrrp protocol-information,例2-3展示了AR1上这条命令的输出内容,阴影部分展示出AR1上VRRP协议的版本为V2。

例2-3 查看VRRP版本

[AR1]display vrrp protocol-information

 VRRP protocol information is shown as below:

  VRRP protocol version :V2

  Send advertisement packet mode :send v2 only

在这个案例中,管理员把PC10的网关地址设置为虚拟路由器IP地址10.10.10.254,在这个网络中未实施VRRP前,PC10无法访问Internet,因为网络中没有接口IP地址为10.10.10.254 的设备。通过例 2-1 中几条命令的简单设置,现在 PC10 己经可以访问Internet了。例2-4展示了在PC10上访问(ping)Internet地址(管理员在GW上启用了一个环回接口192.168.0.10来模拟Internet设备),以及对这个地址执行tracert的结果。

例2-4 在PC10上验证VRRP的配置效果

PC10>ping 192.168.0.10

Ping 192.168.0.10:32 data bytes,Press Ctrl_C to break

From 192.168.0.10:bytes=32 seq=1 ttl=254 time=46 ms

From 192.168.0.10:bytes=32 seq=2 ttl=254 time=16 ms

From 192.168.0.10:bytes=32 seq=3 ttl=254 time=47 ms

From 192.168.0.10:bytes=32 seq=4 ttl=254 time=47 ms

From 192.168.0.10:bytes=32 seq=5 ttl=254 time=31 ms

--- 192.168.0.10 ping statistics ---

 5 packet(s) transmitted

 5 packet(s) received

 0.00% packet loss

 round-trip min/avg/max = 16/37/47 ms

PC10>tracert 192.168.0.10

traceroute to 192.168.0.10,8 hops max

(ICMP),press Ctrl+C to stop

1 10.10.10.253 31 ms 47 ms 47 ms

2 192.168.0.10 62 ms 63 ms 78 ms

从例2-4展示的第一条ping命令可以看出,PC10能够访问Internet设备;通过第二条tracert命令,我们可以确认数据包传输的路径是PC10->AR1->GW。继而验证了VRRP的配置效果,即AR1为VRRP的主用路由器,负责传输数据流量。

2.让VRRP追踪上行接口状态

在AR1和AR2的G0/0/0接口配置好VRRP相关设置后,VRRP就可以正常工作了。在网络中一切正常的情况下,VRRP主用路由器(AR1)会通过G0/0/0接口周期性地发送VRRP消息,这使得AR2能够检测到10.10.10.0/24网络中的AR1故障。比如AR1的G0/0/0接口出现问题无法发送数据包,或者AR1整体宕机。但如果AR1与GW相连的链路出现问题而中断,AR2是无法获得任何通知的,这时AR1仍是VRRP的主用设备,仍负责转发 PC10 发来的数据流量,但由于上行链路中断,PC10 实际上是无法通过 GW 访问Internet的。

既然配置VRRP的目的就是为了确保LAN中的主机能够在一台网关设备出现问题时,仍可以通过另一台网关设备进行通信,因此我们需要让VRRP也能够根据上行链路的状态相应地进行切换。因此,管理员在AR1的G0/0/0接口上配置了以下命令来实现这一目标,详见例2-5所示。

例2-5 配置VRRP追踪上行链路状态

[AR1]interface g0/0/0

[AR1-GigabitEthernet0/0/0]vrrp vrid 10 track interface GigabitEthernet 0/0/1 reduced 100

从例2-5所示配置命令可以解读出:AR1要在VRRP VRID 10中追踪接口G0/0/1的状态,当G0/0/1的状态变为Down时,把VRRP VRID 10的优先级减少100。还记得例2-1中管理员把AR1接口G0/0/0的VRID 10优先级配置为“150”,因此当优先级减少100后,它的优先级就会低于AR2接口G0/0/0的优先级100。这样一来,AR2就可以通过优先级抢占主用角色。

本例中,我们通过手动关闭AR1接口G0/0/1来模拟上行链路故障。例2-6展示了AR1上的相关显示信息。

例2-6 关闭AR1接口G0/0/1并观察VRRP状态变化

[AR1]interface g0/0/1

[AR1-GigabitEthernet0/0/1]shutdown

Mar 28 2017 04:52:09-08:00 AR1 %%01IFPDT/4/IF-STATE(l)[0]:Interface GigabitEther

net0/0/1 has turned into DOWN state.

[AR1-GigabitEthernet0/0/1]

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 04:52:09-08:00 AR1 %%01IFNET/4/LINK-STATE(l)[1]:The line protocol IP on the interface GigabitEthernet0/0/1 has entered the DOWN state.

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 04:52:09-08:00 AR1 %%01VRRP/4/STATEWARNINGEXTEND(l)[4]:Virtual Route r state MASTER changed to BACKUP,because of priority calculation.(Interface=Gi gabitEthernet0/0/0,VrId=167772160,InetType=IPv4)

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 04:52:09-08:00 AR1 VRRP/2/VRRPMASTERDOWN:OID 16777216.50331648.10066 3296.16777216.67108864.16777216.3674669056.83886080.419430400.2130706432.3355443 2.503316480.16777216 The state of VRRP changed from master to other state.(Vrrp IfIndex=50331648,VrId=167772160,IfIndex=50331648,IPAddress=253.10.10.10,Node Name=AR1,IfName=GigabitEthernet0/0/0,CurrentState=Backup,ChangeReason=priorit y calculation(GE0/0/1 down))

从例2-6中我们可以看出,当管理员在AR1接口G0/0/1上执行了shutdown命令后,AR1自动弹出提示信息,表示接口状态从“UP”变为“DOWN”。第一个阴影行展示出VRRP状态也发生了变化,由于优先级重新计算,AR1的VRRP状态从“MASTER”改变为“BACKUP”;第二个阴影行给出了变更原因是G0/0/1接口状态变为“DOWN”。

例2-7展示了AR2上的提示信息,从阴影行可以看出AR2接替成为VRRP主用路由器。

例2-7 AR2上的同步显示信息

[AR2]

Mar 28 2017 04:52:09-08:00 AR2 VRRP/2/VRRPCHANGETOMASTER:OID 16777216.50331648.1 00663296.16777216.33554432.16777216.1140850688.0.16777216 The status of VRRP cha nged to master.(VrrpIfIndex=50331648,VrId=167772160,IfIndex=50331648,IPAddre ss=252.10.10.10,NodeName=AR2,IfName=GigabitEthernet0/0/0,ChangeReason=priorit y calculation)

[AR2]

Mar 28 2017 04:52:09-08:00 AR2 %%01VRRP/4/STATEWARNINGEXTEND(l)[1]:Virtual Route r state BACKUP changed to MASTER,because of priority calculation.(Interface=Gi gabitEthernet0/0/0,VrId=167772160,InetType=IPv4)

接下来我们再次在PC10上执行tracert测试,并观察测试结果,详见例2-8所示。

例2-8 从PC10访问Internet地址

PC10>tracert 192.168.0.10

traceroute to 192.168.0.10,8 hops max

(ICMP),press Ctrl+C to stop

 1 10.10.10.252 94 ms 47 ms 31 ms

 2 192.168.0.10 47 ms 47 ms 46 ms

从例2-8的阴影行我们可以看出,现在PC10己经开始通过AR2来访问Internet了,VRRP的故障切换成功。

3.VRRP的抢占功能

由于华为设备上的VRRP默认启用抢占功能,因此当AR1的VRRP优先级降低时,AR2能够自动抢占成为VRRP主用路由器。同样的,当AR1接口G0/0/1恢复功能后,它也会重新夺回VRRP主用路由器的角色,详见例2-9所示。

例2-9 开启AR1接口G0/0/1并观察VRRP状态变化

[AR1]interface g0/0/1

[AR1-GigabitEthernet0/0/1]undo shutdown

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 05:14:17-08:00 AR1 %%01IFPDT/4/IF-STATE(l)[0]:Interface GigabitEther net0/0/1 has turned into UP state.

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 05:14:17-08:00 AR1 %%01IFNET/4/LINK-STATE(l)[1]:The line protocol IP on the interface GigabitEthernet0/0/1 has entered the UP state.

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 05:14:17-08:00 AR1 %%01VRRP/4/STATEWARNINGEXTEND(l)[2]:Virtual Route r state BACKUP changed to MASTER,because of priority calculation.(Interface=Gi gabitEthernet0/0/0,VrId=167772160,InetType=IPv4)

[AR1-GigabitEthernet0/0/1]

Mar 28 2017 05:14:17-08:00 AR1 VRRP/2/VRRPCHANGETOMASTER:OID 16777216.50331648.1 00663296.16777216.33554432.16777216.1140850688.0.16777216 The status of VRRP cha nged to master.(VrrpIfIndex=50331648,VrId=167772160,IfIndex=50331648,IPAddre ss=253.10.10.10,NodeName=AR1,IfName=GigabitEthernet0/0/0,ChangeReason=priorit y calculation)

从例2-9可以看出,在管理员手动开启了AR1接口G0/0/1后,AR1几乎立即夺回了VRRP主用路由器的角色。使用命令display vrrp可以查看VRRP的抢占状态,详见例2-10所示。

例2-10 命令display vrrp 10的输出内容

[AR1]display vrrp 10

 GigabitEthernet0/0/0 |Virtual Router 10

  State :Master

  Virtual IP :10.10.10.254

  Master IP :10.10.10.253

  PriorityRun :150

  PriorityConfig :150

  MasterPriority :150

  Preempt :YES Delay Time :0 s

  TimerRun :1 s

  TimerConfig :1 s

  Auth type :NONE

  Virtual MAC :0000-5e00-010a

  Check TTL :YES

  Config type :normal-vrrp

  Backup-forward :disabled

  Track IF :GigabitEthernet0/0/1 Priority reduced :100

  IF state :UP

  Create time :2017-03-28 03:45:00 UTC-08:00

  Last change time :2017-03-28 05:14:17 UTC-08:00

从例2-10的阴影行我们可以看到抢占功能是开启的,并且延迟时间为0s(默认设置)。也就是说,当路由器感知到需要切换VRRP状态的事件后,它会立即进行切换。除此之外,这条命令的输出内容中还包括接口上有关VRRP的其他配置信息,读者可以自行观察。

要想了解一个接口上的 VRRP 状态变化情况,管理员可以使用一条很有用的命令进行查看,详见例2-11所示。

例2-11 观察路由器接口的VRRP状态变化情况

[AR1]display vrrp state-change interface GigabitEthernet 0/0/0 vrid 10

Time SourceState DestState Reason

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

2017-03-28 03:45:00 UTC-08:00 Initialize Backup Interface up

2017-03-28 03:45:03 UTC-08:00 Backup Master Protocol timer expired

2017-03-28 04:52:09 UTC-08:00 Master Backup Priority calculation

2017-03-28 05:14:17 UTC-08:00 Backup Master Priority calculation

管理员可以使用命令 display vrrp state-change interface GigabitEthernet 0/0/0 vrid 10来查看某个接口下某个VRID中的VRRP状态变化。本例中阴影行展示的正是关闭和启用AR1接口G0/0/1导致的VRRP状态切换事件。

4.VRRP的认证

为了加强VRRP的安全性,管理员可以在VRRP设备的协商消息中添加认证参数,使具有相同认证配置的设备之间才能够进行VRRP协商。接下来我们在既有拓扑中添加一台PC20,设置其IP地址为10.10.10.20/24,网关地址为10.10.10.251。管理员要在路由器 AR1 和 AR2 上添加一个 VRRP 备份组,将 VRID 设置为20,虚拟 IP 地址设置为10.10.10.251,主用路由器为AR2,备用路由器为AR1,并且它们之间需要使用密码进行通信,具体拓扑如图2-15所示。

图2-15 添加一个VRRP备份组VRID 20

管理员在AR1和AR2上分别进行了如下配置,详见例2-12。

例2-12 在AR1和AR2上配置VRRP VRID 20并启用认证功能

[AR1]interface g0/0/0

[AR1-GigabitEthernet0/0/0]vrrp vrid 20 virtual-ip 10.10.10.251

[AR1-GigabitEthernet0/0/0]vrrp vrid 20 authentication-mode simple plain huawei

[AR2]interface g0/0/0

[AR2-GigabitEthernet0/0/0]vrrp vrid 20 virtual-ip 10.10.10.251

[AR2-GigabitEthernet0/0/0]vrrp vrid 20 priority 150

[AR2-GigabitEthernet0/0/0]vrrp vrid 20 authentication-mode simple plain huawei

从例2-12的配置中我们可以看出,管理员把AR2在VRID 20中的优先级调整为150,使其成为主用路由器。在本例中,管理员用来启用 VRRP 认证的命令为vrrp vrid 20 authentication-mode simple plain huawei。这条命令的完整语法是vrrp vrid virtual-router-id authentication-mode{simple{key|plain key|cipher cipher-key} |md5 md5-key},其中重要的可选参数如下。

·simple |md5:指定认证密码在网络中的传输模式,“simple”表示以明文进行传输,“md5”表示以密文进行传输,后者更为安全;

·simple{key|plain key|cipher cipher-key}:在关键字 simple 后面可以直接配置执行认证所使用的密码,长度为1~8字符。plain和cipher指定了认证密码在配置中的保存模式:“plain”表示以明文保存在配置中,“cipher”表示以加密的形式保存在配置中,后者更为安全。

为了更清晰地展示配置命令与display命令输出内容之间的关系,本例使用了加密认证配置的所有组合中最不安全的做法,也就是让加密密码在网络中以明文的形式传输,并且在路由器配置中以明文的形式保存密码。在实际工作中,建议管理员使用更安全的配置选项。

例2-13在AR1上使用命令display vrrp 20验证了VRRP VRID 20的状态。

例2-13 在AR1上验证VRID 20的状态

[AR1]display vrrp 20

 GigabitEthernet0/0/0 |Virtual Router 20

  State :Backup

  Virtual IP :10.10.10.251

  Master IP :10.10.10.252

  PriorityRun :100

  PriorityConfig :100

  MasterPriority :150

  Preempt :YES Delay Time :0 s

  TimerRun :1 s

  TimerConfig :1 s

 

Auth type :SIMPLE Auth key :huawei

 

Virtual MAC :0000-5e00-0114

Check TTL :YES

Config type :normal-vrrp

Backup-forward :disabled

Create time :2017-03-28 05:41:54 UTC-08:00

Last change time :2017-03-28 05:59:12 UTC-08:00

从例2-13的阴影行我们可以看出,AR1上启用了认证并且认证模式为“SIMPLE”,认证密钥(huawei)也明确地显示在配置中。图2-16展示了在10.10.10.0/24网络中的抓包结果,从这个以 AR2(10.10.10.252)为源发出的 VRRP 消息,我们可以看出 VRRP通告消息版本为V2,认证类型为明文认证,认证字符串也能够从抓包解析中直接看到:huawei。

图2-16 在抓包解析中查看VRRP认证密码

注释:

在图2-16的抓包截图中可以看出,在10.10.10.0/24网络中有两个源地址都在发送vRRP 通告消息,其中 AR2(10.10.10.252)发送的是VRID 20 的通告消息,AR1(10.10.10.253)发送的是VRID 10的通告消息。因为在VRRP协商成功后,只有VRRP主用设备会周期性发送vRRP消息。

通过对比这两个VRRP备份组的配置,我们可以看出,VRRP的认证是基于VRRP备份组进行设置的,管理员可以为不同的VRRP备份组设置不同的认证模式以及不同的认证密码。

5.通过VRRP实现负载分担

其实到目前为止,2.2.3节展示的网络环境中己经通过VRRP实现了流量的负载分担:PC10会通过AR1访问Internet,PC20会通过AR2访问Internet。图2-17更加清晰地展示了流量路径。

图2-17 通过VRRP实现负载分担

图2-17中展示了PC10和PC20发往Internet的数据包路径,PC10的数据包(灰色)会去往AR1,PC20的数据包(黑色)会去往AR2。例2-14中也通过在PC10和PC20上执行tracert命令验证了这一结果。

例2-14 在PC10和PC20上验证去往Internet的路径

PC10>tracert 192.168.0.10

traceroute to 192.168.0.10,8 hops max

(ICMP),press Ctrl+C to stop

1 10.10.10.253 94 ms 31 ms 47 ms

2 192.168.0.10 78 ms 31 ms 47 ms

PC10>

PC20>tracert 192.168.0.10

traceroute to 192.168.0.10,8 hops max

(ICMP),press Ctrl+C to stop

1 10.10.10.252 78 ms 31 ms 47 ms

2 192.168.0.10 63 ms 62 ms 63 ms

PC20>

例2-15通过AR1和AR2上的命令display vrrp brief查看了VRRP的状态信息。

例2-15 在AR1和AR2上查看VRRP简化信息

[AR1]display vrrp brief

Total:2 Master:1 Backup:1 Non-active:0

VRID State Interface Type Virtual IP

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

10 Master GE0/0/0 Normal 10.10.10.254

20 Backup GE0/0/0 Normal 10.10.10.251

[AR2]display vrrp brief

Total:2 Master:1 Backup:1 Non-active:0

VRID State Interface Type Virtual IP

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

10 Backup GE0/0/0 Normal 10.10.10.254

20 Master GE0/0/0 Normal 10.10.10.251

从例2-15所示命令的输出信息可以清晰地看出AR1是VRID 10的主用路由器,是VRID 20的备用路由器;AR2是VRID 10的备用路由器,是VRID 20的主用路由器。管理员再分别让网络中的一部分用户PC以10.10.10.254为网关地址,另一部分用户PC以10.10.10.251为网关地址,就实现了负载分担。