Files
ccna60d/d34-First-Hop-Redundancy-Protocols.md
Peng Hailin 49ddf01172 update
2016-09-01 11:17:16 +08:00

43 KiB
Raw Blame History

#第34天

第一跳冗余协议

First Hop Redundancy Protocols

##第34天任务

  • 阅读今天的课文
  • 回顾昨天的课文
  • 完成今天的实验
  • 阅读ICND2记诵指南
  • subnetting.org上花15分钟

在设计和部署交换网络时,高可用性High Availability, HA是一项不可或缺的考虑。作为思科IOS软件中所提供的一项技术高可用性确保了网络层面的弹性与恢复能力从而提升了IP网络的可用性。所有网段都必须具备弹性和恢复能力以便网络能足够快地从故障中恢复过来且此恢复过程要对用户及网络应用无感知及透明。这里的这些第一跳冗余协议First Hop Redundancy Protocols, FHRPs就提供了在不同的包交换局域网环境下的冗余。

今天将学习以下内容:

  • 热备份路由器协议Hot Standby Router Protocol
  • 虚拟路由器冗余协议Virtual Router Redundancy Protocol
  • 网关负载均衡协议Gateway Load Balancing Protocol

这节课对应了一下ICND2考试大纲要求

  • 认识高可用性FHRP
    • HSRP
    • VRRP
    • GLBP

热备份路由器协议

Hot Standby Router Protocol

热备份路由器协议是一项思科公司专有的第一跳冗余协议。HSRP令到两台配置在同样HSRP组中的物理网关使用同样的虚拟网关地址。而位处这两台网关所在的子网中的网络主机就以该虚拟网关IP地址作为其默认网关地址。

当HSRP运作时由主网关the primary gateway转发该HSRP组的那些以虚拟网关IP地址为目的地址的数据包。而加入主网关失效则从网关the secondary gateway就接过主网关角色并转发那些发送到虚拟网关IP地址的数据包。下面的图34.1演示了某网络中HSRP的运作

热备份路由器协议的运作 图 34.1 -- 热备份路由器协议的运作

参阅图 34.1HSRP是在三层分发/分布层the Layer 3, Distribution Layer交换机之间的给VLAN 10提供了网关的冗余性。分配给三层交换机Switch 1上的交换机虚拟借口the Switch Virtual Interface, SVI的IP地址是10.10.10.2/24, 同时分配给三层交换机Switch 2的交换机虚拟接口的IP地址是10.10.10.3/24。两台交换机都被配置为同一HSRP组的组成部分并共用了该虚拟网关10.10.10.1

Switch 1 已被配置了优先级值105而Switch 2使用的是默认优先级值100。因为三层交换机Switch 1有着更高的优先级值其就被选作主交换机同时三层交换机Switch 2被选作从交换机。在VLAN 10上的所有主机都配置了默认网关地址10.10.10.1。因此假如Switch 1失效Switch 2就将接过网关的职责。此过程对这些网络主机完全透明无感知。

真实世界应用 Real-World Implementation

在生产网络中配置各种FHRPs确保子网的活动网关同时也是该特定VLAN的生成树根桥被认为是一种好的做法。比如参阅图34.1中的图例Switch 1在作为VLAN 10的HSRP主网关的同时也应被配置为该VLAN的根桥。

如此做法带来的是一个确切的网络a deterministic network从而避免在二层或三层上的次优转发。比如假设VLAN 10的根桥是Switch 2而VLAN 10的主网关又是Switch 1那么从网络主机发送到默认网关IP地址的数据包就将如下图34.2那样被转发了:

STP拓扑与HSRP拓扑的同步 图 34.2 -- STP拓扑与HSRP拓扑的同步Synchronising the STP Topology with HSRP

在上面的网络中从Host 1到10.10.10.1的数据包将被如下这样转发:

  1. 接入层交换机收到一个来自Host 1、以虚拟网关IP地址之MAC地址为目标的数据帧。此数据帧实在VLAN 10中收到的同时该接入交换机经由其根端口已学习到了虚拟网关的MAC地址。

  2. 因为VLAN 10的根桥是Switch 2那么到Switch 1也就是HSRP的主路由器的上行线路也被置于阻塞状态。此时该接入交换机就将该数据帧经由到Switch 2的上行链路予以转发。

  3. Switch 2又经由连接到Switch 1的指定端口转发该数据帧。对于来自Host 2的数据帧会使用上述的相同次优路径。

思科IOS软件当前支持两个版本的HSRP版本1及版本2。后续章节将对它们的相似点和不同点进行说明。

###HSRP版本1

默认情况下当在思科IOS软件中开启热备份路由器协议是是开启的版本1。HSRP版本1将可配置的HSRP分组限制在最多255个。HSRP版本1的那些路由器之间的通信是通过往多播组地址Multicast group address224.0.0.2使用UDP端口1985发送报文进行的。下面的图34.3显示了HSRP版本1的报文

HSRP版本1多播组地址 图 34.3 -- HSRP版本1多播组地址

对HSRP数据包格式的深入探讨是超出CCNA考试要求的范围的下图34.4仍然给出了HSRP版本1数据包的信息

HSRP版本1数据包的字段 图 34.4 -- HSRP版本1数据包的字段

