EIGRP将使用三个表。邻居表用来确认邻居关系,拓扑表用来记录网络网络结构,IP路由表用来记录{zy}路径。
邻居表
----------------
◇建立邻居表
邻居表是用Hello包来建立并维护的。而Hello包在路由器活动时间将一直用组播的方式发送。Hello包将会发送至邻近的路由器以建立路由器的邻居表,回应的包将会建立本地邻居表。当邻居表建立后,Heloo包继续周期性地发送以提醒邻居自己的存在。
每种三层协议都可以为EIGRP所支持(IPv4,IPv6,IPX和AppleTalk)。这些协议都拥有它们自己的邻居表,记录着关于邻居,路由,开销等信息并且各个协议间的表不互相通信。
◇邻居表的内容
邻居表将包括以下一些信息:
◆邻居的3层地址
◆邻居Hello包的监听接口
◆等待时间,就是在声明一个邻居不可达并将其从数据库中xx之前邻居还有多长时间才会发送下一个Hello包。一般来说等待时间默认为Hello包发送间隔时间的三倍[Holdtime is three times the value of the Hello timer by default.]。
◆连接时间,路由器{dy}次从邻居那里接收到包的时间。
◆序数,邻居表跟踪所有在邻居之间发送的包。它跟踪上一次发送到邻居的包的序数和上一次接收到邻居的包的序数。
◆超时重发时间[RTO][Retransmission timeout],这是连接导向型协议在等待回应准备重发之前的剩余时间。
◆平滑来回时间[Smooth Round Trip Time][SRTT],用来计算RTO。SRTT是开始发送包至接收到回应之间的一段时间。
◆队列中包的数量,这个量可以被管理员用来监视网络拥塞情况。
◇成为邻居
EIGRP的Hello包通过组播地址224.0.0.10发送出去。听到Hello包的路由器将在它们的邻居表中添加一个表项,并且继续接收这样的包以维护邻居表。如果在等待时间过了都没接收到Hello包,路由器就将把此邻居移出邻居表。等待时间是Hello包发送间隔时间的3倍,也就意味着只要连续三次没接收到Hello包则此邻居将被移出邻居表。在LAN中Hello包发送间隔时间为5秒,在DS1(1.5Mbps)或慢速WAN链路中是60秒。
要成为邻居,必须满足以下条件:
◆路由器必须能从一个邻近设备那里接收到Hello包。
◆接收的Hello包的EIGRP自治系统必须相同。
◆用来计算metric的K值必须相同。
拓扑表
----------------
◇建立拓扑表
在路由器认识到自己的邻居后,就可以建立一个拓扑表数据库并且为每个路由设定继任者和可行性继任者。拓扑表记录的不仅仅是可行性继任者和继任者,还记录了接收到的路由。这些接收到的路由被认为是可能性路由。EIGRP中的拓扑表负责路由的选择并将其添加到路由表中。
拓扑表包括以下一些信息:
◆路由是被动的还是被xx的
◆更新是否已经发送出去了
◆询问包是否发送至邻居了。如果这个项目非空,则至少有一个路由被标记为xx
◆询问包是否发送至邻近设备了。如果是的话,将开启一个新项目来跟踪是否从邻近设备中获得了回应。
◆是否对邻居来的询问包返回了回应包
◆远端网络的包头,掩码,接口,下一条,FD[可行性距离]和AD[被报告距离]
拓扑表是在更新包的基础上建立的。更新包的来源有两个:邻居之间的交换和来自于自身发送询问消息达到的路由的回应。
询问和回应是用Cisco私有的RTP协议以组播的方式交流的,这都是基于DUAL算法。如果一个路由发送的确认包在分派时间[Allotted time]内无回应,则此路由将以单播的形式重发确认包。如果在尝试16次后仍无回应则此路由将标记此邻居不可达。路由必须在发送下一个包之前收到一个确认包。用单播重发将会减少建表的时间。
当路由器理解了网络拓扑结构后,它将运行DUAL来决定到达远端网络{zy}的路径。结果将写入路由表。
◇维护拓扑表
拓扑表在网络发生变化的时候将会重新建立一次。变化包括:一个新网络加入到这个网络,继任者的改变或网络丢失。
下图阐述了一个网络中某路由器断路的网络交通。
就像邻居表跟踪EIGRP包一样,拓扑表记录发送至邻居的包。表中信息将识别网络的状态。假设一个周日的下午,被动设备是好的,但是xx了就会出问题。一个正常的网络就被标记为被动的;一个断路的路由将被xx用以寻求一条能到达远方网络的备用路径。
因为路由表是基于拓扑表建立的,拓扑表必须含有所有路由表所需要的信息。这就包括下一跳、发送更新的邻居地址及metric(可行性距离的度量)等信息。
◇在拓扑表中添加一个网络
想象下一个接入层(路由器A)经由一个以太网接口连接到一个新的网络的情形。管理员配置另一个接口用以连通搬到另一个建筑物内的部门。在开始的时候,老的接口有会聚路由。以下列出这个新的网络在这个EIGRP的AS中传播的情况:
◆当路由器A为新的网络所认识的时候,它开始发送Hello包。因为此路由器所在子网没有别的路由器,所以没回应。因为没有对Hello包的回应,所以在此路由的邻居表中无任何表项。而因为路由器接入了一个子网,所以在拓扑表中将有一个新的记录。
◆原有的EIGRP协议在感觉到一个变动的时候对它所有的邻居原来的接口发送了一个更新,告知一个新的子网的存在。这些更新将在拓扑表和邻居表中被跟踪,因为更新是连接导向而且从邻居来的确认包必须要带一个设置的时间帧。
◆路由器A完成了它的工作。然而在老的子网中的邻居仍然需要做些事情。当它们收到了来自路由器A的更新,它们将更新自己邻居表的顺序并且添加一个新的子网到拓扑表中。它们将计算新的FD和继任者。
◇从拓扑表中移出一条路径或一个路由器
从拓扑表中移出路径或路由器是非常复杂并且是EIGRP的一个问题。
移出过程如下
1◆如果一个连接到路由器A的子网不能连接了。路由器A更新它自己的拓扑表和路由表并且发送更新至它的邻居。
2◆当一个邻居接收到更新,将会更新邻居表和拓扑表。
3◆邻居将寻找一个另外的路由至不能连接的子网。它将在拓扑表中寻找替代路由。而这里只有路由器A能到那个子网,就不会找到替代路由。
4◆邻居就会发送询问至它的邻居要求查询它们能到不能连接的子网的路径。这个邻居这时就会在拓扑表中被标记为活动的。
5◆询问号将被记录。当所有的回复回来后,路由器A邻居的邻居们和它们的拓扑表将会更新。
6◆DUAL就在这个子网变化被记录下来的时候开始运行,以决定{zy}路径然后更新路由表。
7◆而在第5步未回应前,大家都在询问自己的邻居;在这个时候,替代路由路径的搜索将在整个私有网络中扩散。
8◆如果没有任何替代路径,邻居们都会将自己没有任何替代路径的消息回应询问。
9◆当没有路由能提供一条替代路径的时候,所有的路由器都从自己的拓扑表和路由表中移出这个子网的信息。
◇寻找一条到远程子网的替代路径
当到一个子网的路径不能连通的时候,EIGRP将会因为寻找一条替代路径出现不少麻烦。但是EIGRP在处理能找到替代路径的情形下却是非常可靠并且迅速的。
以下是处理的步骤:
◆路由器通过发送一个消息到另一个路由器来标记此路由器是否可达。
◆路由器将会查询拓扑表来决定是否存在一个替代路由。我们称它在寻找一个FS。
◆如果继任者被找到了,路由器将添加此FS路由到它的路由表中。如果路由器没有FS,它将把自己xx来发送询问至邻居以找寻一条替代路径。
◆邻居通过查询拓扑表后,如果找到了一个可行性路由,它将会回复替代路径。这个信息将写入发送询问的路由器的拓扑表中。
◆如果没有任何回应,消息将被邻居所传播。
当路由器发送一个询问包,它将在它的拓扑表中注明,这是为了定义一个回复时间。如果这个路由器没收到任何回复,它的邻居将会被此路由器移出邻居表并且对应地,路由器拓扑表中的相应子网都将暂停。这种问题将会偶然地在慢链路或负担大型网络的路由器上出现。甚至于这个路由器将不会接收到任何发送的询问包的回应。这将使得此路由被视为SIA[阻塞询问][stuck in active]。
◇创建路由表
路由表是DUAL在拓扑表基础上建立的。路由器的拓扑表包含了类似继任者和可行性继任者之类的信息。继任者路径将被写入路由表供路由选择。
EIGRP的路径选择
----------------
DUAL算法使用metric来选择{zy}路径。至某一目的地的路径将限制在16条以内。以下是三条不同类型路径的示意:
=================================
路由类型 描述
内部路由 路径直接记入EIGRP
汇总路由 内部路径在此汇总
外部路由 路由在EIGRP中再分配
=================================
◇DUAL以被动模式更新路由表
当某路径断开的时候,DUAL首先在拓扑表中寻找继任者。如果能找到,那路由器就处于被动模式(被动模式意味着路由器没有xx询问替代路径)。
见下图:
以下列表将说明EIGRP如何决定:
◆从路由器A到路由器G的FD[可行距离]是10[A->D->G]
◆从路由器A到路由器G的AD[被报告距离]是5[被D所报告]
◆因为10>5,FD>AD。就意味着FD符合可行性条件使得此路径成为可行性路径。
◆如果D到G之间的路径断了,A将首先查看它的拓扑表
◆替代路径A->D->H->E->G的AD是19(7+5+7)。
◆因为19比最初的10的FD要大,故此路不能作为一个可行性继任者。
◆D->H->F->G的AD为20也不能作为一个可行性继任者。
◆A->E->G有7的AD,比最初的10小,故可以做可行性继任者写入路由器A的路由表而不用路由器Axx了。
◆最初的拓扑表显示出继任者是路由器D,可行性继任者是路由器E。在D和G之间的链路断了以后,路由表将被拓扑表所更新而路由未xx。
◇DUAL以xx模式更新路由表
见下图:
当路由表中无可选择的路由的时候,将回出现以下情况:(A的拓扑表中继任者路径为A->D->G->X,FD=20,从D来的AD=15,当D断了,A必须寻找一条到X的替代路径)
◆路由器不会选择B,C,E和F作为可行性继任者。这些邻居的AD分别为27,27,20及21。因为所有邻居的AD都是大于等于继任者的FD的,它们都不符合继任条件。
◆A将会xx并对邻居以发送询问。
◆E和F都以可行性继任者的姿态回应,因为它们都接收到从G来的AD为5。
◆网络又回到被动状态了。FD被A所接受,拓扑表和路由表将被更新,并且不用更多的会聚。
◆A接受从E和F来的信息,选择了E作为{zy}路径因为E有更小的FD。
◆结果将写入路由表。EIGRP将E这个邻居设为继任者。
◆F在拓扑表内将被视为FS。
EIGRP网络设计
----------------
EIGRP是为非常大型的网络所设计的,然而,EIGRP对设计敏感。现在的应用程序要求网络拥有越来越大的带宽和越来越小的延迟。与此同时网络也将越来越大,越来越复杂。这就要求好的网络设计。
积极影响EIGRP的因素有:
◆邻居间发送信息的数量
◆接收到更新的路由的数量
◆邻居路由之间的距离
◆远程网络替代路径的数量
消极影响EIGRP的因素有:
◆一个SIA[Stuck-in-active]路由
◆网络拥塞
◆丢失路由信息
◆不稳定路由
◆丢包重发
◆路由器内存较低
◆路由器CPU占用过高
EIGRP网络设计关键
----------------
对于一个公司网来说主要要考虑的是控制报告和限制询问范围。这些在慢的WAN链路上尤为重要。发送越少关于网络的信息,那服务器和客户端之间的数据传输就越通畅。
EIGRP在有类子网分界线自动汇总,这对于优化网络来说是非常好的。然而,大多数管理员发现自动汇总有时候并不能适应于他们的网络中,他们需要禁用它,而手工在接口层上配置汇总。
显然拓扑表也将会给EIGRP带来问题。特别是你还在用HUB结构为远程站点和地域办公室设计网络的时候更为严重。受欢迎双重HUB配置提供了相应的冗余并且增加了能使路由器返回询问给对方的潜力。汇总和过滤将使得网络工作得更好并且也能更有效地管理询问包。
个人总结
----------------
使用EIGRP的路由之间的连接顺序如下:
1◆先认证为邻居,通过Hello包认证
2◆认证为邻居稳定后添加入拓扑表,但是如果邻居关系断开则相应拓扑表项将被暂停
3◆使用DUAL算法计算{zy}路径写入路由表
这个是核心通信过程。并且注意一点,EIGRP的一个很好的优点:使用组播。