EIGRP Enhanced Interior Gateway Routing Protocol )>
增强的内部网关路由协议
 
EIGRP的特点:
· EIGRP Cisco 私有的路由协议 采用 DUAL 扩散更新算法
· EIGRP 属于 IGP (内部网关协议) Hybrid 协议 基于 IP Pro 88
·组播、单播更新,组播地址 224.0.0.10
·支持等价 / 不等价的 负载均衡。
·支持 VLSM ,手工汇总。
·支持多种网络协议( IP/IPX )。
 
EIGRP为各种协议都维护的3张表:
1) Neighbor Table
 保存直连的邻居的IP地址, 确保直接邻居之间能够双向通信。
2)Topology Table:
 拓扑表中存放着前往目标地址的所有路由。
3)Routing Table:
 从拓扑表中选择到达目标地址的最佳路由 放入路由表。
 
DUAL算法:
扩散更新算法,也叫弥散更新算法
 
AD(RD)(通告距离) -------- -- --- 邻居通告的到达目的的Metric
FD(可行距离) -------- -- --- 本路由器到达目的的Metric
successor路由 -------- -- --- 具有 最优Metric 值的路由
Feasible successor路由-- --- 符合条件的次优路由
 
次优路由成为Feasible Successor的条件:也叫可行性条件
 FD of Best Route > AD of Second best Route
FD>AD
    (Successor)
 
    EIGRP 路由器会从拓朴表中选出去往特定目的地的最优路由 也称为 successor 路由 放入路由表 一旦最优路由 down EIGRP 会马上从拓朴表中找出 feasibel successor 路由 将其升级为最优路由 并放入路由表 而不用经过计算 这样提高了收敛的速度。
    如果当前路由表中的 successor 路由 down 掉后,在拓朴表中又没有备份的路由,EIGRP会向所有直连的邻居发出查询包,进行扩散查询。
 
 
RTP Reliable Transport Protocol) 靠传输协议
用来管理 EIGRP 报文的发送和接收,实现可靠传输。
所谓可靠传输是指发送有保障的而且报文是有序发送的。
 
EIGRP 中的常用报文:
 
Hello 用于邻居的发现和恢复。(Multicast)
Update: 传递路由更新,仅包含需要的路由条目,当为指定的一台路由器发更新时使用Unicast(P-TO-P) ,当为多台路由器发更新时使用Multicast.(MA)
Query: 当找不到Feasible Successor时,发送查询报文(MA 有些情况可以为单播)
Reply: 回应查询报文。(Unicast)
ACK:用来确认Update/Query/Reply (Unicast)
 
R eliable packets Update / Query/Reply
Unreliable packets :H ello/ACK
 
·Hello Address = 224.0.0.10
 
·Hello Timer
 5S:≥T1  (1.544Mbps)也有一个随机时间差防止更新同步
  60S :<T1
 
·Hold Timer(死亡时间) 3 * Hello Timer
 
·形成邻居关系的必要条件
 1、双方K Value一致。
 2、AS Num 一致。
 3、authentication 必须一致。
 
· 即使双方的 Hello Timer & Hold Timer 不一致 也可形成邻居关系。但是偶尔会出现问题。
 
·SRTT(Smooth Round-Trip Time)平均往返时间:
 从发送 3 种可靠包 到对方回应 ACK 的时间。 (ms)
 
·RTO(Retransmission TimeOut):
 重传超时的定时器。
 
·Queue count 队列数 还在排队等待发送的报文数
 
16次重传机制:
在EGIRP中,如果一台路由器向邻居发送了一个可靠的报文,是需要邻居回应一个ACK报文的,如果邻居没有回ACK,则会向邻居重传 16 次,如果邻居还没有回应,就会重 邻居关系。
 
EIGRP的Metric值计算:
 
EIGRP metric 值的计算,最多可以用到五个参数,实际上通常只用到两个。
 
公式
EIGRP Metric = 256*(107/BW+DLY/10)
 
注意:
1、带宽取路由传递路径上的最小带宽值
2、延迟是取路由来的方向的入接口的延迟总和
 
几种常用接口的带宽和延迟:
Interface  BW(kbps)  DLY(μsec)
Ethernet     10000      1000
FAST          100000      100
Serial      1544      20000
Loopback     8000000     5000
 
在完整的计算公式中,每一个参数还要乘上自已的权值:
K1=带宽bandwidth(源和目的之间的最小带宽)    1
K2=负载loading(源和目的之间的最大负载)     0
K3=延迟delay(源和目的之间的延迟总和)        1
K4=可靠性reliability(源和目的之间的最低可靠性) 0
K5=MTU(源和目的之间的最小MTU)              0
 
