文章目录
说明:这篇文章是以我的另一篇文章为基础,将内容丰富度、深度进行了提升,所写的CCNP阶段的博客
这个是我那篇文章的链接: CCNA5:EIGRP——增强型内部网关路由协议
这是此次EIGRP对应的实验: CCNP3实验:EIGRP——增强型内部网关路由协议
CCNP3:EIGRP——增强型内部网关路由协议
EIGRP协议是Cisco私有的协议,它是无类别距离矢量协议,协议号88,组播更新地址:224.0.0.10。管理距离为90、度量采用复合度量。
一、EIGRP特点:
特性 | 特点 |
---|---|
EIGRP厉害之处 | 增量更新:仅触发、无周期更新 |
EIGRP是唯一 一个支持非等开销负载均衡,按比例使用链路利用率 | |
高级距离矢量更新 | |
EIGRP相较OSPF的优势 | 灵活的网络设计:OSPF需要划分区域 |
支持在任何接口做手工汇总,OSPF只能做区域汇总 | |
局域网和广域网中配置很简单 | |
EIGRP一般特点 | 收敛快、占用资源少 |
支持多种网络层协议(现在已经没有多大用处,已经由IP协议取代其它协议) | |
组播更新和单播更新取代广播更新(意义不大,因为没有做组播部署,和广播差不多) | |
仅仅依靠自己无法100%出环 | |
可以自动生成空接口防环路由 |
二、EIGRP的数据包:
数据包 | 注解 |
---|---|
Hello包 | 用于邻居的发现、建立、保活 |
Updata包 | 路由条目(目标网络号+度量值) |
查询包、应答包、update包 | 均服务于RTP(Real Time Protocol)可靠传输协议。 |
ACK包 | 对更新包、查询包、应答包进行确认 |
Hello包:
hello time 5s、60s;hold time 为 hello time 的3倍
接口带宽小于等于2.048M时,hello time 为60s;大于为5s。这样的设计主要是因为带宽,带宽高的时候,hello time 5s 低的时候为60s
三、EIGRP的4大组件:
RTP | 可靠传输协议,借鉴TCP的4种可靠机制——确认、重传、排序、流控(不能超过链路带宽的50%),这是EIGRP增量更新的可靠性。 |
---|---|
DUAL | 扩散更新(弥散更新)通过查询(包)邻居是否能够到达自己所不能到达的网段,邻居在向其他邻居查询,在查的过程中,被查的去往该网段的路由在路由表中会被删除,然后放到拓扑表中。查到直到所有邻居查完或已经查到有路径可以抵达,再将那条无效路径从拓扑表中删除,增加一条新的路由到路由表中。然后所有路由器应答,完成更新。 |
Hello机制 | 通过hello包认识所有邻居 |
PDM | 支持多种网络协议(现在比较鸡肋) |
1、DUAL扩散更新详解:
(1)第一种情况:R2的直连断了,然后向R3查询,直到R1回复,最后添加新的路由。
(2)第二种情况:R1、R2之间没有交换机,那么此时R1也会发出查询包,经过不断扩散,R4发现两边的人都在向它询问。因此,它向两边的路由器都发出应答包,告诉R3、R5自己到达不了12.0.0.0网段。
四、EIGRP的工作过程:
启动配置后,运行EIGRP协议的路由器,通过组播224.0.0.10向所有的邻居发送hello包。收到邻居的hello包后及标识认识了邻居,生成邻居表
邻居关系建立后,邻居间使用更新包进行路由信息的共享,共享过程中需满足水平分割规则。
收集到所有的路由条目后,本地生成拓扑表(用于装载所有的最佳和备份路径)
本地默认将拓扑表中的最佳路径全部加载到路由表中,之后收敛完成。收敛完成后,仅hello包周期保活即可,没有周期更新
结构突变 | 注解 |
---|---|
新增网段 | 直连新增网段的设备,使用更新包告知所有的邻居即可 |
断开网段 | 直连断开网段的设备向所有邻居发出查询包,通过DUAL算法,让所有路由器更新,若查询包扩散到网络末梢,依然没有可达路径,由末梢设备返回应答包到全网,更新所有设备的拓扑表。 |
设备断电 (无法沟通) | Hello time 5s,hold time 15s 等待超时然后断开。 |
注意:
更新包、查询包、应答包均为RTP提供服务。
接收到更新包、查询包、应答包时需要 ACK来确认 ,若未进行确认将单播重传, 最大16次 ,若依然失败,断开邻居关系。RTP在转发这三种包时,还会对其进行排序和流控,是否能够重建邻居关系,依赖 Hello 包。
五、EIGRP的配置:
这里我会用下面这张图来讲解EIGRP的配置:
1、基本配置:
(1)启动EIGRP、宣告网段:
r1(config)#router eigrp 90 //启动时配置AS号,0~65535,其实就是进程号
r1(config)#no auto-summary //DV协议建议关闭自动汇总
r1(config-router)#network 1.0.0.0 //EIGRP宣告时,可以向RIP一样直接配置主类,也可以像OSPF一样使用反掩码进行匹配。
r1(config-router)#network 124.1.1.1 0.0.0.0
(2)修改接口带宽实现非等开销负载均衡:
R3(config)#interface f0/0
R3(config-if)#bandwidth 800 //修改接口参考带宽,参考带宽不影响接口的实际传输带宽,它将影响协议对该接口的判断。
注意:一个接口的实际传输带宽受硬件、QOS影响。而参考带宽并不影响实际的传输带宽,只影响路由。
2、EIGRP的三张表:邻居、拓扑、路由
(1)邻居表
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表
由于R2的邻居最多,下面是以R2的邻居表的示例:
其它参数 | 注解 |
---|---|
SRTT | 平均往返时间,5min统计一次该时间:将发出10次更新、查询、应答后收到ACK所花时间,再除以10即平均往返时间 |
RTO | 重传超时时间,基于重传到第几次,和SRTT自动计算所得 |
Q Cnt | 标记还有多少条路由正在重传中,0表示收敛完成。 |
Seq Num | 序列编号,收到的最新的更新包的编号 |
(2)拓扑表
当邻居关系建立后,邻居间使用更新包收敛路由条目,生成拓扑表
这里,我将修改过后的参考带宽修改回去,再查看一下它的拓扑表
Ⅰ、拓扑表中的最佳、备份路径
中的 2 successors 表示去往 124.1.1.0/24 网段存在两条最佳路径,紧接着下面的两个下一跳就是两条路径的最佳下一跳。
对于 1 successors 表示去往该网段存在一条最佳路径,下面两个下一跳中的第一个下一跳为最佳路径,另外一个为备份路径。
因此拓扑表装的就是本地到达目的地的最佳和备份路径(注意是拓扑表)。
Ⅱ、查看拓扑表中的路由
对于本地到目的地的所有学习到的路由条目可以用以下命令查看:
R3#show ip eigrp topology all-links
Ⅲ、拓扑表中的字母:
前端字母P标识该条目已经收敛完成,且最佳路径将被加载到路由表中。
前端字母A标识该条目正在收敛中,后端Q部分的字母,标识具体卡在了哪个阶段:
比如:R2断掉了2.2.2.2/24的环回,此时它就需要向R3查询是否可以到,R3首先回复ACK表示收到,查询包,接着会发个应答包,R2收到之后会回复一个ACK给R3。
状态 | 注解 |
---|---|
Q | 本地已经发出查询,但是没有收到ACK |
Qr | 标识已经收到ACK,但未收到应答 |
QR | 标识已经收到应答,还未回复ACK |
U | 标识已经回复ACK: 若收到的应答中为新的路径,那么 A 转 P ,最佳路径加载到路由表。 若收到的应答中为没有可达路径,删除条目。 |
在特殊情况下(如下),EIGRP协议将可能卡在活动状态:
①网络深度过深
②错误的配置或策略导致
默认存在活动计时器,计时3分钟,活动计时器到时时将删除条目,同时断开邻居关系。可能导致错误的邻居断开,使得网络不稳定。
解决方案:
①针对网络深度过深——建议增大计时器
R2(config)#router eigrp 90
R2(config-router)#timers active-time 5 //单位为分钟
②在IOS12以上版本中,添加卡在活动状态计时器:
当活动计时器行进到一半时,本地发出卡在活动状态查询,若能收到回复,那么在活动计时器到时时,仅删除体条目不断开邻居关系。
如果没有活动计时器进行到一半就发出活动状态查询的机制,就会导致R1、R2、R3之间它们的邻居关系也断开:
因为,R3再等R4回复的时候,实际上R1也在等R2、R2在等R3,这样也会让R1、R2、误以为R2、R3也卡住了,有了这个活动计时器在一半就查询的机制,就很好避免了R1、R2、R3邻居之间关系的误断。
Ⅳ、拓扑表中的数字(FD/AD):
数字 | 注解 |
---|---|
FD | 可行距离:本地通过该路径到达目标的度量 |
AD | 可行后继距离(通告距离):本地的下一跳到达目标的度量值 |
FC | 可行条件(成为备份路径的条件)邻居到达目标网段的度量值小于最佳路径的FD值 |
备份路径的意义在于可以和最佳路径一起完成 非等开销负载均衡:
非等开销负载均衡 :当到达一个目标地址时,如存在两条开销相近的路径时,可以让设备将流量 按比例 沿这些路径同时传输,提高链路的利用率。在EIGRP协议中,只能通过最佳和备份路径实现。
R1(config)#router eigrp 90
R1(config-router)#variance 2
R1#show ip protocols
EIGRP maximum metric **variance 2**
FD / AD = 3842560 / 2300416=2
差异值:备份路径的FD ÷ 最佳路径的FD=向上取整。
设备默认的差异值规定为1,表示仅支持等开销负载均衡,若修改差异值为2,那么两倍关系内的备份路径将进入路由表和最佳路径,一起传输数据。
我们可以用下面的指令详细查看 R3 去往 1.1.1.0/24 网段的详细内容。
信息中包含了度量、延时、可靠性、负载、跳数、最小带宽、最小MTU等详细信息。
(3)EIGRP 的路由表:
当正常更新包收敛后,协议会将拓扑中的最佳路径加载于路由表中:
EIGRP的路由表有两种类型:
标识 | 管理距离 | 注释 |
---|---|---|
D(D - EIGRP) | 90(内) | 标识正常通过EIGRP协议学习产生的路由 |
D EX(EX - EIGRP external) | 170(外) | 标识通过其他协议或其他进程学习后,通过重发布技术导入EIGRP内的路由 |
度量:复合度量,由多种参数共同决定。
K值为权重值: 要求全网要一致,该参数将影响带入运算的具体数据:
K1 | K2 | K3 | K4、K5 |
---|---|---|---|
带宽 | 负载 | 延时 | 可靠性(255最好) |
修改K值:
R3(config)#router eigrp 90
R3(config-router)#metric weights 0 1 1 1 1 1
其中,第一个0指的是服务类型,而后面的5个1分别对应:K1、K2、K3、K4、K5
那么我们为什么要修改K值呢?
首先我们需要知道得是: EIGRP的工作半径为100跳,度量值不得超过环回数量2147483647。
K值的修改并不是用于直接干涉选路,而是在于缩小度量值,通过公式我们发现当K5取值后,度量就会变小,从而扩大EIGRP的工作半径。还可以拉入其他的参数来参与运算
备注:EIGRP邻居间 hello包 必须有三个参数完成一致,否则无法完成建邻。这三个参数分别是:K值、AS号、认证字段
2、扩展配置:
(0)状态机(邻居关系刷新):
EIGRP是增量更新协议,若需要修改之前的更新数据时,将断开邻居关系,让邻居删除原有信息,然后立刻建立邻居关系。
比如说原本有两条路由,现在要汇总到一起,那么该邻居会断开邻居关系,然后立刻重新建邻,就得到了新的路由。
(1)认证:
先配置秘钥库:
R2(config)#key chain a
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string cisco123
再直连邻居的接口上调用:
R2(config)#interface s1/1
R2(config-if)#ip authentication key-chain eigrp 90 a
R2(config-if)#ip authentication mode eigrp 90 md5
EIGRP仅支持MD5认证,故在没有修改模式前,认证是无意义的。
(2)手工汇总:在更新源路由器上,所有更新发出接口上进行配置
R3(config)#interface s1/0
R3(config-if)#ip summary-address eigrp 90 1.1.2.0 255.255.254.0
EIGRP汇总配置完成后,在汇总设备上将自动产生指向汇总地址的空接口防环路由。
(3)被动接口:只接收不发送路由协议信息,用于连接非用户的接口,不能用于连接邻居的接口。
R3(config)#router eigrp 90
R3(config-router)#passive-interface loopback 0
(4)加快收敛:hello 5s,hold time15s,一般不用改,时间已经比较短了,若为60s可以修改。
r3(config)#interface s1/1
r3(config-if)#ip hello-interval eigrp 90 5
r3(config-if)#ip hold-time eigrp 90 15
(5)缺省路由:
方法一:
在边界路由器上先配置一条静态缺省指向ISP,然后使用重发布技术,将这条静态缺省路由共享到EIGRP域内。
R1(config)#router eigrp 90
R1(config-router)#redistribute static
方法二:
在边界路由器上先配置一条静态缺省指向ISP,然后再在边界路由器上所有连接内网得接口上进行汇总,汇总地址为0.0.0.0/0
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip summary-address eigrp 90 0.0.0.0 0.0.0.0
(6)干涉选路:
干涉选路使用偏移列表,在控制层面流量得进或出的接口上,抓取路由信息,然后增大其中的度量值,最终影响选路。
R1(config)#access-list 1 permit 4.4.4.0 抓取网络号
R1(config)#router eigrp 90
R1(config-router)#offset-list 1 in 21 f0/0
ACL编号、方向、增加的度量、对应的接口