路由汇聚算法(路由汇聚算法以及)

2023-05-26 07:07:46

一、路由汇聚算法


先把两个网络地址转换成二进制,然后取完全相同的部分作为聚合路由的ip
如193:00010101 00000001 11000001 00000000
而194:00010101 00000001 11000010 00000000
完全相同的是00010101 00000001 110000XX XXXXXXXX
相同部分长度就是掩码长度
所以聚合后是21.1.192.0/22

这是最基本的算法,必须知道


二、路由汇聚算法以及


1.看的你问题,应该是想将172.18.130.0/24及192.168.80.0/22地址范围内的地址汇总到一个子网吧?172.18.130.0/24和192.168.80.0/22如果要汇总到一个网段的话,那应该是128.0.0.0/1,只有这样,这两个地址范围内的所有地址才能属于同一个网段,也就是说128.0.0.0/1实际上代表这样一个范围:128.0.0.0/8 - 255.255.255.255/32,不过从224.0.0.0开始的D类及E类地址实际上是不可以随意分配的。因此,将172.18.130.0/24及192.168.80.0/22的地址范围内的所有地址汇总到一个子网实际上是没有意义的,将IPv4所有的地址划分为两个网段实在是不可想象。

2.对于这个问题,先说下路由汇聚的概念:路由汇聚的含义是把一组路由汇聚为一个单个的路由广播,最终结果和最明显的好处是缩小网络上的路由表的尺寸。路由汇聚就是将多个前缀更大的路由汇聚成为一个前缀更小的路由以减小路由器处理路由的压力。汇聚分为支持VLSM和不支持VLSM两类。在老旧的路由协议比如RIP中,不支持VLSM的路由汇聚只能将多个路由汇聚成为主类路由,例如172.16.0.0/23和172.16.2.0/24只能汇聚成为172.16.0.0/16,而不能汇聚成为更有效率的172.16.0.0/22.所以在规划网络的时候一定要注意地址的划分,并不是任意地址范围的路由都可以随意汇聚为一个地址范围的路由。汇聚多网段的路由的时候一定要注意这些网段的路由其所属的主类路由。172.16.0.0的主类是B类地址,而192.168.0.0/24的主类路由是C类的,因此这样的汇总是没有意义的。因此,要进行路由汇聚的操作,需要满足一下几个条件:a.多个IP地址的最左边几位必须相同
b.路由选择协议必须根据32位的IP地址和最大为32位的前缀长度来做出路由选择决策
c.路由选择更新中必须包含32位的IP地址和前缀长度(子网掩码)

补充回答:所谓主类路由就是指一个IP地址段所属的IP分类,比如10.0.0.0/8的主类路由是A类,172.16.0.0/16的主路是B类,192.168.1.0/24的主类为C类,即看IP前缀的大小。另外,路由汇聚即路由汇总,说法不同罢了,本人说汇总更习惯些。对于RIPv1之类的路由协议,因为不支持CIDR及VLSM,他们的汇总只能汇总为主类路由,无视手工指定的汇总路由。至于172.18.130.0/24和192.168.80.0/22为什么会汇总成为128.0.0.0/1,其实就是看他们左边有几位相同,192及172用2进制表示分别是11000000和10101100,对比一下发现这两个数字只有第一位相同,所以汇总出来的就是10000000,即十进制的128,所以得到的汇总地址就是128.0.0.0/1,这个地址段的IP前缀为1,也是因为只有它们只有1位是相同的缘故。之所以说这样的汇总是无意义的,正是因为前缀为1的子网掩码是128.0.0.0,这样的子网掩码是无效的,它只能用来表示一个范围而不能实际使用。
建议你多看看路由汇总和CIDR的知识,其实CIDR和路由汇总是有区别的。这个例子其实事实上是CIDR而不是路由汇总了。CIDR和路由汇总之间的区别在于,路由汇总通常在分类网络边界内进行,而CIDR合并多个分类网络。


三、关于路由汇聚算法


IPv4的网络地址是四个字节,通常用点分十进制数字来表示:x.x.x.x。
因为每个字节可表示的数字范围是0~255,所以ip地址的范围就是:0.0.0.0到255.255.255.255.

可以把IP地址中的每一个数字转换为二进制:

172.18.129.0:10101100.00010010.10000 001.00000000
172.18.130.0:10101100.00010010.10000 010.00000000
172.18.132.0:10101100.00010010.10000 100.00000000
172.18.133.0:10101100.00010010.10000 101.00000000

可以注意到,我上面的那四组二进制数,从我故意用空格分开的位置处,前面的位置是完全相同的。
那么当我想从一堆ip地址中筛选出上面的四个地址,只要利用下面这个特殊的地址:
netmask: 11111111.11111111.11111 000.00000000
进行“按位与”运算,就可以很容易地过滤出来了。
这个netmask就是我们常说的“子网掩码”,通常可以表示为255.255.248.0.因为netmask的前面共有21个1(8+8+5),所以也可以写成172.18.128.0/21.