在图34.4中要注意版本字段显示的是数值0。这是在版本1开启时该字段的默认值不过仍然要知道这里使用的是HSRP版本1。

###HSRP版本2

HSRP版本2使用了新的多播地址224.0.0.102而不是版本1的多播地址224.0.0.2, 来发送Hello数据包。不过其所用到的UDP端口号仍然一样1985。同时此新地址在IP数据包及以太网数据帧中都得以编码如下图34.5所示:

HSRP版本2多播组地址 图 34.5 -- HSRP版本2多播组地址

对HSRP版本2数据包格式的深入探讨也是超出CCNA考试要求范围的但要记住HSRP版本2并未使用与版本1相同的数据包格式。

版本2数据包使用了一直类型/长度/值的格式a Type/Length/Value format, TLV format。被HSRP版本1的路由器接收到的版本2数据包会将类型字段映射到HSRP版本1的版本字段而被忽略掉。下图34.6给出了HSRP版本2数据包中所包含的信息

HSRP版本2的数据包字段 图 34.6 -- HSRP版本2的数据包字段

###HSRP版本1与版本2的比较

HSRP 版本2包括了一些对版本1的增强。本小节将对这些增强及与版本1的不同进行说明。

尽管HSRP版本1通告了计时器数值但这些数值都是整秒的因为版本1无法通告或学习到毫秒的计时器数值。而版本2就既可以通告也可以学习毫秒的计时器数值了。下面的图34.7与图34.8分别着重表示了HSRP版本1与版本2在计时器字段上的不同

HSRP版本1的计时器字段 图 34.7 -- HSRP版本1的计时器字段

HSRP版本2的计时器字段 图 34.8 -- HSRP版本2的计时器字段

HSRP版本1的分组编号是限制在0到255的而版本2的分组编号则已拓展到0到4095了。本课程模块后面的HSRP配置示例中将就此差异进行演示。

版本2通过包含一个由物理路由器接口的MAC地址生成、用于对HSRP活动Hello报文来源的唯一性识别的6字节识别符字段a 6-byte Identifier field提供了改进的管理与故障排除功能。在版本1中这些Hello报文所包含的源MAC地址都是虚拟MAC地址那就是说无法找出是哪台HSRP路由器发送的HSRP Hello报文。下图34.9给出了HSRP版本2而非版本1数据包中出现的识别符字段

HSRP版本2的识别符字段 图 34.9 -- HSRP版本2中的识别符字段

在HSRP版本1中虚拟IP地址所使用的二层地址将是一个由0000.0C07.ACxx构成的虚拟MAC地址这里的xx就是HSRP分组编号的十六进制值同时是基于相应接口的。而在HSRP版本2中虚拟网关IP地址则是使用了新的MAC地址范围0000.0C9F.F0000000.0C9F.FFFF。下图34.10给出了这些不同该图现实了HSRP Group 1的版本1的虚拟MAC地址同时在图34.11中显示了版本2的虚拟MAC地址也是HSRP Group 1的:

HSRP版本1的虚拟MAC地址格式 图 34.10 -- HSRP版本1的虚拟MAC地址格式

HSRP版本2的虚拟MAC地址格式 图 34.11 -- HSRP版本版本2的虚拟MAC地址格式

###HSRP的主网关选举

可通过将默认HSRP优先级值100, 修改为1到255之间的任何值对HSRP主网关的选举施加影响。有着最高优先级的路由器将被选举为该HSRP分组的主网关。

而在两个网关都使用默认优先级值时或两个网关上的优先级值被手工配置为相等是那么有着最高IP地址的路由器将被选举为主网关。在HSRP数据帧中HSRP优先级值与该路由器的当前状态比如是主路由器还是备份路由器都有进行传送。下图34.12演示了一台配置了非默认优先级值105, 此优先级令到该路由器被选举为此HSRP组的活动网关的网关的优先级和状态字段

HSRP的优先级与状态字段 图 34.12 -- HSRP的优先级与状态字段

###HSRP报文

HSRP路由器之间就下列三种类型的报文进行交换

  • Hello报文
  • Coup报文
  • Resign报文

Hello报文是经由多播进行交换的这些报文告诉另一网关本地路由器的HSRP状态和优先级数值。Hello报文还包含了组IDthe Group ID、各种HSRP计时器数值、HSRP版本以及认证信息。前面给出的所有报文都是HSRP的Hello报文。

HSRP Coup报文实在当前备份路由器打算接过该HSRP组的活动网关角色时发出的。这与现实生活中的一次篡位a coup détat类似。

而HSRP的Resign报文则是在活动路由器即将关闭以及在一台有着更高优先级的网关发出一个Hello报文或Coup报文时发出的。也就是说在活动网关交出其作为主网关角色时发出此报文。

###HSRP的抢占

HSRP Preemption

在已有一台网关被选举为活动网关的情况下作为HSRP组一部分的另一网关被重新配置了一个更高的HSRP优先级数值时当前活动网关会保留主转发角色。这是HSRP的默认行为。

而为了在某HSRP组中已有一个主网关的情形下令到具有更高优先级的网关接过活动网关功能就必须要将该路由器配置上抢占功能。这样做就允许该网关发起一次抢占并接过该HSRP组的活动网关角色。HSRP抢占在接着的配置示例中有演示。

注意:抢占并不意味着生成树拓扑也会发生改变(译者注:这将导致次优路径)。

