介绍 传统路由协议易于造成循环,这是因为它们将路由信息充斥于整个网络,这也是例如水平分割、毒性逆转和Hold Down计时器技术得以使用的原因。同时,传统路由协议的每个路由器必须在送出路径前重算算法,这就减慢了会聚。 加强型内部网关路由协议(EIGRP)的设计给予路由协议充分的灵活性的同时加快了会聚,例如优先开放最短路径(OSPF)。另外,EIGRP也具备Protocol-Dependent组件,能够处理Apple Talk, IPX及IP。这样的优点是只有一个路由选择进程在运行,而不是每个协议上运行一个进程。EIGRP提供无循环运行,并几乎同时同步所有路由。EIGRP与其他路由协议之间的重新分配基本是自动的。例如,如果IGRP和EIGRP路由使用相同的AS号码,那个路径会在默认情况进行重新分配。 EIGRP扩散更新算法(DUAL),使用这种算法路由器可以共享路径值,因此称之“扩散”,然而其他路由协议使用另一种Bellman-Ford算法来计算路径。一个路由器仅仅将路由更新值作为距离向量送给直接连接的路径,而不是网络中的每个路径。同样,如果某个特定路径的拓补结构发生变化,路由器只会发送更新给它。此外,这个更新只会送至相关的相邻路由器,而不是所有路由器。这使得EIGRP成为一个具备高效带宽的路由协议。其他路由协议具有常规路由更新,即包括所有默认路径信息。 EIGRP使用可靠传输协议(RTP)处理数据包的发送,它使用组播地址224.0.0.10进行可靠组播以保证传送有序。EIGRP使用IP协议号88。 不同于IGRP, 在IP环境中EIGRP试一个无类别路由协议,因为更新携带子网掩码信息。尽管EIGRP自动概括网络边界,但是它能够经过配置概括任何比特边界。EIGRP也能用来计算路由总和,例如当需要概括主要网络时。 EIGRP使用邻居表(Neighbor Table)列出相邻路由器。拓补表列出所有至目的地的已知路径,同时路由表包含了至目的地的最佳路径,称之后继路由器(Successor)。可行后继路由器(Feasible Successor)为保留在拓补表中的目的地提供后备路径。 MD5认证可以用来授权EIGRP数据包。 尺度(Metrics)
思科的EIGRP仅仅在尺度上类似IGRP:延迟、带宽、可靠性和负载。需要注意的是:最大传输信元(MTU)并不是用来计算尺度,它在路径中被追踪以得到最小的MTU。 在IGRP中,最后三位的K值默认为0。除了在军事上使用“可靠性”外,大多数配置只使用“延迟”和“带宽”的这两个尺度,并优先考虑“带宽”。EIGRP的尺度(metric)计算方式是:将IGRP的尺度(metric)乘以256。因此,计算尺度(metric)的公式是:EIGRP Metric=256*([K1*带宽 + K2*带宽/(256-负载) + K3*延迟]*[K5/(可靠性 + K4)]) 默认权值为: ? K1 - 1 ? K2 - 0 ? K3 - 1 ? K4 - 0 ? K5 – 0 因此,计算EIGRP metric的默认公式为256*(带宽+延迟)。当K5=0时,式[K5/(可靠性 + K4)]可以忽略。你可以根据需要变换权重。但是,在IGRP中,所有路由器的权重必须相等。 拿IGRP距离来说,某个链路中指向特定目的地的带宽为128k,延迟为84000微妙,使用简化公式EIGRP metric = 256*(带宽 + 延迟),代入数据256*(107/128 + 84000/10),可以得到值=256*86525 = 22150400。 EIGRP数据包格式
Version(版本) - 只有一个版本号 Opcode(操作码) - 用于指定EIGRP数据包类型: l 1 – 更新 l 3 – 查询 l 4 – 应答 l 5 – 呼叫 l 6 - IPX SAP Checksum(检验和) - 用来计算IP数据报中整个EIGRP所占比重 Flags(标记) - LSB(最低有效位) (0x00000001)是一个预设比特,意味着它是新环境下数据包中的第一个路径。第二个比特 (0x00000002)是有条件接收比特,适用于思科可靠组播算法。 Sequence(序列号) - RTP使用32比特序列号 ACK(确认) -最后从邻居获得的32比特序列。一个无零的呼叫数据包就是确认。 AS(自治系统)号码 -域的自治系统号码 型/长度/值(TLV) -所有TLV值都由16比特型域和16比特长度域开始,随后是不同类型决定的不同数值域。 o 通用TLVs 0x0001 – 通用EIGRP参数(适用于任何协议下的EIGRP数据包) ? 0x0003 – 序列 (思科可靠组播使用) ? 0x0004 – EIGRP软件版本,原始版本为0,现有版本为1(思科可靠组播使用) ? 0x0005 – 下一组播序列 (思科可靠组播使用) o IP TLVs ? 0x0102 – IP内部路径 ? 0x0103 - IP 外部路径 o AppleTalk TLVs ? 0x0202 – AppleTalk内部路径 ? 0x0203 – AppleTalk外部路径 ? 0x0204 – AppleTalk电缆安装 o IPX TLVs ? 0x0302 - IPX 内部路径 ? 0x0303 - IPX 外部路径 上图解释了通用TLV(包含K值)及IP TLV(包含诸如五个尺度值的细节)。最关键的是IP TLV,下面将细化地介绍。 Type(类型) 0x0102 IP 内部路径 TLV Type(型) 0x0102 ? Length(长度) - TLV长度 ? Next Hop(下一跳) - 当前路径的下一个路径跳 ? Delay(延迟) - 延迟时间的和 ? Bandwidth(带宽) - 256 * IGRP带宽 ? MTU -至某个特定目的网络的路径中的最小MTU ? Hop Count(跳计数) -在0x00(直接连入网络)与)0xFF间的数 ? Reliability(可靠性) - 0xFF is reliable.在0x01至0XFF间的数,用以表示路径中的总差错率 ? Load(负载) - 0x01至0xFF间的某个数,表示路径中的总负载,其中 0xFF表示满载 ? Reserved(预约) - 0x0000及未使用 ? Prefix Length(前缀长度) - 用以表示掩码的比特数 ? Destination(目的) - 目的网络 Type(类型) 0x0103 IP外部路径TLV Type(型) 0x0103 ? Length(长度) - TLV长度 ? Next Hop(下一跳) -下一个路径的跳 ? 产生自治系统 – 路径出处的AS号码 ? Tag(标签) -与路径图一同使用,追踪路径 ? External Protocol Metric(外部协议尺度) - 外部路由选择协议使用的尺度值,如:IGRP, OSPF, RIP
? Reserved(预约) - 0x0000及未使用 ? 外部协议ID -识别表示这个特定路径的外部协议 o 0x01 - IGRP o 0x02 - EIGRP (一个不同的AS) o 0x03 - 静态路由 o 0x04 - RIP o 0x05 - 呼叫 o 0x06 - OSPF o 0x07 - IS-IS o 0x08 - EGP o 0x09 - BGP o 0x0A - IDRP o 0x0B - 直接连接 ? Flags(标记) - 0x01 表示外部路由0x02表示可能是默认路由 ? Delay(延迟) - 延迟时间的和 ? Bandwidth(带宽) - 256 * IGRP带宽 ? MTU -至某个特定目的网络的路径中的最小MTU ? Hop Count(跳计数) -在0x00(直接连入网络)与)0xFF间的数 ? Reliability(可靠性) - 0xFF is reliable.在0x01至0XFF间的数,用以表示路径中的总差错率 ? Load(负载) - 0x01至0xFF间的某个数,表示路径中的总负载,其中 0xFF表示满载 ? Reserved(预约) - 0x0000及未使用 ? Prefix Length(前缀长度) - 用以表示掩码的比特数 ? Destination(目的) - 目的网络 邻居搜索及邻接 通过周期性使用呼叫数据包可以进行邻居搜索。在局域网和使用组播呼叫的广域网上,呼叫间隔为5秒,在使用单播呼叫的慢速广域网上为60秒(除点到点子接口外)。组播呼叫数据包送至组播地址224.0.0.10,因为不需要将单播数据包送至每个邻节点。这些邻居关系仅出现在初级速率接口地址,而不通过二级地址。 EIGRP使用可靠传输协议来有保证地、有序地向所有混合单播和组播数据包的邻节点传送数据包。在多路访问网络中,呼叫通常以组播形式发送,而不需要确认,例如:不可靠组播。相反,更新则需要确认。呼叫是仅有的常规交流。一旦搜索到邻节点,路由器就试图与之建立一个邻接,同时发送路由选择更新。 路由选择更新并非常规发送,因此会最小化带宽使用,当路径发生变化时,更新被发送,并仅发送至需要它的路由器。如果一个路由器需要更新,则更新为单播形式,但如果多个路由器需要更新(如由于拓补的改变),更新为组播。 呼叫数据包包含一个保留时间(Hold Time),它是呼叫间隔的三倍。保留时间是接收路由器在宣布邻节点无法达到前的等待时间。对于大多数网络,保留时间为3 x 5 = 15秒,这比传统路由选择协议中的保留时间要短得多(如RIP保留时间为180秒)。 邻居表包含以下信息: ? H 是邻居被搜索到的顺序 ? 邻居的IP地址 接收呼叫的接口 以秒为单位的保留时间 Smooth Round Trip Time (SRTT) -以毫秒为单位的平均时间,即数据包传送至邻居的时间和接收确认的时间平均值 Retransmission Timeout (RTO) -当组播发送失败,将发送单播至特定路由器,RTO是路由等待单播发送的时间,以毫秒为单位 ? Queue -表示插队数据包的个数 ? 最后收到的EIGRP数据包的序列号码 SRTT一般表示特定邻居的链路速度。RTO默认为200毫秒,但当某个邻居没有成功应答查询时就会增大。可以通过清除一个邻居并查看另一个邻居的RTO增长来测试。随着更新发送完成,RTO开始见效,只有当网络发生改变时才会发生这种情况,这是因为只有发生改变时EIGRP才会发送更新。 EIGRP使用水平分割和毒性逆转来确保路由得知某个特定的接口信息没有被重发,或者即使已经重发,也是无效的。如果一个路由器的接口拥有一个在局域网配置的二级地址,则在这个局域网内的其他路由器不会从此路由器得知子网,这就是水平分割的作用(默认)。 EIGRP拓补表及弥散更新算法
一旦邻居关系被建立,即邻接成功,路由器就会交换路由选择更新信息,每个路由器会建立自己的拓补表。更新包括了发送方所知道的所有路由器。对于每一条路径,接收路由器都会为之计算距离,这基于它已传送的距离。如果接收路由器发现至同一网络的多个路径的尺度值不同,则拥有最小尺度的路径即为至此网络的可行距离(Feasible Distance),即FD。拥有最佳尺度的路径进入路由表,因为这是到达网络的最快方法。 对于其他有着较大尺度的可行路径,接收路由器同样通过其他路由器接收报告距离(Reported Distance),即RD。报告距离是某条路径连接到目标网络的总尺度,某个特定路由的报告距离与已有的可行距离作比较。 当报告距离大于可行距离,这条路径不会作为可行后继者进入拓补表,这就阻止了循环的发生。如果报告距离小于可行距离,则这条路径作为可行后继者列入拓补表。一条特定路径的后继指在至网络有着最小尺度(距离)的邻居。 如果接收路由器至某个特定网络拥有可行距离,并且它以更短的报告距离接收来自邻居的更新,就会产生一个可行状况。在这种情况下,邻居成为那个路径的可行后继,因为它是距离目标网络更近的跳(hop)。 在网状网络环境下可能有多个可行后继,最多6个可以列入拓补表为本地路由器提供多个下一跳选择。在这里要注意的是:到达特定网络的邻居尺度必须总小于本地路由器的尺度(可行距离)。这样就避免了路由选择循环。这就是报告距离大于可行距离的路径没有列入拓补表的原因,这些路径不会被考虑作为后继,因为路径可能通过本地路由循环回来。 DUAL使用距离信息选择不造成循环的最佳路径。众多连至目标网络的路由器都存在循环的风险。DUAL使用可行后继的概念,即在网络中代价最小的路由器,并且不会产生循环部分,因为路由器不会选择循环的路径。 拓补表包括由邻居连接到网络的尺度和通过特定EIGRP邻居连接到目标网络的可行距离。一个网络可以有多个入口,每个入口都包含以下信息: ? 可行距离 可行后继 ? 每个可行后继到网络的距离 ? 通过各个可行后继到达网络的本地尺度 ? 搜索可行后继的接口 例:总尺度327168/326912表示本地尺度为327168,可行后继到网络的距离为326912。 对于每个列入拓补表的网络,拥有最小尺度的一个被加入路由表,发表这个路径的邻居成为后继。 拓补表能够保证路由器到目标网络的所有尺度大于它的邻居,因此有效避免路由选择循环。因此EIGRP不需要保留或刷心计时器。 如果一条路径不可到达,如到达后继的链路失效,则路由器在拓补表中查询另一条比可行距离尺度小的路径,如将可行后继变为后继。这不需要邻居查询,因此非常迅速。 如果邻居失效,在三次呼叫信号失败后,路由器发送更新。只有当备用路径失效时,它向邻居查询另一条代替路径。当路径信息变化时,路由器仅向需要的路由器发送相关链路的更新。这和OSPF相反,OSPF的整个链路数据库需要与整个区域同步。 在路由表中,由于EIGRP需要根据拓补表跟新路径,路由选择入口并非随时更新。拓补表包含已知路径及每条路径的后继,每个接口表示后继连接方向。 默认情况下,至同一个目标有多条代价相等的路径,路由器最多为四条路径提供共享。通常大多路由选择协议情况下,你可以通过调用最大路径号码的指令(最多6条路径)改变路由过程。默认情况下,在使用快速交换的接口上,所有路由器对每个目的地的负载表现相同。如果快速交换停止,所有数据包会由CPU检测并重新进行负载平衡。使用思科快速转发机制 (Cisco Express Forwarding),即CEF,你可以在每个数据包或每个目的地的基础上选择负载平衡,而减小对CPU的影响。 也可以通过不等代价路径下载共享。为此我们在EIGRP路由选择过程中使用差异特性。差异由一个代表不同路径尺度的乘法器定义。默认差异值为1,表示多条路径的尺度必须相等。 DUAL有限状态机和扩散计算 DUAL规则为: 邻居损失和检测发生在有限时间内 在限定时间内,信息准确而有序接收。 在限定时间内,信息以它们接收时的顺序进行处理。 在已知网络后继、可行距离最短的稳定区域内,拓补表中的所列网络为被动区域,即不会发生扩散计算。 当链路代价发生由区域更新、查询或接受应答数据包所带来的变化,特定路由的可行后继在本地将被重新评估。可能是可行距离变化,或可行后继从现有后继中接管。寻找到可行后继后,将通过更新发布信息。如果拓补发生改变,路由器能够找到代替路径,而无需重新计算路径。 如果特定网络中找不到尺度小于可行距离的邻居,如不存在可行后继,则本地路由向活动区域搜寻邻居信息。若某个路由找不到可行后继,则必须实行扩散计算,以此减缓重聚。本地路由器设置了应答状态标志来记录所有对邻居进行的查询。 当实行扩散计算时,查询被发送到所有邻居,包含在本地新计算的到达网络距离。如果某个邻居存在可行后继,它将自动重算到网络的距离并回送。如果某个邻居不存在可行后继,它将自动转向活动区域。 在接收完来自所有邻居的应答之前,始发路由器不会进行扩散计算。这是一个默认值为3分钟的活动计数器,用于记录扩散计算的时间。在大型网络中,一串路由可能在终止时进行扩散,可能需要先等待始发路由完成计算。如果三分钟内没有接收到所有应答,路由被判定为“滞留活动区域”(SIA).相关邻居从邻居表中移除,此路由的尺度设为无穷大,以保证其他邻居能发现可行状态并成为可行后继。若一个EIGRP网络特别大,或者存在多个低带宽链路乃至需要较长应答时间,则尚未应答的邻居将设置它们的应答状态标志。如果活动计时器超时后某邻居仍无应答,此邻居将被从邻居表中移除。如果计时器到时后应答被送回,则次邻居被重置。这种邻居被移除和重置的行为造成额外的扩散计算和路由表的额外改变。跟踪SIA邻居入口时检测路由器的拓补表可以帮助追踪造成SIA的原因。 在使用DUAL时,每个路由器保证最多6条后备路径,以防主路径失效,这通过存储邻居路由表得以实施。使用DUAL有限状态机可以快速集中,这是因为它记录所有邻居发出的
该贴已经同步到 fengye的微博 |