关于有类和无类路由协议的汇总问题,以前做过的实验都不怎么透彻,具体的汇总过程也就懵懵懂懂了。今天看到一篇帖子,作者将理论和实际结合的很好,大概是我见过比较详细的讲解这个问题,实验一把绝对会在理解上上一个层次。就不废话了,进入主题(很长很经典)

Classful协议,翻译过来应该是有类协议,而不是主类协议。其特点是不发送子网mask,在主类网络边界路由器上自动进行汇总——如何汇总?——后面会详细说明。
基于这个特点,Classful协议,或者说有类协议(不是主类协议),一般应用于相同子网,且相同mask的网络。
下面来详细说明Classful协议如何进行汇总。
首先,要明确一个概念——主类边界路由器。如果某个
Router上配置了多个网段,其中某些网段的信息必须通过某一个特定的网段向其他outer进行通告,而这个特定的网段与其他网段分属不同的主类网络,那么这个router就是主类边界路由器。这个特定网段所在的接口,就是其他网段的出口接口。
Classful协议在主类边界路由器上自动汇总——如何汇总?——分以下几种情况:
1)对于相同主类网络的子网,如果mask与出口接口的mask相同,则把该子网通过外出接口发布出去;
2)对于相同主类网络的子网,如果mask与出口接口的mask不同,则把该子网丢弃;
3)对于不同主类网络的子网,无论mask与出口接口的mask是否相同,把该网段汇总成主类网络发布出去。

光说不练,假把势。玩个实验验证一下:
R1、R2和R3三台3620路由器,R1的s1/1与R2的s1/0相连,R2的s1/1与R3的s1/0相连,拓扑如下:
(R1)s1/0 —– s1/0(R2)s1/1 —– s1/0(R3)

R1上的IP配置如下:

s1/0:10.0.0.1/24
loopback0:10.0.1.1/24
loop1:10.0.2.1/25
loop2:11.0.0.1/24
loop3:11.0.1.1/25

R2上的配置如下:

s1/0:10.0.0.2/24
s1/1:172.16.0.2/24

R3上的配置如下:

s1/0:172.16.0.1/24

首先,在R1和R2上配置上述IP,并配置RIPv1协议:

R1(config)#router rip

R1(config-router)#net 10.0.0.0
R1(config-router)#net 11.0.0.0
R2(config)#router rip
R2(config-router)#net 10.0.0.0

然后,在R2上查看路由表,显示如下:

172.16.0.0/24 is subnetted, 1 subnets

C 172.16.0.0 is directly connected, Serial1/1

10.0.0.0/24 is subnetted, 2 subnets

C 10.0.0.0 is directly connected, Serial1/0

R 10.0.1.0 [120/1] via 10.0.0.1, 00 :00:16, Serial1/0

R 11.0.0.0/8 [120/1] via 10.0.0.1, 00: 00:16, Serial1/0

可以发现,R1上loop0的10.0.1.0/24已经通过10.0.0.1(也就是R1的s1/0)这个外出接口发布给R2了;而loop1的 10.0.2.0/25,由于mask是/25,与外出接口s1/1的/24不同,所以被丢弃,因此R2没有学习到R1上loop1的网段。
R1上loop2的11.0.0.0/24与loop3的11.0.1.0/25,由于与外出接口s1/0分属于不同的主类网络,所以无论是/24还是/25的mask,统统被汇总成了主类网络11.0.0.0/8发布给R2。
现在,从R2上试着ping R1的各个接口,只有10.0.2.1无法ping通,因为loop1的10.0.2.0/25被丢弃了。
接下来,配置R3的IP,并在R2和R3上继续配置RIPv1:

R2(config)#router rip
R2(config-router)#netw 172.16.0.0
R3(config)#router rip
R3(config-router)#netw 172.16.0.0

查看R3的路由表,显示如下:

172.16.0.0/24 is subnetted, 1 subnets

C 172.16.0.0 is directly connected, Serial1/0

R 10.0.0.0/8 [120/1] via 172.16.0.2, 00: 00:15, Serial1/0

R 11.0.0.0/8 [120/2] via 172.16.0.2, 00: 00:15, Serial1/0

现在,把目光重新再投向R2,回忆一下R2上应该有哪些路由信息?——对!10.0.0.0/24 10.0.1.0/24 11.0.0.0/8别忘了还有172.16.0.0/24
其中172.16.0.0/24是与R3直连的网段,R2须通过该网段把它知道的其他网段的路由信息发布给R3,所以172.16.0.0/24网段所在 的s1/1就是其他网段路由信息通往R3的外出接口。现在不难理解R3的路由表了吧?——R2上的10.0.0.0/24和10.0.1.0/24与外出接口s1/1分属不同主类网络,so它们被汇总成了10.0.0.0/8——so easy !
最后在R3上Ping R1的各个接口——一切似乎很正常——等等——ping 10.0.2.1时,显示的既不是!!!!!也不是…而是U.U.U
Why ?
这个问题不难,至少比华南虎是真是假这个问题简单多了。
如果你回答了这个问题,关于Classful的话题就可以暂告结束了,下面该琢磨琢磨Classless路由协议了。