###HSRP的各种状态

与开放最短路径有限Open Shortest Path First, OSPF的方式类似当在某个接口上开启了HSRP时该网关接口会经历以下一系列状态的改变

  1. 关闭Disabled

  2. 初始化Init

  3. 侦听Listen

  4. Speak

  5. 备份Standby

  6. 活动Active

注意这些接口状态过度并无设置时间数值There are no set time values for these interface transitions

在关闭及初始化状态中该网关处于尚未准备妥当或是无法参与到HSRP组情形可能的原因在于相关接口没有开启。

而侦听状态是适用于备份网关的。仅有备份网关才会监听来自活动网关的Hello报文。假如备份网关在10秒内未能收到Hello报文其就假定活动网关已经宕机并接过活动网关角色。如有在统一网段上存在其它网关这些网关也会侦听Hello报文且如果它们有着下一最高优先级值或IP地址那么它们就会被选举为该分组的活动网关。

在Speak阶段备份网关与活动网关进行报文交换。在此阶段完成后主网关就过渡到活动状态同时备份网关过渡到备份状态。备份状态表明该网关已准备好在主网关阵亡时接过活动网关角色同时活动状态表明该网关已准备好进行数据包的转发。

以下输出给出了在一台刚开启HSRP的网关上debug standby命令中显示的状态变化:

R2#debug standby
HSRP debugging is on
R2#
R2#conf t
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line.
End with CNTL/Z.
R2(config)#logging con
R2(config)#int f0/0
R2(config-if)#stand 1 ip 192.168.1.254
R2(config-if)#
*Mar 1 01:21:55.471: HSRP: Fa0/0 API 192.168.1.254 is not an HSRP address
*Mar 1 01:21:55.471: HSRP: Fa0/0 Grp 1 Disabled -> Init
*Mar 1 01:21:55.471: HSRP: Fa0/0 Grp 1 Redundancy “hsrp-Fa0/0-1” state Disabled -> Init
*Mar 1 01:22:05.475: HSRP: Fa0/0 Interface up
...
[Truncated Output]
...
*Mar 1 01:22:06.477: HSRP: Fa0/0 Interface min delay expired
*Mar 1 01:22:06.477: HSRP: Fa0/0 Grp 1 Init: a/HSRP enabled
*Mar 1 01:22:06.477: HSRP: Fa0/0 Grp 1 Init -> Listen
*Mar 1 01:22:06.477: HSRP: Fa0/0 Redirect adv out, Passive, active 0 passive 1
...
[Truncated Output]
...
*Mar 1 01:22:16.477: HSRP: Fa0/0 Grp 1 Listen: d/Standby timer expired (unknown)
*Mar 1 01:22:16.477: HSRP: Fa0/0 Grp 1 Listen -> Speak
...
[Truncated Output]
...
*Mar 1 01:22:26.478: HSRP: Fa0/0 Grp 1 Standby router is local
*Mar 1 01:22:26.478: HSRP: Fa0/0 Grp 1 Speak -> Standby
*Mar 1 01:22:26.478: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Standby
*Mar 1 01:22:26.478: HSRP: Fa0/0 Grp 1 Redundancy “hsrp-Fa0/0-1” state Speak -> Standby

###HSRP地址分配

HSRP Addressing

在本课程模块的早期已了解到HSRP版本1中用于虚拟IP地址的二层地址将是一个由000.0C07.ACxx构成的虚拟MAC地址其中的xx就是该HSRP组的编号且是基于相应接口的。而在HSRP版本2中使用了一个新的MAC地址范围0000.0C9F.F0000000.0C9F.FFFF, 作为虚拟网关IP地址的虚拟MAC地址。

而在某些情况下我们并不期望使用这些默认的地址范围。比如在连接到一个配置了端口安全的交换机端口的某个路由器接口上配置了好几个HSRP组时。在此情况下该路由器就应对不同HSRP组使用不同的MAC地址那么结果就是这些MAC地址都需要满足accommodate交换机端口的安全配置。该项配置在每次将HSRP组加入到路由器接口时都必须进行修改否则就会触发端口安全冲突otherwise, a port security violation would occur

为解决此问题思科IOS软件允许管理员将HSRP配置为使用其所配置上的物理接口的实际MAC地址。那么结果就是一个单独的MAC地址为所有HSRP组所使用也就是活动网关所使用的MAC地址且在每次往连接到这些交换机上的路由器添加HSRP组的时候无需对端口安全配置进行修改。此操作是通过使用接口配置命令standby use-bia命令完成的。下面的输出演示了命令show standby该命令给出了一个配置了两个不同HSRP组的网关接口的信息

Gateway-1#show standby
FastEthernet0/0 - Group 1
    State is Active
        8 state changes, last state change 00:13:07
    Virtual IP address is 192.168.1.254
    Active virtual MAC address is 0000.0c07.ac01
        Local virtual MAC address is 0000.0c07.ac01 (v1 default)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 2.002 secs
    Preemption disabled
    Active router is local
    Standby router is 192.168.1.2, priority 100 (expires in 9.019 sec)
    Priority 105 (configured 105)
    IP redundancy name is “hsrp-Fa0/0-1” (default)
