CCNA图文-15-EIGRP协议详解

  • A+
所属分类:网络运维
摘要

文章主要介绍EIGRP的特性、分组类型、表的种类、度量值的计算以及EIGRP非等值负载均衡、路由汇总等配置。

文章目录

1.EIGRP特性与基本配置

EIGRP(Enhanced Interior Gateway Routing Protocol,增强型内部网关路由协议),是思科私有的,高级距离矢量、无类的路由选择协议。

a.EIGRP特性

复合度量值:使用带宽(bandwidth)、负载(load)、延时(delay)、可靠性(reliability),默认只使用带宽和延时做为度量值计算的参数;
快速收敛:使用DUAL算法,通过在拓扑表中保存可行性后继,相当于次优路由,当可用路由消失后,次优路由马上进入路由表;
100%无环路:主要受益于DUAL算法;
配置简单;
可靠的更新:采用RTP(可靠传输协议),并为每个邻居保存一个重传列表;
建立邻居关系:运行EIGRP的路由器中有三张表,路由表、邻居表、拓扑表;
支持多种网络协议;
支持VLSM和CIDR;
支持手动汇总,能关闭自动汇总;
使用组播地址224.0.0.10发送更新;
支持等价和非等价负载均衡;
兼容IGRP;
增量式更新:仅发送变化的路由信息;
路由标记功能:从IGRP何任何外部源收到的更新都标记成EX(外部);

b.EIGRP包格式

EIGRP被设计成一个传输层协议,协议号是88,EIGRP使用RTP(Reliable Transport Protocol,可靠传输协议)传送和接收EIGRP分组

EIGRP的包格式如下图(图1):

CCNA图文-15-EIGRP协议详解

数据链路层头部:每个组播IP都有一个对应的MAC地址,组播厂商编码为"01-00-5E",后面的编号根据不同的组播IP计算得来,224.0.0.10对应的MAC地址是"01-00-5E-00-00-0A"。

c.EIGRP分组类型

EIGRP使用5种分组类型,分别是:Hello分组,ACK(确认)分组,Update(更新)分组,Query(查询)分组以及Reply(回复)分组,下面首先介绍Hello分组。

Hello分组用来发现、验证和重新发现邻居路由器。默认的Hello分组发送间隔,除小于等于1.544Mb/s的多点帧中继链路是60秒外,其他链路都是5秒。使用组播地址224.0.0.10发送,在邻居表中包含一个"保持时间"字段,记录了最后收到hello分组的时间,如果在保持时间到期前没有收到邻居路由器的任何Hello分组,就认为这个邻居出现了故障,默认的保持时间是Hello时间的3倍,即15秒。EIGRP仅在宣告进EIGRP进程的接口的主IP地址上发送分组。

d.EIGRP基本配置

下面使用一个实例演示EIGRP基本配置以及Hello分组的参数设置。

实验拓扑如下图(图2)所示,R1和R2使用串行线路和以太网线路相连,在R1上有两个回环接口其中除Lo1(3.3.3.3)外,R1和R2的其他接口都宣告进EIGRP进程,自制系统号100(AS=100)。

CCNA图文-15-EIGRP协议详解

注:本文[1][2][3]三节都使用上图(图2)来介绍EIGRP配置。

R1配置:

R2配置:

e.查看和修改Hello分组发送间隔

使用下面的命令查看Hello分组默认发送间隔:

尝试修改Hello分组发送间隔:

在EIGRP中,邻居的建立不需要有相同的hello时间和保持时间,而OSPF中必须要有相同的Hello时间和保持时间,否则邻居关系建立将不会成功。

除Hello分组外,下面是其他四种分组的简单介绍;

ACK(确认)分组:

路由器在交换期间,使用确认分组来确认收到了EIGRP分组,确认分组单播发送。

Update(更新)分组:

更新分组是可靠传送的,需要被确认,当路由发现新邻居或检测到网络拓扑发生变化时,使用更新分组。

Query(查询)分组:

当EIGRP路由器需要从一个或所有邻居那里得到指定信息时,使用查询分组。查询分组也是可靠传送的,需要被确认。

Reply(回复)分组:

对邻居的查询信息进行单播回复,可靠传送,需要被确认。

下图(图三)是EIGRP分组对照表:

CCNA图文-15-EIGRP协议详解

2.EIGRP表

EIGRP中有三张表:邻居表、路由表、拓扑表;下面依次介绍它们。

a.邻居表(Neighbor Table)

在EIGRP中,两台相邻路由器要建立起邻接关系需要满足两个条件:

1)具有相同的AS号;
2)具有相匹配的K值;

可以通过下面的命令来查看EIGRP默认的K值:

如果想修改K值可以使用下面的命令格式:

"metric weights tos k1 k2 k3 k4 k5"
其中tos被用作服务质量区分服务等级,暂时用不到,0为不启用,1为启用。

下图是EIGRP建立邻接关系的过程:

CCNA图文-15-EIGRP协议详解

