实验目的
通过对EIGRP拓扑,路由以及汇聚相关实验的练习,掌握EIGRP建立拓扑信息的方式,
度量计算方法,如何调整度量,非等价负载均衡,以及EIGRP末节路由器。
实验拓扑
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上查看路由表:
观察1.1.1.0的路由条目。其下一跳为10.10.12.1,即R1;管理距离为90,由于为EIGRP内部路由;度量值为409600。
再查看R2上关于1.1.1.0/24的拓扑信息。
可以发现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。
因此对于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 ?
<cr>
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
<cr>
R2(config-router)#offset-list 1 in 1 e0/1 ?
<cr>
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的路由度量为:
可以看到其度量值增加了1。(注意,上述实验并没有更改R1环回口的带宽和度量,只是列举出了命令)
6.现在R1和R2之间增加一条串行链路。并且配置地址为10.10.21.X/24。
配置好相应的接口IP地址,以及将接口加入EIGRP进程中。
查看R2上的邻居状态,发现在以太网口和串行口上和R1建立了两个EIGRP邻居关系。
然后查看R2的路由表
去往1.1.1.0/24的数据包走以太网接口。
查看R2上的拓扑信息表。
可以发现,到1.1.1.0/24的路由存在两条路由,但是由于走以太网接口的最终距离小于走串行口的距离,因此以太网接口被选择成为后继者,而串行口被选择成为可行性后继者。
成为可行性后继者的条件是RD<FD,如果违反这个条件,那么可能的路由不会出现在上述拓扑表中。可以在show ip eigrp topology后添加all-link选项显示。
EIGRP支持非等价负载均衡,只要满足两个条件:
a)备用路由能够成为可行性后继路由(RD<FD)
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的路由表。
可以发现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
<cr>
上述命令可以将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