FastEthernet0/0 - Group 2
    State is Active
        2 state changes, last state change 00:09:45
    Virtual IP address is 172.16.1.254
    Active virtual MAC address is 0000.0c07.ac02
        Local virtual MAC address is 0000.0c07.ac02 (v1 default)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 2.423 secs
    Preemption disabled
    Active router is local

在上面的输出中由于是默认的HSRP版本那么HSRP Group 1的虚拟MAC地址就是0000.0c07.ac01同时HSRP组2的就是0000.0c07.ac02。这就意味着连接此网关的交换机端口要学习三个不同地址:物理接口Fastethernet0/0的实际或出厂地址、HSRP Group 1的虚拟MAC地址以及HSRP组2的虚拟MAC地址。

下面的输出演示了如何将HSRP配置为使用该网关接口的实际MAC地址作为不同HSRP分组的虚拟MAC地址

Gateway-1#conf
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
Gateway-1(config)#int f0/0
Gateway-1(config-if)#standby use-bia
Gateway-1(config-if)#exit

基于上面的输出中的配置,命令show standby会反应出HSRP组的新MAC地址如下面的输出所示:

Gateway-1#show standby
FastEthernet0/0 - Group 1
    State is Active
        8 state changes, last state change 00:13:07
    Virtual IP address is 192.168.1.254
    Active virtual MAC address is 0013.1986.0a20
        Local virtual MAC address is 0013.1986.0a20 (bia)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 2.756 secs
    Preemption disabled
    Active router is local
    Standby router is 192.168.1.2, priority 100 (expires in 9.019 sec)
    Priority 105 (configured 105)
    IP redundancy name is “hsrp-Fa0/0-1” (default)
FastEthernet0/0 - Group 2
    State is Active
        2 state changes, last state change 00:09:45
    Virtual IP address is 172.16.1.254
    Active virtual MAC address is 0013.1986.0a20
        Local virtual MAC address is 0013.1986.0a20 (bia)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 0.188 secs
    Preemption disabled
    Active router is local
    Standby router is unknown
    Priority 105 (configured 105)
    IP redundancy name is "hsrp-Fa0/0-2" (default)

那么这里两个HSRP组所用的MAC地址都是0013.1986.0a20就是分配给物理网关接口的MAC地址了。这在下面的输出中有证实

Gateway-1#show interface FastEthernet0/0
FastEthernet0/0 is up, line protocol is up
    Hardware is AmdFE, address is 0013.1986.0a20 (bia 0013.1986.0a20)
    Internet address is 192.168.1.1/24
    MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
        reliability 255/255, txload 1/255, rxload 1/255
    Encapsulation ARPA, loopback not set
...
[Truncated Output]

注意除了将HSRP配置为使用出厂地址the burnt-in address, BIA, 管理员亦可经由接口配置命令standby [number] mac-address [mac]静态指定虚拟网关要使用的MAC地址。但一般不会这样做因为这可能会导致交换网络中的重复MAC地址这就会引起严重的网络故障甚至造成网络中断。

###HSRP的明文认证

HSRP Plain Text Authentication

HSRP报文默认以明文密钥字串(the plain text key string)cisco发送以此作为一种对HSRP成员HSRP peers进行认证的简单方式。如报文中的密钥字串与HSRP成员路由器上所配置的密钥匹配报文就被接受。否则HSRP就忽略那些未认证的报文。

明文密钥提供了最低的安全性因为使用诸如Wireshark或Ethereal这样的简单抓包软件它们就可被抓包捕获。下图34.13显示了HSRP报文中所使用的默认命令认证密钥

查看默认HSRP明文密钥 图 34.13 -- 查看HSRP默认明文密钥

因为明文认证提供很低的安全性那么下面介绍的消息摘要5message digest 5, MD5, 就是推荐的HSRP认证方式了。

###HSRP MD5 认证

这并非CCNA题目放在这里是为了完整性及那些要实际从事网络方面工作的人的考虑。

消息摘要5认证通过生成一个多播HSRP协议数据包的HSRP部分的摘要提供了HSRP比起明文认证更强的安全性。在采行了MD5认证后就允许各个HSRP组成员使用一个密钥来生成一个加密了的MD5散列值并作为发出数据包的一部分。而接收到的HSRP数据包也会产生一个加密的散列值如果接收到的数据包的加密散列值与MD5生成值不匹配接收路由器就会忽略此数据包。

既可以通过在配置使用一个密钥字串直接提供MD5散列值的密钥也可以通过密钥链a key chain来提供到。本课程模块稍后会对这两种方式进行讲解。在应用了明文或是MD5认证时在出现以下情形之一后网关都会拒绝那些HSRP数据包

  • 路由器与收到的数据包认证方案不一致时
  • 路由器与收到的数据包的MD5摘要不同时
  • 路由器与收到的数据包的明文认证字串不一致时

###HSRP接口跟踪

HSRP Interface Tracking

HSRP允许管理员对当前活动网关上的接口状态进行追踪所以在有接口失效时网关就会将其优先级降低一个特定数值默认为10, 这样就可以让其它网关接过HSRP组的活动网关角色。此概念在下图34.14中进行了演示:

HSRP接口追踪 图 34.14 -- HSRP 接口追踪

参考图34.14, 对于VLAN 150, 已在Switch 1及Switch 2上开启了HSRP。而基于当前的优先级配置Switch 1有着优先级数值105, 已被选举为该VLAN的主交换机。Switch 1与Switch 2都通过其各自的Gigabitethernet5/1接口,分别连接到两台路由器。这里假定这两台与其它外部网络相连,比如互联网。

