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

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

实验拓扑如下图

 

 

实验配置如下

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 协议

 

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

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

 

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

 

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

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

 

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

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

 

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

 

我们发现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

 

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

 

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

 

再继续观察R0路由表

 

R0 也分别学到了 172.16.1.0 和 172.16.2.0

 

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

 

可见通信成功

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

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

 

 

 

 

 

本文出自 “珠海刘硕的博客” 博客,转载请与作者联系!

你可能感兴趣的:(EIGRP,auto-summary)