值得一提的是,在2013年,Cisco决定开放EIGRP的定义,并将其发布为IETFInternet草案,即RFC的前身;文档名称为draft-savage-eigrp。从此,基本的EIGRP不再是机密的私有协议。基于Quagga路由平台的开源EIGRP部署已经实现,并且已经发展成熟。
下表是一些eigrp的重要特性汇总
在20世纪中期,Cisco开发出了内部网关路由协议(IGRP),并将其作为路由信息协议版本1(RIPv1)的替代协议。最主要的目的是消除RIP工作中的两点不足:单纯使用跳数作为度量;网络直径限制在15跳。IGRP将多种路由变量组合为复合度量值,甚至能够为特定的变量设置权重,因此这种协议能够反映出网络的具体特点以及多样化需求。
在设计中,IGRP要与多种被路由协议协同工作,其中包括IPv4、ISOCLNP(无连接网络协议)、NovellIPX或AppleTalk。与RIP一样,IGRP在启动时,从所有启用了IGRP的接口向外广播查询包,并在接收到更新包时执行检查,确认这个数据包的源地址属于收到更新的那个子网。路由器每90秒发送更新包。
IGRP与RIPv1还有一点是相同的,它也是有类距离矢量协议,会周期性广播完整的路由信息。为了稳定运行,IGRP也需要依赖于水平分割、触发更新、失效计时器、抑制计时器和冲刷计时器;IGRP也会在网络边界汇总它所通告的地址。
总而言之,对于较大规模的网络来说,IGRP优于RIP;但它仍存在一些RIP也有的功能限制,对它的可扩展性和收敛速度带来不利影响。
IGRP最重要的缺点有如下这些:
- 周期性发送完整路由更新;
- 不支持VLSM(变长子网掩码);
- 收敛速度慢;
- 缺少适当的防环机制。
对度量值计算方式的修改,并不能弥补基本距离矢量路由协议特有的缺陷;这时需要一个新的协议。
为了解决这些具体的问题,Cisco创建了一个“增强型”版本的IGRP。EIGRP(增强型内部网关路由协议)比它的前身拥有更强的能力,在IGRP的基础上增强了多项内容。事实上,EIGRP的名字“增强型IGRP”可比它本身差远了,这个名字起得太保守了。其实在EIGRP中只保留了非常有限的原IGRP特征——但EIGRP仍是距离矢量路由协议,只不过是个增强型距离矢量路由协议。
为了解决这些具体的问题,Cisco创建了一个“增强型”版本的IGRP。EIGRP(增强型内部网关路由协议)比它的前身拥有更强的能力,在IGRP的基础上增强了多项内容。事实上,EIGRP的名字“增强型IGRP”可比它本身差远了,这个名字起得太保守了。其实在EIGRP中只保留了非常有限的原IGRP特征——但EIGRP仍是距离矢量路由协议,只不过是个增强型距离矢量路由协议。
IGRP基于计时器进行工作,与RIP类似,它会在更新计时器超时后,向外通告完整的数据库(其中包含所有已知网络)。在RIP和IGRP中,周期性发送的更新包具有诸多功能:检测邻居、确认邻居的在线状态、学习新路由、刷新或移除现有的学习到的路由。事实上,这些周期性的更新提供了以下两个独立且没有什么关联的功能——首先,检测邻居和它们的在线状态;其次,承载路由信息。为了使EIGRP成为一个增强型、基于事件的协议,首要任务是将建立和维护邻接关系,与交换路由信息这两个功能分离开。通过使用Hello协议,实现了两者的分离。多亏了Hello协议,路由器之间无需通过周期性地发送更新包,来宣告自己仍连接在网络中;Hello协议接管了这个职能。EIGRP路由器使用Hello协议来建立和维护邻居的邻接关系,方式与OSPF和其他协议类似。Hello协议继承了更新包周期性发送的特点,只不过它不再承载任何路由信息。
EIGRP不再周期性地通告完整路由信息,而是在网络发生变化时通告路由信息;EIGRP使用可靠传输协议(RTP;不要把它与实时传输协议搞混,后者是另一种用在流媒体应用中的协议,与EIGRP无关)来完成这一任务,这是一个工作在第3层独立的传输协议,能够提供可靠的单播和组播传输。在使用RTP时,路由器在第一次同步中,会初次交换完整的路由信息,在此之后,只在网络发生变化时,才通告有变化的路由。RTP负责确保所有更新——如果有的话——获得可靠传输。网络中的设备不发送更新并不意味着设备间的连通性出了问题,而是表示网络处于稳定状态,也就是路由信息没有任何变化。使用Hello来建立和维护路由器之间的邻接关系,使用RTP来可靠地承载所有更新,使EIGRP能够彻底放弃周期性的更新进程,并以一种基于事件的增强型方式工作。
作为距离矢量路由协议,IGRP有可能在网络收敛阶段制造出短暂的路由环路。为了在每个实例中都维护无环的运行状态,EIGRP使用一种名为可行性条件的规则来识别每个邻居,并为每个目的地提供(一条或多条)确定无环的路径。通过遵从这一规则,EIGRP路由器不会将更新转发给会(甚至可能会)形成路由环路的邻居。考虑到以下事实:EIGRP仍为距离矢量路由协议,且它的更新消息中携带的网络信息与IGRP完全相同;可行性条件确实是必不可少的。
与可行性条件同样重要的另一项增强内容是使用弥散计算。在有些情况下,检测到拓扑变化的路由器可能会受到该变化带来的不良影响,也就是说可行性条件可能会导致路由器认为提供了当前最小开销路径的那个邻居不符合可行性条件的要求。在这种时候,EIGRP路由器可以主动向它的所有邻居进行查询,根据(触发了此次事件的)拓扑变化,更新它们自己的最优路径选择结果,并以它们更新后的距离作为响应。那些没有遭受不良影响的邻居会马上响应一个(可能更新了的)距离;那些遭受了不良影响的邻居会将这个查询传播得更远一些,并且只有在收到所有响应并作出了自己的最优路径选择后,才会做出响应。从某种意义上说,弥散计算这个名称所指的就是这样一种行为:搜索(某目的地的)替换路径的行为,弥散在受到网络变化影响的网络部分中。这样一来,EIGRP主动地、有条理地使受到影响的网络部分中的设备更新自己的最优路径选择。弥散计算是EIGRP快速收敛的核心。
为了在一次弥散计算中处理多个拓扑变化,EIGRP使用了一个名为DUAL(弥散更新算法)的有限状态机,它控制了弥散计算的运行;从而EIGRP能够处理所有响应,并最终将收集到的信息放入路由表中,或者开始另一次弥散计算。DUAL并不是指弥散计算算法本身;它是凌驾于弥散计算之上的控制机制,它负责决定何时需要再开始一次弥散计算,以及决定应该如何处理计算结果。
EIGRP被设计为接任IGRP的协议版本,能够轻松实现协议迁移。虽然IGRP和EIGRP中使用的机制大大不同,但IGRP中的一些优良特性也应用到了EIGRP中。比如EIGRP有默认的跳数限制:100;工程师可以使用例8-1中展示的命令来修改这一默认值。
EIGRP和IGRP的另一个相似点是度量参数的选择。EIGRP基本上沿用了IGRP的度量值计算方法,包括这些度量参数:带宽、延迟、可选的可靠性和负载。
EIGRP对内部路由和外部路由进行了区分。内部路由是指工程师使用network命令注入到EIGRP中的路由。外部路由是指工程师从其他路由源通过重分布注入到EIGRP中的路由。在路由表中,工程师可以通过默认AD(管理距离)值来区分EIGRP的内部路由和外部路由。默认情况下,内部路由的AD值是90,外部路由的AD值是170。下例展示了如何在路由协议中更改这些默认的AD值。