可以使用下面的命令查看EIGRP邻居表:

b.路由表(Routing Table)

显示R1的路由表,看看EIGRP路由与普通路由的区别:

下面这个例子解释了,为什么EIGRP要在本地产生一条去往空接口的汇总路由:

CCNA图文-15-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将数据发往了空接口,即丢弃。有效的避免了路由环路的形成。

c.拓扑表(Topology Table)

EIGRP拓扑表详细说明如下:

3.度量值的计算

EIGRP使用复合度量值计算到目的地址最佳路径,复合度量值是带宽、延时、可靠性和负载的组合。在K1、K2、K3、K4、K5都不为0的前提下,复合度量值的计算公式:

K1影响的是带宽(Bandwidth),K2影响的是负载(Load),K3影响的是延时(Delay),K4和K5影响的是可靠性(Reliability)。

默认情况下Cisco路由器只使用K1和K3来进行复合度量值的计算,所以公式可以简化成:

下面举个例子,计算一下R1到R2的lo0接口的复合度量值;注意,R1到R2的lo0接口的度量值,要使用R1去往R2 Lo0方向的出接口的带宽和延时作为参数来计算

根据公式"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
(6476+2500)*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看看结果是否相同:

上面的输出中报告距离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接口的度量值,可以使用下面的方法来验证:

可以通过下面的命令来查看某条路由的明细拓扑数据:

4.EIGRP高级配置

介绍EIGRP高级配置前,先介绍一下DUAL算法的相关术语:

Successor(后继):后继就是到目标网络花费最少的路由。
FD(Feasible Distance,可行距离):到目标网络的最小度量值。
RD(Reported Distance,报告距离)又称AD(Advertised Distance,通告距离):下一跳路由器通告的到相同目标网络的距离。
FS(Feasible Successor,可行后继):可行后继就是次优路径。
FC(Feasibility Condition,可行条件):可行条件是报告距离必须小于可行距离,也就是邻路由到目标网络的距离必须小于本路由到目标网络的距离。

能出现在"show ip eigrp topology"中的非可行距离路径,都满足可行条件,都是可行后继。

下面这个例子中列出的拓扑表很好的解释了上面这些概念:

a.非等值负载均衡

用下面这个实例来讲解EIGRP非等值负载均衡的配置:

CCNA图文-15-EIGRP协议详解

R1配置:

R2配置:

R3配置:

配置完成后查看R1路由表:

实际上去往23.0.0.0/8的路径还有一条可行后继,即通过R1,可以通过查看R1上针对23.0.0.0/8的拓扑数据库看到另外一条可行后继:

可以使用下面的方法让去往23.0.0.0/8的数据能够很好的被分配到两条线路上;

我们使用上面拓扑数据中最大的可行后继的度量值(本例只有一个可行后继度量值是2681856)除以后继路径的度量值(2172416),取比结果大的整数;

2681856/2172416≈1.234 , 所以取2作为不等价因子来配置非等值负载均衡:

这里用到的不等价因子2,代表度量值小于"可行距离*2"且报告距离小于可行距离的路径都可以进入路由表,使用下面的命令来验证这一点:

b.手动汇总

EIGRP和RIP一样,默认在主类网络的边界自动汇总,我们来看下面这个实例:

CCNA图文-15-EIGRP协议详解

R1配置:

R2配置:

配置完成后分别查看R1和R2的路由表:

关于上面的R2的路由表中“12.0.0.0/8 is a summary, 00:02:59, Null0”这条汇总条目是没有必要的,因为是R2向自己的回环接口发送EIGEP分组的时候产生的汇总路由,可以使用下面的命令将回环接口设置成被动接口,即不发送分组,来减小路由表大小:

接下来,关闭EIGRP的自动汇总,使用手动汇总:

c.外部路由

接着上面的实验,在R1上新增一个Loopback1,IP地址设置成1.1.1.1/24 :

这个时候在R2上查看路由表,看不到R1的回环接口lo1的条目,这是因为R1配置的时候,并没有使用net 0.0.0.0宣告全部的接口,现在使用路由重发布技术,将R1的lo1接口发布进EIGRP,R1配置如下:

d.重发布默认路由

可以使用相同的方法重发布一条外部默认路由,在R1上配置一条默认路由,然后再将这条默认路由使用静态路由的形式重发布到EIGRP进程里:

e.验证

EIGRP配置验证的模式和RIPv2协议一样,在全局配置模式下创建密钥链,在接口中调用密钥链并且制定验证模式,接着上面的实验,在R1和R2之间,使用MD5验证:

配置完成后,R1和R2邻居关系将重新建立,并且能够交换EIGRP信息;大家可以尝试将两边的密钥密码配置的不相同,看看它们可不可以交换EIGRP信息。

f.性能调整

默认情况下EIGRP使用接口50%的带宽来传递EIGRP信息,可以使用下面的命令来更改EIGRP默认的接口带宽占用率:

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: