实验目的

通过对EIGRP拓扑,路由以及汇聚相关实验的练习,掌握EIGRP建立拓扑信息的方式,
度量计算方法,如何调整度量,非等价负载均衡,以及EIGRP末节路由器。
 
实验拓扑

EIGRP拓扑,路由以及汇聚_第1张图片  
1.实验步骤
2.首先在R1,R2,R3上配置好各自的相关接口,并保持连通性。并且分别在R1,

R2和R3路由器上起环回口,相应的地址为X.X.X.X/24,与上个实验一致。
3.配置好R1,R2,R3的EIGRP 100进程,使得R1和R2正常建立邻居,R2和R3正常建立邻居。

4.在R2上查看路由表:

EIGRP拓扑,路由以及汇聚_第2张图片

EIGRP拓扑,路由以及汇聚_第3张图片
观察1.1.1.0的路由条目。其下一跳为10.10.12.1,即R1;管理距离为90,由于为EIGRP内部路由;度量值为409600。
 
再查看R2上关于1.1.1.0/24的拓扑信息。

EIGRP拓扑,路由以及汇聚_第4张图片

EIGRP拓扑,路由以及汇聚_第5张图片


可以发现R2得知的该条拓扑信息中包含了前缀1.1.1.0,前缀长度24,以及后继者10.10.12.1,以及度量。

其中度量包括最小带宽10000 Kbit
总计延迟为6000微秒
可靠性为255
负载为1
最小MTU为1500
 
在EIGRP进程开启后,EIGRP将加入进程的接口信息装载进入UPDATE数据包中发给相应的邻居,其中UPDATE数据包中就包含了上述信息。
当每一台EIGRP路由器都更新完成后,各自便根据获得的拓扑信息进行计算,最后得到通告距离(RD)和可行性距离(FD)。
只要满足FD>RD,则该路由标记为可用,选出最优一条。
 
EIGRP可以使用带宽,延迟,负载,可靠性和MTU进行计算度量。所使用的因素由K值所决定。但默认情况下只使用带宽和延迟两项进行计算,即K1=K3=1,其余K值为0。
 
EIGRP拓扑,路由以及汇聚_第6张图片

EIGRP拓扑,路由以及汇聚_第7张图片  
    因此对于1.1.1.0/24的度量计算应该为:
    (1000000/10000+6000/10)*256=409600
    并且该度量大于RD=128256,因此成为FD。
5.通过上面的分析,我们可以总结出调整EIGRP度量的办法:
a) 调整接口带宽
b) 调整接口延迟
c) 调整K值
d) 利用偏移列表(offset-list)
 
R1(config)#int lo0
R1(config-if)#bandwidth  1000
调整R1的环回口带宽为1000Kbit,注意,带宽为整条链路上的最小带宽,并且为入接口带宽。
 
R1(config)#int lo0
R1(config-if)#delay  1
调整R1的环回口延迟为10微秒,注意此处的单位。延迟为整条链路延迟之和,并且为入接口延迟。
 
R2(config)#router  eigrp 100
R2(config-router)#metric  weights ?
 <0-8> Type Of Service (Only TOS 0 supported)
 
R2(config-router)#metric  weights 0 ?
 <0-255> K1
 
R2(config-router)#metric  weights 0 1 ?
 <0-255> K2
 
R2(config-router)#metric  weights 0 1 0 ?
 <0-255> K3
 
R2(config-router)#metric  weights 0 1 0 1 ?
 <0-255> K4
 
R2(config-router)#metric  weights 0 1 0 1 0 ?
 <0-255> K5
 
R2(config-router)#metric  weights 0 1 0 1 0 0 ?
 
 
R2(config-router)#metric  weights 0 1 0 1 0 0
 
对R2的K值进行调整。第一个数值为TOS字段,永远为1。后面五个数字分别是K1到K5。如果调整K值,需要保持邻居之间K值一致,否则将会无法建立邻居。
偏移列表可以对某一条特殊路由进行度量调整。
在R2上对来自R1的1.1.1.1/24的度量加1,使用偏移列表完成。
R2(config)#access-list  1 permit 1.1.1.0 0.0.0.255
R2(config)#router  eigrp 100
R2(config-router)#offset-list  ? //调用ACL 1
 <0-99>      Access list of networks to apply  offset (0 selects all networks)
 <1300-1999> Access list of networks to apply offset  (expanded range)
 WORD        Access-list name
 
R2(config-router)#offset-list  1 ?
 in  Perform offset on incoming updates
 out Perform offset on outgoing updates
 
R2(config-router)#offset-list  1 in ? //偏移值
 <0-2147483647> Offset
 
R2(config-router)#offset-list  1 in 1 ?
 Async             Async interface
 BVI               Bridge-Group Virtual Interface
 CDMA-Ix           CDMA Ix interface
 Ctunnel           Ctunnel interface
 Dialer            Dialer interface
 Ethernet          IEEE 802.3
 Lex               Lex interface
 Loopback          Loopback interface
 MFR               Multilink Frame Relay bundle interface
 Multilink         Multilink-group interface
 Null              Null interface
 Port-channel      Ethernet Channel of interfaces
 Tunnel            Tunnel interface
 Vif               PGM Multicast Host interface
 Virtual-PPP       Virtual PPP interface
 Virtual-Template  Virtual Template interface
 Virtual-TokenRing Virtual TokenRing
 
 
