无类别域间路由
CIDR(无类别域间路由,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
产品简介
英文缩写: CIDR (Classless InterDomain Routing)
中文译名: 无类别域间路由选择
分 类: 网络与交换
读 音:"sider"
解 释: 现行的IPv4(网际协议第4版)的地址已经耗尽,这是一种为解决地址耗尽而提出的一种措施。它是
将好几个IP网络结合在一起,使用一种无类别的域际路由选择算法,可以减少由核心路由器运载的路由选择信息的数量。
所有发送到这些地址的信息包都被送到如MCI或Sprint等ISP。1990年,Internet上约有2000个路由。五年后,Internet上有3万多个路由。如果没有CIDR,路由器就不能支持Internet网站的增多。 CIDR采用8~30位可变网络ID,而不是A-B-C类网络ID所用的固定的8、16和24位。
基本思想
适当分配多个合适的IP地址,使得这些地址能够进行聚合,减少这些地址在路由表中的表项数。
如,给某个网络分配16个C类地址,采用适当的方法分配这些地址,使得16个地址能够聚合成一个地址。
“无分类”指不考虑IP地址所属的类别,路由的策略完全基于整个32bit IP地址的掩码来操作。
工作步骤
CIDR 如何工作
CIDR 对原来用于分配A类、B类和C类地址的有类别路由选择进程进行了重新构建。CIDR用 13-27位长的前缀取代了原来地址结构对地址网络部分的限制(3类地址的网络部分分别被限制为8位、16位和24位)。在管理员能分配的地址块中,主机数量范围是32-500,000,从而能更好地满足机构对地址的特殊需求。
CIDR 地址中包含标准的32位IP地址和有关网络前缀位数的信息。以CIDR地址222.80.18.18/25为例,其中“/25”表示其前面地址中的前25位代表网络部分,其余位代表主机部分。
CIDR建立于“超级组网”的基础上,“超级组网”是“子网划分”的派生词,可看作子网划分的逆过程。子网划分时,从地址主机部分借位,将其合并进网络部分;而在超级组网中,则是将网络部分的某些位合并进主机部分。这种无类别超级组网技术通过将一组较小的无类别网络汇聚为一个较大的单一路由表项,减少了Internet路由域中路由表条目的数量。
基础实例
例如一个isp被分配了一些C类网络,这个ISP准备把这些C类网络分配给各个用户群,已经分配了三个C类网段给用户,如果没有实施CIDR技术.ISP的路由器的路由表中会有三条下连网段的路由条目,并且会把它通告给Internet上的路由器。通过实施CIDR技术,我们可以在ISP的路由器上把这三个网段198.168.1.0,198.168.2.0,198.168.3.0汇聚成一条路由198.168.0.0/16.这样ISP路由器只向Internet通告198.168.0.0/16这一条路由,大大减少了路由表的数目。从而为网络路由器节省出了存储空间。值得注意的是,使用CIDR技术汇聚的网络地址的比特位必须是一致的,如上例所示。如果上例所示的ISP连接了一个172.178.1.0网段,这些网段路由将无法汇聚,无法实现CIDR技术。
发展历程
在域名系统出现之后的第一个十年里,基于分类网络进行地址分配和路由IP数据包的设计就已明显显得可扩充性不足(参见RFC 1517)。为了解决这个问题,互联网工程工作小组在1993年发布了一新系列的标准——RFC 1518和RFC 1519——以定义新的分配IP地址块和路由IPv4数据包的方法。
一个IP地址包含两部分:标识网络的前缀和紧接着的在这个网络内的主机地址。在之前的分类网络中,IP地址的分配把IP地址的32位按每8位为一段分开。这使得前缀必须为8,16或者24位。因此,可分配的最小的地址块有256(24位前缀,8位主机地址,2=256)个地址,而这对大多数企业来说太少了。大一点的地址块包含65536(16位前缀,16位主机,2=65536)个地址,而这对大公司来说都太多了。这导致不能充分使用IP地址和在路由上的不便,因为大量的需要单独路由的小型网络(C类网络)因在地域上分得很开而很难进行聚合路由,于是给路由设备增加了很多负担。
无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。在RFC 950(1985)中有关于可变长子网掩码的说明。CIDR包括:指定任意长度的前缀的可变长子网掩码技术。遵从CIDR规则的地址有一个后缀说明前缀的位数,例如 192.168.0.0/16。这使得对日益缺乏的IPv4地址的使用更加有效。将多个连续的前缀聚合成超网,以及,在互联网中,只要有可能,就显示为一个聚合的网络,因此在总体上可以减少路由表的表项数目。聚合使得互联网的路由表不用分为多级,又用VLSM reverses the process of "subnetting a subnet" 。根据机构的实际需要和短期预期需要而不是分类网络中所限定的过大或过小的地址块来管理IP地址的分配的过程。因为在IPv6中也使用了IPv4的用后缀指示前缀长度的CIDR,所以IPv4中的分类在IPv6中已不再使用。
CIDR块
CIDR主要是一个按位的、基于前缀的,用于解释IP地址的标准。它通过把多个地址块组合到一个路由表表项而使得路由更加方便。这些地址块叫做CIDR地址块。当用二进制表示这些地址时,它们有着在开头部分的一系列相同的位。IPv4的CIDR地址块的表示方法和IPv4地址的表示方法是相似的:由四部分组成的点分十进制地址,后跟一个斜扛,最后是范围在0到32之间的一个数字:A.B.C.D/N。点分十进制的部分和IPv4地址一样是一个被分成四个八位位组的32位二进制数。斜扛后面的数字就是前缀长度,也就是从左到右,被地址块里的地址所共享的位的数目。当只要说明梗概时,点分十进制部分有时会被省略,因此,/20就表示一个前缀长度是20的CIDR地址块。如果一个IP地址的前N位与一个CIDR地址块的前缀是相同的话,那么就说这个地址属于这个CIDR地址块,也可以说是与CIDR地址块的前缀匹配。所以,要理解CIDR,就要把地址写成二进制的形式。因为IPv4地址的长度总是32位,N位长的CIDR前缀就意味着地址里32 − N位不匹配。这些位有2(32 − N)种不同的组合,即2(32 − N)个IPv4地址与CIDR地址块的前缀。前缀越短就能匹配越多的地址,越长就匹配得越少。一个地址可能与多个长度不同的CIDR前缀匹配。CIDR也用在IPv6中。因为位数的非常多,所以在IPv6中,前缀长度的范围是从0到128。这里也用同样的方法来表示一个地址:前缀写作一个IPv6的地址,后跟一个斜扛,最后是前缀的位数。
分配
互联网号码分配局(互联网号码分配局)向区域互联网注册管理机构(RIRs)分配数量多,前缀短的CIDR地址块。例如,包含有六百万个地址的62.0.0.0/8地址块由RIPE NCC(欧洲的RIR)管理。这些RIR各自负责管理一个单一区域(例如欧洲或者北美),然后它们把这些地址块分成小一些的地址块再分配给公众。这个细分的操作可能会由不同层次的团体进行多次。大型网络服务供应商(ISP)一般会从RIR申请CIDR地址块,然后再向根据它们客户的网络大小而分配更小的地址块。互联网工程工作小组鼓励由单一ISP服务的网络直接向ISP申请地址。而由多个ISP提供服务的,则经常会向适当的RIR申请独立的CIDR地址块。
例如,在90年代末,IP地址208.130.29.33是被www.freesoft.org使用的。后来,分配发生了变化208.128.0.0/11,这个包含两百万地址的块被ARIN(北美的RIR)分配给了MCI。MCI又将 208.130.28.0/22 分配给了从MCI租用互联网连接的自动化技术 Research Systems。ARS则用了/24这个地址块,其中就包含208.130.29.33这个地址。这些CIDR前缀会在不同的地方使用。在MCI的网络之外,208.128.0.0/11这个前缀会用于路由MCI的数据流。这些数据流不仅会去到208.130.29.33,也会去到其他那些前11位相同的近两百万的地址里。在MCI的网络里,208.130.28.0/22则会被用于路由到属于ARS租用的连接。最后,只有在ARS自己的网络内 208.130.29.0/24这个前缀才会被使用。
CIDR和掩码
子网掩码一种把前缀编成一种与IP地址相似的形式的掩码。它有32位,以为1的位开头,以为0的位结尾。其中为1的位的数目和前缀的长度相同。它也被写成点分十进制的形式。子网掩码的作用和前缀一样,但是掩码这种形式出现得比前缀要早。
CIDR用可变长子网掩码(VLSM),根据各人需要来分配IP地址,而不是按network-wide rule。所以,网络/主机的划分可以在地址内的任意位置进行。这个划分可以是递归进行的,即通过 增加掩码位数,来使一部分地址被继续分为更小的部分。整个互联网都在使用CIDR/VLSM网络地址。不过在其他方面,尤其是大型私人网络,它也有应用。在普通大小的局域网里则较少应用,因为这些局域网一般使用私有网络。
前缀聚合
CIDR的另一个好处就是可以进行前缀路由聚合。例如, 16个原来的C类(/24)网络现在可以聚合在一起,对外显示了一个/20的网络了(如果这些网络的的地址前20位都相同)。两个对齐的/20网络又可进一步聚合为/19,依此类推。这有效地减少了要对外显示的网络数,防止了'路由表爆炸',也遏制了互联网进一步扩大。