EIGRP
增强内部网关路由协议
无类别距离矢量IGP协议;
增量更新—仅触发更新,无周期更新----更新量小(DV),可靠性高(RTP),保活机制(hello)
复合度量—多个参数构建一个度量来进行选路
eigrp快的原因:
1.因为eigrp中新进来的路由是放在拓扑表,先进行比较再计算,如果AD有问题就不进行计算了 而且AD天生就不用计算,是邻居传过来的 而RIP进来的路由是先计算再比较,故eigrp能快
2.网络出现变故的时候,RIP会发request问邻居,即找、算、放、eigrp因为存在拓扑表的备份路径,则只存在放,体现在eigrp始终存在一条备用路径
3.扩散机制 eigrp dual(扩散更新算法) RIP更新是所有路由,eigrp是路由有变化再更新,即增量更新
4.更新对象是自己的邻居。RIP没有邻居状态**
【1】EIGRP的4大组件
1)保活机制—hello 5s或60s的hello time 3倍的hold time
接口带宽小于或等于2.048m为60s hello time;大于2.048m5s;
2)PDM–支持多种网络层协议
3)RTP可靠传输协议 —借鉴TCP的4种可靠传输机制—确认、重传、排序、流控(50%占比)
4)DUAL—扩散更新、弥散更新算法
【2】eigrp的数据包
Hello | 用于邻居的发现、建立、周期保活邻居关系 |
---|---|
更新包 | 邻居间共享路由条目 = 目标网络号+度量值 |
查询包 | 增量更新- -结构的变化 |
应答包 | 增量更新- -结构的变化 |
补充 | eigrp的包都有ACK字段 确认机制是在包里面 没有一个包是ACK包 |
建好邻居后,真正的update包通过组播发送给邻居,邻居收到后判断AD与FD,凡是满足情况的加入到拓扑表 | |
拓扑表中不存在邻居的备份链路,所以是伪链路状态型 | |
对应于OPcode的值 |
【3】EIGRP的工作过程
1.启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表 |
---|
2.邻居关系建立后,邻居间使用更新包共享路由信息,生成拓扑表;----装载最佳和备份路径 |
3.默认将最佳路径加载到路由表;收敛完成,hello包周期保活即可 |
结构突变:
新增网段 | 直连新增网段的设备,向所有邻居发送更新包,然后逐级收敛 |
---|---|
断开网段 | 直连断开网段的设备,向本地所有邻居发送查询包来收敛该路径若该直连网段同时为本地到达某个目标的最佳路径,且没有备份路径,那么也进行查询收敛;若存在备份路径,那么仅收敛直连网段路由,启用备份路径来访问其他网段 |
无法沟通 | hold time 到时间时,断开邻居关系,删除所有通过该邻居学习的信息;能否重新建立邻居关系,关注hello包 |
注 | 查询包、应答包、更新包—均基于RTP工作—必须被ACK确认,排序,流控;若没有ack或数据校验将重传,默认最大重传16次;16次后依然没有确认,将直接断开邻居关系,能否重建关系关注hello包 |
eigrp的包都有ACK字段 确认机制是在包里面 没有一个包是ACK包 |
【4】DUAL算法包含的内容
1、hello保活机制
2、success–成功路径–最佳路径 从本地到达目标最小度量值
Feasible success --可行成功路径–备份路径----备份路径的AD值小于不等于最佳路径的FD值
FD:可行距离,本地到达目标的度量
AD:通告距离,路径上的本地下一跳设备,到达目标的度量值
FC:可行条件,成为备份路径的条件–备份路径的AD值小于不等于最佳路径的FD值
3、主路径(最佳路径)故障时,同时本地没有备份路径;那么将发送查询包到本地所有邻居–除最佳路径中的下一跳设备;邻居在接收到该查询后将向本地的其他邻居进行查询包的扩散,到达网络的末梢后,由末梢设备逐级回复应答来清除整个网络所有设备的缓存;
也可能查询包在没有到达网络的末梢时,就已经寻找到新的路径,然后逐级返回应答来实现收敛;
发出查询包的前提:本地的直连路径故障,或本地的最佳路径故障,同时本地没有备份路径
注:假设A对1网段进行了查询收敛,同时1网段又是B到2网段的备份或最佳路径,那么当A在查询收敛1网段时,将导致B对2网段进行收敛;
末梢设备----本地所有的邻居发送查询包过来,询问一个非本地直连的网段;
【5】配置
r1(config)#router eigrp 90 启动时需要定义AS号;理解为全网一致的进程号 |
---|
r1(config-router)#no auto-summary 关闭自动汇总 |
可以直接宣告主类,也可以使用反掩码进行精确的匹配 |
r1(config-router)#network 1.0.0.0 |
r1(config-router)#network 124.1.1.1 0.0.0.0 |
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表 |
Hello中邻居间必须完全一致的3个参数----AS号 认证字段 K值 |
r3#show ip eigrp neighbors 查看邻居表
IP-EIGRP neighbors for process 90
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 34.1.1.2 Se1/1 12 00:00:26 43 258 0 9
0 23.1.1.1 Se1/0 12 00:00:35 208 1248 0 13
顺序 邻居接口ip 本地连接邻居的接口 序列号
SRTT–平均往返时间—本地发送更新、查询、应答包到达邻居后返回ACK的平均延时
RTO----重传间隔时间—根据SRTT和重传的次数计算的重传间隔时间
Q CNT–若为1,标识有一条路由正在重传中
当邻居关系建立后,邻居间使用更新包进行路由共享,收敛后生成拓扑表:
r3(config)#interface s1/1
r3(config-if)#bandwidth 800 修改参考带宽—不影响实际传输带宽—干涉到路由协议的计算
邻居表构造:1、hello包(发现邻居) 初始化就会发送hello包 AS号一样,K值一样,认证方式一样2、update包(形成邻居关系) 一旦条件达成就发送update包,这时update包不含路由,update包参与过程类似TCP三次握手的四次握手,显著特征是init位置1
r3#show ip eigrp topology 查看拓扑表
P 1.1.1.0/24, 1 successors, FD is 一条最佳路径,其度量为
via 23.1.1.1 (/), Serial1/0 最佳路径
via 34.1.1.2 (/), Serial1/1 备份路径
FD AD
r3#show ip eigrp topology all-links 查看所有路由,包括非备份路径
{1}在拓扑表每条信息的前端存在一个字母
P 标识该条目已经收敛完成,且默认最佳路径已进入路由表
A 活动–该条目正在收敛中
P 1.1.1.0/24, 1 successors, FD is
via 23.1.1.2 (/), Serial1/1
A 2.2.2.0/24, 1 successors, FD is Inaccessible, Q
1 replies, active 00:00:03, query-origin: Local origin
Remaining replies:
via 23.1.1.2, r, Serial1/1
当活动状态时,条目后方使用字母标识具体收敛到了哪一步
Q 标识本地已经发出查询包,没有收到ACK
Qr 标识已经收到ack,但还没有收到应答包
QR标识已经收到应答包,还未返回ack
U标识已经回复ack,之后查看应答包;
若应答无路径–删除该条目
若应答新路径,A转P,加载到路由表
{2}卡在活动状态
若本地进入活动状态后,收不到对端的ack,那么16次重传后断开邻居关系;
若本地进入活动状态后,收不到应答—卡在活动状态
通俗来讲就是:卡在活动状态:发送Quary包进行查询,邻居的邻居不回复,会使正常邻居强行中断,SIA机制:邻居收到查询包先回复reply包,包中什么都没有,只是维持邻居关系,同时,边缘路由器设置为stub router会使查询范围在除了stub router范围内,查询会加快
导致的原因:
1、网络拓扑过于复杂,网络的深度过深
2、错误的策略或配置导致
默认3min活动计时,超过该时间,删除条目同时断开邻居关系;导致网络重新刷新收敛,破坏网络稳定性
解决:
1、针对过于复杂的网络,可以加大计时器
r2(config)#router eigrp 90
r2(config-router)#timers active-time ?
<1-65535> EIGRP active-state time limit in minutes
2、12系列IOS开始添加卡在活动状态计时器
当活动计时器进行到一半时,向邻居发出卡在活动状态查询,若收到回复,那么活动计时器到时时,仅删除信息,不断开邻居关系;
{3}非等开销负载均衡—当到达目标网段时,存在最佳和备份路径
可以让设备将流量按比例延最佳和备份路径同时传输
r3#show ip protocols
EIGRP maximum metric variance 1
默认eigrp协议的差异值为1;
差异值=备份路径的FD/最佳路径的FD=结果向上求整
修改差异值实现非等开销负载均衡
r3(config-router)#variance 2
r3#show ip route 1.1.1.0 255.255.255.0 查看完整路由信息
默认EIGRP协议将最佳路径加载于路由表中:
字母D - EIGRP, EX - EIGRP external
D标识本地通过EIGRP协议所得路由;D EX标识其他协议学习的路由通过重发布技术共享产生
管理为90/170;内部90,外部170(重发布进来的路由)
复合度量:多参数运算所得
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跳,最大度量值为;全网设备k值必须完全,否则建立不了邻居关系;
r1(config-router)#metric weights 0 1 1 1 1 1 K1-K5 第一个0是QOS优先级
注:干涉选路需要修改参数–带宽、延时、负载、可靠性
【6】扩展配置
1)状态机–邻居关系被刷新
触发状态机的原因–希望邻居删除原有的路由信息,学习新的被修改的信息—例:汇总、认证、策略等
2)手工汇总–在更新源路由器上,所有更新发出的接口上配置
r3(config)#int s1/1
r3(config-if)#ip summary-address eigrp 90 3.3.2.0 255.255.254.0
汇总配置的设备上将自动生成空接口防环路由
3)手工认证–eigrp仅支持MD5认证
r2(config)#key chain ccna
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 ccna
r2(config-if)#ip authentication mode eigrp 90 md5 必须修改认证模式为MD5
补充:
最强认证:
4)被动接口–仅接收不发送路由协议信息–配置在连接用户的接口,不得配置在连接邻居的接口
r3(config)#router eigrp 90
r3(config-router)#passive-interface fastEthernet 0/0
被动所有接口,然后放过个别接口
r2(config-router)#passive-interface default
r2(config-router)#no passive-interface serial 1/0
RIP: 被动接口—不发送广播和组播更新,但可以单播发送数据–前提对端与本地均为单播
更新,在针对一个邻居开启了单播更新,默认不会限制对应接口的组播和广播更新。
EIGRP: 被动接口–开启后,该接口不再发送组播更新;
被动接口拒绝一切信息的发送
5)缺省路由
1、在边界路由器上所有连接内网的接口上进行汇总配置–汇总地址为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
边界还需要手工静态缺省指向isp
2、重发布静态路由
先在边界路由器上静态缺省指向ISP,然后再将该路由重发布到eigrp协议
r1(config)#router eigrp 90
r1(config-router)#redistribute static
3、宣告缺省路由
先在边界路由器上静态缺省指向ISP,然后再将该路由宣告到eigrp协议
r1(config)#router eigrp 90
r1(config-router)#network 0.0.0.0
不建议该配置,因为宣告了本地所有的接口
4、default-network做法–建议边界路由器外网接口为主类网段地址时
1)边界路由器上配置
r1(config)#ip default-network 12.0.0.0(宣告边界路由器连接ISP的接口地址的主类段)
2)eigrp协议中宣告该主类
r1(config)#router eigrp 90
r1(config-router)#network 12.0.0.0
3)该路由器上必须存在宣告的主类网段路由
r1(config)#ip route 12.0.0.0 255.0.0.0 null 0
【7】EIGRP协议的小特性
-
EIGRP的接口带宽占用率 —eigrP协议在工作时,仅最大占用接口参考带宽的百分之50
故可能接口的参考带宽大于或小于实际带宽;可以修改参考带宽来实际匹配;
有时考虑协议需要基于参考带宽选路,不建议修改参考带宽;此时可以修改eigrp协议的带宽占用百分比
r2(config)#interface s1/1
r2(config-if)#ip bandwidth-percent eigrp 90 200 -
EIGRP的查询机制
1)最佳路径故障时,同时本地没有备份路径–发出查询包
2)本地直连路由断开时发生查询包
3)一旦发出查询包,该路由在本地路由表中消失,在拓扑表中标记收敛–A标识
4)若收到一个查询包,但本地没有查询的路由,将向本地的其他邻居进行扩散
5)查询包到达末梢设备时,只能回复应答 -
末梢管理
复杂网络中的查询包管理–中心到站点拓扑;中心没有必要到站点进行查询
限制查询范围
1.) 汇总- - -减少明细路由故障时导致的查询,可以在中心连接分支站点的接口上进行汇总路由配置–查询明细路由时,分支站点仅存在汇总路由,只能回复不可达;注意该配置应该尽量避免路由黑洞2.) eigrp末梢区域配置- -分支站点设备直接配置为末梢区域;
之后分支站点发送到中心站点的hello包中存在末梢区域标记;
当中心站点链路出现故障时,中心站点不会到分支站点进行查询
r3(config)#router eigrp 90
r3(config-router)#eigrp stub 本地成为末梢区域
r2#show ip eigrp neighbors detail
r2#debug eigrp packets query
r3#debug eigrp packets ?
将一台路由器设置为末梢路由器时,默认执行以下命令
router eigrp 90
eigrp stub connected summary 本地成为末梢区域,当邻居需要传递直连和汇总路由过来
r3(config)#router eigrp 90
r3(config-router)#eigrp stub ?
connected Do advertise connected routes
receive-only Set IP-EIGRP as receive only neighbor
redistributed Do advertise redistributed routes
static Do advertise static routes
summary Do advertise summary routes
补充:
eigrp stub leak-map k
k是route-map,route-map匹配什么就往上发什么