首页 > 代码库 > EIGRP

EIGRP

EIGRP


1:无类高级距离矢量协议


2:消息类型:

       Hello报文:发现、建立、维护邻居关系;

       更新(Update)报文:只有建立邻居关系期间第一次发送的update消息包含本地完整路由表信息;

       确认(ACKs)报文:对所收到的update消息进行回复确认;

       查询(Query)和答复(Reply)报文、

       请求(Request)报文、


3:更新方式:组播224.0.0.10、单播、


                            >=T1>   

4:计时器:Hello-Interval 5s/60s、

           holdtime(抑制时间)=3×Hello-Interval 15s/180s

           平均回程时间(SRTT,Smooth round-trip time):用来对于每一个邻居,计算组播流计时器和重传超时;(ms毫秒)

           组播流计时器(multicast flow timer):update在从组播方式切换到单播方式之前等待的一个ACK报文的时间

           重传超时(retransmission timeout,RTO):切换到单播以后,用来指定后续的单播之间的时间间隔;16个单播包

           邻居建立时间(Uptime):从邻居第一次被添加到邻居表后到现在所经过的时间;

           活动计时器(active timer): 扩散计算开始时,一个活动计时器被设置为3min,如果在活动计时器计时超时后还没有收到希望收到的所有答复,那么这条路由就被宣告“卡”在活动状态(stuck-in-active)。这些没有答复的邻居将从邻居表中删除,并且扩散计算认为这个邻居回应了一个无穷大的度量;这个时长可以通过命令timers active-time (1~4294967295)来改变或使其无效;


5:稳定性:RTP可靠传输协议;使得EIGRP协议的消息包发送准确有序;


6:所维护的表:

   邻居表:EIGRP的有效邻居

   拓扑结构表:到达所有目标网段的所有路径,以及相应的路径信息(AD-->通告距离、FD-->可行性距离)

   路由表


7:管理距离:内部路由90、外部路由170、汇总路由5


8:认证:MD5,借助于key-chain;


9:汇总:缺省主类边界自动汇总、接口手工汇总;


10:负载均衡:等价、非等价负载均衡、


11:度量值:256×IGRP‘s metric;    路由器入口带宽、延迟

    hops: 缺省100 ,通过metric maximum-hops 修改为1~255


12:IP协议号88



DUAL: AD:

      FD:

      后继路由器:

      可行性后继路由器:


有关EIGRP负载均衡的讨论:

EIGRP的负载均衡:

  有关EIGRP负载均衡的讨论,我们要从两个层面去考虑,第一个层面是EIGRP路由表条目的负载均衡,第二个层面是在EIGRP。

  路由表条目实现负载均衡的前提下,数据流量如何以负载的方式经过这些路由条目,也就是流量的负载均衡;

  1:路由条目的负载均衡:

     EIGRP以及前身IGRP协议是众多IGP协议中可同时支持等价和非等价负载均衡的两个动态协议;所谓路由的等价负载均衡,是指当前数据库中的一个相同的路由条目从相同协议的多个不同下一跳被学习到,这时路由表会比较这些不同下一跳条目的metric值,选出最小metric值的下一跳输出到路由表;如果发现这些条目的metric值相同,而且都是最小的,路由器会将这些不同下一跳都输出到路由表,也就是我们看到的路由表现象:路由条目的等价负载均衡;这个路由现象所有的常见路由协议都可以支持,如RIP、IGRP、EIGRP、OSPF、ISIS、BGP等;而非等价负载均衡的路由机制只由EIGRP和IGRP可以支持,然而这并不是两个协议的缺省行为,缺省EIGRP和IGRP都只支持等价负载均衡,如果想让两个协议同时支持等价和非等价负载均衡,则需要特定的链路情况以及修改相应的协议缺省参数值来实现;

      (1)特定的链路情况:如图:

                20   10

              E----B-----A

 

                10    10

              E----C-----A


                20    20

              E----D-----A


         路由器E可通过三条路径到达路由器A的X网段,

          第一条路径 E-B-A (FD30/AD10)

          第二条路径 E-C-A (FD20/AD10)

          第三条路径 E-D-A (FD40/AD20)

         经过EIGRP的DUAL算法的计算原则,其中FD值最低的为最优路径,相应的该路径上的直连邻居为当前的后继路由器;可行性后继路由器所在链路的AD值必须小于当前后继路由器所在链路(最优路径)的FD值,topology-table中的最终输出结果为:路由器E上面有关X网段的后继路由器是C-(FD20/AD10),可行性后继路由器为B-(FD20/AD10);而路由器D因其所在链路的AD值20等于当前最优路径的FD值20,因此不会作为X网段的后继或可行性后继而进入拓扑表;DUAL算法的这个原则非常重要,因为EIGRP和IGRP所支持的等价和非等价负载均衡都是以当前拓扑表内容为依据,如果指向某条路径的下一跳连拓扑表都进不去,那么它也不会参与到之后的路由条目负载均衡; 

      (2)相应的协议缺省参数:通过命令show ip protocols 命令我们可以在EIGRP的协议输出内容中看到这样一个参数值:

          varance,这个参数决定了能够从EIGRP拓扑表中进一步输出到路由表的条目的metric值的最大范围,varance值的可修改范围为1-128,缺省为1;

          以上图为例,拓扑表中的条目为:E-B-A(FD:30/AD:10)

                                        E-C-A(FD:20/AD:10)

          由于缺省情况下varance=1,当前最优路径的FD=20,因此要求能够从拓扑表输出到路由表的条目的metric必须要小于或等于20*1=20,而E-B-A路径的FD=30>20,因此第二条路径没有被输出到路由表;如果我们将设备E上的EIGRPvarance值改为2,那么此时能够从拓扑表输出到路由表的条目的metric必须要小于或等于20*2=40,这样一来路径E-B-A的FD=30<40,因此该路径的下一跳B以及相关路由信息就也会被输出到路由表,从而实现路由表条目的非等价负载均衡;

          在这个过程中,我们还要关注一个参数,maximum-path,这个参数决定对了当前路由表中能够出现的负载均衡路由条目的最大数目,值的范围是1-6,在多数路由协议中缺省是4,也就是说不管是等价还是非等价条目,缺省最多只能支持4条;如果这个参数修改为1,那么就意味着当前协议不支持任何形式的路由条目负载均衡;


   2:数据流量的负载均衡:

          就三层设备而言,有了之前设备中路由表条目的负载均衡,之后流经该设备的数据流量的负载均衡才成为可能;

          对于Cisco设备平台,数据流量的负载主要有两种:每目的负载均衡、每数据包的负载均衡

          *每目的负载均衡:每目的负载均衡意味着路由器基于目标地址来分发数据包;指定两条链路到一个相同网段10.1.1.0/24,所有发往该网段内目标地址10.1.1.1的数据包穿过第一条路径,所有发往该网段内目标地址10.1.1.2的数据包穿过第二条路径,以此类推;这样的负载均衡机制不会造成报文失序的问题;如果一个主机使用一条链路收到所有包的一大半,另外一条链路的剩余带宽是不可用的;大量的目标地址导致了需要更加公平的使用链路;为了更加公平的使用链路,采用IOS软件来为每一个目标地址构建一个路由缓存条目,替代每个目标网段,就像只存在一条单独路径的时候一样;因此,不同主机发往相同目标网段的流量能使用不同的路径;这个方法之后的趋势就是为核心骨干路由器携带大量的目标主机的流量,而管理路由缓存所需的内存和处理变得非常苛刻;

          *每数据包负载均衡:意味着路由器通过第一条路径发送第一个发往目标10.1.1.1的包,通过另外一条路径发送第二个发往目标10.1.1.1的包,以此类推;每数据包负载均衡机制的流量穿过所有等价负载的链路;尽管如此,由于不同路径的延迟可能存在着差异因此很有可能造成报文失序的问题;在cisco IOS软件中,除了版本11.1CC,每数据包负载均衡禁止通过路由缓存进行加速转发,因为路由缓存信息包含了出接口;对每数据包负载均衡而言,转发进程通过查找路由表和最后使用的接口来为每一个包决定出口;这确保了平等的利用链路,但是处理器面临着很大的处理任务和全面转发性能的冲击;每数据包负载均衡的这个结构不适合用于更高速的端口;

           注:两种负载均衡机制要依赖于当前用于IP包转发的交换机制的类型(进程交换机、快速交换,CEF);缺省,在多数的cisco路由器上,借口下开启的是快速交换;这要求缓存配置每目的负载均衡为;为了设置成每数据包负载均衡,开启进程交换(或禁止快速交换),使用下面的命令:

                              -if)#no ip route-cache

           这时路由器处理的每个包都要去查找路由表消耗CPU资源,重新开启快速交换使用下面命令:

                              -if)#ip route-cache

           更新的交换机制如CEF使得每数据包负载均衡和每目的负载均衡,可提供更快的每目的负载均衡和每数据包负载均衡;


    3:EIGRP的负载均衡情况:

          *流量的智能共享: 

           EIGRP不仅支持非等价路径的负载均衡,也支持智能负载均衡,例如流量共享;为了控制如何让流量经过发往相同目标网段的多条开销不同的路径,使用traffic-share balanced命令;通过这个关键词balanced,路由器按照不同路由metric的比值来按比率分发流量,这是缺省的设置:

                    router eigrp 100

                      network x.x.x.x

                      variance 2

                      traffic-share balanced

           下面例子是流量共享的计算:

               *路径E-C-A:30/20=3/2=1

               *路径E-B-A:30/30=1

           由于比值不是整数,向下到最近的整数;这个例子中,EIGRP发送一个包到E-C-A并发送一个包到E-B-A;


           现在,假设E-B-A的metric调整为 E-25-B-15-A;这样E-B-A的meitric为40;因为路径开销为40,没有小于20*2(FD=20,variance=2),该路径不会再被选择作为负载均衡路径;为了能够让这条路径再进行负载均衡,

           我们将variance修改成3,这样流量共享的计算比率为:

               *路径E-C-A:40/20=2

               *路径E-B-A:40/40=1

           此时,EIGRP发送两个包到E-C-A并发送一个包到E-B-A;通过这种方式,EIGRP既能提供路由条目的非等价负载均衡也能提供流量的智能负载均衡;

           

           当在EIGRP中使用traffic-share 命令时带有 min 关键词,流量只从minimum-cost路径被发送,甚至当路由表中存在多条路径的时候:

               router eigrp 100

                 network x.x.x.x

                 variance 3

                 traffic-share min across-interfaces

           这种情况中,EIGRP只通过到达目标网段最优的路径E-C-A发送数据包;这意味着转发行为并不会考虑variance命令;如果你使用的是traffic-share min 命令和variance命令,而流量只通过最小cost的路径被转发,所有可行性后继路由器被塞进路由表,以减少收敛的次数;


       *CEF中的负载均衡:

           CEF是一种在路由器中用于进行负载均衡的高级的3层交换机技术;缺省,CEF使用每目的负载均衡;如果在一个接口上开启CEF,每目的负载均衡基于路径来转发包到目的地;如果到达该目的地有两个或更多的路径,CEF会选择相同的路径(单独路径)并避免路由表中其他的路径,这是CEF的缺省机制造成的;当负载均衡同时在不同物理类型的接口上被完成时,CEF选择单独路径,例如串口和tunnel;hash算法决定了选择哪条路径;为了在CEF和流量负载均衡中将所有相似路径利用起来,当多条路径的物理接口类型不同时,你必须开启每数据包负载均衡;

           命令:-if)# ip load-sharing per-packet

本文出自 “A man and A computer” 博客,请务必保留此出处http://juispan.blog.51cto.com/943137/1950658

EIGRP