1. EIGRP路由协议原理

  EIGRP ( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议,是思科公司开发的一个平衡混合型路由选择协议,属于思科公司私有的。它融合了距离向量和链路状态两种路由协议的优点,支持 IP、IPX、ApplleTalk 等多种网络层协议,收敛速度非常快。

2. EIGRP路由协议特点

EIGRP 是一个高效的路由协议,它有以下特征:
OSI层次:属于传输层协议,运行在ip层以上,基于IP协议号为88号,支持 IP、IPX、AppleTalk 等多种网络层协议
算法特征:EIGRP 使用 距离矢量算法DUAL来实现快速收敛,并确保没有路由环路,实现了很高的路由性能
运行范围:支持大型网络拓扑,运行在内部网络协议
有类无类:IGRP是有类,EIGRP是无类
最佳路径:管理距离为90/170,度量值采用度量混合(带宽,延迟,负载,可信度,MTU)

3. EIGRP部署方式一

方式一:network + 子网掩码(正掩码)

//开启EIGRP进程,并定义自治系统号
R1(config)#router eigrp 100  
 //关闭自动汇总,因为EIGRP默认是开启自动汇总的
R1(config-router)#no auto-summary
//通告R1所在网段
R1(config-router)#network 1.1.1.1 255.255.255.255
R1(config-router)#network 12.1.1.0 255.255.255.0
R1(config-router)#network 13.1.1.0 255.255.255.0

router eigrp 100命令说明:
  这条命令是开启EIGRP的自治系统号,我们可以把自治系统号理解为区域或者管理域的概念;同一个企业或者运营商的EIGRP路由器必须处在同一个AS内,否则邻居无法建立并且无法学到路由,运行 EIGRP 的整个网络 AS 号码必须一致,其范围为 1-65535 之间。

  关闭自动汇总可以携带掩码信息,EIGRP 协议在通告网段时,如果是主类网络(即标准 A、B、C 类的网络,或者说没有划分子网的网络),只需输入此网络地址;如果是子网的话,则最好在网络号后面写子网掩码或者反掩码,这样可以避免将所有的子网都加入 EIGRP 进程中。

4. EIGRP部署方式二

方式二:network + 反掩码(也叫通配符掩码,这种方式比较方便,重点掌握)

 router eigrp 100
 network 1.1.1.1 0.0.0.0
 network 12.1.1.0 0.0.0.255
 network 13.1.1.0 0.0.0.255
 no auto-summary

  在方式二种通告网络是使用的反掩码方式,而反掩码是用广播地址 (255.255.255.255)减去子网掩码所得到。如掩码地址是255.255.248.0,则反掩码地址是 0.0.7.255。在高级的 IOS 中也支持网络掩码的写法(注意:反掩码只是一种计算方式,跟ip地址中的掩码不是一个概念)。

关于反掩码和子网掩码的换算:
反掩码=255.255.255.255 - 子网掩码

反掩码是什么?(路由条目/网段的抓取工具,将XXX字段开头的路由都通告出去)
子网掩码:1表示网络位、0表示主机位

反掩码:1表示随意匹配,0表示严格匹配(反掩码没有网络位和主机位的概念)
比如:12.1.1.0 0.0.0.255,表示严格匹配12.1.1.0网段的ip地址,即该ip地址的前面24位严格匹配,必须为12.1.1,后面8位的可以随意,可以是1 - 254。

5. EIGRP部署实验要求

这里写图片描述
图1-EIGRP部署实验要求

  关于配置以太网口和环回接口配置ip地址就不再介绍了,这里直接配置R1,R2,R3三台设备运行EIGRP协议,通过方式二network + 反掩码的方式进行EIGRP配置。

R1配置如下:

R1(config)#router eigrp 100
R1(config-router)#no auto-summary
R1(config-router)#network 12.1.1.0 0.0.0.255
R1(config-router)#network 13.1.1.0 0.0.0.255
R1(config-router)#network 1.1.1.1 0.0.0.0
R1(config-router)#exit

router eigrp 100命令说明:
  进入EIGRP进程,并且定义此路由器所在自治系统号为100;自治系统指的是由一个管理机构统一控制之下的路由器和网络群组,例如不同的ISP处于不同的AS号,如中国电信的AS为4134,AS范围从1到65535.不同AS的路由器无法建立邻居关系!

no auto-summary命令说明:
  默认情况下,EIGRP开启自动汇总,通过此命令关闭自动汇总,关闭自动汇总就可以携带掩码信息

network命令说明:
  表示是通过network + 网段 + 反掩码的方式来通告R1设备所在网段


R2配置如下:

R2(config)#router eigrp 100
R2(config-router)#no auto-summary
R2(config-router)#network 12.1.1.0 0.0.0.255
R2(config-router)#network 23.1.1.0 0.0.0.255
R2(config-router)#network 2.2.2.2 0.0.0.0
R2(config-router)#exit



R3配置如下:

R3(config)#router eigrp 100
R3(config-router)#no auto-summary
R3(config-router)#network 13.1.1.0 0.0.0.255
R3(config-router)#network 23.1.1.0 0.0.0.255
R3(config-router)#network 3.3.3.3 0.0.0.0
R3(config-router)#exit



  配置完成后,等待R1,R2,R3三台设备建立起邻居关系,然后查看任意设备的路由表,这里以R1设备为例,信息如下:
这里写图片描述

6. EIGRP邻居关系

  EIGRP使用Hello包来建立与维护和邻居路由器之间的邻居关系,其实是维护了一张邻居表,这张表存储邻居的路由器信息,包括邻居路由器的IP地址等信息,可以帮助确定何时发生了需要传递到邻居路由器的拓扑改变。

  只有两个邻居启动通信时, EIGRP才通知所有的路由拓扑表,这时两个邻居通过update包相互通知整个路由表。学习到邻居的直接连接和已知路由之后,只传递路由表的改变部分。

  然后通过Ack包来实现可靠确认(UPDATE / REPLY / QUERY),也就是说,实现R1和R2邻居之间可靠通信。

这里写图片描述
图3-EIGRP邻居关系

7. EIGRP的表项

下面我们来看一下EIGRP的这三个表项:
邻居表用于存储邻居信息
show ip eigrp neighbors //该命令用于查看邻居表

拓扑表用于存储所有路由条目(无论优劣)
show ip eigrp topology (all-links) //该命令用于查看拓扑表,all-links表示把所有的路由信息全部显示出来,注意:是所有路由信息

路由表用于存储最佳路由条目(通过DUAL算法计算)
show ip route eigrp //该命令用于查看路由表,注意:是最佳的路由信息

8. EIGRP路由分组

  在 EIGRP 中,有五种类型的数据包,这里我们重点只关注hello,update,Ack这三种类型包:

Hello:以组播的方式定期发送,用于建立和维持邻居关系

update:当路由器收到某个邻居路由器的第一个 Hello 包时,以单播传送方式回送一个包含它所知道的路由信息的更新包。当路由信息发生变化时,以组播的方式发送只包含变化信息的更新包

Ack:以单播的方式传送,用来确认更新、查询、答复数据包。

9. hello分组

  R1#clear ip eigrp neighbors命令,一般用于如果设备之间没有建立邻居关系的话,可以通过该命令重置邻居关系,即把之前的邻居关系清除,再次建立邻居关系。

  hello分组是用于建立和维持邻居关系,每5 s周期发送,15 s 保持时间(hold time),如果带宽小于1.544M,则周期为60 s,保持时间为180 s;如果带宽大于或等于1.544M,则周期为5 s,保持时间为15 s。

通过show ip eigrp neighbors命令查看R1的邻居信息,具体信息如下:

这里写图片描述
图4-邻居表

以上各个字段的含义如下:

H: 表示与邻居建立会话的顺序,0表示第一个学到的邻居,1表示第二个学到的邻居
Address: 邻居路由器之间的接口地址
Interface: 本地路由到邻居路由器的接口
Hold: 认为邻居不存在或死亡所能等待的最大时间,(也就是本地路由和邻居路由的邻居关系每15秒检查一次),如果其中任何一个出现故障死亡,则 解除邻居关系。
Uptime: 从邻居关系建立到目前的时间
SRTT: 是向邻居路由器发送一个数据包以及本路由器收到确认包的时间
RTO: 路由器在重新传输包之前等待 ACK 的时间
Q Cnt: 需要重新发送的数据报
Seq Num: 从邻居收到的发送数据包的序列号

  注意:运行 EIGRP 路由协议的路由器不能建立邻居关系的可能原因有以下几点:EIGRP 进程的 AS 号码不同或者计算度量值的 K 值不同。

hello数据报格式:

这里写图片描述
图5-hello分组格式

10. UPDATE分组

UPDATE分组用于承载和传递路由条目,触发/增量/组播/可靠。

这里写图片描述
图6-R1设备拓扑表

拓扑表中存放着所有路由信息,以上输出可以清楚地看到每条路由条目的 FD 和 RD 的值。而拓扑结构数据库中状态代码最常见的是“P”,“A”和“s”,含义如下:

P: 代表 passive,表示网络处于收敛的稳定状态
A: 代表 active,当前网络不可用,正处于发送查询状态
s:在 3 分钟内,如果被查询的路由没有收到回应,查询的路由就被置为“stuck in active”状态

可行距离(FD):到达一个目的网络的最小度量值
通告距离(RD):邻居路由器所通告的它自己到达目的网络的最小的度量值
可行性条件(FC):是 EIGRP 路由器更新路由表和拓扑表的依据。可行性条件可以有效
地阻止路由环路,实现路由的快速收敛。可行性条件的公式为: AD < FD。

update数据报格式:

这里写图片描述
图7-update分组格式

11. Ack分组

Ack分组用于实现可靠确认,对于UPDATE , REPLY, QUERY包都要确认。

这里写图片描述
图8-Ack分组格式

12. 路由汇总

  默认的时候 EIGRP 的自动汇总是开启的,自动汇总只对本地产生的 EIGRP 路由汇总,可以通过“ no auto-summary”命令关闭自动汇总,然后进行手工汇总。

EIGRP路由汇总配置和排错命令:

EIGRP路由汇总配置和排错命令:
interface FastEthernet0/0
//表示在f0/0和f0/1口进行路由汇总
int range f0/0 , f0/1
ip summary-address eigrp 100 192.168.0.0 255.255.252.0
Show run int f0/0  //查看接口配置



选择R3设备上创建一个loopback 2环回接口,配置4个ip地址:

R3(config)#int loopback 2
R3(config-if)#ip address 172.16.0.1 255.255.255.0
R3(config-if)#ip address 172.16.1.1 255.255.255.0 secondary
R3(config-if)#ip address 172.16.2.1 255.255.255.0 secondary
R3(config-if)#ip address 172.16.3.1 255.255.255.0 secondary
R3(config-if)#exit
//然后通告172.16.0.0主类网络
R3(config-router)#network 172.16.0.0 0.0.255.255



查看R1设备上的路由信息:
这里写图片描述



在R3设备上的f0/0接口和f0/1接口上进行路由汇总,具体配置如下:

R3(config)#int f0/0
R3(config-if)#ip summary-address eigrp 100 172.16.0.0 255.255.252.0
R3(config-if)#exit
R3(config)#int f0/1
R3(config-if)#ip summary-address eigrp 100 172.16.0.0 255.255.252.0
R3(config-if)#exit



查看R1设备上汇总后的路由信息:
这里写图片描述

再查看R3设备上的路由信息:
这里写图片描述
上面的 NULL 路由是 EIGRP 汇总时自动生成的, 是用于解决不精确汇总可能引发的路由环路。

13. NULL 0路由

  1.NULL0路由是用于解决路由环路

  2 NULL 0路由优先级高于默认路由,所以数据会转发给NULL 0路由,这样可以有效防止数据转发出去,并将数据抑制在本地,解决了路由环路的问题。

  3.网络子网有时候是不完整的,但是还是会将汇总路由告知邻居,若网络拓扑情况有数据包经过“缺失子网”时,则有可能造成路由环路。也就是说如果某个路由发送数据报的ip地址正好属于缺失的子网范围,那么该数据报查找不到对应的路由信息就会查找默认路由,而如果走默认路由的话,那么将会引起路由环路的问题。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