本节书摘来自异步社区《OSPF网络设计解决方案(第2版)》一书中的第1章,第1.9节,作者 【美】Thomas M. Thomas II, CCIE #9360,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.9 CIDR
OSPF网络设计解决方案(第2版)
由于VLSM能够通过路由协议传输子网信息,从而增强子网划分的作用。这种技术思想直接引出了本节所要讨论的CIDR。CIDR是一种能够有效阻止由于IP地址分配不当引起的路由表溢出的方法。若没有实施1994年及1995年发布的RFC 1817文档中所描述的CIDR,那么Internet也不会如今天一样正常地运行。如果缺失CIDR技术,将导致路由表的规模超过路由器所能处理的极限。
实施CIDR的主要前提是,必须使用支持它的路由协议,例如RIP-2、OSPFv2和BGPv4。CIDR可以被认为是一种高级的子网划分。子网划分的掩码,之前已经提到,是具有特殊含义的数值,它将成为路由表和路由协议的组成部分。因此,路由条目不再根据IP地址来判断其归属的类别,而是使用最长掩码匹配原则。
1.9.1 确定CIDR的使用
Internet路由表的规模保持着和Internet网络规模一样的高速增长速度。这种增长对Internet路由器的处理性能及内存要求不断提升,最终导致资源利用率大幅增加,频繁出现资源告急。
在1988年至1991年期间,Internet路由表的大小每10个月翻一番。以这种增长速度,到1995年时,将出现80,000条路由。路由器需要消耗大约25 MB的专用RAM才能对所有条目进行跟踪维护,而且这还仅仅只是在拥有一个对等体邻居的前提下。通过实施CIDR,在1996年时,Internet路由数量被优化到42,000条。如今,Internet核心路由表中的路由条目约为7,000,000条1。若没有CIDR技术对路由进行聚合,一台BGP路由器的路由表将拥有比这多得多的路由条目。这会耗尽绝大部分普通BGP路由器的内存和CPU资源,导致无法正常运行。
CIDR的主要作用是保持大型网络的持续性不间断增长,并同时在路由器上聚合路由条目,从而降低网络路由器所运载的路由信息数量。使用CIDR,你可以将一些IP网络聚合成单个条目。CIDR淘汰了A、B、C主类网络的概念,并使用一般性的IP前缀进行替代。
在网络中使用CIDR的一些优势如下:
减少由于更新外部路由信息而产生的本地管理性负担;
通过使用路由聚合,节省路由器的路由表空间;
减少路由抖动问题的发生;
降低路由器CPU和内存的消耗;
提高可用地址空间的利用率。
1.9.2 斜杠的含义
/16及/24这种写法,代表了IP地址网络号的比特长度。上文所谈到的B类地址可以写成172.24.0.0/16,实际上这个地址范围和256个C类地址等价,因此该地址在空间大小上也等同于192.200.0.0/16。使用CIDR时,单个C类地址可以写成192.201.1.0/24,这种IP地址的书写形式包含了IP地址和掩码长度。其中,掩码长度通常被称为IP前缀长度。掩码长度指明了相应IP地址中掩码所使用的比特位数。
例如,使用CIDR的IP地址172.24.0.0/16,代表172.24.0.0 255.255.0.0。其中/16代表从高位开始数,前16个比特都是掩码比特。图1-15解释了CIDR如何定义掩码。
1.9.3 CIDR的重要术语
被称为超网的网络,是指IP前缀长度少于主网默认掩码的比特数。例如,C类地址200.34.5.0,主类默认掩码为255.255.255.0。该地址也能够利用CIDR写成200.34.0.0/16。因此,由于主类默认掩码为24比特,而CIDR掩码为16比特(16小于24),那么该网络即为超网。简单地来说,超网的IP前缀长度小于主网默认掩码长度。
这种技术使得明细的连续主网——如200.34.5.0、200.34.6.0及200.34.7.0——能够汇总成单个CIDR地址块被通告,也就是进行聚合。简单地来说,聚合代表所有的汇总路由。图1-16描绘了CIDR如何通过减少路由表大小来优化网络。
1.9.4 无类IP
在路由器上使用无类IP(IP classless),并且在自治系统内拥有默认路由时,ip classless命令能够更改传统有类路由器对子网路由进行查找的行为。对于那些运行在Cisco IOS软件版本12.0或更高的设备而言,ip classless命令默认开启。无类IP使得路由器对于去往目的子网的数据包,采取最长掩码匹配原则,依照最佳匹配的超网路由来发送,而不是简单地丢弃。换句话说,如果某条明细子网路由不可用,那么路由器将选择次明细路由,直至匹配默认路由。这和老式的有类路由选择方式截然不同,使用有类路由方式(即输入no ip classless命令),如果主类中不存在明细的子网路由,数据包将被丢弃。
1.9.5 CIDR转换表
表1-8给出了基本的CIDR信息。
1.9.6 手动计算CIDR IP前缀值
为了演示CIDR IP前缀的计算,参考以下掩码长度为19比特的子网例子:
166.38.0.0/19
按照以下步骤计算CIDR IP前缀。
1.4个八位组代表32个比特。
2.本例仅使用19比特的前缀长度。
3.前2个八位组占用了16个比特。第3个八位组只使用3个比特。剩下的5个比特未使用,如下所示:
4.使用二进制形式将剩余5个比特相加:16+8+4+2+1=31。
5.将31和原来的八位组相加,则结果为(0+31=31)。
6.该CIDR块范围的最终结果为166.38.0.0~166.38.31.255。
1译者注:截至2013年,Internet路由表条目数量大约为7,000,000。