在没有HSRP接口跟踪功能时如果Switch 1与R1之间的Gigabitethernet5/1接口失效那么Switch 1仍将保持其主网关状态。此时就必须将所有接收到的、比如前往互联网的数据包使用Switch 1本身与Switch 2之间的连接转发到Switch 2上。这些数据包将会通过R2转发到它们本来的目的地。这就造成了网络中的次优流量路径。

HSRP接口跟踪功能令到管理员可将HSRP配置为追踪某个接口的状态并据此将活动网关的优先级降低一个默认10的值亦可指定该降低值。同样参考图34.14, 如果在Switch 1上采用默认值配置了HSRP接口跟踪那么就令到该交换机对接口Gigabitethernet5/1的状态进行跟踪在那个接口失效后Switch 1就会将其该HSRP组的优先级降低10, 得到一个95的优先级。

又假设Switch 2上配置了抢占preempt在此情形下是强制性要配置的那么它就会注意到自己有着更高的优先级100比95, 就会执行一次篡位结果该HSRP组的活动网关角色。

真实场景应用 在生产网络中思科Catalyst交换机还支持增强对象跟踪Enhanced Object Tracking, EOT功能可用于所有FHRP也就是HSRP、VRRP及GLBP上。增强对象跟踪功能令到管理员可以将交换机配置为对以下参数进行跟踪

  • 某个接口的IP路由状态The IP routing state of an interface
  • IP路由的可达性IP route reachablity
  • IP路由度量值阈值The threshold of IP route metrics
  • IP SLA 的运作IP SLA operations(Service-Level Agreements, 服务等级协议)

对于这些FHRPs比如HSRP可被配置为对这些增强对象进行跟踪以令到在部署FHRP失效情形时具有更大的灵活性。比如在采用EOT时可将活动HSRP路由器配置为在网络或主机路由不可达时也就是出现在路由表中降低其优先级某个数值。EOT功能是超出了CCNA考试要求的在配置示例中不会涉及。

###HSRP的负载均衡

HSRP允许管理员在一些物理接口上配置多个HSRP组以实现负载均衡。默认情况下在两台网关之间配置HSRP时在任何时期都只有一台网关对那个组的流量进行转发。这样就导致了备份网关链路上带宽的浪费。这在下图34.15中进行了演示:

不具备HSRP负载均衡的一个网络 图 34.15 -- 不具备HSRP负载均衡的一个网络

在图34.15中在Switch 1和Switch 2上配置了两个HSRP组。Switch 1已被配置为两个组的活动网关--这是基于其有着较高的优先级值。Switch 1与Switch 2都相应的连接到了路由器R1和R2上。这两台路由器都通过各自的T3/E3线路连接到互联网。因为Switch 1是两个HSRP组的活动网关它就会转发两个组的流量直到其失效后Switch 2才会结果活动网关的角色。

尽管这样做满足了网络的冗余需求但也造成R2上昂贵的T3/E3线路的空闲除非在Switch 2成为活动网关并开始经由它来转发流量。自然这就出现了一定数量带宽的浪费。

而通过配置多个HSRP组每个组使用不同的活动网关管理员就可以有效的防止不必要的资源浪费并在Switch 1与Switch 2之间实现负载均衡。这在下图34.16中进行了演示:

一个采用HSRP实现负载均衡的网络 图 34.16 -- 一个采用HSRP实现负载均衡的网络

这里通过将Switch 1配置为HSRP Group 1的活动网关将Switch 2配置为HSRP组2的活动网关管理员就令到来自两个不同组的流量在Switch 1与Switch 2之间实现了负载均衡并最终通过这两条专用T3/E3广域网连接。同时每台交换机又互为对方HSRP组的备份。比如在Switch 2失效时Switch 1就将接过HSRP组2活动网关的角色相反亦然。

真实世界的部署

在生产网络中需要记住多个HSRP组的建立会造成网关上CPU使用率的上升以及有HSRP报文交换所造成的网络带宽占用的增加。诸如Catalyst 4500及6500系列的思科Catalyst交换机提供了对HSRP客户组HSRP client groups的支持。

在前面的小节中了解到HSRP允许在单个的网关接口上配置多个HSRP组。而在网关接口上允许许多不同HSRP组的主要问题就是这样做会导致网关上CPU使用率的上升并也因为HSRP每隔3秒的Hello数据包而潜在可能增加网络流量。

为解决这个潜在的问题HSRP就还允许客户或从组的配置the configuration of client or slave groups。这些组是一些简单的HSRP组它们跟随某个主HSRP组a master HSRP group而不参与HSRP选举。这些客户或从组跟随主组的允许与状态因此它们本身无需周期性地交换Hello数据包。这样在运用多个HSRP组时降低CPU与网络的使用。

但是为了刷新那些交换机的虚拟MAC地址这些客户组仍然要发送周期性的报文。不过与主组的协议选举报文相比这些刷新报文是以低得多的频率发送的。尽管HSRP客户组的配置是超出CCNA考试要求的下面的输出还是演示两个客户组的配置这两个客户组被配置为跟随主组HSRP Group 1, 该主组又被命名为SWITCH-HSRP组:

Gateway-1(config)#interface vlan100
Gateway-1(config-if)#ip address 192.168.1.1 255.255.255.0
Gateway-1(config-if)#ip address 172.16.31.1 255.255.255.0 secondary
Gateway-1(config-if)#ip address 10.100.10.1 255.255.255.0 secondary
Gateway-1(config-if)#standby 1 ip 192.168.1.254
Gateway-1(config-if)#standby 1 name SWITCH-HSRP
Gateway-1(config-if)#standby 2 ip 172.16.31.254
Gateway-1(config-if)#standby 2 follow SWITCH-HSRP
Gateway-1(config-if)#standby 3 ip 10.100.10.254
Gateway-1(config-if)#standby 3 follow SWITCH-HSRP
Gateway-1(config-if)#exit

在上面的输出配置中,Group 1 被配置为了主HSRP组 同时Group 2Group 3被配置为了客户组或叫做从组。

###网关上HSRP的配置

在网关上配置HSRP需要完成以下步骤

  1. 使用接口配置命令ip address [address] [mask] [secondary]配置网关接口的IP地址及掩码。

  2. 通过接口配置命令standby [number] ip [virtual address] [secondary], 在网关接口上建立一个HSRP组以及给该HSRP组指派虚拟IP地址。关键词keyword[secondary]将该IP地址指定为指定组的第二网关IP地址。

  3. 这里作为可选项,使用接口配置命令standby [number] name [name], 为HSRP组指派一个名称。

  4. 作为可选项,如打算对活动网关的选举施加影响,就要经由接口配置命令standby [number] priority [value],对组优先级进行配置。

本章中的后续HSRP配置输出将建立在下图34.17中的网络:

HSRP示例配置的拓扑 图 34.17 -- HSRP示例配置的拓扑

注意:这里假定在VTP-Server-1VTP-Server-2之间的VLAN与中继已有配置妥当同时交换机之间可以经由VLAN172 ping通。为简短起见,这些配置已在配置示例中省略。

VTP-Server-1(config)#interface vlan172
VTP-Server-1(config-if)#ip address 172.16.31.1 255.255.255.0
VTP-Server-1(config-if)#standby 1 ip 172.16.31.254
VTP-Server-1(config-if)#standby 1 priority 105
VTP-Server-1(config-if)#exit
VTP-Server-2(config)#interface vlan172
VTP-Server-2(config-if)#ip address 172.16.31.2 255.255.255.0
VTP-Server-2(config-if)#standby 1 ip 172.16.31.254
VTP-Server-2(config-if)#exit

注意:这里应用到VTP-Server-2的HSRP配置并没有手动指派优先级数值。默认情况下HSRP将使用一个100的优先级值以允许带有优先级值105的VTP-Server-1在选举中胜选从而被选举为该HSRP组的主网关。

在配置应用后,就可使用show standby [interface brief]命令对HSRP的配置进行验证。下面的输出对show standby brief命令进行了展示:

VTP-Server-1#show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp      Pri P State   Active  Standby         Virtual IP
Vl172       1        105   Active  local   172.16.31.2     172.16.31.254
VTP-Server-2#show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp      Pri P State   Active  Standby         Virtual IP
Vl172       1        100   Standby local   172.16.31.1     172.16.31.254

基于此种配置,只有在VTP-Server-1失效时,VTP-Server-2才会成为活动网关。此外因为没有配置抢占preemption那么即使在VTP-Server-1重新上线时就算在该HSRP组中其比起VTP-Server-2有着更高的优先级,它仍然无法强制性地接过活动网关角色。

###HSRP抢占的配置

Configuring HSRP Preemption

抢占特性令到某台网关在本身比当前活动网关有着更高优先级时,强制性地接过活动网关的角色。使用命令standby [number] preempt命令来配置HSRP抢占特性。下面的输出演示了在VTP-Server-1上的此项配置:

VTP-Server-1(config)#interface vlan172
VTP-Server-1(config-if)#standby 1 preempt

这里同样使用命令show standby [interface [name] |brief], 来验证在某个网关上已有配置抢占特性。是通过下面的show standby brief命令输出中的“P”字样演示的

VTP-Server-1#show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp Pri  P State   Active  Standby         Virtual IP
Vl172       1   105  P Active  local   172.16.31.2     172.16.31.254

有了这个修改,在因VTP-Server-1失效而导致VTP-Server-2接过VLAN172的活动网关角色时一旦VTP-Server-1再度上线其就将强制性再度接手那个角色。在配置抢占特性时思科IOS软件允许指定在交换机抢占及强制重新获得活动网关角色之前的时间间隔。

默认下抢占是立即发生的。但可使用接口配置命令standby [number] preempt delay [minimum|reload|sync]对此时间间隔进行修改。关键字[minimum]用于指定在抢占前等待的最短时间。下面的输出展示了如何配置在抢占前等待30秒钟

VTP-Server-1(config)#interface vlan172
VTP-Server-1(config-if)#standby 1 preempt delay minimum 30

此配置可使用命令show standby [interface]进行验证。下面的输出对此进行了演示:

VTP-Server-1#show standby vlan172
Vlan172 - Group 1
    State is Active
        5 state changes, last state change 00:00:32
Virtual IP address is 172.16.31.254
Active virtual MAC address is 0000.0c07.ac01
    Local virtual MAC address is 0000.0c07.ac01 (v1 default)
