路由聚合原理和举例

前言:最近在学习网络子网划分,学到路由聚合发现有点小问题,顺便把各大博主的题目整合学习一下。

路由汇聚:
是把一组路由汇聚为一个单个的路由广播。路由汇聚的最终结果和最明显的好处是缩小网络上的路由表的尺寸。

算法原理:

1)将各子网地址的网段以二进制写出。(写出不同字节即可)

2)比较,从第1位比特开始进行比较,找到第一个不相同的比特数,保留前面相同位数,然后将相同比特后面的数(到末尾)填充为0。由此得到的地址为汇总后的网段的网络地址,其网络位为连续的相同的比特的位数。

废话不多说,直接上题,通过几个题目深入理解路由聚合概念

有如下的4个/24地址块,试进行最大可能的聚合。

  212.56.132.0 /24
  212.56.133.0 /24
  212.56.134.0 /24
  212.56.135.0 /24

解析:将上面四个地址块进行二进制转换
212.56.10000100.0 /24
212.56.10000101.0 /24
212.56.10000110.0 /24
212.56.10000111.0 /24
相同的前缀有22位,保留相同位数,将相同比特后面的数(到末尾)填充为0
所以很容易得出聚合后的地址块为:212.56.132.0/22

再看看这道题呢

202.113.79.128/27  
202.113.79.160/27  
202.113.79.192/27  ,聚合后可用地址数是多少?

解析: 正常计算,先进性进制转换得到如下
202.113.79.1000 0000 /27
202.113.79.1010 0000 /27
202.113.79.1100 0000 /27
如果按照上面一题的解答这里很快就可以得到结论可以聚合,然后得到的结果是202.113.79.128/25。可用地址数(即主机数)为 27-2=126.
看似没有问题,但实际上“暗藏杀机”!!
注意:上解错误

在解决这题之前再看跟这条很类似的题目

202.113.79.1000 0000  /27
202.113.79.1010 0000  /27
202.113.79.1100 0000  /27
202.113.79.1110 0000  /27 请思考一下这个路由聚合之后是多少呢?

这条路由聚合之后才是上解的答案202.113.79.128/25

我在看到这里确实是一阵懵逼,经过大量查阅资料得出结论,下面我来总结一下。

先给出上面题目的正解,好好体会

202.113.79.128/27  
202.113.79.160/27  
202.113.79.192/27  ,聚合后可用地址数是多少?

这三个不能一起聚合,但是前两个可以聚合。
前两个聚合为202.113.79.10 0 0000 /26 也就是 202.113.79.128 /26 它的可用地址数为 26-2=62.
202.113.79.192/27的地址数为25-2=30. 再把上面的地址加上,正确答案就是92
解析:

202.113.79.128/27 
202.113.79.160/27 
202.113.79.192/26 ,聚合后可用地址数是多少?

他们三个能聚合了,因为202.113.79.1000 0000/27 (192) 里包含了160和128
202.113.79.1000 0000/27
202.113.79.1100 0000/27
202.113.79.1110 0000/26
因为这里并没有官方正解,所以只能在理解的基础上记住正确的写法即可,不必过于纠结。

### CIDR(无类域间路由)概念概述 CIDR(Classless Inter-Domain Routing,无类别域间路由)是一种用于IP地址分配路由的技术,它突破了传统基于类别的IP地址划分方式,允许更灵活地聚合网络地址[^1]。传统的有类寻址系统将IP地址分为A、B、C三类,每类都有固定的网络主机位,这种设计在实际应用中导致了大量的浪费路由表的膨胀。CIDR通过引入可变长子网掩码(VLSM)技术,使得IP地址可以按需分配,并且能够将多个连续的IP地址块合并为一个更大的超网,从而减少了路由表中的条目数量[^3]。 ### CIDR 的表现形式与作用 CIDR的表现格式通常是一个IP地址后跟一个斜杠一个数字,如`192.168.1.0/24`,其中斜杠后的数字表示该地址中前缀部分的位数。例如,在`192.168.1.0/24`中,前24位是网络部分,剩下的8位用于主机部分。这种表示方法不仅简化了IP地址的管理,而且提高了路由器的效率,因为它允许更细粒度的地址分配更高效的路由聚合。 CIDR的主要作用包括: - **路由聚合**:将多个较小的网络汇聚成一个较大的超网,以减少互联网主干上的路由条目数量。 - **提高地址利用率**:通过灵活分配不同大小的地址块来适应不同的网络需求,避免地址浪费。 - **增强路由性能**:由于减少了需要处理的路由信息量,因此有助于提升整个网络的转发速度稳定性[^3]。 ### 示例说明 #### 示例一:基本的CIDR计算 假设有一个CIDR地址块`192.168.0.0/26`,这意味着使用了26位作为网络标识符,剩下6位留给主机使用。根据这个配置,我们可以确定以下几点: - 子网掩码为`255.255.255.192`(即二进制形式下的`11111111.11111111.11111111.11000000`)。 - 总共有的IP地址数目为$2^{(32 - 26)} = 64$个。 - 可用的主机地址数目为总地址数减去网络地址广播地址,即62个。 - 网络地址为`192.168.0.0`。 - 广播地址为最后一个可用地址,这里是`192.168.0.63`。 ```python def calculate_cidr(ip_cidr): from ipaddress import ip_network network = ip_network(ip_cidr, strict=False) return { 'network_address': str(network.network_address), 'broadcast_address': str(network.broadcast_address), 'total_ips': network.num_addresses, 'host_ips': list(network.hosts()) } result = calculate_cidr('192.168.0.0/26') print(f"Network Address: {result['network_address']}") print(f"Broadcast Address: {result['broadcast_address']}") print(f"Total IPs: {result['total_ips']}") print(f"Usable Host IPs: {[str(ip) for ip in result['host_ips']]}\n") ``` #### 示例二:CIDR聚合 考虑两个连续的/27子网:`192.168.1.0/27` `192.168.1.32/27`。这两个子网各自包含32个地址。通过CIDR聚合,它们可以被合并为一个/26的子网`192.168.1.0/26`,这样就包含了从`192.168.1.0`到`192.168.1.63`的所有地址,总共64个地址。这样的操作减少了需要单独通告的路由数量,提升了整体网络效率[^1]。 ---
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值