<EIGRP>基本配置
 
R2(config)#router eigrp 90
R2(config-router)#network 12.1.1.0 0.0.0.255
R2(config-router)#network 2.2.0.0 255.255.0.0 (正/反掩码皆可)
 
 
R2#show ip protocols
R2#show ip eigrp interfaces
 
R1#show ip eigrp neighbors
R1#show ip eigrp traffic
R1#show ip eigrp topology  // 只能显示 successor feasible successor
R1#show ip eigrp topology all-links    // 可显示拓扑表中的所有条目
 
测试不同 AS NUM 能不能建起邻居。
测试 Hello/Hold Timer 不一致能不能建起邻居。
 
· 修改 Hello/Hold Timer
 
R1(config-if)#ip hello-interval eigrp 90 60
R1(config-if)#ip hold-time eigrp 90 180     // 记住 hold-time 时间是给邻居用的
 
show ip eigrp interface detail s1/0   // 查看接口的 hello 时间
 
· 修改 K
 
R3(config)#router eigrp 90
R3(config-router)#metric weights 0 1 1 1 0 0
 
-------------------------------------------------------------------------------------
<自动汇总>
 
EIGRP在默认是开启auto-summary的,这意味着路由在跨越不同网络边界时,会自动汇总成主类。
 
router eigrp 90
  no auto-summary  // 本命令关闭自动汇总
 
<手工汇总>
 
int s1/0
 ip summary-address eigrp 90 20.1.4.0 255.255.252.0  //只能在路由流向的 出接口 作手工汇总
 
本地路由器会产生一条特殊路由,这条特殊 EIGRP 汇总路由的AD值是5
D   20.1.4.0/22 is a summary, 00:00:02, Null0
 
汇总的特点:
1、本地必须有明细路由,才会从做汇总的接口发出汇总路由。
2、直到明细的最后一条路由消失,汇总才会消失。
3 、汇总路由的metric值会取最小的metric值
4 、会在做汇总的路由器上产生一条特殊的指向空接口的路由,这条指向NULL0接口的路由是用来防环的
    D 2.0.0.0/8 is a summary, 00:02:30, Null0
   
5、仅将本地的路由汇总成主类,
对于收到的路由不做汇总,直接发出。
 
show ip route 172.16.0.0 255.255.0.0 可以看到指向Null0接口的特殊汇总路由的管理距离
 
 
<等价负载均衡>
· EIGRP 可做等价负载均衡,也可做不等价负载均衡。默认只做等价的。
·EIGRP默认支持4条路径的负载均衡,最大支持 1 6条。
 
show ip protocols    // 可查看EIGRP的负载均衡路径数
 
router eigrp 90
 maximum-paths 6 最多 16    // 本命令改动负载均衡的路径数
 
 
如果多条路由的metric不相等,可以通过修改Metric值来实现等价负载均衡 , 有以下两种方法:
1、<修改EIGRP接口带宽或延迟>
·通过修改接口的带宽或延迟,可以达到改动路由metric值的目地。
 
·在路由流向的入口改。
 
·改延迟时,是以10为单位来修改。比如说想把接口延迟改成2000usec
 则要:
 int e0/0
    delay 200    // 输入的值默认会*10,是以10为单位来改的
 
  show interface s1/0  使用这条命令可以看到接口的带宽和延迟
 
 
例一:
如上图所示:运行EIGRP后,R2可以学到两条3.3.3.0的路由,一条从R3学到,另一条从R1学到。
 
show ip eigrp topology detail-links
P 3.3.3 .0/24, 1 successors, FD is 409600, serno 6
        via 23.1.1.3 (409600/128256), Ethernet0/0
        via 12.1.1.1 (2809856/2297856), Serial1/0
 
如果想实现等价负载均衡,可以通过修改E0/0接口的延迟来实现
 
int e0/0
 delay 9476       // 将接口延迟改为94760μS
 
show ip route
     3.0.0.0/24 is subnetted, 1 subnets
D       3.3.3.0 [90/2809856] via 23.1.1.3, 00:00:08, Ethernet0/0
                [90/2809856] via 12.1.1.1, 00:00:08, Serial1/0
 
2 、< 偏移列表
用这个玩意 也可 将不同路由的metric值改为一样,用来实现负载均衡
 
不等价的负载均衡
默认情况下EIGRP只支持等价的负载均衡 ,使用以下命令可实现不等价负载均衡。
 
通过下面这条命令 设置一个变量,再用这个变量 乘以当前successor路由的FD值就能得到一个参考值
 
router eigrp 90
 variance 2 
 