Hello time 3 sec, hold time 10 sec
    Next hello sent in 0.636 secs
Preemption enabled, delay min 30 secs
Active router is local
Standby router is 172.16.31.2, priority 100 (expires in 8.629 sec)
Priority 105 (configured 105)
IP redundancy name is “hsrp-Vl172-1” (default)

而关键字[reload]用于指定网关在其重启后需要等待的时间the [reload] keyword is used to specify the amount of time the gateway should wait after it initiates following a reload。关键字[sync]是与IP冗余客户端配合使用的。此配置超出了CCNA考试要求但在生产环境中是十分有用的因为在出现某个正在被跟踪的抖动接口或类似情况下此配置可以阻止不必要的角色切换this configuration is beyond the scope of the CCNA exam requirements but is very useful in production environments because it prevents an unnecessary change of roles in the case of a flapping interface that is being tracked, or similar activity

###配置HSRP接口跟踪

HSRP接口跟踪特性令到管理员可以将HSRP配置为追踪接口状态从而将当前优先级降低一个默认数值10或指定数值以允许另一网关接过指定HSRP组的主网关角色。

在下面的输出中,VTP-Server-1被配置为对连接到假想WAN路由器的接口Gigabitethernet5/1的状态,进行跟踪。在那个接口状态转变为down该网关就将其优先级值降低10默认的:

VTP-Server-1#show standby vlan172
Vlan172 - Group 1
    State is Active
        5 state changes, last state change 00:33:22
    Virtual IP address is 172.16.31.254
    Active virtual MAC address is 0000.0c07.ac01
        Local virtual MAC address is 0000.0c07.ac01 (v1 default)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 1.085 secs
    Preemption enabled
    Active router is local
    Standby router is 172.16.31.2, priority 100 (expires in 7.616 sec)
    Priority 105 (configured 105)
    IP redundancy name is “hsrp-Vl172-1” (default)
    Priority tracking 1 interfaces or objects, 1 up:
    Interface or object          Decrement  State
    GigabitEthernet5/1           10         Up

而要将该网关降低值配置为比如50, 就可以执行命令standby [name] track [interface] [decrement value], 如下面的输出所示:

VTP-Server-1(config)#interface vlan172
VTP-Server-1(config-if)#standby 1 track GigabitEthernet5/1 50

此项配置可使用命令show standby [interface]进行验证。下面对此进行了演示:

VTP-Server-1#show standby vlan172
Vlan172 - Group 1
    State is Active
        5 state changes, last state change 00:33:22
    Virtual IP address is 172.16.31.254
    Active virtual MAC address is 0000.0c07.ac01
    Local virtual MAC address is 0000.0c07.ac01 (v1 default)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 1.085 secs
    Preemption enabled
    Active router is local
    Standby router is 172.16.31.2, priority 100 (expires in 7.616 sec)
    Priority 105 (configured 105)
    IP redundancy name is “hsrp-Vl172-1” (default)
    Priority tracking 1 interfaces or objects, 1 up:
    Interface or object          Decrement  State
    GigabitEthernet5/1           50         Up

###配置HSRP的版本

如同在本课程模块先前指出的那样默认当HSRP开启时是启用的版本1。但可通过接口配置命令standby version [1|2]来手动开启HSRP版本2。下面的输出演示了HSRP版本2的配置

VTP-Server-1(config)#interface vlan172
VTP-Server-1(config-if)#standby version 2

使用命令show standby [interface],可对此配置进行验证。下面的输出对此进行了演示:

VTP-Server-1#show standby vlan172
Vlan172 - Group 1 (version 2)
    State is Active
        5 state changes, last state change 00:43:42
    Virtual IP address is 172.16.31.254
    Active virtual MAC address is 0000.0c9f.f001
        Local virtual MAC address is 0000.0c9f.f001 (v2 default)
    Hello time 3 sec, hold time 10 sec
        Next hello sent in 2.419 secs
    Preemption enabled
    Active router is local
    Standby router is 172.16.31.2, priority 100 (expires in 4.402 sec)
    Priority 105 (configured 105)
    IP redundancy name is “hsrp-Vl172-1” (default)

而HSRP的开启就自动将HSRP所使用的MAC地址范围0000.0C07.ACxx,改变为0000.0C9F。F0000000.0C9F.FFFF。因此务必要记住这将导致生产网络中的一些数据包丢失因为网络中的设备必须要掌握到网关的新MAC地址。这类导致包丢失的变动都推荐在维护窗口或几乎的断网窗口来进行。

##虚拟路由器冗余协议

Virtual Router Redundancy Protocol

虚拟路由器冗余协议Virtual Router Redundancy Protocol, VRRP是一个动态地将一个或多个网关的职责指派给LAN上的VRRP路由器的网关选举协议a gateway election protocol, 其令到在诸如以太网这样的某个多路访问网段a Multi-Access segment上的数台路由器能够使用同一个虚拟IP地址作为它们的默认网关。

VRRP以与HSRP类似的方式运作但与HSRP不同VRRP是一个定义在RFC 2338中的开放标准RFC 2338 在RFC 3768中被废弃。VRRP将通告发送到多播目的地址224.0.0.18VRRP, 使用的是IP协议编号112。在数据链路层通告是从主虚拟路由器the master virtual router的MAC地址00-00-5e-00-01xx发出的,这里的"xx"表示了两位十六进制的组编号。这在下图34.18中进行了演示:

