1、变长子网掩码和路由聚合在网络中应用对于网络设计师而言,构造一个运行良好的网络要面临很多挑战。在一个大型的,层次的,可伸缩的网络中,一个精心规划的 IP 地址分配策略和适时的路由聚合是至关重要的。传统的网络建立在有类别地址的基础上(A ,B,C 类地址) 。早期的路由协议,如RIPv1,IGRP 出于节省带宽的考虑,在路由更新时不传送子网掩码信息,因此在网络信息传输时需要对子网掩码做一些假设。1.如果路由器接收端口配置的 IP 地址和路由更新中传送的子网信息有 相同的主类别网络,则该子网使用接收端口的掩码配置。2.如果传送的子网信息穿越不同主类别网络边界,则传送路由器自动在主类别网络边界执行路由
2、聚合,并只传送经过聚合的路由。图 1如图 1,网络中有三台路由器:A ,B,C,均运行 RIPv1 路由协议,RIPv1 是有类路由协议,路由更新中不传递子网掩码信息。B 的 S0 端口收到从 A 传送的子网信息 10.1.0.0(不包括子网掩码) ,由于 B 的 S0 端口在 10.2.0.0/16 子网和 10.1.0.0 有相同的主类别网络10.0.0.0,所以 B 的路由表中会添加一条 10.1.0.0/16 的记录使用的是 B 在 S0 端口的掩码/16。当 B 向 C 传递 10.1.0.0 子网的路由信息时,由于 B,C 之间为 172.16.1.0/24 子网,主类别网络为 1
3、72.16.0.0,不同于 10.1.0.0 的主类别网络 10.0.0.0,因此 B 在向 C 传送10.1.0.0 时会自动执行路由聚合到 10.0.0.0,C 在路由表中添加 10.1.0.0/16 子网的路由信息将是 10.0.0.0/8,使用的是主类别网络默认的掩码( A 类地址/8 位,B 类地址/16 位,C 类地址/24 位) 。图 2如图 2,路由器 B 的 S0 端口在 10.2.0.0/24 子网,即/24 位掩码,由于从 A 传递的 10.1.0.0子网要使用接收端口的掩码配置,因此也会使用/24 位掩码,从而产生了一条错误的路由记录,这将导致某些经过 B 去往 10.
4、1.0.0/16 的流量将无法到达。为了避免上述情况,必须约定,同主类别网络的子网必须使用相同的掩码。新约定又带来了新问题,即同主网络下地址无法有效的分配。图 3如图 3,假如某局域网上使用了 27 位的掩码,则每个子网可以支持 30 台主机(25-2=30);而对于 WAN 连接而言,每个连接只需要 2 个地址,理想的方案是使用 30 位掩码(22-2=2),然而同主类别网络相同掩码的约束,WAN 之间也必须使用 27 位掩码,这样就浪费 28 个地址。另外一个是不连续地址的问题。图 4如图 4,根据前述约定,路由在经过不同主网络边界时会自动聚合到主类别地址边界。A的 10.1.0.0/16
5、 子网经过 172.16.2.0/24 传递到 B,由于经过不同主类别地址,所以会自动聚合,实际传送的是 10.0.0.0;同理,C 的 10.2.0.0/16 子网经过 172.16.1.0/24 传递到 B,实际传送的是 10.0.0.0。这样,对于 B 而言,它收到两条去往 10.0.0.0 子网的路由记录,B 会添加两条到 10.0.0.0/8 路由记录到路由表,它们下一跳的地址不同,一条指向 A 的 S1,另一条指向 C 的 S0。由于有相同的跳数,所以会自动启用负载平衡,这样经过 B 访问 10.0.0.0的流量将无法区分是去往 10.1.0.0 的还是 10.2.0.0 的,它们
6、都有 50的机会命中,所以就会出现间歇性的网络访问故障。而对 10.1.0.0 和 10.2.0.0 而言,它们二者是不可见的。由于有不连续地址的问题,所以,规划网络地址时必须保证一个主网络的子网必须连续存在。上述问题随着变长子网掩码,路由聚合和无类域间路由以及无类路由协议(RIPv2,EIGRP,OSPF,IS-IS,BGPv4)等技术的引入而得到了良好的解决。变长子网掩码(VLSM) ,是指在一个层次结构的网络中,可以使用多个不同的掩码,也即可以对一个经过子网划分的网络再次划分。变长子网掩码的引入,有效解决了地址分配的浪费问题。如图 5,某个公司的区域网络分配了 172.16.12.0/2
7、2 的地址空间,公司的网络规划如下:在路由器 D 连接 3 个 VLAN,其中 2 个 VLAN 有不超过 200 台的主机,另外一个 VLAN 包括 3 个子网,每个子网主机数量不超过 30 台,路由器A,B,C 通过 FR 和 D 相连,保证每条 PVC 仅分配 2 个 IP 地址。所有路由器均采用 RIPv2 无类别路由协议,路由更新中可以传送子网掩码信息,支持 VLSM。根据上述网络规划,使用 VLSM 地址分配策略,设计如下 IP 地址分配计划:1.由于需要 3 个 VLAN,其中两个 VLAN 有不超过 200 台的主机,根据公式,主机需要 8 位地址(28=25620027=12
8、8),子网需要 2 位(22=43),因此得到 4 个连续的/24 位子网,分别是172.16.12.0/24,172.16.13.0/24,172.16.14.0/24,172.16.15.0/24。其中172.16.12.0/24 和 172.16.13.0/24 分配给其中两个 VLAN,每个子网最多可以支持 254 台主机。2.剩下一个 VLAN 每个子网主机数不超过 30 台,需要 5 个主机位,对应需要/27位的掩码(32-5=27),最多可以满足 8 个/27 位子网的需求(238)由于172.16.12.0/24,和 172.16.13.0/24 子网已分配,不能继续作子网划分
9、,现在可以采用的子网是 172.16.14.0/24 和 172.16.15.0/24 作进一步的子网划分。假定这里使用 172.16.14.0/24,3 个 LAN 分配的子网是172.16.14.0/27,172.16.14.32/27,172.16.14.64/27,同时还保留了 5 个子网作为备用或保留作进一步的子网划分。3.由于 WAN 连接仅需要两个 IP 地址,所以最佳的掩码应该是/30 位(2(32-30)-2=2),同样,我们挑选一个未分配的/27 位子网做进一步的划分,为了方便起见,我们选用最后一个/27 位子网 172.16.14.224/27 作为 WAN 连接的地址空
10、间。经过划分得到 172.16.14.224/30,172.16.14.228/30,172.16.14.232/30 等子网,同时还保留了 5 个/30 的子网备用。至此,一个基于 VLSM 分配策略的,层次的 IP 地址分配方案就完成了,和定长子网掩码相比,变长子网掩码的地址分配方案有效的节省了 IP 地址。同时,由于采用新的无类路由协议 RIPv2,路由更新中传递子网掩码信息,子网信息可以精确区分,消除了不连续地址的问题。使用 VLSM 地址分配方案要考虑两个主要问题:1.子网中待分配的最多主机数,根据计算公式 2n-2,得出主机需要的位数2.子网的数量,根据计算公式:2n,得出子网需要
11、的位数。随着网络规模的扩大,网络的数量日益增长,过大的路由表会带来一些问题:1.CPU 的路由计算,路由检索的负荷加剧,潜在造成数据传输的延迟。2.大量路由信息的传输占用了有效带宽。3.路由器需要更多的存储器存储路由信息。4.频繁的网络变动,造成路由收敛时间延长。因此,大型网络中,控制路由表的规模也是非常重要的。该问题可以通过路由聚合(Route Aggregation,有时也称路由摘要,路由汇聚)得到解决。在使用有类路由协议的传统网络中,路由信息经过不同主类别网络边界时,也会自动执行路由聚合。不过,此种路由聚合被限制在主类别网络的边界,灵活性比较差。新的路由协议中支持 VLSM,可以手动控制
12、,在多层次进行聚合,极大地提高了聚合的灵活性。路由聚合通过汇聚若干条路由记录为一条路由记录,有效减少了路由信息量,降低了 CPU 处理路由的负荷,路由器对存储空间的需求,同时也加快了路由表收敛的速度。路由聚合的另外一个好处是可以有效地屏蔽网络中局部的变动对网络全局的影响。随着网络规模的扩大,设备,链路故障的可能性增大,在某些路由协议中,如 OSPF,某个链路的失效或端口 UP,DOWN 都会引起整个网络的路由计算,增加了路由器的负荷和低效的数据流动。我们可以通过划分区域和路由聚合等手段,把网络变动的影响限制在一个小的区域内,变动只对该区域产生影响,而不会影响到整个网络。图 6如图 6,路由器
13、D 作为区域边界路由器连接到公司骨干区域,在未执行路由聚合前,D 中包括 8 条路由记录(/24 位路由 2 条,/27 位路由 3 条,/30 位路由3 条),经过聚合以后,D 只需向骨干区域传送一条 172.16.12.0/22 的记录即可。同时,由于采用了路由聚合,区域内部网络的变动引起的路由表的变化将只影响到本区域内部,其它区域不受影响。下面以 RIPv2 为例,演示执行路由聚合的方法:router rip/启动 rip 进程version 2/切换到 ripv2 版本no auto-summary/关闭自动聚合,切换为手动聚合int s1/切换到 s1 端口ip summary-ad
14、dress rip 172.16.12.0 255.255.252.0/手动配置路由聚合到172.16.12.0/22网络聚合的计算可以归纳为 3 步:1.写出待聚合地址的二进制形式。2.从左到右找出连续相同的位,统计相同的位数。3.写出聚合地址。聚合地址计算示例:表一聚合地址 172.16.12.0/22 :有相同的前 22 位不相同的 10 位172.16.12.0/24 10101100. 00010000.00001100.00000000172.16.13.0/24 10101100. 00010000.00001101.00000000172.16.14.0/27 10101100. 00010000.00001110.00000000172.16.14.32/27 10101100. 00010000.00001110.00100000172.16.14.64/27 10101100. 00010000.00001110.01000000