xdays

CCNP-EIGRP

March 16, 2011

  • 基本特征
  • 分组类型
  • 术语解释

    • 邻居表
    • 拓扑表
    • 路由表
    • 可行距离
    • 通告距离
    • 后继路由器
    • 可行后继路由器
  • 度量计算
  • 底层技术

    • 邻居发现
    • 重置邻居关系的情况
    • DUAL 算法
  • 协议执行过程
  • 通告默认路由
  • 负载均衡
  • 限制查询范围
  • 身份验证

基本特征

EIGRP 是思科的专有协议,它由于具有一些链路状态的特性而属于高级距离矢量协议。报文封装于 EIGRP 中,协议号为 88。为确保信息传输的可靠性,EIGRP 包含一个 RTP 可靠传输协议。另外 EIGRP 的优势在于收敛速度快,支持 VLSM 和 CIDR,使用组播(地址为 224.0.0.10)通过相应的协议模块可以支持不同的协议。

分组类型

分组类型及其作用见下表:


类型 作用 hello 包 建立邻居,身份验证,协商末节(stub)路由器 update 包 当收到对方的 hello 包是发送自己的路由信息 request 包 主动状态下是向邻居查询路由 reply 包 邻居的应答 ack 包 对 update,request,reply 确认


术语解释

邻居表 (neighbor)

当路由器收到对方发的 hello 包时就将邻居放在邻居表中,邻居表中记录了该路由器所有邻居,当拓扑变化发送更新和主动状态下查询路由时都会用到。

拓扑表(topology)

记录了从邻居那里学到的网络的拓扑信息,区别于链路状态的邻居表。

路由表

所有路由协议的路由表都是一个目的,作为路由器转发数据包的参照标准。

可行距离(FD)

EIGRP 的度量(metric),就是从本地路由器出发到达目的网络的度量值。

通告距离(AD)

本地路由器的邻居的可行距离(FD)。

后继路由器(successor)

到达该路由器的路径被作为路由添加到路由表中。

可行后继路由器(FS)

到达该路由器的路径不是最优的但是满足可行性条件,可以作为备用路由,保存在拓扑表中,如果后继路由不可用则用可行后继路由器。

度量计算

EIGRP 的度量包括 K1-K5,分别是带宽,负载,延迟,可靠性和 MTU,默认采用带宽和延迟来计算 metric 值计算公式为:计算公式 256*[( 10E7/bw+delay(us)/10 )],其中需要注意的是带宽取到达目的网络的最小带宽,延迟是所有网络延迟之和。取所有网络如接口的相应值。

底层技术

邻居发现

当路由器运行 EIGRP 时会向所有归到 EIGRP 域内的接口发送 hello 报文(MA 网络中每 5s 发送一次,NBMA 每 60s 发送一次,而 hold 失效时间是 hello 时间的 3 倍),对端收到数据包后如果包括验证部分则进行身份验证,如果没有则添加到邻居表中,然后回应 update 包通告自身的路由表。还有很重要的一点是邻居建立的条件:as 号一致;度量类型(Key 值)一致;身份验证。

重置邻居关系的情况

1)hold 时间超时,路由器认为对端路由器 down 了;2)update 超时,因为 update 包是需要 ack 包确认的,如果在重传 16 次仍然收不到回应便重置邻居关系;3)SIA(stuck in active)是路由器陷入主动状态不能收敛的一种情况,可能是复杂的网络结构造成的。

DUAL 算法

重点在可行性条件和主动状态查询。可行性条件:只有下一跳的 AD 值小于当前路由器的 FD 值时才能被加入到路由表中,只此一句就体现了 EIGRP 的高级之处,这样可以避免环路的产生。主动状态查询:当本地路由器的后继路由器 down 掉,而拓扑表中又没有可行后继路由器,就会把对应的路由置为主动状态,路由器邻居发送查询包来请求到达目的网络的路由,邻居如果有对应路由直接相应请求,如果没有重复这个过程(也就是把自己对应路由置于主动状态继续向外查询),直到找到找到可以到达目的网络的路由或者确定目的网络不可达,然后在沿原路返回响应包,这个过程恰恰形象描述了弥散这种现象。

协议执行过程

开启 EIGRP 的路由器向所有运行协议的接口发送 hello 包建立邻居,然后相互交换路由信息,之后每台路由器运行 DUAL 算法计算到达每个网络的路由以及备用路由(FS,如果有的话),这样网络达到了收敛的状态,至此不会再定期发送更新,EIGRP 也是唯一个不会发送定期更新的路由协议。当链路出现问题是,也就是对应的路由失效,路由器查看自己是否有备用路由,如果有直接加入路由表,如果没有将路由置于主动状态执行查询过程。

通告默认路由

在 EIGRP 通告默认路由的方法有三种:1)重定向默认路由;2)添加默认路由,然后通告默认路由(network 0.0.0.0 但是这条命令是通告所有接口,可能不是最优的方法);3)先通告默认路由的出口网段(network),然后使用 ip default-network (主类网络号)通告出口网段,确保路由表中有对应主类网络的路由(正常情况下 EIGRP 会自动产生发往 null 接口的汇总路由,这样确保了路由的稳定性)

负载均衡

负载均衡包括等价负载均衡和非等价负载均衡。等价负载均衡好理解,就是通过一种路由协议获取的度量值相同的到达目的网络的不同路由,默认是 4 条负载均衡最大支持 6 条负载均衡。非等价负载均衡就是在不等价的路径上执行,前提是所有路由都满足可行性条件(也就是在后继路由和可行后继路由上执行),然后在所有满足如下公式的路由之间执行按比例负载均衡:successor’s FD > FS’s FD。

限制查询范围

既然 SIA 拉慢了网络的收敛速度,就要有措施来避免这种状态,通过限制查询的范围可以有效阻止路由器变成 SIA 状态。具体方法无非是发送了直接回应不可达和不发送:1)路由汇总,通过在边界上执行汇总使外界学习不到明细路由,这样外界路由器收到查询包时直接回复不可达也就阻断了查询向外扩散;2)通过将路由器设置为末节路由器,来告诉邻居不要把查询包发给我,我这里得不到你想要的路由,这样也限制了查询的范围。

身份验证

身份验证的配置比较麻烦,大致总结过程是创建一个密钥链,在上面栓一把钥匙,然后启用 EIGRP 的身份验证,最后把钥匙和身份验证关联。具体命令如下:

R1(config)#key chain cisco

R1(config-keychain)#key 1

R1(config-keychain-key)#key-string cisco

R1(config-keychain-key)#int s0/0

R1(config-if)#ip authentication key-chain eigrp 90 cisco

R1(config-if)#ip authentication mode eigrp 90 md5

注意点:

1) 因为 EIGRP 会自动汇总,一般会关闭自动汇总。而手工汇总在接口上执行,汇总路由的 metric 值是所有路由的最小 metric 值

2) 凡是打*的都是默认路由,而不是单指 0.0.0.0


我是 xdays, 记录着我技术的成长,生活的点滴和感悟,能对你有所帮助那更好。