Cisco私有的路由协议,但也有极少的厂家使用。号称综合了距离,链路二种路由协议的优点。
 

EIGRP的特点

 

  • 快速收敛 源于链路状态路由特点,路由器发送的并非路由报告,而是网络的链路状态,由每个路由单独计算最佳路由。因此路由器只要接收到网络拓扑变化信息中,它就会更新当前的拓扑表,并重新计算路由。而不必等待邻居的路由计算结果。另一方面,常规的SPF算法比较耗费CPU和内存,EIGRP采用了另一种独特的算法(DUAL)来计算。它造成的路由器负担相对较轻,同时也可以较快的得到结果。因此EIGRP的收敛时间是优于OSPF和ISIS的。
  • 低带宽占用 源于链路状态路由特点,路由器不会发送定期更新,只有当网络拓扑发生变化时,才会发出更新信息。同时更新信息仅仅包含变化的部分,这就极大的降低的更新消息数据包的大小,从而减小网络带宽占用。
  • 组播更新 目标地址为224.0.0.10。
  • 支持多种网络协议 此点与ISIS相似,而OSPF就是为IP开发的,它也仅仅支持IP。
  • 第二层拓扑无关 许多路由协议要求广播型、非广播型、FR链路分开设置。而EIGRP不需要,它自动识别二层链路状态,管理员可以忽略这些链路的差别。
  • 安全性 EIGRP支持md5加密认证。

 

EIGRP四大组件

501
如图所示,EIGRP的正常运行依赖于下面四个组件
 

 

  • 协议无关模块
  • 可靠的传输协议 RTP
  • 邻居发现和维护机制
  • DUAL算法

下面依次介绍
 

 

协议无关模块

EIGRP针对不同的网络层协议,有不同的模块,比如IP,IPX。当它识别出当前的三层协议后,它就会用相应的三层协议去封装EIGRP数据包。
 

可靠的传输协议 RTP

可靠可以理解为需要确认,它保证了关键信息的传递。这中间的区别类似于TCP和UDP。
RTP的工作过程为,
 

 

  • 数据包首先以组播形式发送,接收者需要回送一个确认信息。

 

 

  • 如果源路由器没有收到这个确认信息,它转而用单播将更新信息再次发送给目标路由器,并等待确认。

 

 

  • 如果16个单播发送后,还是没有收到确认。就认为目标路由器无效,通告并更新自身路由表。

 

并非所有EIGRP数据包都需要确认,这对网络的带宽是一种考验。常见的EIGRP数据包有
 

 

  • Hello数据包 组播发送,用于邻居路由器发现和维护,无须确认。
  • Update数据包 组播发送,RTP。EIGRP只发送更新部分的信息。如果只有一个接收者,则用单播发送。
  • ACK数据包 单播发送,相当于没有数据的Hello包,用于确认。
  • Query和Answer 前者可以是组播或单播,RTP。后者为单播,RTP。用于DUAL计算。
  • Request 只定认过,但从未真正使用过

 

邻居发现和维护机制

EIGRP协议中有三张重要的表
邻居表 记录了所有的邻居路由器。每个路由器都会转发一份自身的路由表给它所有的邻居。
拓扑表 将接收到的邻居路由表加入到自身的网络拓扑表中,计算得到一条最佳路由
路由表 记录最佳路由
 

可以看到,邻居表是整个流程中的起点。那么路由器间是如何确定邻居关系的?
其次,前面已经提供,EIGRP的更新是非周期性的,这意味着可能很长时间内都没有更新信息的发出。在如此长的时间内,路由器又如何确定邻居路由器还处于正常工作状态?
 

当路由器启动后,它会周期性的发出Hello包。在一般网络中,这个值是5s。在FR,ATM接口上,这个值为60s。hello包中有一个保持时间(hold time),意思为如果在保持时间内未收到下一个hello包,就认为该路由器已经失效。默认的hold time是hello包周期的3倍,即15s/180s。
当路由器收到一个hello时,首先检查其中的AS号和K值,如果与自身相同,就可以形成邻居关系。它会进一步检查其中包含的源路由器信息。如果在邻居表没有记录,就把它加入邻居表。如果已有记录,就更新其中的hold time。
更改时间的命令
ip hello-interval eigrp <AS> <time>
ip hold-time eigrp <AS> <time>
查看邻居表
show ip eigrp neighbors
 

DUAL算法

一个好的路由协议,它的算法肯定是优秀的。不要说RIP的算法不行,只是在它设计的时代并没有考虑到现在的网络环境会是如此庞大。这就好比商周时候,会个勾股定理就可以让人惊为天人。现在随便找了初中生都明白这个道理。但你不能说勾股定理太烂了,只是所处时代不同罢了。
DUAL算法全称为 Diffusing Update Algorithm,翻译过来就是扩散理新算法。这个名字恰如其分,DUAL算法的核心不是扩散。
502
这是一个典型的DUAL计算过程
1,路由器A向它的所有邻居发出查询包,询问目标网络的距离
2,如果邻居B知道这个目标网络,它就返回答复包,包含自身B到目标网络的距离。
如果邻居B也不知道这个目标网络,它就将该查询转发给它的所有邻居(除源A外)
如果到最后,所有的路由器都不知道这个目标网络,那么最外层路由器就向内答复目标不可达,沿途路由器都依次更新自身路由表,并向内层传递。
 

从这个过程中,我们可以看到正确运行DUAL算法需要先确定几个因素
 

 

  • 必须能迅速的对邻居存在做出判断,这依赖于hello包。
  • 查询和答复都必须在有限的时间内到达