只要 当前拓扑表中的 feasible successor 路由能满足以下条件 就能被放入路由表中 实现不等价负载均衡。
 
FS's FD    V *Successor's FD (参考值)    V 就是变量值 ,由variance 命令设 定(1-128)
 
注意:做不等价负载均衡的前提是路由必须要先成为Feasible successor ,否则不会被用来做负载均衡
 
例:
 
如上图所示:运行EIGRP后,在R2上可以学到两条13.1.1.0的路由,一条成为successor,一条成为FS。
 
show ip eigrp topology  
P 13.1.1 .0/24, 1 successors, FD is 2195456
        via 23.1.1.3 (2195456/2169856), Ethernet0/0
        via 12.1.1.1 (2681856/2169856), Serial1/0
 
可以通过设置variance 变量实现不等价负载均衡
router eigrp 90
 variance 2
 
show ip route
     13.0.0.0/24 is subnetted, 1 subnets
D       13.1.1.0 [90/2195456] via 23.1.1.3, 00:00:13, Ethernet0/0
                 [90/2681856] via 12.1.1.1, 00:00:13, Serial1/0
 
<EIGRP占用带宽>
 
·默认,EIGRP协议本身的流量最多只占用接口的参考带宽的50%。
 如果没有使用Bandwidth设置带宽,则使用接口默认带宽。
 
·通过以下命令,可以改动EIGRP占用的带宽值
int s1/0
 ip bandwidth-percent eigrp 90 200   后面的参数为百分比
                            (BW * 200%)
本命令只能show run interface看
                 
注意:show interface 时所看到的带宽叫做参考带宽,这个带宽并不是接口的实际带宽,接口的实际带宽是由时钟速率决定的,参考带宽只是用来计算metric值或其它一些应用的。
------------------------------------------------------------------------------------
 
Query>
在广域网链路上,EIGRP的扩散查询机制可能会导致查询范围过大,甚至一些不必要的查询,从而占用多余的带宽。
 
·以下两种方法可限制EIGRP的查询范围:
 
 1)Summary   使用路由汇总来解决
  
 ·EIGRP的查询有以下特点:
    仅当路由表中有完全匹配的明细条目时,才会传播该查询。
  否则直接回应 网络不可达
 
 2)Stub
 ·通过命令把远程路由器配置成Stub路由器,Stub路由器会向所有邻居发送信息告之自已的状态,其他路由器将不会向Stub路由器发送查询。
 
R1:
router ei 90
 eigrp stub (默认通告直连&汇总)
 
 
SIA Stuck in Active)卡在活动状态
路由器在三分钟内没有收到邻居的回应,就认为路由已进入SIA状态,这时会重置邻居关系.
 
·导致SIA的常见原因:
 1)查询范围太大
 2)路由器太忙无法回答查询。
 3)路由器之间的链路质量低劣,导致查询包丢失。
 4)某些单向链路失效。
 
router eigrp 90
  timers active-time [2|disable]
 (SIA计时器,默认是3分钟,超过3分钟就重置邻居关系,避免卡在活动状态)
 
 
被动接口
· EIGRP 中也可以将一个接口设置为被动接口
 
·被动接口将 不收也不发 。所以根本无法和对端路由器建立邻居关系。
 
router eigrp 90
 passive-interface s1/0
 
 
水平分割
EIGRP 中默认也是开启水平分割的
 
int s1/0
 no ip split-horizon eigrp 90   // 在接口上使用这条命令可以关闭水平分割
 
EIGRP 最大 hop
 
EIGRP 路由器上可以设定可用路由的最大跳数。
如果一台路由器收到的路由传递的跳数已超过了自已设定的最大跳数 这条路由将不用也不传。
 
默认情况下是100,最大可修改为255
router eigrp 90
 metric maximum-hops 255
 
show ip protocol  本命令可查看
 
 
EIGRP 区域生成默认路由
 
1 Redistribute Static:
 
 
2 Network 0.0.0.0:
 
ip route 0.0.0.0 0.0.0.0 serial 0 写下一跳不行 必须写接口
ip route 0.0.0.0 0.0.0.0 null 0
router eigrp 90
 network 0.0.0.0
 
 
3 ip default-network:
全局模式下
ip default-network 192.168.1.0   // 这样就可以把这条路由下发给其它的路由器当做默认路由了
 
使用本命令要满足以下条件:
1、接口IP地址必须是 主类 ,不能是子网
2、接口必须宣告进EIGRP(即network)
3、使用命令下发时也必须写上这个接口的 主类网络号
 
 
D* 192.168.1.0/24   F0/1
 
D* 0.0.0.0    192.168.1.0
D 192.168.1.0   F0/1