VRRP的多播地址 图 34.18 -- VRRP的多播地址VRRP Multicast Addresses

注意:这里的协议编号是十六进制形式的。而十六进制值0x70就等于是进制的112。与此类似数据链路层目的地址01-00-5e-00-00-12中的十六进制值12就是十进制值18也就是224.0.0.18了。如你仍对这些数值是如何转换的没有掌握那么本CCNA手册的十六进制到十进制转换在网上是很详细的。

真是世界的部署

与HSRP不同VRRP并没有允许网关使用出厂地址Burnt-in Address, BIA或静态配置的地址作为VRRP组的MAC地址的选项。因此在带有多于VRRP组的生产网络中对在某个特定接口上应用多个MAC地址的理解掌握尤其是当部署了诸如端口安全这样的特性时 是重要的。记得要着重于整体上;否则就会发现,尽管有正确配置,一些特性或协议也不会如预期那样跑起来。

一个VRRP网关是在一台或多台连接到LAN的路由器上配置用于运行VRRP协议的A VRRP gateway is configured to run the VRRP protocol in conjunction with one or more other routers attached to a LAN。在VRRP配置中一台网关被选举为主虚拟路由器the master router, 而其它网关则扮演在主虚拟路由器失效时的备份虚拟路由器。下图34.19对此概念进行了演示:

VRRP的基本运作 图 34.19 -- VRRP的基本运作

###VRRP的多虚拟路由器支持特性

可在某个接口上配置多大255个的虚拟路由器。而某个路由器接口实际能支持的虚拟路由器数目由以下因素决定

  • 路由器的处理能力Router processing capability

  • 路由器的内存容量Router memory capability

  • 路由器接口对多MAC地址的支持情况Router interface support of multiple MAC addresses

###VRRP的主路由器选举

VRRP Master Router Election

VRRP默认使用优先级值来决定哪台路由器将被选举为主虚拟路由器。默认的VRRP优先级值为100; 但此数值可被手工修改为一个1到254之间的数值。而如多台网关有着相同的优先级数值那么有着最高IP地址的网关将被选举为主虚拟路由器同时有着较低IP地址的那台就成为备份虚拟路由器。

加入有多于两台的路由器被配置为VRRP组的组成部分那么备份虚拟路由器中有着第二高优先级的就会在当前主虚拟路由器失效或不可用时被选举为主虚拟路由器。又假如那些备份虚拟路由器又有着相同的优先级那么这些备份路由器中有着最高IP地址的那台将被选举为主路由器。下图34.20对此概念进行了演示:

VRRP主虚拟路由器及备份虚拟路由器的选举 图 34.20 -- VRRP主虚拟路由器及备份虚拟路由器的选举

图34.20演示了一个采用了VRRP作为网关冗余的网络。主机1与主机2都配置了默认192.168.1.254作为默认网关,此网关就是配置在交换机VRRP-1VRRP-2VRRP-3给VRRP group 192的虚拟IP地址。

交换机VRRP-1已被配置了优先级值110, VRRP-2的是105, VRRP-3的是默认VRRP优先级100。基于此种配置VRRP-1就被选举为主虚拟路由器,同时VRRP-2VRRP-3就成为备份虚拟路由器。

VRRP-1失效时,因为VRRP-2有着比起VRRP-3更高的优先级,所以它就成为主虚拟路由器。但如果VRRP-2VRRP-3有着相同优先级的话,VRRP-3将被选举为主虚拟路由器因为它有着更高的IP地址。

###VRRP的抢占

与HSRP不同VRRP的抢占特性是默认开启的因此无需管理员为开启此功能而进行显式的配置。但此功能可经由使用接口配置命令no vrrp [number] preempt进行关闭。

###VRRP的负载均衡

VRRP允许以与HSRP类似的方式实现负载均衡。比如在一个于某台网关上配置了多个虚拟路由器VRRP组的网络中一个接口可作为某个虚拟路由器VRRP组的主接口虚拟路由器同时又可作为另一或更多虚拟路由器VRRP组的备份虚拟路由器。下图34.21对此进行了演示:

VRRP的负载均衡 图 34.21 -- VRRP的负载均衡

###VRRP的版本

默认情况下当在某台运行思科IOS软件的网关上配置了VRRP时开启的是VRRP版本2见下图。版本2正是默认的以及当前的VRRP版本。这里并不能如同在HSRP中那样改变版本因为并没有VRRP版本1的标准。

注意: 在本手册编写过程中为IPv4与IPv6定义VRRP的版本3正处于草案阶段且并未标准化。

VRRP版本2的数据包 图 34.22 -- VRRP版本2的数据包

###VRRP的各种通告

VRRP Advertisements

主虚拟路由器将通告发送给同一VRRP组中的其它VRRP路由器。通告就主虚拟路由器的优先级与状态进行通信。VRRP的通告是以IP数据包进行封装的并被发送到在图34.18中所演示的那个指派给该VRRP组的IPv4多播地址。通告默认以每秒的频率发送不过此时间间隔是可被用户配置的因而可以改变。同时备份虚拟路由器收听主虚拟路由器通告的间隔也可进行配置。