EIGRP协议采用Dual(弥散更新算法)来计算到达目标网络的最佳路径,EIGRP是一个距离矢量协议,也就是说EIGRP路由器的路由表完全是从其他的路由器学来的,但是EIGRP协议并不是一味的相信邻居发来的路由条目,而是会通过算法来进行计算,最终放进路由表中使用,既然EIGRP协议是距离矢量协议,那么EIGRP同样会受到水平分割的影响。

实验拓扑如下图

 

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

实验配置如下

Router#config
Router(config)#hostname r0
r0(config)#int lo 0
r0(config-if)#ip add 1.1.1.1 255.255.255.0
r0(config-if)#no shut
r0(config-if)#exit
r0(config)#int f0/0
r0(config-if)#ip add 12.1.1.2 255.255.255.0
r0(config-if)#no shut
r0(config-if)#exit
r0(config)#int f0/1
r0(config-if)#ip add 23.1.1.2 255.255.255.0
r0(config-if)#no shut
r0(config-if)#exit

 

Router(config)#hostname r1
r1(config)#int f0/1
r1(config-if)#ip add 12.1.1.1 255.255.255.0   
r1(config-if)#no shut
r1(config-if)#exit
r1(config)#int f0/0
r1(config-if)#ip add 172.16.1.1 255.255.255.0
r1(config-if)#no shut
r1(config-if)#exit
r1(config)#

 

Router(config)#hostname r2
r2(config)#int f0/0
r2(config-if)#ip add 23.1.1.1 255.255.255.0
r2(config-if)#no shut
r2(config)#int f0/1
r2(config-if)#ip add 172.16.2.1 255.255.255.0
r2(config-if)#no shut
r2(config-if)#exit

配置 PC 地址 测试直连通信

 

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

直连通信成功,现在我们在三台路由器之间跑 EIGRP 协议

 

Eigrp的水平分割 以及 no auto-summary 命令的含义 Eigrp的水平分割 以及 no auto-summary 命令的含义 Eigrp的水平分割 以及 no auto-summary 命令的含义

分别宣告三台路由器的直连路由

现在我们测试一下 此时 PC0能否和PC1进行通信?

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

我们发现PC0并不能和PC1进行通信,得到的回复信息是目标不可达,来自R1 那么这也就是说路由器R1上并没有去往 172.16.2.0 这个网段的路由,我们不是刚刚宣告EIGRP了吗?为什么没有条目呢?那我们先看一下 R1的路由表先

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

通过查看 R1的路由表,我们发现R1上并没有去往172.16.2.0网段的路由条目,所以当他接收到目标地址为172.16.2.0的数据包之后,则进行丢弃处理

那么我们再看一下 R0 的路由表是什么样子的

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

路由器R0的路由表也没有去往 172.16.1.0 和 172.16.2.0 的路由表

反而有一条去往 172.16.0.0 的路由,有两个下一跳地址 进行等价负载均衡

 

我们再查看一下路由器R2的路由表

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

我们发现R2上也没有去往  172.16.1.0  的路由表

 

那么这是怎么回事?

默认情况下 EIGRP协议开启了自动汇总,自动汇总会把路由条目自动的汇总成主类

通过观察路由器的路由表

我们发现,当时我们宣告的路由是 12.1.1.1 但是在路由表里就变成了 12.0.0.0 掩码是8位

也就是说在开启自动汇总的情况下 A类地址自动被汇总成8位掩码 B类地址被汇总成 16位掩码 C类地址被汇总成了 24位掩码

 

那么为什么在自动汇总开启的情况下路由条目被汇总成了主类,PC0就无法和PC1进行通信呢?

首先我们要了解水平分割的概念,说的通俗点 水平分割就是 我在一个接口学习到的路由条目,就不会再从这个接口把它发出去。

那好,我们看下路由器R1,会自动的把路由条目 172.16.1.0汇总成 172.16.0.0/16

              路由器R2  会自动的把路由条目 172.16.2.0汇总成 172.16.0.0/16

经过EIGRP路由器之间互相交换自己的路由表这个过程,路由器R1要把自己直连的172.16.0.0宣告出去,经过R0传递给R2 那么R2会接受到 172.16.0.0,此时R2也要把自己的172.16.0.0宣告出去,此时R2路由器就出现了水平分割。 也就是在R2的 f0/0 接口上学习到了一个 172.16.0.0 又要宣告出去一个172.16.0.0 ,所以就出现了水平分割,导致 R1 R2的路由表出现问题,导致 PC0和PC1无法进行正常通信。

解决方法

在EIGRP协议下使用命令 no auto-summary

既然R1 R2的路由表不完整,是因为自动汇总导致水平分割,那么我们就关闭自动汇总,在EIGRP的进程下使用命令

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

分别在三台路由器的 EIGRP 进程下敲入 no auto-summary

 

此时我们再继续观察三台路由器的路由表

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

此时 R1的路由表发生了很大变化,我们看到R1学到了 172.16.2.0 这个网段,下一跳为 12.1.1.2

 

再继续观察R0路由表

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

R0 也分别学到了 172.16.1.0 和 172.16.2.0

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

R2的路由表变得正常  此时我们让PC0和PC1通信一次

 

Eigrp的水平分割 以及 no auto-summary 命令的含义

可见通信成功

总结: 关闭自动汇总之后 eigrp 不会把路由条目汇总成主类,那么我们宣告的 172.16.1.0 /24 这个无类的路由条目就会出现在路由表中,我们还可以在路由表中看到 12.1.1.0/24 等等这些无类的路由条目

那么 no auto-summary 命令的意思 我们就解释完了