如果答复一直收不到,路由器就处于一直等待的状态,称为SIA (Stuk In Active)
解决SIA的方法就是设置末稍区域,比如常见的hub-spoke型网络
 

 

 

  • 可行距离和通告距离

可行距离FD,为自身到目标网络的距离。
通告距离AD,为邻居到目标网络的距离。
 

  • 可行性条件FC

AD < FD 则FC为真
这个可以和RIP的环路问题结合起来,还记得RIP环路的根本原因吗?它永远不知道自己是否在一个通告的路由路径上。EIGRP虽然具有链路状态路由的特点,但是在距离计算上,它还是依赖于邻居的AD。这不就和RIP一样了吗?但是EIGRP很聪明了设定了FC判断。
如果路由器接收到的AD中包含了自身,那么AD肯定大于当前的FD。
 

 

 

  • 后继路由器与可行后继路由器

当前路由的下一跳路由器称为后继路由器 Successor
从上面的计算可以看到,扩散类似于广播机制。每次计算都可能要涉及很多台路由器,因此EIGRP会保留一个备份的下一跳路由器,称为FS Fessible Successor
它通过FC来判断,AD最小的即为FS。
当Successor出现故障后,FS立即接管它的工作,从而保证网络持续畅通。
如果没有FS,那么就只能重新计算了
 

 

 

  • EIGRP的距离计算

前者一直谈到EIGRP的距离,这个距离到底是什么?在前面已经提到EIGRP的距离计算基于5个因素:带宽,负载,可靠性,延迟
metric = [K1 \times BW+\frac {K2 \times BW}{256-load}+K3 \times Delay]* \frac {K5}{Reliability+K4}

 

最简单配置

router eigrp <AS号>
network <主网络号> [反掩码]
由于EIGRP是支持无类路由的,它可以比较掩码信息。所以通常可以加入反掩码用于指定运行EIGRP的子网
 

手动汇总

EIGRP默认是自动汇总的,可以EIGRP命令行中输入 no auto-summary 关闭
手动汇总在接口上进行 ip summary-address EIGRP <AS> <ip> <mask>
 

认证

与rip认证类似,需要配置钥匙链,认证在接口上配置。
key chain <kc>
key 1
key-string <passwd>
...
interface <interface>
ip authentication eigrp <AS> key-chain <kc>
ip authentication eigrp <AS> mode md5
与RIP认证不同的是,EIGRP仅支持md5,不支持明文,如果没有下面这一行,认证将不会进行。
 

配置末稍区域

该区域中的路由器将不参与DUAL扩散,可以有效的减少DUAL的计算量。
EIGRP进程下,输入 eigrp stub <receive-only | connected | summary | static>
receive-only 只接收不发送任何更新信息
connected 发送直连路由
summary 发送汇总路由
static 发送静态路由
默认的是connected和summary
 

负载均衡

最大均衡路径数目 max-path <value> 1~6,默认为4
允许不等价均衡 variance <value> 设置非等价均衡的倍数
只有满足FC的路由器才会参与非等价均衡中
下面重点说下EIGRP的这样几个问题;

1. EIGRP的等价负载均衡与非等价负载的区别在那  之间如何转换  其中原理是什么  如何实现 ?其中delay命令的用法什么意思
2. 其中EIGRP度量的算法  如何实现

_____________________________________________________________________________________
1.等价负载均衡把流量分布在具有相同度量值的多条路径上;非等价负载均衡把流量分布在具有不同度量值的多条路径上。流量将根据路由代价分配,代价高度高的分配得少,代价低的分配得多。每种路由协议都有其衡量到目标网络开销的标准,我们称其为度量值。
那么在EIGRP中,度量值由5个因素通过一个公式得出,这5个因素是
带宽、延时、负载、可靠性、MTU。
计算的公式会很烦琐,实际工作中也没有人会去这么算,简化之后的算法delay是计算metric的参数,看下面
默认情况,Metric=【10^7/带宽(K)+延时(10usec)】*256
其中带宽bandwidth和延时delay能够在sh interface里面看到
带宽是指路径之中最小的链路,延时是所有路径延时之和

区别在流量的分配,等价是平均分配,非等价是按Metric的比值分配
等价的是自动实现,非等价必须手工指定比值variance
这里说一下等价负载均衡和不等价负载均衡。
等价负载均衡很多路由协议都支持,但是要做到不等价负载均衡有且只有Cisco私有的路由协议EIGRP可以做到。
不等价负载均衡就是在到达目标网络的不同度量值的路径上进行负载均衡,而且流量的分配是按照链路Metric的比值。
举个例子,从网络1.1.1.1到达网络2.2.2.2有metric为1和1000的两条路径。那么第1~1000个数据包会走metric为1的链路,第1001个包会走metric为1000的链路。也就是说metric为1的链路每传输1000个包,metric为1000的链路上只传输1个包。

再说下不等价负载均衡的实现,在路由进程下输入:variance n(n为一个数值)。
这里还是举个例子
P 2.2.2.0/24, 1 successors, FD is 2297856, serno 6
        via 10.1.1.2 (2297856/128256), Serial1/1
        via 10.3.3.2 (2300416/2297856), FastEthernet0/0
当前successors为10.1.1.2,FD(可行距离)=2297856,
当在路由进程下 variance n之后,EIGRP会把FD<=2297856*n的后继路由全部放到路由表中。默认最多为4条。