简述
- IGP 支持100跳
- 距离矢量协议(添加了链路状态特性:邻居关系、拓扑表等)——ADV(高级距离矢量协议 )
- 支持VLSM和CIDR
- 传输层协议。缺省情况下,IPv4封装,类型号为88。
- 报文类型:HELLO、QUERY、REPLY、UPDATE
特性
- 高级距离矢量
- 快速收敛
- 支持VLSM和不连续子网
- 增量更新(触发更新的一种,只把变化的路由表项发送出去,节约带宽)
- 支持多种网络层协议(IPv4/IPv6/IPX/Apple Talk等),应用场合:一台路由器上的不同接口配置了不同的网络层协议,需要在该路由器上开启多个EIGRP进程,分别为不通过网络层协议服务
- 灵活的网络设计(VLSM/CIDR)
- 组播/单播,组播地址:224.0.0.10
- 手动汇总
- 100%无环
- WANs和LANs的简单配置(相对于OSPF来说的)
- 等价/非等价负载均衡
EIGRP四大底层机制
Neighbor discovery/recovery
- Uses hello packets between neighbors
- 不像RIP那样为收到的路由条目设置各种计时器,EIGRP通过检测邻居状态来判断其传送过来的路由有效性
- HELLO包间隔5s或60s
- Hold timer为hello间隔的3倍,到期后重置邻居关系
Reliable Transport Protocol(RTP)
- 与媒体协议中的Real Time Protocol不同,后者是为了防止报文乱序(对语音、视频流量至关重要)
- 因为EIGRP是用IP封装的传输层协议,不能保证可靠性,因此使用RTP保证可靠性(防丢包、重传机制)
- 若重传报文16次之后,仍未收到ACK,则重置邻居关系
DUAL finit-state machine
Selects lowest-cost, loop free paths to each destination
理解DUAL算法需要的术语:
- FD 可行距离
- AD 通告距离
- S 后继
- FS 可行后继
- FC 可行性条件
Protocol-dependent modules(PDMs)
支持多种网络层协议
EIGRP Tables
邻居表
HELLO包中的TTL=1
HELLO报文用来建立邻接关系
Next-Hop Router | Interface |
拓扑表
Update传输路由条目,所有收到的路由条目都放入拓扑表Destination 1 | FD and AD via Each Neighbor |
路由表
DUAL对Topology Table计算,得到Routing TableDestination | Best Route |
EIGRP Packets
HELLO
组播和单播
单播手动配置,用于FR
5s
bandwidth>=1.544Mbit/s
Ethernet
60s
bandwidth<1.544Mbit/s
FR子接口
Update
默认组播,只有当组播未开启时,才手动配置单播
增量更新
Query/Reply
是DUAL的重要机制
当丢失了一条EIGRP路由时,才发送Query。
Query组播,Reply单播
ACK
本质上是ACK位为1的HELLO报文,以单播发送
回复Update、Query、Reply
初始路由建立
A
B
|
HELLO =》
|
|
《=HELLO
|
|
《=UPDATE
|
|
ACK=》
|
|
UPDATE=》
|
|
《=ACK
|
其中,UPDATE为初始更新报文,包含了所有路由条目。
EIGRP Metric
复合度量值
这些参数指的都是路径上的
Bandwidth
带宽
各网段最小值
Delay
延迟
各网段之和
Reliability
可靠性
各网段最小值
Loading
负载
各网段最大值
MTU
其实并没有该参数
各网段最小值
K1、K2、K3、K4、K5默认值为1,0,1,0,0.
Metric = [K1*BW+(K2*BW)/(256-load)+k3*Delay]
如果K5!=0,则
Metric = Metric*[K5/(Reliability+K4)]
得到IGRP的Metric。
在此基础上,乘以256,就是EIGRP的Metric。
默认参数下,
Metric = 256*(BW + Delay)。
BW=10^7/Bandwidth,Bandwitdth单位为Kbps,Delay单位为10us。在路由器上,Delay的单位是us,需要转换一下。
因此,
Metric = 256 * (10^7/Bandwidth(Kbps)+Delay(us)/10)。
需要注意的是,这里的带宽和延迟指的是:控制层面路由传递的
入接口带宽和延迟。
不要忘记环回口的入接口带宽和延迟。
EIGRP特性
自动汇总
汇总的目的是减小路由表大小。
在主类网络边界上,明细路由将自动汇总成一个主类网络路由。
在做自动汇总时,本地的路由表中将出现一条指向Null0的汇总路由,目的是在逻辑上防环和防止路由黑洞。
与RIP不同的是,EIGRP只会汇总本地产生的路由,不会汇总邻居传递过来的EIGRP路由。
需要注意的是,指向Null0的汇总路由只会存在于本地,不会被传递出去。它的管理距离是5。
手工汇总
EIGRP同时支持汇总和聚合。
手工汇总配置位置:
尽可能接近源的路由发送的出接口上。
手工汇总可以汇总本地产生的路由和邻居传递过来的EIGRP路由。
无论是内部EIGRP还是外部EIGRP的路由汇总后,都以内部EIGRP路由的形式发送。(仿真过程:redistribute connectted)
ip summary-address eigrp 90 192.168.8.0 255.255.252.0后面可以跟管理距离或leak-map(泄露列表)。
leak-map用来放走那些不希望手工汇总的明细路由。(通过ACL抓取路由)
如:
(config-if)#ip summary-address eigrp 90 192.168.8.0 255.255.252.0 leak-map TEST
(config)#access-list 10 permit 192.168.8.0 0.0.1.0
将匹配出192.168.8.0和192.168.9.0
(config)#router-map TEST permit 10
(config-route-map)#match ip address 10
leak-map:该工具用来放行手工汇总路由条目内的某些明细路由条目
route-map:在该例子中用来调用ACL抓取控制层面需要被放行的明细路由条目
ACL:用来抓取路由条目
负载均衡
支持等价和非等价负载均衡,默认情况下是等价负载均衡
默认情况下,最大支持4条负载均衡,可以用命令改为16条。
要支持非等价负载均衡,可以:
(config-router)#variance 倍数
倍数范围1~128
DUAL包括本地计算和扩散计算
所谓本地计算,是指在拓扑表中寻找备份路由。选择条件是FC条件:AD(FS)<FD(S)<FD(FS)。
默认情况下,3.3.3.0/24的路由下一跳地址为100.1.1.3。
即便设置了viriance,R2也不能成为非等价负载均衡,原因是AD(R2)不小于FD(SW1),不满足FC。
可以通过修改R2的f0/1接口的bandwidth或delay使其满足FC。
WAN配置
EIGRP支持多种WAN链路:
P2P
NUMA
默认情况下,EIGRP最多使用50%带宽。(未设置管理带宽,则使用实际带宽的50%;设置了管理带宽,则使用管理带宽的50%)
(config-if)#ip bandwidth-percent eigrp 进程号 百分比
DUAL算法
算法流程:
- 跟踪邻居通告的所有路由,执行本地计算
- 选择无环最优路由(后继站),并记录所有可能的备份路由(可行后继站)。备份路由选择条件是FC条件:AD(FS)<FD(S)<FD(FS)。
- 若最优路由down了,则立即使用备份路由
- 若没有可用的可行后继站,则启动扩散更新计算:
- 把要计算的路由条目状态从Passive改为Active
- 发送关于丢失路由条目的更新,并设置其FD为无穷大,表示该路由条目已经不可达
- 向邻居发送Query报文
- 当路由器收到邻居的Query报文,有多重情况:
- 若该路由器的路由表中,查询者不是被查询路由的后继站,则将本地路由表中的后继站路由以Reply报文的形式发送给邻居。
- 若该路由器的路由表中,查询者是被查询路由的后继站,则判定本地拓扑表内是否拥有该路由的备份路由:
- 如果有,则优先更新本地路由表,将最优路由切换为可行后继站路由,并将其以Reply返回;
- 如果没有,则判断自己是否拥有除查询者之外的其他邻居:
- 若有,置Active,发Query;
- 若没有,删除该路由,发送Reply告知查询者该路由不可达。
- 若该路由器的路由表内无被查询路由,则直接Reply邻居表示该路由不可达。
EIGRP Stub
然而,DUAL算法也有缺点,有的时候需要限制Query报文的发送。
手工汇总
Stub特性
(config-router)#eigrp stub
后面可以加很多参数:connected leak-map receive-only redistributed static summary
receive-only表示只收不发,默认情况下为connected和summary,意思是只将直连路由和汇总路由发出去。
建议把最边缘的路由器作为stub路由器
summary参数是指这能发送由本地路由器汇总的路由,不能发送其他路由器汇总的路由。
static参数是指只能发送重分发至eigrp的static路由。(ip route + redistribue static)
redistributed参数是指只发送重分发至eigrp的所有类型的路由。
leak-map
Stuck in Active
如果有一个邻居在180s之内没能发送Reply,则重置邻接关系,并进入SIA状态。
改进后的方案,添加了SIA-Query和SIA-Reply报文。当180s倒计时到一半时,发送SIA-Query,若邻居返回SIA-Reply表明还在干活,将重置180s。
若连续发送7次SIA-Query后,仍未收到Reply,则不再发SIA-Query,待180s到时后,重置邻接关系。
Graceful Shutdown
当路由器不再运行EIGRP或者将某网段从network通告中删除时,将发送goodbye报文,告知邻居此网段已经不可达。
重置邻居关系的方式
- Hold timer到期
- 报文重传16次之后仍未收到ACK
- Active timer超时
其中,对于方式2,可以通过设置ACL实现重传16次这样的效果。如图:
在R1的f0/1上,设置扩展ACL,deny入站方向的EIGRP报文,命令为:
R1(config)#access-list 100 deny eigrp host 12.1.1.2 host 224.0.0.10
R1(config)#int fa 0/1
R1(config t)#ip access-group 100 in
当R2收到R1的HELLO报文后,R2会向R1发送UPDATE报文,重传16次之后,邻接关系因重传计时器超时而重置。
再当R2收到R1的HELLO报文后,重复上述动作。
建立邻接关系的条件
- 相同的AS号
- 不同的Router ID
- 相同的K值
- 认证
小特性
修改K值
(config-rouetr)#metric weights 0 K1 K2 K3 K4 K5
修改计时器
(config-if)#ip hello-time eigrp 90 时间
(config-if)#ip hold-time eigrp 90 时间
(config-router)#timers active-time 时间
认证
EIGRP只支持MD5密文认证
钥匙链认证
基于链路的
在R1和R2上分别执行:
(config)#key chain KEY_CHAIN_NAME
(config-keychain)#key 1
(config-keychain-key)#key-string Cisco
只有密钥id一致且key-string一致,才能认证成功。
(config-if)#ip authentication key-chain eigrp 90 KEY_CHAIN_NAME
(config-if)#ip authentication mode eigrp 90 md5
默认情况下,只会发送密钥id最小的密钥,密钥接收后只要在钥匙链中找到一把匹配成功的密钥即可单向认证成功。
如:
R1: key-chain: 10:CISCO 20:H3C 30:ARUBA
R2: key-chain: 10:TEST 20:CISCO
R2可以认证成功R1,反之不行。
高级属性:可以用send-lifetime和accpet-lifetime限制钥匙链中钥匙的发送和接收时间。
使用这个方法,可以实现定期自动更换密钥。
EIGRP高级特性
注入缺省路由
方式一:路由重分发
(config)#ip route 0.0.0.0 0.0.0.0 INTERFACE ADDRESS
(config)#router eigrp 90
(config-router)#redistribute static
sh ip route会出现一条外部EIGRP路由,管理距离为170。凡是重分发至EIGRP域的都是外部EIGRP,标记为D*EX。
方式二:network 0.0.0.0
(config)#ip route 0.0.0.0 0.0.0.0 INTERFACE
只能关联出站接口,不能关联下一跳地址。
然后,(config-router)#network 0.0.0.0
此时,路由表会出现一条标记为D*的内部EIGRP路由。
方式三:ip default-network
需要三步:
(config)#ip default-network 外网主类网段
添加该主类网段路由
(config)#ip route 外网主类网络 掩码 INTERFACE
在EIGRP进程中,通告该主类网段
(config-router)#network 该主类网段
一般情况下,缺省路由是像0.0.0.0一样的,但是,只有在这种方式中,路由表中会显示缺省路由为该外网主类网段路由。
方式四:路由聚合
路由聚合:将几个连续的主类路由聚合起来,形成超网路由。
在AS边界路由器连接内网的接口上,通过使用路由聚合实现缺省路由的下放。
(config-if)#ip summary-address eigrp 90 0.0.0.0 0.0.0.0
偏移列表
只能增加度量值,不能减小
(config)#access-list 10 permit 3.3.3.0
(config-router)#offset-list 10 out 600 fastEthernet 0/0
被动接口
(config-router)#passive-interface fa
stEthernet 0/1
rip的被动接口不能发组播、广播,但可以发单播,可以接收任何rip报文
但是EIGRP的被动接口不能发送和接收任何形式的EIGRP报文。
单播
在FR这样一个NBMA环境中,若未开启伪广播特性,则必须使用单播特性。
(config-router)# neighbor 邻居接口地址 本地接口
链路两端必须都使用单播特性,才能建立
关闭水平分割
与RIP不同的是,不仅需要关闭物理水平分割,也要关闭逻辑水平分割。
适用于FR环境。
由于水平分割,R2和R3的路由不能互相传递,因此必须关闭R1的多点子接口的水平分割。命令:
(config-if)#no ip split-horizon 物理水平分割
(config-if)#no ip split-horizon eigrp 90 逻辑水平分割