对于网络设计师而言,构造一个运行良好的网络要面临很多挑战。在一个大型的,层次的,可伸缩的网络中,一个精心规划的IP地址分配策略和适时的路由聚合是至关重要的。
传统的网络建立在有类别地址的基础上(A,B,C类地址)。早期的路由协议,如RIPv1,IGRP出于节省带宽的考虑,在路由更新时不传送子网掩码信息,因此在网络信息传输时需要对子网掩码做一些假设。
1.如果路由器接收端口配置的IP地址和路由更新中传送的子网信息有相同的主类别网络,则该子网使用接收端口的掩码配置。
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子网,主类别网络为172.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.1.0.0/16的流量将无法到达。为了避免上述情况,必须约定,同主类别网络的子网必须使用相同的掩码。新约定又带来了新问题,即同主网络下地址无法有效的分配。
图3 如图3,假如某局域网上使用了27位的掩码,则每个子网可以支持30台主机(2^5-2=30);而对于WAN连接而言,每个连接只需要2个地址,理想的
方案是使用30位掩码(2^2-2=2),然而同主类别网络相同掩码的约束,WAN之间也必须使用27位掩码,这样就浪费28个地址。另外一个是不连续地址的问题。
图4 如图4,根据前述约定,路由在经过不同主网络边界时会自动聚合到主类别地址边界。A的10.1.0.0/16子网经过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的,它们都有50%的机会命中,所以就会出现间歇性的网络访问故障。而对10.1.0.0和10.2.0.0而言,它们二者是不可见的。由于有不连续地址的问题,所以,规划网络地址时必须保证一个主网络的子网必须连续存在。
上述问题随着变长子网掩码,路由聚合和无类域间路由以及无类路由协议(RIPv2,EIGRP,OSPF,IS-IS,BGPv4)等技术的引入而得到了良好的解决。
变长子网掩码(VLSM),是指在一个层次结构的网络中,可以使用多个不同的掩码,也即可以对一个经过子网划分的网络再次划分。变长子网掩码的引入,有效解决了地址分配的浪费问题。
图5 如图5,某个公司的区域网络分配了172.16.12.0/22的地址空间,公司的网络规划如下:在路由器D连接3个VLAN,其中2个VLAN有不超过200台的主机,另外一个VLAN包括3个子网,每个子网主机数量不超过30台,路由器A,B,C通过FR和D相连,保证每条PVC仅分配2个IP地址。所有路由器均采用RIPv2无类