17.1 客户端冗余问题
在思科路由器上默认启用了代理地址解析协议(代理ARP),让主机能够获取网关路由器的MAC地址,而网关路由器能够为主机转发分组。如果响应ARP请求的路由器发生故障,源主机将继续把分组发送到原来的MAC地址。然后,由于相应的路由器出现了故障,这将导致通信超时。
超时后,ARP缓存中的代理ARP MAC地址将过期。接下来,主机将发送新的ARP请求,并获得另一台代理ARP路由器的MAC地址。然而,在故障切换期间,主机无法向本地网络外部发送分组。这正是冗余协议的用武之地。
17.2 第一跳冗余协议简介
第一跳冗余协议(First Hop Redundancy Protocol, FHRP)让你能够对多台物理路由器进行配置,让它们就像是一台逻辑路由器。第一跳指的 是默认路由器,这是分组必须经由的第一台路由器(第一跳)。
冗余协议向所有的客户端提供一台虚拟路由器。虚拟路由器有虚拟IP地址和虚拟MAC地址。在每台主机上都将默认网关指定为虚拟IP地址。每当主机发送ARP请求时,都将返回虚拟地址。主机不知道也不关心实际转发数据的是哪台物理路由器。
冗余协议负责分配物理路由器的角色:哪台处于活动状态,主动地转发数据;哪台处于备用状态,以防活动路由器出现故障,活动路由器出现故障时将切换到备用路由器,备用路由器将使用虚拟路由器的虚拟IP地址和MAC地址。主机无需更改默认网关信息,就能继续传输数据。
17.3 热备用路由器协议
HSRP是一种思科专用协议,可用于大部分思科路由器和多层交换机。其缺点在于,只有一台路由器处于活动状态,其他路由器都处于备用状态。仅当活动路由器出现故障时才会用上,因为成本效益和效率都不高。
HSRP不同时使用备用组中的多台路由器。备用组至少需要包含两台路由器,其中的主要角色是活动路由器和备用路由器。它们使用组播Hello消息进行通信。Hello消息让路由器能够进行一切必要的交流,包括完成选举(即决定由谁充当活动路由器以及由谁充当备用路由器)所需的信息,还包含完成故障切换所需的重要信息。如果备用路由器没有收到活动路由器的Hello分组,它将取而代之,承担活动路由器的职责。
17.3.1 虚拟MAC地址
虚拟IP配置起来不难,只需将其指定为主机所属子网中的唯一IP地址,但需要伪造一个MAC地址。在HSRP MAC地址中,只有很小一部分是可变的。下面通过一个示例(0000.0c07.ac0a)来说明HSRP MAC地址是什么样子的。
- 前24位(0000.0c)是制造商ID。HSRP是一种思科协议,因此该ID为思科的UID.
- 接下来的16位(07.ac)是著名的HSRP ID。这部分是思科指定的,通过它很容易识别HSRP MAC地址。
- 只有最后8位(0a)是可变的,它表示HSRP组号,由你指定。这里组号是10,转换为十六进制(0a)后放到了MAC地址末尾。
17.3.2 HSRP定时器
HSRP定时器用于判断路由器之间能否正常通信,在活动路由器出现故障时,让备用路由器接管工作,包括Hello定时器,保持定时器,活动定时器和备用定时器。
- Hello定时器 指定了各台路由器发送Hello消息的间隔,默认是3秒。Hello消息指出了路由器的状态,这很重要,因为状态决定了路由器扮演的组角色,而角色决定了路由器将做什么。
- 保持定时器 备用路由器根据保持定时器判断活动路由器是否已经离线或无法通信。默认情况下,保持定时器为10秒,大约是Hello定时器默认值的3倍。如果修改了其中一个参数,建议按1:3比例修改另一个参数。可避免只要通信出现短暂的中断,备用路由器就接管活动路由器的工作。
- 活动定时器 用于监视活动路由器的状态。每当备用组中的路由器收到来自活动路由器的Hello分组时,该定时器都被重置。该定时器是根据HSRP Hello消息中的保持时间设置的。
- 备用定时器 用于监视备用路由器的状态。每当备用组中的路由器收到来自活动路由器的Hello分组时,该定时器都被重置。该定时器是根据Hello消息中的保持时间设置的。
17.3.3 组角色
在备用组中,每台路由器都扮演特定的角色,执行特定的功能。
虚拟路由器 它并非物理实体,只是定义了物理路由器之一扮演的角色。充当虚拟路由器的物理路由器就是活动路由器。虚拟路由器由独立的IP地址和MAC地址标识,分组将被发送给这些地址。
活动路由器 它接收发送给虚拟路由器的数据,将其路由到目的地。它接收发送给虚拟路由器MAC地址和自己物理MAC地址的所有数据。它也对发送给虚拟路由器IP地址的所有ARP请求做出响应。
备用路由器 负责监视HSRP组的状态,在活动路由器出现故障或失去联系时迅速接管分组转发职责。活动路由器和备用路由器都发送Hello消息,将其角色和状态告知组中的其他所有路由器。
其他路由器 除上述三种路由器外,HSRP组还可包含其他路由器。这些路由器是HSRP组的成员,但未承担活动路由器和备用路由器等主要角色。这些路由器监视活动路由器和备用路由器发送的Hello消息,确保它们所属的HSRP组有活动路由器和备用路由器。这些路由器根据Hello定时器值发送“发言”(Speak)消息,将其选举资历告知其它路由器。
接口跟踪 启用了HSRP的路由器可跟踪外部接口的状态,并在需要时更换活动路由器,从而避免内部主机无法连接上游网络。在路由器的HSRP接口上,默认配置的优先级为100,增大优先级可让路由器优先成为活动路由器。被跟踪的接口出现故障时,路由器的优先级将降低。
17.3.4 配置和验证HSRP
在备用组的路由器上进行如下配置设置
R3(config-if)#standby 1 ip 10.1.1.254 //设置备用组号1和虚拟IP
R3(config-if)#standby 1 name TEST //设置备用组名字
R3(config-if)#standby 1 priority 110 //设置路由器的优先级
R3#show standby brief //查看备用组简要
P indicates configured to preempt.
|
Interface Grp Pri P State Active Standby Virtual IP
Et0/0 1 110 Standby 10.1.1.4 local 10.1.1.254
R3#show standby //查看备用组详情
Ethernet0/0 - Group 1
State is Standby
4 state changes, last state change 00:11:01
Virtual IP address is 10.1.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.656 secs
Preemption disabled
Active router is 10.1.1.4, priority 100 (expires in 9.184 sec)
Standby router is local
Priority 110 (configured 110)
Group name is "TEST" (cfgd)
debug standby
//开启debug命令
第二台路由器也进行相同的配置,但是不调整默认优先级。仅当两台路由器同时启动时,优先级才会发生作用。
HSRP并不进行真正的负载均衡,但通过配置可让多台路由器分别成为不同VLAN的活动路由器。
17.4 虚拟路由器冗余协议
17.4.1 VRRP和HSRP比较
- VRRP是IEEE制定的路由器冗余标准(RFC238),而HSRP是思科专用协议。
- 虚拟路由器表示一组路由器,这组路由器被称为VRRP组。
- 在VRRP中,活动路由器被称为主虚拟路由器。
- 主虚拟路由器与虚拟路由器组的IP地址可能相同。
- 可以有多台路由器充当备用路由器。
- 以太网,快速以太网和吉比特以太网接口都支持VRRP,多协议标签交换(MPLS)虚拟专用网(VPN)和VLAN也支持VRRP。
17.4.2 VRRP的冗余属性
- 为实现冗余,VRRP可使用路由器的实际IP地址,也可以使用VRRP组成员共享的虚拟IP地址。
- 如果使用的是实际IP地址,使用该IP地址的路由器将成为主路由器。
- 如果使用的是虚拟IP地址,优先级最高的路由器将成为主路由器。
- VRRP组包含一台主路由器以及一台或多台备用路由器。
- VRRP支持多台虚拟路由器分担负载。
17.5 网关负载均衡协议
虽然HSRP和VRRP都支持基于子网的负载均衡,提高了网关的弹性,但并未使用冗余组中处于备用模式的设备的上行带宽。只有活动路由器负载转发发送给虚拟MAC地址的数据,备用路由器的资源未得到充分利用。使用这些协议时,通常创建多个组,可指定多个默认网关,从而实现一定程度的负载均衡,但这种配置增加了管理负担。
思科开发了一种专用协议:网关负载均衡协议(GLBP),它支持自动选举以及同时使用多个网关,还能自动在这些网关之间进行故障切换。
17.5.1 GLBP组角色
GLBP包含如下组角色
- 活动虚拟网关(AVG):GLBP组成员选举一个网关,由它充当AVG。其他成员为后援,在AVG不可用时接替它。AVG负责给GLBP组的每一个成员分配不同的虚拟MAC地址。
- 活动虚拟转发器(AVF):每个网关都负责对发送给其虚拟MAC地址(由AVG分配)的分组进行转发。这些网关被称为相应虚拟MAC地址的AVF。
GLBP组成员也使用Hello消息相互通信。这种消息每隔3秒钟发送一次,其目标地址为组播地址224.0.0102,目标端口为UDP端口3222。
17.5.2 GLBP功能
- 负载分担 可配置GLBP,让多台路由器分担来自LAN客户端的流量,顾名思义,负载分担指的是在可用路由器之间较为均匀地分配负载。
- 多台虚拟路由器 GLBP支持在每个路由器物理接口上最多配置1024台虚拟路由器(GLBP组),而每个GLBP组最多可包括4个虚拟转发器。
- 抢占 GLBP的冗余方案支持优先级更高的备用虚拟网关抢占AVG角色。转发器角色抢占的原理与此类似,但这种抢占基于权重而非优先级,而且默认启用。路由器只能在选举期间取代其它路由器,要在设备未出现故障时重新选举,唯一的途径就是通过抢占。
- 有效利用资源 GLBP让组中的任何路由器都可充当备用路由器,这使得不需要专用备用路由器,因为所有所有路由器都可转发网络流量。
使用HSRP和VRRP时,除非配置多个组和多个网关,否则只使用一条路径,而其他资源都处于空闲状态。这意味着在高峰时期吗,这条路径的输出队列更长,导致性能低下,抖动强烈。GLBP可以缓解抖动的影响,因为使用GLBP可增加上行带宽以及利用其他上行路径。
GLBP自动分配虚拟MAC地址,确定由谁负责转发,并确保网关或被跟踪的接口出现故障时,主机依然有可靠的转发路径。在故障真的发生时,GLBP重新在余下的AVF之间均衡负载,确保资源得到最有效的利用。
17.5.3 基于主机的负载均衡
GLBP使用循环算法来均衡负载,工作原理如下:
- 一个客户端发送ARP消息,请求对网关IP地址进行解析时,AVG返回一个AVF的虚拟MAC地址。
- 另一个客户端发送ARP消息时,AVG返回下一个AVF的虚拟MAC地址。
通过将默认网关IP地址解析为不同的MAC地址,可让不同的客户端将数据发送给不同的路由器。
17.5.4 配置GLBP
Router(config)# int e0/0
Router(config-if)# glbp 1 ip 10.1.1.20 //GLBP组号1,并配置虚拟IP地址
Router(config-if)# glbp 1 name TEST //为GLBP组1配置名字
Router(config-if)# glbp 1 priority 110 //为GLBP组1的本路由器配置优先级
Router# show glbp //查看GLBP配置详情
Router# show glbp brief //查看GLBP配置摘要
17.6 系统日志
要熟悉网络在特定时刻发生的情况,最常见也是最有效的方式是,阅读来自交换机或是路由器内部缓冲区的系统消息。然后,最佳的方式是将这些消息记录到系统日志服务器。它存储来自设备的消息,还可给消息加上时间戳和序列号。
系统日志让你能够对消息进行显示,排序和搜索,因此是最佳的故障排除工具。可以使用关键字乃至严重级别进行搜索,服务器还可以根据消息的严重级别给管理员发送邮件。
可对网络设备进行配置,使其将生成的系统日志消息发送到各种目的地。下面是从思科设备收集消息的四种常见方式:
- 存储到日志缓冲区(默认启用)
- 显示到控制台(默认启用)
- 显示到终端(使用命令terminal monitor启用)
- 存储到系统日志服务器
思科路由器向系统日志服务器发送的消息为通用版本,而系统日志服务器将消息转换为类似于下面的格式:
Seq no:timestamp: %facility - severity - MNEMONIC: description
这种格式的系统消息包括如下部分。 - 序列号(seq no) 日志消息的序列号。默认不会添加序列号,如果需要这种信息,必须相应地配置。
- 时间戳(timestamp) 消息或时间的日期和时间。同样,要添加这种信息,必须进行配置。
- 来源 (facility) 消息的来源。
- 严重级别(severity) 0~7的编码,指出了消息的严重级别。
- 标识符 (MNEMONIC) 唯一地表示消息的文本字符串。
- 描述(description)对报告的事件进行详细描述的文本字符串。
严重级别
- emergencies 0 LOG_EMERG 系统不可用
- alerts 1 LOG_ALERT 在端口下是需要立即操作的
- critical 2 LOG_CRIT 路由器上存在一个关键状态
- errors 3 LOG_ERR 路由器上存在一个错误状态
- warnings 4 LOG_WARNING 路由器上存在一个警告状态
- notifications 5 LOG_NOTICE 路由器上发生了一个平常的但重要的事件
- informational 6 LOG_INFO 路由器上发生了一个信息事件
- debugging 7 LOG_DEBUG 来自debug命令的输出
配置和验证系统日志
Router(config)# logging console // 将系统日志消息写入控制台
Router(config)# logging buffered // 将系统日志消息写入缓冲区
这是所有思科IOS设备的默认设置。可在前面加no来禁用掉。
Router(config)# logging 172.16.10.1 // 将日志发送到服务器
Router(config)# service timestamps log datatime msec //为日志添加时间戳
Router(config)# service sequence-numbers //为日志添加序列号
可以限制发送给系统日志服务器的消息量,为此要指定严重级别
Router(config)# logging trap + 严重级别 // 只有大于等于指定级别的消息才会发送到服务器
Router# show logging // 查看缓冲区的内容
17.7 SNMP
简单网络管理协议(SNMP)是一种应用层协议,指定了一种消息格式,供各种设备上的代理用来与网络管理工作站(NMS)交流。这些代理将消息发送给NMS,后者再将消息写入其数据库,这种数据库被称为管理信息库(Management Information Base. MIB)。
NMS使用GET消息定期地向设备的SNMP代理查询或轮询,以收集统计信息并进行分析。运行SNMP代理的终端设备出现问题时,将向NMS发送SNMP TRAP消息。管理员还可以使用SNMP SET消息来配置代理。
SNMP有三种版本:
- SNMPv1 支持使用共同体字符串(community string)进行明文身份验证,只使用UDP。
- SNMPv2 支持使用MD5或SHA进行明文身份验证(不加密),但提供了GET BULK,一种同时搜集众多信息的方式,可最大限度地减少GET请求数。相比v1,错误报告方法更细致,但安全性没有改进。SNMPv2默认使用UDP,但可对其进行配置,使其使用TCP。
- SNMPv3 支持使用MD5或SHA进行可靠的身份验证,并利用DES或DES-256确保消息的保密性(加密)和数据完整性,SNMPv3也支持GET BULK,同时使用TCP。
17.7.1 管理信息库
鉴于涉及的设备种类众多,需要处理的数据量庞大,需要采用标准方式来组织数据,MIB应运而生。管理信息库(MIB)一以层次方式组织的信息集,可使用SNMP等协议进行访问。相关RFC定义了一些通用的公用变量,但大多数厂商都在SNMP标准的基础上定义了专用分支。组织ID(OID)按树形结构排列,各层级的OID有不同的组织制定,而顶级MIB OID由各种标准组织指定。 专用分支的OID由厂商指定。
要让NMS能访问交换机,其共同体字符串定义必须至少与交换机的三个共同定义之一匹配。
17.7.2 配置SNMP
要在思科设备上配置SNMP,只需执行如下四个步骤。
- 赋予SNMP读写路由器的权限。
- 配置SNMP联系信息。
- 配置SNMP位置信息。
- 配置一个ACL,仅让NMS访问SNMP。
只有共同体字符串是必须配置的,其它配置都是可选的。
Router(config)# snmp-server community Todd rw //配置共同体字符串为Todd,给予读写权限。
Router(config)# snmp-server location Boulder //设置地点
Router(config)# snmp-server contact Todd Lammle //设置联系联系人
Router(config)# ip access-list standard Protect_NMS_Station //设置一个ACL
Router(config)# permit host 192.168.10.254
Router(config)# snmp-server community Todd Protect_NMS_Station rw //在使用SNMP时调用ACL
SNMP的读写权限
- 只读 允许获得授权的管理工作站读取MIB中的所有对象(共同体字符串除外),但禁止它写入。
- 读写 允许获得授权的管理工作站读写MIB中的所有对象,但共同体字符串除外。
17.8 Netflow
Flexible NetFlow假定一台主机使用 Telnet连接到了一台服务器,该服务器位于虚构的VLAN Sales中。NetFlow 可对Telnet 进行监视-一记录它收发的分组数和字节数等, 再将这些信息发送给NetFlow采集器。
17.8.1 NetFlow和流概述
对网络中的用户(包括所有的终端和应用程序)来说,NetFlow是完全透明的。并非必须在所大路由器上都运行NetFlow,实际上也不应这样做,因为NetFlow在设备上缓存信息,这需要占用内友给设备带来了额外的开销。NetFlow 几乎让你能够对记录和聚合的流数据进行实时的可视化和分析可指定路由器、聚合方案和数据杳看频率, 进而获取相关的数据并据此绘制出条形图、饼图等。 要使用NetFlow,需要在路由器上启用NetFlow,还需要一个NetFlow采集器。
服务提供商使用NetFlow 来完成如下任务。
- 紧密地监视谁在使用网络服务以及用来做什么。
- 统计流量并根据资源使用率计算折扣。
- 根据测量到的信息更有效地规划网络, 进而根据客户需求优化资源分配和部署。
- 根据测量到的信息优化和定制应用程序和服务,以满足用户的需求。
市面上有各种分析器,可用于收集NetFlow统计信息,对网络流量进行分析,进而提供如下信息。
- 谁是网络的主要用户, 即哪些信息发送方、 接收方、 网络协议等排名靠前。
- 经常访问哪些网络, 下载了什么内容。
- 谁生成的流量最多,谁占用了大量带宽。
- 应用程序的带宽需要多高, 当前可用的带宽是多少。
NetFlow常用的字段如下:
- 源IP地址
- 目标IP地址
- 源端口号
- 目标端口号
- 第3层协议
- 服务类型 (ToS)
- 输人逻辑接口
前四 个字段是用于源主机和目标主机之间的套接字,标识了应用程序。协议字段指出了分组包含的数据类型,而IPv4报头中的 ToS字段指定了如何将 QoS规则应用于分组。假设有两个分组,只要有一个重要字段不同,它们就属于不同的流。下面介绍如何在路由器接口上配置和验证NetFlow。
17.8.2 配置NetFlow
要在路由器上妥善地实现NetFlow, 必须完成如下四个步骤。
- 指定要记录的NetFlow信息,即只考虑出站分组或入站分组,还是两者都考虑。
- 配置NetFlow信息导出目的地,即指定NetFlow采集器的IP地址以及采集器侦听的UDP端口。
- 配置NetFlow信息导出版本, 即指定 NetFlow版本-最新版本为第9版。
- 验证 NetFlow配置。为此,可在NetFlow 采集器上对导出的数据进行分析,也可在运行NetFlow的路由器上使用show命令。
下面演示了如何在路由器SF 上配置 NetFlow:
SF(config)#int fa0/0
SF(config-if)#ip flow ingress
SF(config-if)#ip flow egress
SF(config-if)#exit
SF(config)#ip flow-export destination 172.16.20.254 9996
SF(config)#ip flow-export version ?
1
5
9
SF(config)#ip flow-export version 9
SF(config)#ip flow-export source loopback 0
首先在接口 Fa0/0上配置命令 ip flow ingress和ip flow egress, 让路由器记录进出该接口的流的NetFlow信息。接下来,指定NetFlow采集器的IP地址以及要使用的版本,注意只能将版本配置为1、5或9,第9版涵盖了前述所有字段,还有MPLS和IPv6信息和端口。对于发送给采集器的分组,将其源IP地址设置成环回接口的IP地址。
验证NetFlow配置:
Show ip flow interface
Show ip flow export
目标端口为9996,这是思科指定的默认端口。
Show ip cache flow
网友评论