eigrp协议详解

eigrp前身是igrp协议,由于igrp协议存在诸多缺点,因此cisco对其进行了“增强(enhance)”,注意,eigrp是cisco私有的协议,即只能在cisco的路由器上运行,诸如华为等厂商的路由器可能不支持该协议。
eigrp的几大特点: eigrp协议是无类别的路由协议。
eigrp是高级的距离矢量协议。//这点要特别注意
核心算法是dual算法,形成无环路由。
支持等价和非等价的负载均衡。
支持自动及手工路由汇总。
支持多种网络层协议(ip ,etc…);
[*1*].eigrp特性与基本配置
eigrp(enhanced interior gateway routing protocol,增强型内部网关路由协议),是思科私有的,高级距离矢量、无类的路由选择协议。
* eigrp特性
复合度量值:使用带宽(bandwidth)、负载(load)、延时(delay)、可靠性(reliability),默认只使用带宽和延时做为度量值计算的参数。
快速收敛:使用dual算法,通过在拓扑表中保存可行性后继,相当于次优路由,当可用路由消失后,次优路由马上进入路由表。
100%无环路:主要受益于dual算法。
配置简单。
可靠的更新:采用rtp(可靠传输协议),并为每个邻居保存一个重传列表。
建立邻居关系:运行eigrp的路由器中有三张表,路由表、邻居表、拓扑表。
支持多种网络协议。
支持vlsm和cidr。
支持手动汇总,能关闭自动汇总。
使用组播地址224.0.0.10发送更新。
支持等价和非等价负载均衡。
兼容igrp。
增量式更新:仅发送变化的路由信息。
路由标记功能:从igrp何任何外部源收到的更新都标记成ex(外部)。
* eigrp包格式
eigrp被设计成一个传输层协议,协议号是88,eigrp使用rtp(reliable transport protocol,可靠传输协议)传送和接收eigrp分组
eigrp的包格式如下图:
数据链路层头部:每个组播ip都有一个对应的mac地址,组播厂商编码为“01-00-5e”,后面的编号部分根据不同的组播ip计算得来,224.0.0.10对应的mac地址是“01-00-5e-00-00-0a”。
* eigrp分组类型
eigrp使用5种分组类型: 1,hello分组
hello分组用来发现、验证和重新发现邻居路由器。默认的hello分组发送间隔,除小于等于1.544mb/s的多点帧中继链路是60秒外,其他链路都是5秒。使用组播地址224.0.0.10发送,在邻居表中包含一个“保持时间”字段,记录了最后收到hello分组的时间,如果在保持时间到期前没有收到邻居路由器的任何hello分组,就认为这个邻居出现了故障,默认的保持时间是hello时间的3倍,即15秒。eigrp仅在宣告进eigrp进程的接口的主ip地址上发送分组。
* eigrp基本配置
下面使用一个实例演示eigrp基本配置以及hello分组的参数设置:
图中,r1和r2使用串行线路和以太网线路相连,在r1上有两个回环接口其中除lo1(3.3.3.3)外,r1和r2的其他接口都宣告进eigrp进程,自制系统号100(as=100)。
(本文[1][2][3]部分使用此拓扑来介绍eigrp配置)
r1配置:
1r1(config)#int s 0/0
2r1(config-if)#ip add 12.1.1.1 255.255.255.0
3r1(config-if)#no shut
4r1(config-if)#int fa 1/0
5r1(config-if)#ip add 21.1.1.1 255.255.255.0
6r1(config-if)#no shut
7r1(config-if)#int lo 0
8r1(config-if)#ip add 1.1.1.1 255.255.255.0
9r1(config-if)#no shut
10r1(config-if)#int lo 1
11r1(config-if)#ip add 3.3.3.3 255.255.255.0
12r1(config-if)#no shut
13r1(config-if)#router eigrp 100 /*eigrp需要配置as号*/
14r1(config-router)#net 1.1.1.0 0.0.0.255 /*宣告接口使用的是反掩码形式*/
15r1(config-router)#net 12.1.1.0 0.0.0.255
16r1(config-router)#net 21.1.1.0 0.0.0.255
17r1(config-router)#end
18r1#
19
20/*
21 * router eigrp 100
22 * eigrp进程需要配置as号(自制系统号),这里的100就是as号,
23 * as标识了属于一个互连网络中的所有路由器,
24 * 同一个as内的不同路由如果想要互相学习路由信息,必须配置相同的as号。
25 *
26 * net 12.1.1.0 0.0.0.255
27 * 在eigrp中宣告接口需要使用反掩码,如果不输入反掩码,
28 * 路由默认会使用接口的主类网络号,
29 * “net 12.1.1.0” 等价于 “net 12.0.0.0 0.255.255.255”
30 *
31 * 如果路由的所有接口都宣告进eigrp进程,则可以使用“net 0.0.0.0”一次性宣告所有接口。
32 *
33 */
r2配置:
1r2(config)#int s 0/1
2r2(config-if)#ip add 12.1.1.2 255.255.255.0
3r2(config-if)#no shut
4r2(config-if)#int lo 0
5r2(config-if)#ip add 2.2.2.2 255.255.255.0
6r2(config-if)#no shut
7r2(config-if)#int fa 1/0
8r2(config-if)#ip add 21.1.1.2 255.255.255.0
9r2(config-if)#router eigrp 100 /*自制系统号和r1相同*/
10r2(config-router)#net 0.0.0.0 /*宣告所有接口接入eigrp进程*/
11r2(config-router)#end
12r2#
* 查看和修改hello分组发送间隔
配置完成后使用下面的命令查看hello分组默认发送间隔:
1/*显示r1的s0/0接口上eigrp配置信息*/
2r1#show ip eigrp interfaces detail s0/0
3ip-eigrp interfaces for process 100
4
5 xmit queue mean pacing time multicast pending
6interface peers un/reliable srtt un/reliable flow timer routes
7se0/0 1 0/0 37 0/15 163 0
8 hello interval is 5 sec /*这里就是hello分组发送间隔,默认5秒*/
9 next xmit serial 《none》
10 un/reliable mcasts: 0/0 un/reliable ucasts: 1/3
11 mcast exceptions: 0 cr packets: 0 acks suppressed: 3
12 retransmissions sent: 0 out-of-sequence rcvd: 1
13 authentication mode is not set
14 use unicast
15r1#
可以使用下面的命令修改hello分组发送间隔:
1/*修改hello时间间隔为30秒*/
2r1(config)#int s 0/0
3r1(config-if)#ip hello-interval eigrp 100 30
4
5/*再次查看,发现hello时间变成30秒了*/
6r1#show ip eigrp interfaces detail s 0/0
7.。。。。
8 hello interval is 30 sec
9.。。。。
10r1#
11
12/*这样修改后,会遇到一个问题,因为默认的eigrp保持时间是15秒,而r1发给r2的hello间隔却被修改成了30秒,我们将看到路由上面反复的出现邻居关系down掉后又建立的消息,*/
13*mar 1 00:31:28.823: %dual-5-nbrchange: ip-eigrp(0) 100: neighbor 12.1.1.2 (serial0/0) is down: interface
14
15goodbye received
16r1(config-if)#
17*mar 1 00:31:33.739: %dual-5-nbrchange: ip-eigrp(0) 100: neighbor 12.1.1.2 (serial0/0) is up: new adjacency
18
19/*解决的办法是修改保持时间大于hello时间,一般修改成hello时间的3倍(90秒)*/
20r1(config-if)#ip hold-time eigrp 100 90
21r1(config-if)#end
22r1#
23
24/*修改后在r2上查看eigrp邻居表,可以看到r1发送过来的保持时间有是从90秒开始倒计时了*/
25r2#show ip eigrp neighbors
26ip-eigrp neighbors for process 100
27h address interface hold uptime srtt rto q seq
28 (sec) (ms) cnt num
291 21.1.1.1 fa1/0 70 00:01:07 1025 5000 0 9
300 12.1.1.1 se0/1 70 00:01:07 58 348 0 7
31
32/*上面的hold下面的70,代表已经收到hello分组20秒了,根据我们的改动再过10秒r2将再次收到r1发送过来的hello分组*/
在eigrp中,邻居的建立不需要有相同的hello时间和保持时间,而ospf中必须要有相同的hello时间和保持时间,否则邻居关系建立将不会成功。
2,ack(确认)分组
路由器在交换期间,使用确认分组来确认收到了eigrp分组,确认分组单播发送。
3,update(更新)分组
更新分组是可靠传送的,需要被确认,当路由发现新邻居或检测到网络拓扑发生变化时,使用更新分组。
4,query(查询)分组
当eigrp路由器需要从一个或所有邻居那里得到指定信息时,使用查询分组。查询分组也是可靠传送的,需要被确认。
5,reply(回复)分组
对邻居的查询信息进行单播回复,可靠传送,需要被确认。
eigrp分组对照表:
[*2*].eigrp表
eigrp中有三张表:邻居表、路由表、拓扑表。
* 邻居表(neighbor table)
两台相邻路由器要建立起邻接关系需要满足两个条件:
具有相同的as号
具有相匹配的k值
可以通过下面的命令来查看eigrp默认的k值:
1r1#show ip protocols
2routing protocol is “eigrp 100” /*as=100*/
3 outgoing update filter list for all interfaces is not set
4 incoming update filter list for all interfaces is not set
5 default networks flagged in outgoing updates
6 default networks accepted from incoming updates
7 eigrp metric weight k1=1, k2=0, k3=1, k4=0, k5=0
8 eigrp maximum hopcount 100
9 eigrp maximum metric variance 1
10 redistributing: eigrp 100
11 eigrp nsf-aware route hold timer is 240s
12 automatic network summarization is in effect
13 automatic address summarization:
14 21.0.0.0/8 for loopback0, serial0/0
15 summarizing with metric 28160
16 12.0.0.0/8 for loopback0, fastethernet1/0
17 summarizing with metric 2169856
18 1.0.0.0/8 for fastethernet1/0, serial0/0
19 summarizing with metric 128256
20 maximum path: 4
21 routing for networks: /*本路由运行了eigrp的接口*/
22 1.1.1.0/24
23 12.1.1.0/24
24 21.1.1.0/24
25 routing information sources: /*从哪些源接收到了更新*/
26 gateway distance last update
27 (this router) 90 00:02:29
28 12.1.1.2 90 00:02:29
29 21.1.1.2 90 00:02:24
30 distance: internal 90 external 170 /*内部管理距离和外部管理距离*/
31
32/*
33 * 从输出可以看到自制系统号as=100。
34 *
35 * maximum path: 4 代表最大允许4条线路的负载均衡,
36 * 可以使用r1(config-router)#maximum-paths 16来修改成16条,或者其他数值
37 *
38 * 可以看到上面的输出中有这么一行:
39 * eigrp metric weight k1=1, k2=0, k3=1, k4=0, k5=0
40 * 其中k1代表带宽,k2代表负载,k3代表延时,k4和k5代表可靠性,
41 * 默认eigrp只使用了带宽和负载作为度量值计算参数。
42 *
43 */
可以使用下面的命令来修改k值: “metric weights tos k1 k2 k3 k4 k5′
其中tos被用作服务质量区分服务等级,这里暂时用不到,0为不启用,1为启用。
1/*修改eigrp k值,只使用带宽作为度量值计算参数*/
2r1(config)#router eigrp 100
3r1(config-router)#metric weights 0 1 0 0 0 0
4
5/*修改后马上看到了与邻路由k值不匹配的消息*/
6*mar 1 00:45:32.391: %dual-5-nbrchange: ip-eigrp(0) 100: neighbor 12.1.1.2 (serial0/0) is down: k-value
7
8mismatch
9
10/*接着就发现与邻居的邻接关系down掉了*/
11*mar 1 00:45:32.391: %dual-5-nbrchange: ip-eigrp(0) 100: neighbor 12.1.1.2 (serial0/0) is down: k-value
12
13mismatch
14
15/*重新将k值改成默认的带宽和延时有效的状态*/
16r1(config-router)#metric weights 0 1 0 1 0 0
下图是eigrp建立邻接关系的过程:
可以使用下面的命令查看邻居表: 1r1#show ip eigrp neighbors
2ip-eigrp neighbors for process 100
3h address interface hold uptime srtt rto q seq
4 (sec) (ms) cnt num
51 21.1.1.2 fa1/0 11 00:04:50 52 312 0 9
60 12.1.1.2 se0/0 10 00:04:50 59 354 0 10
7
8/*
9 * “h”表示邻居被学到的先后顺序,0是最先学到的邻居。
10 * “address”是邻居路由接口ip。
11 * “interface”是本地路由和这个邻居相连的接口
12 * “hold”是当前的保持时间,默认15秒,是一个递减的数值。
13 * “uptime”是邻居进入邻居表到当前经过了多长时间。
14 * 后面的参数在ccna中暂时不讨论。
15 */
* 路由表
使用下面的命令显示r1的路由表: 1r1#show ip route
2gateway of last resort is not set
3
4 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
5c 1.1.1.0/24 is directly connected, loopback0
6d 1.0.0.0/8 is a summary, 00:06:49, null0
7d 2.0.0.0/8 [90/156160] via 21.1.1.2, 00:06:49, fastethernet1/0
8 3.0.0.0/24 is subnetted, 1 subnets
9c 3.3.3.0 is directly connected, loopback1
10 21.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
11c 21.1.1.0/24 is directly connected, fastethernet1/0
12d 21.0.0.0/8 is a summary, 00:06:51, null0
13 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
14c 12.1.1.0/24 is directly connected, serial0/0
15d 12.0.0.0/8 is a summary, 00:06:50, null0
16r1#
17
18/*
19 *
20 * 路由表中的“d 1.0.0.0/8 is a summary, 01:40:23, null0”,
21 * 是一条自动汇总产生的路由,eigrp和rip默认都在主网边界自动汇总,
22 * 而不同的是eigrp会在本地产生一条自动汇总后的路由,目标指向空接口(null0)
23 * 发往空接口的数据会被丢弃。这可以有效的避免路由环路的产生。
24 *
25 * “d 2.0.0.0/8 [90/156160] via 21.1.1.2, 00:06:49, fastethernet1/0
26 * 这是一条通过eigrp学习到的最终路由,d代表是通过eigrp学习到的,
27 * 可以看到r1上的2.2.2.2/24被汇总成了2.0.0.0/8发送过来,
28 * [90/156160]中的90是eigrp默认的管理距离,后面是度量值。
29 * 从这条路由可以得知,去往2.0.0.0/8网络的数据发往21.1.1.2,
30 * 从本地的fastethernet1/0发出。
31 *
32 */
下面这个例子解释了,为什么eigrp要在本地产生一条去往空接口的汇总路由:
假设r1和r2都运行了rip协议,r1和r2相连的串行线路属于12.1.1.0/24网段,r1将自己回环接口lo0汇总成1.0.0.0/8发送给r2,并且在r1上有一条默认路由指向r2。此时,在r2上面有一个去往1.1.2.1的数据包,r2根据r1发过来的路由1.0.0.0/8匹配,将数据发给r1,r1上面只有默认路由可以匹配,它又将数据发回r2,这样路由环路形成。
假设r1和r2都运行了eigrp协议,r1和r2相连的串行线路属于12.1.1.0/24网段,r1将自己回环接口lo0汇总成1.0.0.0/8发送给r2,并且在r1上有一条默认路由指向r2。此时,在r2上面有一个去往1.1.2.1的数据包,r2根据r1发过来的路由1.0.0.0/8匹配,将数据发给r1,r1发现路由表中有一条1.0.0.0/8的条目能够匹配(子网掩码最长匹配,这个条目比默认路由子网掩码长,所以优先选取),所以最终r1将数据发往了空接口,即丢弃。有效的避免了路由环路的形成。
* 拓扑表
显示拓扑表: 1/*显示r1的拓扑表*/
2r1#show ip eigrp topology
3ip-eigrp topology table for as(100)/id(3.3.3.3)
4
5codes: p - passive, a - active, u - update, q - query, r - reply,
6 r - reply status, s - sia status
7
8p 1.0.0.0/8, 1 successors, fd is 128256
9 via summary (128256/0), null0
10p 1.1.1.0/24, 1 successors, fd is 128256
11 via connected, loopback0
12p 2.0.0.0/8, 1 successors, fd is 156160
13 via 21.1.1.2 (156160/128256), fastethernet1/0
14 via 12.1.1.2 (2297856/128256), serial0/0
15p 12.0.0.0/8, 1 successors, fd is 2169856
16 via summary (2169856/0), null0
17p 12.1.1.0/24, 1 successors, fd is 2169856
18 via connected, serial0/0
19p 21.0.0.0/8, 1 successors, fd is 28160
20 via summary (28160/0), null0
21p 21.1.1.0/24, 1 successors, fd is 28160
22 via connected, fastethernet1/0
23r1#
24
25/*
26 * 路由状态:
27 * p 表示被动路由(passive),即路由是稳定可用的,
28 * a 表示是活跃路由(active),即路由正在使用dual重新计算中,不可用。
29 *
30 * 网络目标: 2.0.0.0/8就是一个网络目标。
31 *
32 * 后继(successor):到达远程网络的主要路由,对任何特定的路由可以有多达4条后继路由。
33 * ”2.0.0.0/8, 1 successors“,代表去往2.0.0.0/8只有一条最佳路径。
34 *
35 * 可行距离(fd,feasible distance):
36 * 是下一跳路由的报告距离和本路由到下一跳路由的距离之和,
37 * r1去往2.0.0.0/8的路径有两条,距离分别是156160和2297856,
38 * 最小距离156160成为可行距离,即从快速以太网接口到达r2。
39 *
40 * 路由来源:是指最初发布这条路由的路由器标识(via 12.1.1.2),
41 * 这个标识仅当路由是从其他eigrp路由器学到时才填入。
42 *
43 * 报告距离(rd,reported distance):
44 * 报告距离是邻路由报告的,到一个指定目标网络的距离,
45 * “via 21.1.1.2 (156160/128256), fastethernet1/0”
46 * 128256就是r2报告给r1达自己lo0接口的报告距离,
47 *
48 * 接收端口如”fastethernet1/0“,是本路由从哪个接口可以到达目的地。
49 *
50 */
[*3*]。度量值的计算
eigrp使用复合度量值计算到目的地址最佳路径,复合度量值是带宽、延时、可靠性和负载的组合。在k1、k2、k3、k4、k5都不
为0的前提下,复合度量值的计算公式:
1metric=[k1*bandwidth+(k2*bandwidth)/(256-load)+k3*delay]*[k5/(reliability+k4)]
k1影响的是带宽(bandwidth),k2影响的是负载(load),k3影响的是延时(delay),k4和k5影响的是可靠性(reliability)。
默认情况下cisco路由器只使用k1和k3来进行复合度量值的计算,所以公式可以简化成:
1metric=(10000m/源和目的之间最低链路带宽+源和目的之间所有链路延时总和/10)*256
2
3/*
4 * 源和目的之间最低链路带宽,单位是m。
5 * 源和目的之间所有链路延时总和,单位是微秒(usec)。
6 * 至于这里为什么要用延时总和除以10,
7 * 那是因为eigrp度量值计算中是使用10微秒作为单位进行计算的。
8 */
下面举个例子,计算一下r1到r2的lo0接口的复合度量值。注意,r1到r2的lo0接口的度量值,要使用r1去往r2 lo0接口方向的出接口的带宽和延时作为参数来计算:
1/*
2 * 查看r1的s 0/0接口参数
3 * 可以看到 bw带宽等于1.544m,延时为20000微秒。
4 */
5r1#show interfaces s 0/0
6serial0/0 is up, line protocol is up
7 hardware is m4t
8 internet address is 12.1.1.1/24
9 mtu 1500 bytes, bw 1544 kbit, dly 20000 usec,
10
11/*
12 * 查看r1的fa 1/0接口参数
13 * 可以看到 bw带宽等于100m,延时为100微秒。
14 */
15r1#show interfaces fastethernet 1/0
16fastethernet1/0 is up, line protocol is up
17 hardware is amdfe, address is cc00.04b0.0010 (bia cc00.04b0.0010)
18 internet address is 21.1.1.1/24
19 mtu 1500 bytes, bw 100000 kbit, dly 100 usec,
20
21/*
22 * 再查看r2的lo0接口的参数
23 * 带宽为8000m,延时为5000微秒。
24 */
25r2#show int lo 0
26loopback0 is up, line protocol is up
27 hardware is loopback
28 internet address is 2.2.2.2/24
29 mtu 1514 bytes, bw 8000000 kbit, dly 5000 usec,
根据公式”metric=(10000m/源和目的之间最低链路带宽+源和目的之间所有链路延时总和/10)*256′,如果从s0/0去往r2 lo0,最低链路带宽是1.544,延时总和是s0/0的延时+r2的lo0的延时=20000+5000,代入公式计算:
[10000/r1的s0/0接口带宽(单位m)+(r1的s0/0接口延时+r2的lo0接口延时)/10]*256
[10000/1.544+(20000+5000)/10]*256
注意,这个公式的计算每部分都是取整的,比如:
10000/1.544≈6476 ,小数部分直接舍去,且不四舍五入。
(20000+5000)/10=2500
8976*256=2297856
如果从r1的fa1/0去往r2的lo0的度量值就是:
[10000/r1的fa1/0接口带宽(单位m)+(r1的fa1/0接口延时+r2的lo0接口延时)/10]*256
[10000/100+(100+5000)/10]*256=156160
使用show ip eigrp topology看看结果是否相同:
1r1#show ip eigrp topology
2
3p 2.0.0.0/8, 1 successors, fd is 156160
4 via 21.1.1.2 (156160/128256), fastethernet1/0
5 via 12.1.1.2 (2297856/128256), serial0/0
6
7/*显示的可行距离和自己计算的,完全相同*/
上面的输出中报告距离128256,也可以使用公式计算出来:
[10000/r2的lo0接口带宽(单位m)+(r2的lo0接口延时)/10]*256
[10000/8000+(5000)/10]*256=
10000/8000≈1 , 直接舍去小数位,且不四舍五入。
501*256=128256
计算中,除法出现小数都直接舍去小数部分,且不四舍五入。
如果此时我们更改r2的s0/1或r2的fa1/0带宽,是不会影响r1上面去往r2的lo0接口的度量值的,因为r1去往r2的lo0接口的度量值计算是根据出接口,即r1的s0/0和f1/0以及r2的lo0接口的带宽和延时作为参数来计算的,但是会影响r2到r1的lo0接口的度量值,可以使用下面的方法来验证:
1/*没有更改带宽前,查看r2上去往r1的lo0接口的度量值*/
2r2#show ip eigrp topology
3
4p 1.0.0.0/8, 1 successors, fd is 156160
5 via 21.1.1.1 (156160/128256), fastethernet1/0
6 via 12.1.1.1 (2297856/128256), serial0/1
7
8/*下面我们更改r2的出接口s0/1的带宽,看会不会改变2297856这个数值大小*/
9r2(config)#int s 0/1
10r2(config-if)#bandwidth 1000000 /*将带宽改成1000m*/
11r2(config-if)#end
12
13/*查看一下,确实修改成功了*/
14r2#show interfaces s 0/1
15 mtu 1500 bytes, bw 1000000 kbit, dly 20000 usec,
16
17/*再看r2拓扑表*/
18r2#show ip eigrp topology
19
20p 1.0.0.0/8, 1 successors, fd is 156160
21 via 21.1.1.1 (156160/128256), fastethernet1/0
22 via 12.1.1.1 (642560/128256), serial0/1
23/*
24 * 可以看到,从s0/1去往1.0.0.0/8的度量值变成了642560,
25 * 可以用公式来验证这个数值是更改后的1000m带宽作为参数计算得到的。
26 */
可以通过下面的命令来查看某条路由的明细拓扑数据库:
1r2#show ip eigrp topology 1.0.0.0
2ip-eigrp (as 100): topology entry for 1.0.0.0/8
3 state is passive, query origin flag is 1, 1 successor(s), fd is 156160
4 routing descriptor blocks:
5 21.1.1.1 (fastethernet1/0), from 21.1.1.1, send flag is 0x0
6 composite metric is (156160/128256), route is internal
7 vector metric:
8 minimum bandwidth is 100000 kbit
9 total delay is 5100 microseconds
10 reliability is 255/255
11 load is 1/255
12 minimum mtu is 1500
13 hop count is 1
14 12.1.1.1 (serial0/1), from 12.1.1.1, send flag is 0x0
15 composite metric is (642560/128256), route is internal
16 vector metric:
17 minimum bandwidth is 1000000 kbit /*这是我们刚才修改的带宽*/
18 total delay is 25000 microseconds
19 reliability is 255/255
20 load is 1/255
21 minimum mtu is 1500
22 hop count is 1
23r2#
[*4*].eigrp高级配置
介绍eigrp高级配置前,先介绍一下dual算法的相关术语:
successor(后继):后继就是到目标网络花费最少的路由。
fd(feasible distance,可行距离):到目标网络的最小度量值。
rd(reported distance,报告距离)又称ad(advertised distance,通告距离):下一跳路由器通告的到相同目标网络的距离。
fs(feasible successor,可行后继):可行后继就是次优路径。
fc(feasibility condition,可行条件):可行条件是报告距离必须小于可行距离,也就是邻路由到目标网络的距离必须小于本路由到目标网络的距离。
能出现在”show ip eigrp topology”中的非可行距离路径,都满足可行条件,都是可行后继。
下面这个例子中列出的拓扑表很好的解释了上面这些概念:
1r2#show ip eigrp topology
2
3p 1.0.0.0/8, 1 successors, fd is 156160
4 via 21.1.1.1 (156160/128256), fastethernet1/0
5 via 12.1.1.1 (2297856/128256), serial0/1
6
7/*
8 * 在上面的拓扑表显示中:
9 * r2去往1.0.0.0/8网络有一条后继”1 successors“,
10 * 可行距离是”fd is 156160“,
11 * 报告距离是”128256“,
12 * 可行后继是”via 12.1.1.1 (2297856/128256), serial0/1“
13 * 能出现在这个命令下的,都满足可行条件。
14 */
* eigrp非等值负载均衡
用下面这个实例来讲解eigrp非等值负载均衡的配置:
r1配置:
1r1(config)#no cdp run /*关闭cdp协议,否则在以太网会有不匹配提示*/
2r1(config)#int lo 0
3r1(config-if)#ip add 1.1.1.1 255.255.255.0
4r1(config-if)#no shut
5r1(config-if)#int s 0/0
6r1(config-if)#ip add 12.1.1.1 255.255.255.0
7r1(config-if)#no shut
8r1(config-if)#int fa 1/0
9r1(config-if)#ip add 13.1.1.1 255.255.255.0
10r1(config-if)#no shut
11r1(config-if)#router eigrp 100
12r1(config-router)#net 0.0.0.0
13r1(config-router)#end
14r1#
r2配置:
1r2(config)#int lo 0
2r2(config-if)#ip add 2.2.2.2 255.255.255.0
3r2(config-if)#no shut
4r2(config-if)#int s 0/1
5r2(config-if)#ip add 12.1.1.2 255.255.255.0
6r2(config-if)#no shut
7r2(config-if)#int s 0/0
8r2(config-if)#ip add 23.1.1.2 255.255.255.0
9r2(config-if)#no shut
10r2(config-if)#router eigrp 100
11r2(config-router)#net 0.0.0.0
12r2(config-router)#end
13r2#
r3配置:
1r3(config)#no cdp run
2r3(config)#int lo 0
3r3(config-if)#ip add 3.3.3.3 255.255.255.0
4r3(config-if)#no shut
5r3(config-if)#int s 0/1
6r3(config-if)#ip add 23.1.1.3 255.255.255.0
7r3(config-if)#no shut
8r3(config-if)#int fa 1/0
9r3(config-if)#ip add 13.1.1.3 255.255.255.0
10r3(config-if)#no shut
11r3(config-if)#router eigrp 100
12r3(config-router)#net 0.0.0.0
13r3(config-router)#end
14r3#
配置完成后查看r1路由表:
1r1#show ip route
2
3 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
4c 1.1.1.0/24 is directly connected, loopback0
5d 1.0.0.0/8 is a summary, 00:07:03, null0
6d 2.0.0.0/8 [90/2297856] via 12.1.1.2, 00:03:10, serial0/0
7d 3.0.0.0/8 [90/156160] via 13.1.1.3, 00:03:10, fastethernet1/0
8d 23.0.0.0/8 [90/2172416] via 13.1.1.3, 00:03:10, fastethernet1/0
9 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
10c 12.1.1.0/24 is directly connected, serial0/0
11d 12.0.0.0/8 is a summary, 00:05:02, null0
12 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
13c 13.1.1.0/24 is directly connected, fastethernet1/0
14d 13.0.0.0/8 is a summary, 00:07:04, null0
15r1#
16
17/*注意,路由表中去往23.0.0.0/8的路径只显示了一条,而rip则会显示两条,因为rip仅仅通过跳数去判断路径的好坏,而eigrp使用复合度量值,默认和带宽和延时有关,前面已经说明。*/
实际上去往23.0.0.0/8的路径还有一条可行后继,即通过r1,可以通过查看r1上针对23.0.0.0/8的拓扑数据库看到另外一条可行后继:
1r1#show ip eigrp topology 23.0.0.0
2ip-eigrp (as 100): topology entry for 23.0.0.0/8
3 state is passive, query origin flag is 1, 1 successor(s), fd is 2172416
4 routing descriptor blocks:
5
6/*这一条是后继路由*/
7 13.1.1.3 (fastethernet1/0), from 13.1.1.3, send flag is 0x0
8 composite metric is (2172416/2169856), route is internal
9 vector metric:
10 minimum bandwidth is 1544 kbit
11 total delay is 20100 microseconds
12 reliability is 255/255
13 load is 1/255
14 minimum mtu is 1500
15 hop count is 1
16
17/*这一条是可行后继*/
18 12.1.1.2 (serial0/0), from 12.1.1.2, send flag is 0x0
19 composite metric is (2681856/2169856), route is internal
20 vector metric:
21 minimum bandwidth is 1544 kbit
22 total delay is 40000 microseconds
23 reliability is 255/255
24 load is 1/255
25 minimum mtu is 1500
26 hop count is 1
27r1#
可以使用下面的方法让去往23.0.0.0/8的数据能够很好的被分配到两条线路上:
我们使用上面拓扑数据中最大的可行后继的度量值(本例只有一个可行后继度量值是2681856)除以后继路径的度量值(2172416),取不小于结果的整数:
2681856/2172416≈1.234 , 所以取值等于2作为不等价因子来配置非等值负载均衡:
1r1(config)#router eigrp 100
2r1(config-router)#variance 2 /*配置非等值负载均衡*/
3r1(config-router)#end
4r1#
5
6/*再次查看r1路由表,发现23.0.0.0/8出现了两条路径*/
7r1#show ip route
8
9 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
10c 1.1.1.0/24 is directly connected, loopback0
11d 1.0.0.0/8 is a summary, 00:00:42, null0
12d 2.0.0.0/8 [90/2297856] via 12.1.1.2, 00:00:42, serial0/0
13d 3.0.0.0/8 [90/156160] via 13.1.1.3, 00:00:42, fastethernet1/0
14d 23.0.0.0/8 [90/2172416] via 13.1.1.3, 00:00:42, fastethernet1/0
15 [90/2681856] via 12.1.1.2, 00:00:42, serial0/0
16 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
17c 12.1.1.0/24 is directly connected, serial0/0
18d 12.0.0.0/8 is a summary, 00:00:43, null0
19 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
20c 13.1.1.0/24 is directly connected, fastethernet1/0
21d 13.0.0.0/8 is a summary, 00:00:43, null0
22r1#
这里用到的不等价因子2,代表度量值小于“可行距离*2”且报告距离小于可行距离的路径可以进入路由表,可以使用下面的命令来验证这一点:
1/*
2 * 这条命令可以显示所有的路由链路,即使不满足可行条件的也会显示出来
3 * 可以看到2.0.0.0/8、3.0.0.0/8,
4 * 他们的第二条链路的度量值也小于”可行距离*2“,
5 * 但是这两条链路不满足可行条件,所以不能进入路由表。
6 */
7r1#show ip eigrp topology all-links
8
9p 1.0.0.0/8, 1 successors, fd is 128256, serno 6
10 via summary (128256/0), null0
11p 1.1.1.0/24, 1 successors, fd is 128256, serno 3
12 via connected, loopback0
13p 2.0.0.0/8, 1 successors, fd is 2297856, serno 10
14 via 12.1.1.2 (2297856/128256), serial0/0
15 via 13.1.1.3 (2300416/2297856), fastethernet1/0
16p 3.0.0.0/8, 1 successors, fd is 156160, serno 14
17 via 13.1.1.3 (156160/128256), fastethernet1/0
18 via 12.1.1.2 (2809856/2297856), serial0/0
19p 12.0.0.0/8, 1 successors, fd is 2169856, serno 8
20 via summary (2169856/0), null0
21p 12.1.1.0/24, 1 successors, fd is 2169856, serno 7
22 via connected, serial0/0
23p 13.0.0.0/8, 1 successors, fd is 28160, serno 5
24 via summary (28160/0), null0
25p 13.1.1.0/24, 1 successors, fd is 28160, serno 2
26 via connected, fastethernet1/0
27p 23.0.0.0/8, 1 successors, fd is 2172416, serno 13
28 via 13.1.1.3 (2172416/2169856), fastethernet1/0
29 via 12.1.1.2 (2681856/2169856), serial0/0
* eigrp手动汇总
eigrp和rip一样,默认在主类网络的边界自动汇总,我们来看下面这个实例:
r1配置:
1r1(config)#int lo 0
2r1(config-if)#ip add 12.1.2.1 255.255.255.128
3r1(config-if)#no shut
4r1(config-if)#int s 0/0
5r1(config-if)#ip add 12.1.1.1 255.255.255.0
6r1(config-if)#no shut
7r1(config-if)#router eigrp 100
8r1(config-router)#net 12.1.1.0 0.0.0.255
9r1(config-router)#net 12.1.2.0 0.0.0.127
10r1(config-router)#end
11r1#
r2配置:
1r2(config)#int lo 0
2r2(config-if)#ip add 2.2.0.1 255.255.255.0
3r2(config-if)#no shut
4r2(config-if)#int lo 1
5r2(config-if)#ip add 2.2.1.1 255.255.255.0
6r2(config-if)#no shut
7r2(config-if)#int s 0/1
8r2(config-if)#ip add 12.1.1.2 255.255.255.0
9r2(config-if)#no shut1
10r2(config-if)#router eigrp 100
11r2(config-router)#net 0.0.0.0
12r2(config-router)#end
13r2#
配置完成后分别查看r1和r2的路由表:
1/*
2 * 可以看到r1的路由表中2.0.0.0/8是r2汇总后发送过来的条目
3 * r2在将自己的lo0和lo1从s0/1向外发送的时候,
4 * 发现发送的接口s0/1的ip是12.1.1.2,默认的主类网络是12.0.0.0/8,
5 * 这和lo0和lo1的默认主类网络(2.0.0.0/8)不同,
6 * 所以r2在自己的s0/1自动汇总这两条路由成2.0.0.0/8发送给r1。
7 */
8r1#show ip route
9
10d 2.0.0.0/8 [90/2297856] via 12.1.1.2, 00:00:53, serial0/0
11 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
12c 12.1.1.0/24 is directly connected, serial0/0
13c 12.1.2.0/25 is directly connected, loopback0
14r1#
15
16/*
17 * 与rip不同的是,eigrp自动汇总后,会在本地产生一条指向空接口的汇总路由
18 *
19 * ”2.0.0.0/8 is a summary, 00:02:59, null0“,
20 * 是lo0和lo1在本地s0/1汇总时产生的。
21 *
22 * ”12.0.0.0/8 is a summary, 00:02:59, null0“,
23 * 是r2将自己的s0/1接口路由和从r2接收到的12.1.2.0/25,
24 * 从lo0和lo1发送出去时的汇总路由。
25 *
26 * ”12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:00:50, serial0/1“
27 * 这一条从r1发过来的路由没有被汇总的原因是,
28 * r1的发送接口s0/0(12.1.1.1)的默认主类网络地址12.0.0.0/8,
29 * 和这条被发送的路由条目的默认主类网络地址相同,
30 * 自动汇总只发生在主类网络边界。并且从这里可以看出eigrp支持vlsm。
31 */
32r2#show ip route
33
34 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
35c 2.2.0.0/24 is directly connected, loopback0
36c 2.2.1.0/24 is directly connected, loopback1
37d 2.0.0.0/8 is a summary, 00:02:59, null0
38 12.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
39c 12.1.1.0/24 is directly connected, serial0/1
40d 12.0.0.0/8 is a summary, 00:02:59, null0
41d 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:00:50, serial0/1
42r2#
关于上面的r2的路由表中“12.0.0.0/8 is a summary, 00:02:59, null0”这条汇总条目是没有必要的,因为是r2向自己的回环接口发送eigep分组的时候产生的汇总路由,可以使用下面的命令将回环接口设置成被动接口,即不发送分组,来减小路由表大小:
1/*将回环接口设置成被动接口*/
2r2(config)#router eigrp 100
3r2(config-router)#passive-interface lo 0
4r2(config-router)#passive-interface lo 1
5r2(config-router)#end
6
7/*再次查看r2的路由表,就看不到12.0.0.0/8的汇总路由了*/
8r2#show ip route
9
10 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
11c 2.2.0.0/24 is directly connected, loopback0
12c 2.2.1.0/24 is directly connected, loopback1
13d 2.0.0.0/8 is a summary, 00:18:02, null0
14 12.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
15c 12.1.1.0/24 is directly connected, serial0/1
16d 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:15:53, serial0/1
17r2#
接下来,关闭eigrp的自动汇总,使用手动汇总:
1/*关闭r1的自动汇总*/
2r1(config)#router eigrp 100
3r1(config-router)#no auto-summary
4
5/*关闭r2的自动汇总*/
6r2(config)#router eigrp 100
7r2(config-router)#no auto-summary
8
9/*
10 * 关闭汇总后查看r1和r2的路由表
11 * r1上的2.0.0.0/8汇总路由变成了两条明细路由,
12 * 所有的指向空接口的条目消失了
13 */
14r1#show ip route
15
16 2.0.0.0/24 is subnetted, 2 subnets
17d 2.2.0.0 [90/2297856] via 12.1.1.2, 00:00:06, serial0/0
18d 2.2.1.0 [90/2297856] via 12.1.1.2, 00:00:06, serial0/0
19 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
20c 12.1.1.0/24 is directly connected, serial0/0
21c 12.1.2.0/25 is directly connected, loopback0
22
23r2#show ip route
24
25 2.0.0.0/24 is subnetted, 2 subnets
26c 2.2.0.0 is directly connected, loopback0
27c 2.2.1.0 is directly connected, loopback1
28 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
29c 12.1.1.0/24 is directly connected, serial0/1
30d 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:25:08, serial0/1
31
32/*在r2上使用手动汇总将lo0和lo1汇总成一条*/
33r2(config)#int s 0/1 /*手动汇总是在主类网络的边界接口上配置的*/
34r2(config-if)#ip summary-address eigrp 100 2.2.0.0 255.255.254.0
35r2(config-if)#end
36r2#
37
38/*再次查看r1和r2的路由表*/
39r1#show ip route
40
41 2.0.0.0/23 is subnetted, 1 subnets /*汇总后发过来的条目*/
42d 2.2.0.0 [90/2297856] via 12.1.1.2, 00:01:32, serial0/0
43 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
44c 12.1.1.0/24 is directly connected, serial0/0
45c 12.1.2.0/25 is directly connected, loopback0
46r1#
47
48/*手动汇总后r2上自动生成了一条汇总路由,指向空接口*/
49r2#show ip route
50
51 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
52c 2.2.0.0/24 is directly connected, loopback0
53d 2.2.0.0/23 is a summary, 00:02:20, null0
54c 2.2.1.0/24 is directly connected, loopback1
55 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
56c 12.1.1.0/24 is directly connected, serial0/1
57d 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:30:19, serial0/1
58r2#
* eigrp外部路由
接着上面的实验,在r1上新增一个loopback1,ip地址设置成1.1.1.1/24 :
1r1(config)#int lo 1
2r1(config-if)#ip add 1.1.1.1 255.255.255.0
3r1(config-if)#no shut
4r1(config-if)#end
5r1#
这个时候在r2上查看路由表,看不到r1的回环接口lo1的条目,这是因为前面配置的时候,并没有使用net 0.0.0.0宣告全部的接口,这里要使用路由重发布技术,将r1的lo1接口发布进eigrp,r1配置如下:
1r1(config)#router eigrp 100
2r1(config-router)#redistribute connected /*重发布直连路由*/
3r1(config-router)#end
4r1#
5
6/*
7 * 在r2上查看路由表,发现一条d ex开头的条目,
8 * “d ex”表示这条路由条目是eigrp外部路由,不是起源eigrp内部,
9 * 可能是用重发布发布进eigrp进程的,eigrp外部路由默认管理距离是170。
10 */
11r2#show ip route
12
13 1.0.0.0/24 is subnetted, 1 subnets
14d ex 1.1.1.0 [170/2297856] via 12.1.1.1, 00:00:51, serial0/1
15 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
16c 2.2.0.0/24 is directly connected, loopback0
17d 2.2.0.0/23 is a summary, 00:13:00, null0
18c 2.2.1.0/24 is directly connected, loopback1
19 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
20c 12.1.1.0/24 is directly connected, serial0/1
21d 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:40:59, serial0/1
22r2#
23
24/*可以在拓扑表中看到这条外部路由的详细信息*/
25r2#show ip eigrp topology 1.1.1.0/24
26ip-eigrp (as 100): topology entry for 1.1.1.0/24
27 state is passive, query origin flag is 1, 1 successor(s), fd is 2297856
28 routing descriptor blocks:
29 12.1.1.1 (serial0/1), from 12.1.1.1, send flag is 0x0
30/*route is external,这是一条外部路由*/
31 composite metric is (2297856/128256), route is external
32 vector metric:
33 minimum bandwidth is 1544 kbit
34 total delay is 25000 microseconds
35 reliability is 255/255
36 load is 1/255
37 minimum mtu is 1500
38 hop count is 1
39 external data:
40 originating router is 12.1.2.1
41 as number of route is 0
42/*external protocol is connected,重发布的是外部直连路由*/
43 external protocol is connected, external metric is 0
44 administrator tag is 0 (0x00000000)
45r2#
* eigrp重发布默认路由
可以使用相同的方法重发布一条外部默认路由,在r1上配置一条默认路由,然后再将这条默认路由使用静态路由的形式重发布到eigrp进程里:
1r1(config)#ip route 0.0.0.0 0.0.0.0 lo1 /*所有未知数据从lo1接口发出*/
2r1(config)#router eigrp 100
3r1(config-router)#redistribute static /*重发布静态路由*/
4r1(config-router)#end
5r1#
6
7/*在r2上查看路由表,可以看到来自外部的默认路由”d*ex“*/
8r2#show ip route
9
10gateway of last resort is 12.1.1.1 to network 0.0.0.0
11
12 1.0.0.0/24 is subnetted, 1 subnets
13d ex 1.1.1.0 [170/2297856] via 12.1.1.1, 00:15:54, serial0/1
14 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
15c 2.2.0.0/24 is directly connected, loopback0
16d 2.2.0.0/23 is a summary, 00:28:03, null0
17c 2.2.1.0/24 is directly connected, loopback1
18 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
19c 12.1.1.0/24 is directly connected, serial0/1
20d 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:56:02, serial0/1
21d*ex 0.0.0.0/0 [170/2297856] via 12.1.1.1, 00:00:05, serial0/1
* eigrp验证
eigrp配置验证的模式和ripv2协议一样,在全局配置模式下创建密钥链,在接口中调用密钥链并且制定验证模式,接着上面的实验,在r1和r2之间,使用md5验证:
1/*r1配置验证*/
2r1(config)#key chain ccnakey1 /*密钥链标识ccnakey1,只具有本地意义*/
3r1(config-keychain)#key 1
4r1(config-keychain-key)#key-string eigrp123456 /*密钥密码,双方需要相同*/
5r1(config-keychain-key)#int s 0/0 /*在和r2相连的接口上调用密钥链,并指md5加密。*/
6r1(config-if)#ip authentication key-chain eigrp 100 ccnakey1
7r1(config-if)#ip authentication mode eigrp 100 md5
8r1(config-if)#end
9r1#
10
11/*r2配置验证*/
12r2(config)#key chain ccnakey2
13r2(config-keychain)#key 1
14r2(config-keychain-key)#key
15r2(config-keychain-key)#key-string eigrp123456
16r2(config-keychain-key)#int s 0/1
17r2(config-if)#ip authentication mode eigrp 100 md5
18r2(config-if)#ip authentication key-chain eigrp 100 ccnakey2
19r2(config-if)#end
20r2#
配置完成后,r1和r2邻居关系将重新建立,并且能够交互信息。大家可以将两边的密钥密码配置的不相同,看看它们可不可以交互信息。
* eigrp性能调整
默认情况下eigrp使用接口50%的带宽来传递eigrp信息,可以使用下面的命令来更改eigrp默认的接口带宽占用率:
1/*将r1的s0/0接口的eigrp带宽占用率调整成5%*/
2r1(config)#int s 0/0
3r1(config-if)#ip bandwidth-percent eigrp 100 5

隧道二极管的伏安特性及其参数
Rambus推出时钟达8GHz的XDR2内存
Apple Silicon芯片最快2026年改用台积电2nm工艺
买不起iPhone8?iPhone7sPlus配置大升级,却还是熟悉的配方
PLC与变频器连接的三种方式
eigrp协议详解
踏歌智行应邀出席2023国际汽车电子与软件大会·滴水湖峰会
未来出行最重要的不一定是无人驾驶
5G芯片和5G模组有哪些已经问世
漏电保护开关原理
电子产品-ESD设计分析-一
安捷伦Agilent N5225B网络分析仪
基于Ayar Labs光学I/O方案的新型传感平台在国防应用
VR公司发明了“flick”新时间单位可能会用于视觉艺术中
华为nova4图赏
耳机玩出新花样 这款耳机竟能拿着玩还能串联
电机控制中电流采样原理解析
固态继电器方案的功能优势及应用
EL系列高密度可编程直流电子负载1200V电压范围
带你来剖析机器人的坐标系吧!