2. IP内部路由的TLV
EIGRP的IP内部路由(类型为0x0102)的TLV如图3-3所示,各个字段的含义如下所述。
- 下一跳:路由条目的下一跳的IP地址。
- 延迟:从源到达目的的延迟总和,单位为。
- 带宽:链路上所有接口的最小带宽,单位为。
- 最大传输单元:路由传递方向的所有链路中最小的最大传输单元,某些EIGRP文档可能讲述MTU(最大传输单元)是计算EIGRP路由度量值的参数之一,但这是错误的。MTU并不是EIGRP所用的度量标准参数。MTU虽然包括路由更新中,但不用于计算路由度量值。
- 跳数:到达目的地路由器的个数,范围为1~255。
- 可靠性:沿着路由传递方向到达目的地的路径上接口的出站误码率的总和,范围为1~255。
- 负载:沿着路由传递方向到达目的地的路径上接口的出站负载的总和,范围为1~255。
- 保留:保留位,总是设置为0x0000。
- 前缀长度:之网掩码的长度。
- 目的地:路由的目的地址,即目标网络地址。
3.IP外部路由的TLV
- 源路由器:重分布外部路由到EIGRP自治系统的路由器ID,它是IP地址格式
- 源自治系统号:始发路由的路由器所在的自治系统号。
- 任意标记:用来携带路由映射图的标记。
- 外部协议度量:外部协议的度量,在和IGRP协议之间重分布时,用该字段跟踪IGRP协议的度量值。
- 外部协议ID:表示外部路由是从哪中协议学到的。
- 标志:目前仅定义了两个标志,0x01表示外部路由,0x02表示该路由是候选的默认路由。
EIGRP的SIA及查询范围的限定
作为一种高级距离向量协议,EIGRP依靠邻居提供路由信息,当丢失路由后,EIGRP路由器将在拓扑表中查找可行后继。如果找到,将不把原来的路由切换到主动状态,而是将可行后继提升为后继,并把路由放到路由表中,无须使用DUAL算法重新计算路由。如果拓扑表中没有可行后继,则该路由被置为主动状态,EIGRP路由器向所有邻居路由器发送查询(除了到达后继的那个接口,水平分割限制),以便寻找一条可以替代的路由。如果被查询的路由器知道一条替代路由,它就把这条替代路由放进应答包中发送给发出查询的源路由器。如果接收到查询的路由器没有替代路由的信息,它将继续发送给自己的其他邻居,直到找到可以替代的路由为止。因为EIGRP使用可靠的组播来寻找替代路由,路由器必须收到被查询的所有路由器的应答才能重新进行计算路由。如果有一个路由器的应答还没有收到的话,发出查询的源路由器就必须等待。默认情况下,如果在3分钟内某些路由器没有对查询做出响应,这条路由就进入“stuckinactive(SIA)”状态,然后路由器将重置和这个没有做出应答的路由器的邻居关系。为了避免SIA情形的发生或者降低SIA的发生频率,必须限制查询的范围,通常有以下两种方法。
(1)在路由器的接口配置路由汇总
良好的IP地址规划是方便执行路由汇总的前提。路由汇总不仅可以减小路由表,节省CPU时间和带宽,还可以降低网络进入SIA状态的概率,因为它减少了收到查询消息了路由器数量。
(2)把远程路由器配置为EIGRP的Stub路由器
当一个路由器配置为Stub路由器时,它的邻居就不会向它发送查询包,从而可以限制EIGRP的SIA查询的范围。
除了上述的两种方法外,还有其他的一些限制查询范围的方法,诸如路由过滤或接口包过滤等。
EIGRP的路由选择
每台EIGRP路由器都会维护-一个邻居表。此表包含与该路由器邻接的直连EIGRP路由器列表。邻居关系用于跟踪这些邻居的状态。EIGRP使用一-种低开销Hello协议与邻居建立连接并监控连接状态。
每台EIGRP路由器会为每个被路由的协议配置维护拓扑表。拓扑表包含路由器从其直连EIGRP邻居获取的每个目标的路由条目。EIGRP从拓扑表中选择到每个目标的最佳路由,然后将这些路由添加到路由表中。
EIGRP使用以下两个参数来确定到目标的最佳路由(后继路由)和所有备份路由(可行后继路由):
- 通告距离(advertised distance,AD):EIGRP邻居到特定网络的EIGRP度量。
- 可行距离( feaible distance, FD ):从某个EIGRP邻居获取的特定网络AD加上到达该邻居的EIGRP度量。这个总和表示从路由器到远程网络的端到端度量。路由器比较到达特定网络的所有FD,然后选择最低的FD并将其放入路由表中。
EIGRP拓扑表包含每个EIGRP邻居所知的所有路由。如图3-4所示,路由器A和路由器B将各自的路由表发送给路由器C,路由器C的路由表如图所示。路由器A和路由器B都有到网络10.1.1.0/24 的路由,到其他网络的路径未显示。
在路由器C的拓扑表中,有两条路径可到达网络10.1.1.0/24。路由器C到达路由器A和路由器B的EIGRP度量是1000。将此度量(1000) 添加到每个路由各自的AD,结果即表示路由器C到达网络10.1.1.0/24 的必经FD。
路由器C选择最小FD (2000), 并将其安装在IP路由表中作为到达10.1.1.0/24 的最佳路由。路由表中安装的FD最小路由称为“后继路由”。
如果存在一个或多个可行后继路由,则路由器C会为后继路由选择-一个备份路由,称为“可行后继路由”。要成为可行后继路由,路由必须满足以下可行性条件:下一跳路由器的AD必须小于当前后继路由的FD (因此,该路由被标记为可行后继路由,也就是到达目的地的无环路路径)。此规则用于确保网络无环路。
如果由于拓扑发生变化等原因造成后继路由无效,或者邻居改变了度量,则DUAL会检查目的路由是否有可行后继路由。如果发现可行后继路由,DUAL会直接使用该路由,避免重新计算路由。如果没有可行后继路由,路由将从被动状态变为活动状态(主动向备用路由的相邻路由器发送查询),并且必须重新计算才能确定新的后继路由。
理解EIGRP的度量
EIGRP度量可以采用多种标准,但默认情况下EIGRP仅使用其中两个标准。
- 带宽:源和目的之间所有出站接口的最小带宽,以千位/秒为单位。
- 延迟:路径上所有接口延迟的积累总和,以零点几微秒为单位。
以下标准也可以用于EIGRP度量,但不推荐使用这些标准,因为它们往往会导致频繁重新计算拓扑表。
- 可靠性:该值表示根据Keepalive数据包而定的源网络和目的网络间的最低可靠性。
- 负载:该值表示根据数据包速率和接口上配置的带宽而计算出的源网络和目的网络间的最差负载。
- K值:K值指出于管理原因设置的参数,用于操控EIGRP度量值。不建议更改K值。度量计算中将使用这些值,默认情况下会将它们设置为1和0。这样,默认K值才不会影响度量(K1、K3为1-K1、K4、K5为0)。K值的含义如下。
- K1:带宽修饰符。
- K2:负载修饰符。
- K3: 延迟修饰符。
- K4:可靠性修饰符。
- K5:其他可靠性修饰符。
EIGRP使用复合度量公式计算度量值。公式包含K1 ~ K5 5个K值,它们称为EIGRP度量权重。默认情况下,K1和K3设置为1, K2、K4和K5设置为0。因此,计算默认复合度量时仅使用带宽和延迟值。EIGRP邻居之间的度量计算方法(K值)和EIGRP AS编号必须匹配。使用默认K值和换算度量的度量计算示例如图3-5所示。
EIGRP使用换算值计算总度量:256* ([K1* 带宽] + [K2*带宽] / [256 -负载]+K3*延迟) * (K5/ [可靠性+ K4]),其中,如果K5=0,(K5/ [可靠性+ K4])项不使用(即它等于1)。使用默认K值,度量计算可以简化为256* (带宽+延迟)。图3-5使用换算值计算度量。延迟和带宽经过换算,以便从数学上组成方程式。10^7用于带宽,10 则用于延迟。这有助于确保度量为可管理数字。
虽然邻居路由器之间会通过EIGRP数据包交换最大传输单位(MTU),但计算EIGRP度量时并不考虑MTU因素。
使用show interface 命令,可以检查计算路由度量时所用的实际带宽、延迟、可靠性和负载值。示例3-2中输出显示了Sial0/0/0接口的复合度量中所用的值。
修改EIGRP计时器
EIGRP是基于链路类型确定默认的计时器值。如果默认的值不适用于某些特定的网络拓扑,可以修改Hello和保持计时器值。
修改Hello和保持计时器的主要原因是为了改善收敛时间。这对于低速NBMA链路尤其有吸引力,在低速NBMA链路上,默认的Hello和保持计时器为60秒和180秒,这个时间相对比较长。然而,在决定更改默认计时器值之前需要考虑一些注意事项。
与其他的IGP (如OSPF, EIGRP)相比,EIGRP邻居间的Hello和保持计时器不需相同就能成功建立EIGRP邻居关系,但计时器值不对称可能导致EIGRP邻居关系出现震荡以及网络出现不稳定。
例如,如果将链路一-端的Hello间隔设置为5秒,默认保持时间设置为15 秒,而将另一端Hello间隔设置为30秒,路由器的邻居关系将建立15 秒,然后在下一个15秒内断开。
如果增加了链路上的Hello间隔,就可能导致网络需要更长时间来监测潜在的故障,因此收敛时间也会增加。反过来,如果将Hello计时器减小到极小值,则可能导致路由流量对链路产生很高的占用率。
要想更改EIGRP计时器,可以使用接口配置命令ip hello-interval eigrp as-number hello-time-interval和ip hold-time eigrp as-number hold-time interval。这些命令中使用的自治系统编号必须与EIGRP进程的自治系统编号-一致。间隔的值的单位是秒。例2-15显示了在BR3.上修改这些计时器的示例。
帧中继上的EIGRP邻居关系
帧中继支持两种不同的接口类型:
- 模拟多路访问网络的多点逻辑接口;
- 点到点物理接口或逻辑点到点子接口。
在点到多点子接口.上配置EIGRP时,要使用一个IP子网。为了模拟广播多路访问网络并让EIGRP通过帧中继虚电路(Virtual Circuit, VC)发送组播数据包,必须在帧中继静态映射语句中添加关键字broadcast,使用接口配置命令frame-relaymapipip-addressdlci broadcast。
帧中继多点子接口可用于部分网状和全网状拓扑。部分网状帧中继网络必须处理可能的水平分割问题,因为这会阻止路由更新从接收到的接口被重新传输出去。
通过点到点主机接口配置EIGRP时,要为每个子接口使用一个不同的IP子网。一个帧中继物理接口.上可以创建几个点到点子接口。这些是模拟租用线路网络的逻辑接口,与点到点物理接口的路由转发的方式相同。因为点到点子接口有一个数据链路连接标识符(Data-Link Connection Identifier, DLCI),所以不需要静态映射。组播流量在不需要额外配置的情况下就可以进行传输。此外,从拓扑的角度看,EIGRP 认为点到点子接口是独立的物理接口,所以没有发生水平分割问题的可能性。帧中继点到点子接口适用于星型拓扑。