EIGRP:

  1. 属于IGP,最大支持100跳

  2. ADV(高级距离矢量协议),能实现快速收敛

  3. 无类协议,既支持VLSM,也支持CIDR,发送更新携带子网掩码

  4. 属于四层协议

    格式:  帧头   IP  EIGRP   FCS

注意:其中EIGRP中也跟RIP一样,有用来描述报文类型的字段

5. 只发一次更新报文,下一次除非是拓扑发生了改变,这样更节省了带宽

6. 路由器运行EIGRP支持多进程(IP,IPX等)

7. 发送报文是以组播或者是单播的方式,不管在什么情况都不会是广播

注意:组播地址(224.0.0.10)

8. 100%无环路,因为采用的是DUAL算法

9. 是唯一的一款支持非等价的负载均衡

EIGRP的四大重要机制:

1.邻居发现和恢复机制【hello--加入拓扑表--加入路由表】

注意:hello包是周期性的发送的,来检测邻居的状态,一般是5s或者是60s(当带宽小于1.544M时5s发送一次,当带宽大于1.544M时60s发送一次),对应的还有一个hold time 时间,是周期时间的3倍,如果在hold time 时间内没有收到hello 报文,路由器就会重置邻居表,断开后的邻居以后还可以再建立邻接关系

2.可靠传输协议(RTP):

EIGRP封装的是IP协议,是无连接不可靠的,所以EIGRP封装RTP来提供可靠性。第七层一般习惯用这种方法,如QQ发送消息,失败后有提示,还可以重传。

注意:当传送16次还没有收到ACK确认后,就会断开邻接关系

3.DUAL(扩张更新算法);

五个重要的名词

FD(可行距离)  该路由器通过该路段到达目的网段的度量值,比较最优路由是根据FD来计算的

AD(通告距离)  传送该路由条目的下一个路由器到达目的网段的度量值

S (后继站)

FS(可行性后继站)

FC(可行性条件)

注意:FD和AD是相对路由器来言的

4.PDM(协议相关模块)

该协议就是EIGRP之所以支持多进程的原因,12.1和12.2中不支持IPv6

EIGRP的邻居表格式:

  直连的邻居的接口IP地址    路由器自己本身与邻居相连的接口

注意:初始更新路由器会直接加入拓扑表,然后在拓扑表中根据FD和AD值来标识路由条目,最后经过DUAL算法把所有的最好路由加入到路由表中

五种报文的类型:

  1. Hello   hello报文一般使用组播发送,在帧中继的使用的是单播,hello的TTL=1

  2. Update  默认是组播发送的,但是可以配置成单播

  3. Query(查询)   仅当路由器丢失了一条EIGRP条目,而自己本身又没有能力解决的时候就会发送Update更新,支持组播发送的

  4. Reply(应答)   一般跟Query配合使用,只支持单播

  5. ACK    update,query,reply都是可靠传输,都需要ACK来确认,ACK是单播发送的

报文的发送过程:(R1和R2之间)

     *假设R1先发送hello报文,R2收到R1的hello报文后,知道了R1跟自己本身相连的接口IP地址,知道了自己与R1相连的接口,就会默认与R1建立邻接关系,所以会发送Update,同时也发送hello报文,同理,R1收到R2的hello报文后就会建立邻接关系,也会发送Update,同时发送ACK来确认自己收到了R2的Update,并把R2的Update加入自己的拓扑表中,R2收到了Update后会加入拓扑表,同时发送ACK来确认自己收到了R1的Update,最后两台路由器都会根据DUAL来计算最佳条目加入路由表

EIGRP的度量值(Metric):

bandwidth  带宽是一条路径的带宽,而不是一个网段的,选如接口最小的

delay      延迟是所有如接口的总和

reliability 可靠性取最小值

loading    负载是指承载的流量,负载越高,网络可用性越低,负载取最大值

MTU         MTU取最小值(其实MTU对metric没有影响)


Metric={K1*BW+K2*BW/(256-load)+K3*delay}*K5/reliability*256

默认情况下: K1=1 K2=0 K3=1 K4=0 K5=0

BW=10^7/最小的BW(kbit/s)    Delay=delay(u/s)/10   注意单位

默认下matric=256*(10^7/最小的BW(kbit/s)+delay(u/s)/10)

*EIGRP计算路由器度量值使用的带宽:提取控制层面路由条目流向所有入接口的带宽取最小值

*EIGRP计算路由器度量值使用的延迟:提取控制层面路由条目流向所有入接口的延迟的总和

有关EIGRP实验的各种命令:

shou ip eigrp interface

shou ip eigrp neighbors

shou ip eigrp detail

eigrp router-id 1.1.1.1 (指定路由器的ID,跟OSPF相像)

show ip route eigrp(可以加eigrp的进程号)

show interface f0/0  

修改带宽和延迟: 1.进入接口

                 2.bandwidth 2000kbit/s (2M)

                   delay   1000(u/s)

EIGRP的四种缺省配置方式(边界路由器):

一:

R2(config)#ip route 0.0.0.0 0.0.0.0 f0/1 3.3.3.1 

R2(config)#router eigrp 100

R2(config-router)#redistribute static

注意:D*EX标识路由条目  AD=170

二:

R2(config)#ip route 0.0.0.0 0.0.0.0 f0/1

R2(config)#router eigrp 100 

R2(config-router)#net 0.0.0.0

跟RIP基本一致

三:*****

R2(config)#ip default-network 3.0.0.0

R2(config)#ip route 3.0.0.0 255.0.0.0 f0/1

R2(config)#router eigrp 100

