思科EIGRP协议概述、特点及配置详解
枫林残忆YCY
本文讲述了思科EIGRP协议概述、特点及配置。分享给大家供大家参考,具体如下:
1. EIGRP概述
EIGRP(无类别距离矢量IGP协议),有时也被描述成一个具有链路状态协议行为特性的距离矢量协议。距离矢量协议是路由器之间共享路由器所知道的所有信息,但仅仅限于在与之直连的邻居之间共享;而链路状态协议虽然只通告它们直连链路的信息,但是链路状态协议可以在它们的路由选择域或区域内的所有路由器上共享这些信息
2. EIGRP特点
高级的DV协议
100%无环
收敛速度快(在中大型网络中)
仅触发更新,无周期更新
支持多种网络层协议(IP、IPX、Appletalk)
支持任意节点汇总
支持VLSM和CIDR
在广域网配置简单
支持非等开销负载均衡
支持认证
组播更新(224.0.0.10)和单播更新代替广播更新
3. EIGRP中四个关键机制
3.1 保活机制
hello time时间5s或60s,3倍的hold time
接口带宽小于或等于2.048M为60s hello time,大于2.048M为5s hello time
3.2 PDM(协议相关模块)
支持多种网络层协议,EIGRP协议实现了IP协议、IPX协议和AppleTalk协议的模块,它可以担负起某一特定协议的路由选择任务。例如,IPX EIGRP模块可以负责在IPX网络上与其他IPX EIGRP进程进行路由信息交换,并且将这些信息传递给DUAL。另外,IPX模块也接收和发送SAP信息。
3.3 RTP(可靠传输协议)
借鉴TCP的四种可靠传输机制(确认、重传、排序、流控(50%占比))
3.4 DUAL算法
DUAL算法,也叫扩散更新、弥散更新算法
3.4.1 hello保活机制
hello time时间5s或60s,3倍的hold time
3.4.2 原理
(1)通告距离(AD)
EIGRP邻居通向相同目的网络的可行距离
(2)可行距离(Feasible Distance, FD)
到达每一个目的地的最小度量将作为该目的网络的可行距离
(3)可行性条件(FC)
可行性条件就是需要满足下面这样的条件——本地路由器的一个邻居路由器所通告的到达一个目的网络的距离是否小于本地路由器到达相同目的网络的可行距离
(4)后继路由器(successor)
对于在拓扑结构表中列出的每一个目的网络,将选用拥有最小度量值的路由并放置到路由表中。通告这条路由的邻居就成为一个后继路由器,或者是到达目的网络的数据包的下一跳路由器
(5)可行后继路由器(Feasible Successor, FS)
如果本地路由器的邻居路由器所通告的到达目的网络的距离满足了FC,那么这个邻居就会成为该目的网络的一个可行后继路由器
3.4.3 查询包发出的情况
主路径故障时,同时本地没有备份路径,那么将发送查询包到本地所有邻居(除)最佳路径中的下一跳设备,邻居在接收到该查询包后将向本地的其他邻居进行查询包的扩散,到达网络的末梢后,由末梢设备逐级回复应答来清楚整个网络所有设备的缓存(如下图),也可能查询包在没有到达网络的末梢时,就已经寻找到新的路径,然后逐级返回应答来实现收敛
3.4.4 发出查询包的前提
本地的直连路径故障,或本地的最佳路径故障,同时本地没有备份路径(假设A对1网段进行了查询收敛,同时1网段又是B到2网段的备份或最佳路径,那么当A在查询收敛 1网段时,将导致B对2网段进行收敛)
3.4.5 末梢设备
本地所有的邻居发送查询包过来,询问一个非本地直连的网段。一台具有EIGRP末梢邻居的路由器将不会向它的末梢发送查询。末梢路由器默认仅仅发送自己的直连路由和汇总路由的更新消息。设置为末节会重置邻居关系
4. metric计算
Formula with default K values (K1 = 1, K2 = 0, K3 = 1, K4 = 0, K5 = 0):
K5为0:
Metric = [K1 * BW + ((K2 * BW) / (256 – load)) + K3 * delay]
K5大于0:
Metric = [K1 * BW + ((K2 * BW) / (256 – load)) + K3 * delay]* [K5 / (reliability + K4)]:
默认K值下度量=带宽+延时
带宽=(10^7/整段路径最小带宽)*256
延时=(整段路径控制层面入口延时总和/10)*256
256为放大因子,作用兼容IGRP协议 变大数值便于比较
通过修改k值,可以引入其他的参数来计算度量,缩小度量值扩大工作半径;EIGRP的工作半径为100跳,最大度量值为2147483647(环回数量);全网设备k值必须完全,否则建立不了邻居关系;
R1(config-router)#metric weights 0 1 1 1 1 1
注:干涉选路需要修改参数--带宽、延时、负载、可靠性
5. EIGRP的数据包
5.1 hello
用于邻居的发现与维护,判断邻居形成的必要条件(hello time时间5s或60s),hello包里包含:K值、AS号、认证字段
5.2 Update
发送路由更新邻居间共享路由条目==目标网络号+度量值
5.3 Query
增量更新(结构的变化),使用单播发送,用于请求某个路由
5.4 Reply
增量更新(结构的变化),使用单播发送,用于应答某个路由
5.5 ACK
6. EIGRP的工作过程
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表
邻居关系建立后,邻居间使用更新包共享路由信息,生成拓扑表(装载successor和FS)
默认将successor路径加载到路由表;收敛完成,hello包周期保活即可
结构突变(初次收敛会面临结构突变)
1.新增网段:直连新增网段的设备,向所有邻居发送更新包,然后逐级收敛
2.断开网段:直连断开网段的设备,向所有邻居发送查询包来收敛该路径
若该直连网段同时为本地某个目标的最佳路径,且没有备份路径,那么也进行查询收敛;若存在备份路径,那么仅收敛直连网段路由,启用备份路由来访问其他网段
3.无法沟通:hold time 到时间时,断开邻居关系,删除所有通过该邻居学习到的信息;能否重新建立邻居关系,取决于hello包
注:Query、Reply、Update包均基于RTP工作,必须被ACK确认、排序、流控‘;若没有ACK或数据校验将重传(默认最大重传16次);16此后依然没有确认,将直接断开邻居关系;能否重新建邻取决于hello包
7. EIGRP的配置
R1(config)#router eigrp 90 #启动时需要定义AS号(理解为全网一致的进程号)
R1(config-router)#no auto-summary #关闭自动汇总
R1(config-router)#network 1.0.0.0 #主类网络宣告
R1(config-router)#net 124.1.1.1 0.0.0.0 #带通配符掩码的精确匹配宣告
7.1 邻居表
启动配置完成后,邻居间使用hello包建邻,生成邻居表
(1)查看邻居表
(2)各字段的含义
H |
建邻顺序 |
Address |
邻居接口IP |
Interface |
本地连接邻居的接口 |
Hold |
死亡倒计时(以15s为起点,到10s翻回,5s一个hello) |
Uptime |
建邻时间 |
SRTT(ms |
平均往返时间:本地发送Update、Query、Reply包到达邻居后返回ACK的平均时延 |
RTO |
重传超时时间(重传间隔时间):根据SRTT和重传的次数计算的重传间隔时间 |
Q Cnt |
最好为0,若为1,表示有一条路由正在重传中 |
Seq Num |
序列号 |
7.2 拓扑表
当邻居关系建立后,邻居间使用更新包进行路由共享,收敛后生成拓扑表
(1)查看拓扑表
(2) 各字段的含义
在拓扑表每条路径的前端存在一个字母
P:表示该条目已经收敛完成,且默认最佳路径已进入路由表
A:活动,该条目正在收敛中
当活动状态时,条目后方使用字母表示具体收敛到了哪一步
Q表示本地已经发出Query,但没有收到ACK
Qr表示已经收到ACK,但还没有收到Query
QR表示已经收到Query,但还未返回ACK
U表示已经回复ACK,之后查看Query
若应答无路径,删除该条目
若应答新路径,A转P,加载到路由表
(3)卡在活动状态
若本地进入活动状态后,收不到对端的ACK,那么16次重传后断开邻居关系;
若收不到Reply,这个叫卡在活动状态
导致卡在活动状态的原因:网络拓扑过于复杂,网络的深度过深;错误的策略或配置导致
默认3min活动计时,超过该时间,删除条目同时断开邻居关系,导致网络重新刷新收敛,破坏稳定性
解决办法:
针对过于复杂的网络,可以加大计时器
12系列IOS开始,添加卡在活动状态计时器
当活动计时器进行到一半(90s)时,向邻居发送卡在活动状态查询,若收到回复,那么活动计时器到时时,仅删除信息,不断开邻居关系
(4)修改带宽
R3(config)#int s1/1
R3(config-if)#bandwidth 800 #修改参考带宽,不影响实际传输带宽,只是干涉到路由协议的计算
修改带宽后,
R3#show ip eigrp topology
P 1.1.1.0/24, 1 successors, FD is 2300416 #一条最佳路径,其度量为2300416
via 23.1.1.2 (2300416/156160), Serial1/0 #最佳路径
via 34.1.1.4 (3842560/156160), Serial1/1 #备份路径
查看所有路由,包括非直连路径
R3#show ip eigrp topology all-links
(5)非等开销负载均衡
当到达目标网段时,存在最佳和备份路径,可以让设备将流量按比例沿最佳和备份路径同时传输
R3#show ip protocols
Maximum metric variance 1
默认EIGRP协议的差异值为1,差异值=备份路径的FD/最佳路径的FD(结果向上圆整)
查看:
7.3 路由表
默认EIGRP协议将最佳路径加载于路由表中
(1)各字母的含义
字母D-EIGRP, EX-EIGRP external
D表示本地通过EIGRP协议所得路由,D EX表示其他协议学习的路由通过重发布技术共享产生,AD值为90(内部)/170(外部,就是重发布进来的路由)
8. EIGRP扩展配置
8.1 状态机
邻居关系被刷新
触发状态机的原因:希望邻居删除原有的路由信息,学习学习新的被修改的信息---例:汇总、认证、策略等
8.2 手工汇总
在更新源路由器上,所有更新发出的接口上配置(手工汇总后,会自动生成NULL0口防环)
8.3 手工认证
8.3.1 普通认证
8.3.2 最强认证
8.4 被动接口
只接收不发送路由协议信息,配置在连接用户的接口,不得配置在连接邻居的接口
8.5 缺省路由
(1)接口下手工汇总
在边界路由器上所有连接内网的接口上进行汇总配置,汇总地址为0.0.0.0,边界还需要手工静态指向ISP
(2)重发布静态
先在边界路由器上静态指向ISP,然后再将该路由重发布到EIGRP协议(此时AD值为170)
(3)宣告缺省路由
先在边界路由器上静态指向ISP,然后再将该路由宣告到EIGRP协议(不太建议,因为宣告了本地所有的接口)
(4)default-network做法
建议边界路由器外网接口为主类网段地址时
1)边界路由器上配置
R1(config)#default-network 12.0.0.0 #宣告边界路由器连接ISP的接口地址的主类段
2)EIGRP协议中宣告该主类
R1(config)#router e 90
R1(config-router)#net 12.0.0.0
3)该路由器上必须存在宣告的主类网段路由
R1(config)#ip route 12.0.0.0 255.0.0.0 null 0
8.6 偏移列表
控制路由传递,在控制层面流量进或出的接口上人为的增加度量
先用ACL抓取到网络好,然后在接口上增加度量
9. EIGRP协议的小特性
9.1 EIGRP的接口带宽占用率
EIGRP协议在工作时,仅最大占用接口参考带宽的50%,故可能接口的参考带宽大于或小于实际带宽,可以修改参考带宽来实际匹配;优时考虑协议需要基于参考带宽选路,建议修改参考带宽;此时可以修改EIGRP协议的带宽占用百分比
9.2 EIGRP的查询机制
- 最佳路径故障时,同时本地没有备份路径,将发出查询包
- 本地直连路由断开时发生查询包
- 一旦发出查询包,该路由在本地路由表中消失,在拓扑表中标记收敛(A标识)
- 若收到一个查询包,但本地没有查询的路由,将向本地的其他邻居进行扩散
- 查询包到达末梢设备时,只能回复应答
9.3 末梢管理
复杂网络中的查询包管理,主要是中心站点到分支站点拓扑;中心站点没有必要到分支站点进行查询,所有限制查询范围就是最好的方法。
(1)限制查询范围的方法
1)汇总配置
减少明细路由故障时导致的查询,可以在中心连接分支站点的接口上进行汇总路由配置.查询明细路由时,分支站点仅存在汇总路由,只能回复不可达;注意该配置应该尽量避免路由黑洞
2)eigrp末梢区域配置
分支站点设备直接配置为末梢区域,之后分支站点发送到中心站点的hello包中存在末梢区域标记; 当中心站点链路出现故障时,中心站点不会到分支站点进行查询
R3(config)#router eigrp 90
R3(config-router)#eigrp stub #本地成为末梢区域
R2#show ip eigrp neighbors detail
将一台路由器设置为末梢路由器时,默认执行以下命令, 本地成为末梢区域,当邻居需要传递直连和汇总路由过来