———————————-o(∩_∩)o——————————

我的见解:因为当R1对外宣告的时候,loop1-10.0.2.0/25,由于mask是/25,与外出接口s1/1的/24不同,所以被丢弃,因此R2没有学习到R1上loop1的网段,同样R3也无法学习到,因此路由表中没有到达loop1的路径,U.U.U表示目的主机不可达。

 

其实有类无类协议的区别就在于是否支持VLSM(可变长子网mask)。有类的不发送mask,不支持VLSM,无类的反之。默认情况下无类协议和有类协议一样,在边界路由器上自动进行汇总(OSPF不在边界自动汇总);而无类协议可以关闭这个该死的自动汇总功能,改用手工方式进行汇总。
理论就是这么简单几句话,现在谁能告诉我,无类协议的好处是什么呢?还是继续玩个实验吧。
拓扑还是上面的拓扑,只是改一下IP信息

R1上的IP配置如下:
s1/0:172.16.1.1/24
loopback0:10.0.1.1/24
R2上的配置如下:
s1/0:172.16.1.2/24
s1/1:172.16.0.2/24
loopback0:10.0.3.1/24

R3上的IP配置如下:
s1/0:172.16.0.1/24
loopback0:10.0.2.1/24
然后在3台
Router上配置该死的RIPv1(IGRP已经被cisco枪毙了,RIPv1你什么时候光荣下岗?)
由于R1上loop0的10.0.1.0/24与外出接口s1/1的172.16.1.0/24分属不同主类网络,所以被自动汇总成10.0.0.0/8 发布给R2,而R3上loop0的10.0.2.0/24也同理被自动汇总成了10.0.0.0/8发给了R2,R2开骂了:“你大爷的,真假美猴王 啊?!~你们到底谁是10.0.0.0/8?”
这就是一个不连续的子网在有类协议中的尴尬,好在我们有无类协议,还等什么呢?赶紧把RIPv1升级成v2吧。
{
下面是广告时间,别走开,稍后更精彩
RIPv2,今天你升了没有?
}
乘着广告的间隙,大家都把RIP升级到了v2了吧?怎么样?感觉很爽吧?——被人欺骗的感觉一定很爽!此时的R2肯定和你们一样,从失望到希望,再从希望到绝望,瞧——它又抓狂了:“靠,有没有搞错?!~不是说升级到v2就可以支持VLSM了吗?我怎么还是无法区分这该死的不连续子网?借我借我一双慧眼吧……”
如果以为敲一个version 2命令就万事大吉,那就错咧~还记得我前面说的那段话了吗?(导播~回放一下)
“……默认情况下无类协议和有类协议一样,在边界路由器上自动进行汇总;而无类协议可以关闭这个该死的自动汇总功能,改用手工方式进行汇总。”
在每台
Router上RIPv2进程下发布no auto-summary的命令,just do it !
大功告成,收工!

详细过程见下面配置:

先shut掉R2的loop0,配置RIPv1时,R2路由表显示如下:

172.16.0.0/24 is subnetted, 2 subnets
C    172.16.0.0 is directly connected, Serial1/1
C    172.16.1.0 is directly connected, Serial1/0
R    10.0.0.0/8 [120/1] via 172.16.1.1,
00: 00:12, Serial1/0
[120/1] via 172.16.0.1,
00: 00:26, Serial1/1 //此时R2对左右两边“半信 半疑”

然后,激活R2的loop0,R2路由表如下:

172.16.0.0/24 is subnetted, 2 subnets
C    172.16.0.0 is directly connected, Serial1/1
C    172.16.1.0 is directly connected, Serial1/0
10.0.0.0/24 is subnetted, 1 subnets
C    10.0.3.0 is directly connected, Loopback0
//此时R2只“相信自己”

接着,把RIPv1升级到v2, R2路由表如下:

172.16.0.0/24 is subnetted, 2 subnets
C     172.16.0.0 is directly connected, Serial1/1
C     172.16.1.0 is directly connected, Serial1/0
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C     10.0.3.0/24 is directly connected, Loopback0
R     10.0.0.0/8 [120/1] via 172.16.1.1,
00: 00:02, Serial1/0
[120/1] via 172.16.0.1,
00: 00:02, Serial1/1 //此时R2“集思广益”

最后,no auto-summary, R2路由表如下:

172.16.0.0/24 is subnetted, 2 subnets
C    172.16.0.0 is directly connected, Serial1/1
C    172.16.1.0 is directly connected, Serial1/0
10.0.0.0/24 is subnetted, 3 subnets
R    10.0.2.0 [120/1] via 172.16.0.1,
00: 00:02, Serial1/1
C    10.0.3.0 is directly connected, Loopback0
R    10.0.1.0 [120/1] via 172.16.1.1,
00: 00:01, Serial1/0 //此时R2拨云见日

OK ,完成