R2(config-router)#net 3.0.0.0

注意:ip default-network + 主类网段该网段必须是路由器连接外网接口的地址所属的主网段,必须要在路由器上创建该网段(一般用静态路由来添加),接着在network中宣告该主类网段

配置之后路由器在路由表中找不到明细路由的时候就会缺省向该路由

四:

R2(config)#int f0/0

R2(config-if)#ip summary-address eigrp 100 0.0.0.0 0.0.0.0

EIGRP的自动汇总:

1.开启自动汇总后,路由器本身会产生Null0(垃圾桶)来防止路由黑洞,EIGRP的自动汇总规则如同RIPv2,不同的是EIGRP只支持将本地路由汇总,不会将邻居传递过来的路由汇总

2.手工汇总即可以汇总本地路由,也可以汇总学习到的路由

注意:leak-map 用来释放手工汇总的路由条目内的明细路由

命令:access-list 1 permit 1.1.1.1 0.0.0.0 

      router map cisco 10 permit 1

      match ip address 10

      int f0/0

      ip summary-address eigrp 100 1.1.1.0 255.255.248.0 leak map cisco

router map 是用来调用ACL抓取到的控制层面需要被放行的明细路由条目

RIP没有此功能

EIGRP的负载均衡:

默认情况下EIGRP只支持等价负载均衡,最多支持4条,最大可以改为16条

实现非等价负载均衡的2个条件:

1.次优路由的FD>最优路由的FD*2   【2】可以修改  (config-router)#variance 2

2.次优路由的AD>最优路由的FD     【FC】

注意:不能成为FS的路由会被隐藏

      EIGRP默认使用带宽的50%,但是可以修改【先进入接口  ip bandwidth-percent eigrp 100 60】

EIGRP的DUAL算法:

   1.当一台运行EIGRP的路由器通过其邻居收到一个Query报文,假定对于该接收站路由器,发送查询的路由器对于该路由器而言不是该路由器的后继站,该路由器会直接将表中的后继站路由以Reply的形式发送给查询者

   2.假定对于该接收者路由器,发送查询的路由器对于该路由器而言是该路由器的后继站,则该路由器会判定自己本地拓扑表内是否拥有该路由器的备份路由,如果有,则该路由器会优先更新本地路由表,将最优路由切换为可行后继站路由,并且将该路由器一Reply的形式发送给查询者。如果没有,则该路由器会判断自己是否拥有除查询者之外的其他EIGRP邻居,如果有,则该路由器会将拓扑表内该路由器的条目置为Active,并欠着查询者的查询报文,转而发送查询给其他的EIGRP邻居。如果该路由器并没有其他的EIGRP邻居,则该路由器会直接将拓扑表以及关于该路由的信息删除,并且直接发送Reply给查询者告知该路由不可达。

   3.假定接收到查询的路由器在接收查询之前本地路由表和拓扑表内均没有被查询的路由,则该路由会直接向查询则发送Reply告知该路由不可达

*EIGRP   stub特性

  1. receive-only   不会发送任何条目给其他邻居,但可以接收

  2. connected      只会将本地被宣告进EIGRP的路由通告给邻居

  3. summary        只会发送本地汇总路由(本地自动汇总和本地手工汇总)

  4. static         把本地重分发的静态路由发送

  5. redistributed  将所有重分发进EIGRP的所有外部路由通告给其他的邻居(默认下跟 connected summary),

    命令:将RIP协议宣告进EIGRP  redistributed rip metric 10000 100 255 1 1500

  6. leak-map       路由泄漏

  7. stub           默认下跟connected summary :

相关的查看命令:

debug eigrp packets query 

debug eigrp packet  reply 

show ip eigrp neighbors detail 

SIA:

    SIA是用来处理路由发出Query报文没有收到Reply的,2.3以后的IOS版本才有,没有SIA报文,发送Query报文最多只能等待180s的Reply时间

处理方式:当发送query报文后,先等待90s,90s到了以后发送SIA的Query报文,来判断对方是否在帮助自己查询路由条目,接收方会回复Reply报文,当收到SIA的Reply报文后,路由器会重置active time 时间为0,在等90s,反复7次过后还没有收到真正的Reply报文,路由器会再等待180s,180s后删除该条目

Goodbye报文:

   当路由器no network 或者是 no router eigrp时,会发送goodbye报文该自己的邻居路由器,邻居路由器会直接删除有关该路由器的路由信息,否则需要等待15s/180s。

EIGRP建立邻居的条件:

  1. 相同的AS号

  2. 相同的K值

  3. 不同的ID号

  4. EIGRP的认证 (只支持MD5认证,命令跟RIP基本一致,当有多把钥匙链时发送ID最小的)

  5. 开启单播,路由器的两端都必须要置,跟RIP不一样

修改K值的命令:

router eigrp 100  

                  k1 k2 k3  k4 k5

metric weights 0  2  2  10  1  10

修改EIGRP的度量值:

  1. inter f0/0    bandwidth 2000kbit/s  (2M)  注意单位2.

2.偏移列表:

access-list 10 permit 3.3.3.0 0.0.0.0   抓取条目

router eigrp 100

offset-list 10 out 600 f0/0   度量值增大600

被动接口:

    EIGRP的接口改为被动时,任何形式的报文都不能接收也不能发送

单播发送:

 router eigrp 100 

 neighbor 1.1.1.1 f0/0   邻居的IP,自己的端口

关闭水平分割:

 interface f0/0

 no ip split-horizon

 no ip split-horizon eigrp 100 

注意:只有两条命令同时使用时才能关闭,跟RIP有点不同