EIGRP(Enhanced Interior Gateway Routing Protocol,增强型内部网关路由协议),是思科私有的,高级距离矢量、无类的路由选择协议。
复合度量值:使用带宽(bandwidth)、负载(load)、延时(delay)、可靠性(reliability),默认只使用带宽和延时做为度量值计算的参数。
快速收敛:使用DUAL算法,通过在拓扑表中保存可行性后继,相当于次优路由,当可用路由消失后,次优路由马上进入路由表。
100%无环路:主要受益于DUAL算法。
配置简单。
可靠的更新:采用RTP(可靠传输协议),并为每个邻居保存一个重传列表。
建立邻居关系:运行EIGRP的路由器中有三张表,路由表、邻居表、拓扑表。
支持多种网络协议。
支持VLSM和CIDR。
支持手动汇总,能关闭自动汇总。
使用组播地址224.0.0.10发送更新。
支持等价和非等价负载均衡。
兼容IGRP。
增量式更新:仅发送变化的路由信息。
路由标记功能:从IGRP何任何外部源收到的更新都标记成EX(外部)。
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”。
图中,R1,R2,R3系统号100(AS=100)。
R1(config)#interface s1/0 R1(config-if)#ip address 12.1.1.1255.255.255.0 R1(config-if)#no shutdown R1(config-if)#int loopback 0 R1(config-if)#ip address 1.1.1.1 255.255.255.0 R1(config-if)#no shutdown R1(config)#router eigrp 100/*EIGRP需要配置AS号*/ R1(config)#no auto-summary R1(config-router)#network 1.1.1.00.0.0.255 R1(config-router)#network 12.1.1.00.0.0.255 /*宣告接口使用的是反掩码形式*/ /* * router eigrp 100 * EIGRP进程需要配置AS号(自制系统号),这里的100就是AS号, * AS标识了属于一个互连网络中的所有路由器, * 同一个AS内的不同路由如果想要互相学习路由信息,必须配置相同的AS号。 * * net 12.1.1.0 0.0.0.255 * 在EIGRP中宣告接口需要使用反掩码,如果不输入反掩码, * 路由默认会使用接口的主类网络号, * "net 12.1.1.0" 等价于 "net 12.0.0.0 0.255.255.255" * * 如果路由的所有接口都宣告进EIGRP进程,则可以使用"net 0.0.0.0"一次性宣告所有接口。 * */ R2(config)#interface s1/0 R2(config-if)#ip address 12.1.1.2 255.255.255.0 R2(config-if)#no shutdown R2(config-if)#int s1/1 R2(config-if)#ip address 13.1.1.1 255.255.255.0 R2(config-if)#no shutdown R2(config)#interface loopback 0 R2(config-if)#ip address 2.2.2.2255.255.255.0 R2(config-if)#no shutdown R2(config)#router eigrp 100 R2(config)#no auto-summary R2(config-router)#network 2.2.2.00.0.0.255 R2(config-router)#network 12.1.1.00.0.0.255 R2(config-router)#network 13.1.1.00.0.0.255 R3(config)#interface s1/1 R3(config-if)#ip address 13.1.1.2 255.255.255.0 R3(config-if)#no shutdown R3(config-if)#int loopback 0 R3(config-if)#ip address 3.3.3.3 255.255.255.0 R3(config-if)#no shutdown R3(config)#router eigrp 100 R3(config)#no auto-summary R3(config-router)#network 13.1.1.00.0.0.255 R3(config-router)#network 3.3.3.00.0.0.255
EIGRP使用5种分组类型:
1,Hello分组
Hello分组用来发现、验证和重新发现邻居路由器。默认的Hello分组发送间隔,除小于等于1.544Mb/s的多点帧中继链路是60秒外,其他链路都是5秒。使用组播地址224.0.0.10发送,在邻居表中包含一个“保持时间”字段,记录了最后收到hello分组的时间,如果在保持时间到期前没有收到邻居路由器的任何Hello分组,就认为这个邻居出现了故障,默认的保持时间是Hello时间的3倍,即15秒。EIGRP仅在宣告进EIGRP进程的接口的主IP地址上发送分组。
配置完成后使用下面的命令查看Hello分组默认发送间隔:
R1#show ip eigrp interfaces detail s1/0 IP-EIGRP interfaces for process 100 Xmit Queue Mean Pacing Time Multicast Pending Interface Peers Un/Reliable SRTT Un/Reliable Flow Timer Routes Se1/0 1 0/0 61 0/15 259 0 Hello interval is 5 sec //HELLO间隔 Next xmit serial <none> Un/reliable mcasts: 0/0 Un/reliable ucasts: 2/6 Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 1 Retransmissions sent: 2 Out-of-sequence rcvd: 0 Authentication mode is not set
可以使用下面的命令修改Hello分组发送间隔:
R1(config)#interface s1/0 _________________________ 将hello的发送时间改成30秒 R1(config-if)#ip hello-interval eigrp 100 30 ------------------------------- /*再次查看,发现hello时间变成30秒了*/ R1#show ip eigrp interfaces detail s1/0 ............ Hello interval is 30 sec //确实被改成30秒了 ................ /*这样修改后,会遇到一个问题,因为默认的EIGRP保持时间是15秒,而R1发给R2的hello间隔却被修改成了30秒,我们将看到路由上面反复的出现邻居关系down掉后又建立的消息,*/ *Mar 1 00:20:52.179: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial1/0) is down: Interface Goodbye received R1(config-if)# *Mar 1 00:20:57.079: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial1/0) is up: new adjacency R1(config-if)# *Mar 1 00:21:21.771: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial1/0) is down: Interface Goodbye received R1(config-if)# *Mar 1 00:21:26.559: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial1/0) is up: new adjacency /*解决的办法是修改保持时间大于hello时间,一般修改成hello时间的3倍(90秒)*/ R1(config-if)#ip hold-time eigrp 100 90 -------------------------------------------- /*修改后在R2上查看EIGRP邻居表,可以看到R1发送过来的保持时间有是从90秒开始倒计时了*/ R2#show ip eigrp neighbors IP-EIGRP neighbors for process 100 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 12.1.1.1 Se1/0 84 00:00:58 96 576 0 16
在EIGRP中,邻居的建立不需要有相同的hello时间和保持时间,而OSPF中必须要有相同的Hello时间和保持时间,否则邻居关系建立将不会成功。
2,ACK(确认)分组
路由器在交换期间,使用确认分组来确认收到了EIGRP分组,确认分组单播发送。
3,Update(更新)分组
更新分组是可靠传送的,需要被确认,当路由发现新邻居或检测到网络拓扑发生变化时,使用更新分组。
4,Query(查询)分组
当EIGRP路由器需要从一个或所有邻居那里得到指定信息时,使用查询分组。查询分组也是可靠传送的,需要被确认。
5,Reply(回复)分组
对邻居的查询信息进行单播回复,可靠传送,需要被确认。
EIGRP中有三张表:邻居表、路由表、拓扑表。
两台相邻路由器要建立起邻接关系需要满足两个条件:
具有相同的AS号
具有相匹配的K值
password一致
MTU一致
可以通过下面的命令来查看EIGRP默认的K值:
R2#show ip protocols Routing Protocol is "eigrp 100" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Default networks flagged in outgoing updates Default networks accepted from incoming updates EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0 EIGRP maximum hopcount 100 EIGRP maximum metric variance 1 Redistributing: eigrp 100 EIGRP NSF-aware route hold timer is 240s Automatic network summarization is not in effect Maximum path: 4 Routing for Networks: /*本路由运行了EIGRP的接口*/ 2.2.2.0/24 12.1.1.0/24 13.1.1.0/24 Routing Information Sources: /*从哪些源接收到了更新*/ Gateway Distance Last Update 12.1.1.1 90 00:04:38 13.1.1.2 90 00:04:38 Distance: internal 90 external 170 /*内部管理距离和外部管理距离*/ /* * 从输出可以看到自制系统号AS=100。 * * Maximum path: 4 代表最大允许4条线路的负载均衡, * 可以使用R1(config-router)#maximum-paths 16来修改成16条,或者其他数值 * * 可以看到上面的输出中有这么一行: * EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0 * 其中K1代表带宽,K2代表负载,K3代表延时,K4和K5代表可靠性, * 默认EIGRP只使用了带宽和负载作为度量值计算参数。 * */
可以使用下面的命令来修改K值:
“metric weights tos k1 k2 k3 k4 k5″
其中tos被用作服务质量区分服务等级,这里暂时用不到,0为不启用,1为启用。
/*修改EIGRP K值,只使用带宽作为度量值计算参数*/ R2(config-router)#metric weights 0 1 0 0 0 0 *********************************************** 我们发现报错了 /*接着就发现与邻居的邻接关系down掉了*/ R2(config-router)# *Mar 1 00:32:17.511: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.1 (Serial1/0) is down: metric changed *Mar 1 00:32:17.515: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 13.1.1.2 (Serial1/1) is down: metric changed *Mar 1 00:32:18.443: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 13.1.1.2 (Serial1/1) is down: K-value mismatch /*重新将K值改成默认的带宽和延时有效的状态*/ R2(config-router)#metric weights 0 1 0 1 0 0
可以使用下面的命令查看邻居表:
R2#show ip eigrp neighbors IP-EIGRP neighbors for process 100 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 1 12.1.1.1 Se1/0 88 00:00:58 8 200 0 18 0 13.1.1.2 Se1/1 14 00:01:24 164 984 0 17 /* * “H”表示邻居被学到的先后顺序,0是最先学到的邻居。 * “Address”是邻居路由接口IP。 * “Interface”是本地路由和这个邻居相连的接口 * “Hold”是当前的保持时间,默认15秒,是一个递减的数值。 * “Uptime”是邻居进入邻居表到当前经过了多长时间。 */
使用下面的命令显示R1的路由表:
R1#show ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets C 1.1.1.0 is directly connected, Loopback0 2.0.0.0/24 is subnetted, 1 subnets D 2.2.2.0 [90/2297856] via 12.1.1.2, 00:03:56, Serial1/0 3.0.0.0/24 is subnetted, 1 subnets D 3.3.3.0 [90/2809856] via 12.1.1.2, 00:03:56, Serial1/0 12.0.0.0/24 is subnetted, 1 subnets C 12.1.1.0 is directly connected, Serial1/0 13.0.0.0/24 is subnetted, 1 subnets D 13.1.1.0 [90/2681856] via 12.1.1.2, 00:03:56, Serial1/0 /* * * 路由表中的"D 1.0.0.0/8 is a summary, 01:40:23, Null0", * 是一条自动 汇总产生的路由,EIGRP和RIP默认都在主网边界自动汇总, 2 * 这是一条通过EIGRP学习到的最终路由,D代表是通过EIGRP学习到的, * [90/156160]中的90是EIGRP默认的管理距离,后面是度量值。 * 从这条路由可以得知,去往 3.3.3.0/24网络的数据发往12.1.1.2
显示拓扑表:
R1#show ip eigrp topology IP-EIGRP Topology Table for AS(100)/ID(1.1.1.1) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 1.1.1.0/24, 1 successors, FD is 128256 via Connected, Loopback0 P 2.2.2.0/24, 1 successors, FD is 2297856 via 12.1.1.2 (2297856/128256), Serial1/0 P 3.3.3.0/24, 1 successors, FD is 2809856 via 12.1.1.2 (2809856/2297856), Serial1/0 P 12.1.1.0/24, 1 successors, FD is 2169856 via Connected, Serial1/0 P 13.1.1.0/24, 1 successors, FD is 2681856 via 12.1.1.2 (2681856/2169856), Serial1/0 /* * 路由状态: * P 表示被动路由(Passive),即路由是稳定可用的, * A 表示是活跃路由(Active),即路由正在使用DUAL重新计算中,不可用。 * * 网络目标: 2.2.2.0/24就是一个网络目标。 * * 后继(Successor):到达远程网络的主要路由,对任何特定的路由可以有多达4条后继路由。 * "2.2.3.0/24, 1 successors",代表去往2.2.2.0/24只有一条最佳路径。 * * 可行距离(FD,Feasible Distance): * 是下一跳路由的报告距离和本路由到下一跳路由的距离之和,(2297856/128256)中2297856是可行距离 * * 路由来源:是指最初发布这条路由的路由器标识(via 12.1.1.2), * 这个标识仅当路由是从其他EIGRP路由器学到时才填入。 4* * 报告距离(RD,Reported Distance): * 报告距离是邻路由报告的,到一个指定目标网络的距离, (2297856/128256)中128256是报告距离,也叫通告距离 * 接收端口如"Serial1/0",是本路由从哪个接口可以到达目的地。
带宽是链路上的最小带宽数
延迟是路由器的入接口的延时之和
EIGRP使用复合度量值计算到目的地址最佳路径,复合度量值是带宽、延时、可靠性和负载的组合。在K1、K2、K3、K4、K5都不
为0的前提下,复合度量值的计算公式:
1 |
Metric=[K1*Bandwidth+(K2*Bandwidth)/(256-Load)+K3*Delay]*[K5/(Reliability+K4)] |
K1影响的是带宽(Bandwidth),K2影响的是负载(Load),K3影响的是延时(Delay),K4可靠性(Reliability),K5影响最大传输单元(MTU)。
默认情况下Cisco路由器只使用K1和K3来进行复合度量值的计算,所以公式可以简化成:
Metric=(10000M/源和目的之间最低链路带宽+源和目的之间所有链路延时总和/10)*256 /* * 源和目的之间最低链路带宽,单位是M。 * 源和目的之间所有链路延时总和,单位是微秒(usec)。 * 至于这里为什么要用延时总和除以10, * 那是因为EIGRP度量值计算中是使用10微秒作为单位进行计算的。 */
下面举个例子,计算一下R1到R3的lo0接口的复合度量值。注意,R1到R3的lo0接口的度量值,要使用R1去往R3 Lo0接口方向的出接口的带宽和延时作为参数来计算:
/* * 查看R1的s 1/0接口参数 * 可以看到 BW带宽等于1.544M,延时为20000微秒。 */ R1#show interface s1/0 BW 1544 Kbit, DLY 20000 usec, R2#show interface s1/0 BW 1544 Kbit, DLY 20000 usec, R3#show interface s1/0 BW 1544 Kbit, DLY 20000 usec, 但是loopback就不一样了 R3#show interfaces loopback 0 MTU 1514 bytes, BW 8000000 Kbit, DLY 5000 usec, ***************************** 所以还是取最小的带宽数1544KBIT=1.544M ****************************************** 延迟之和是20000+20000 +5000=45000 ***************************************** 根据公式”Metric=(10000M/源和目的之间最低链路带宽+源和目的之间所有链路延时总和/10)*256″,如果从R1的s1/0去往R3 lo0,最低链路带宽是1.544,延时总和是R2的s1/0的延时+R3的s1/1接口延时+R3的 lo0的延时=20000+20000 +5000=45000,代入公式计算: (直接舍去小数位,且不四舍五入) (10000/1.544 +45000/10)*256=256*(6476+4500)=2809856
我们来看看在R1的使用show ip eigrp topology看看结果是否相同:
R1#show ip eigrp topology
IP-EIGRP Topology Table for AS(100)/ID(1.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 1.1.1.0/24, 1 successors, FD is 128256
via Connected, Loopback0
P 2.2.2.0/24, 1 successors, FD is 2297856
via 12.1.1.2 (2297856/128256), Serial1/0
P 3.3.3.0/24, 1 successors, FD is 2809856
via 12.1.1.2 (2809856/2297856), Serial1/0
P 12.1.1.0/24, 1 successors, FD is 2169856
via Connected, Serial1/0
P 13.1.1.0/24, 1 successors, FD is 2681856
via 12.1.1.2 (2681856/2169856), Serial1/0
很明显的结果
本文出自 “好好活着” 博客,转载请与作者联系!