R2(config-router)#offset-list  1 in 1 e0/1 ?
 
 
R2(config-router)#offset-list  1 in 1 e0/1 
R2(config-router)#end
之后邻居会发生一次抖动。
*Mar 1 02:20:51.287: %DUAL-5-NBRCHANGE:  IP-EIGRP(0) 100: Neighbor 10.10.12.1
 
(Ethernet0/1) is  resync: route configuration changed
再次查看关于来自R1的1.1.1.0/24的路由度量为:

blob.png

blob.png


可以看到其度量值增加了1。(注意,上述实验并没有更改R1环回口的带宽和度量,只是列举出了命令)
 
6.现在R1和R2之间增加一条串行链路。并且配置地址为10.10.21.X/24。
 EIGRP拓扑,路由以及汇聚_第8张图片


配置好相应的接口IP地址,以及将接口加入EIGRP进程中。
查看R2上的邻居状态,发现在以太网口和串行口上和R1建立了两个EIGRP邻居关系。
blob.png


然后查看R2的路由表
blob.png

EIGRP拓扑,路由以及汇聚_第9张图片

去往1.1.1.0/24的数据包走以太网接口。
 
查看R2上的拓扑信息表。

EIGRP拓扑,路由以及汇聚_第10张图片

EIGRP拓扑,路由以及汇聚_第11张图片


可以发现,到1.1.1.0/24的路由存在两条路由,但是由于走以太网接口的最终距离小于走串行口的距离,因此以太网接口被选择成为后继者,而串行口被选择成为可行性后继者。
成为可行性后继者的条件是RD  
EIGRP支持非等价负载均衡,只要满足两个条件:
a)备用路由能够成为可行性后继路由(RD b)备用路由度量小于FD*variance(variance默认为1)
 
要使得R2到1.1.1.0/24负载,则现在只要满足备用路由度量小于FD*variance即可。那么可以算出变量因子的最小值为6。(409600*6>2297856)
 
调整R2的variance值为6。
R2(config)#router  eigrp 100
R2(config-router)#variance  6 //调整变量因子为6,必须为整数。
 
再次查看R2的路由表。

EIGRP拓扑,路由以及汇聚_第12张图片

EIGRP拓扑,路由以及汇聚_第13张图片
可以发现R2去往1.1.1.0/24的路由负载均衡了。
 
7.默认情况下,如果EIGRP丢失了去往某前缀的路由,那么EIGRP将会查找是否存在可行性后继者,如果有,则直接使用;如果没有,那么EIGRP将把该路由条目标记为活动(Active)状态,然后产生Query数据包发给所有的活动邻居询问该路由情况。邻居检查自己的拓扑信息表,如果没有,再次将该查询蔓延给其余邻居。最终无人可查时,将会利用Reply数据包回复查询。因此,EIGRP为了加快汇聚,通常会将一些路由器配置成为末节路由器。
因为EIGRP不会将查询发送给末节路由器。
R2(config)#router  eigrp 100
R2(config-router)#eigrp  stub ?
 connected     Do advertise connected routes
 leak-map      Allow dynamic prefixes based on the  leak-map
 receive-only  Set IP-EIGRP as receive only neighbor
 redistributed Do advertise redistributed routes
 static        Do advertise static routes
 summary       Do advertise summary routes
 
 
上述命令可以将R2配置成为末节路由器。
Connected表示该路由器只通告network包含的直连网络信息
Receive-only表示该路由器不通告任何信息
Redistributed表示该路由器只通告重分布进入的路由条目
Static表示该路由器只通告重分布进入的静态路由
Summary表示该路由器只通告手工或者自动汇总的路由默认为connected和summary选项。
 
一旦R2配置了末节路由器,那么当R1丢失掉1.1.1.0/24路由时,便不会发送查询给R2。
R1#debug eigrp  packets query 
EIGRP Packets  debugging is on
   (QUERY)
R1#config t
Enter configuration  commands, one per line. End with  CNTL/Z.
R1(config)#int lo0
R1(config-if)#sh
R1(config-if)#
*Mar 1 00:29:23.655: EIGRP: Received QUERY on  Ethernet0/0 nbr 10.10.12.2
*Mar 1 00:29:23.655:  AS 100, Flags 0x0, Seq 19/0 idbQ 0/0 iidbQ  un/rely 0/0
peerQ un/rely 0/0
*Mar 1 00:29:23.659: EIGRP: Received QUERY on  Serial1/0 nbr 10.10.21.2
*Mar 1 00:29:23.659:  AS 100, Flags 0x0, Seq 18/14 idbQ 0/0  iidbQ un/rely 0/0
peerQ un/rely 0/0
R1(config-if)#
*Mar 1 00:29:25.451: %LINK-5-CHANGED: Interface  Loopback0, changed state to
administratively  down
*Mar 1 00:29:26.451: %LINEPROTO-5-UPDOWN: Line  protocol on Interface


Loopback0, changed  state to down
R1(config-if)#
可以看出,如果手工down掉loopback 0,R1并没有发送Query数据包给R2,只
是收到了R2关于1.1.1.0/24路由的查询。



吴迪

2017.12.12