分类: 系统运维
2008-03-24 19:29:12
本备忘录的状态
本文档是有关Internet的的提案,有待讨论。本备忘录的发布不受任何限制。
摘要
最近有几份RFS文档讨论了在Internet地址分配方案中对“子网”结构的需要,
并提出了子网地址分配和路由策略。特别是JeffMogul在917《Internet子网》中,
描述了一个地址分配方案,将主机地址部分的开始一些位用来标识子网。这个方案的缺
点是需要修改现有主机软件的实现。虽然改动很简单,但所有的主机都需要更新。(请
参阅JeffMogul917中解决这个问题的不同方法的描述)。
本文档提出另一个子网的地址分配方案。本方案在大多数情况下不需要修改主机软
件。其缺点是一个网络中的子网数量受到限制,而且需要修改所有的网关。
目的
在本方案中,用C类网络的网络地址标识网络中的子网。因此,我们保留C类网
络地址空间的上半部分,也就是最高位是1的那些地址。当要把一个网络组织成一系
列子网时,给这个网络分配一些连续的被保留的C类网络地址,这些地址的前2个字
节是相同的。这样,不同的子网就由地址中的第三个字节来区分。这个方案把一个网络
中的子网限制为256。如果需要更多的子网,就需要两块地址空间,而这个网络就成为
两个网络。这个网络中的网关和主机和普通C类地址一样使用这些地址,因此,主机
的软件不用改变。
对于没有直接连在分成子网的网络上的网关来说,不可能让其单独保存这些子网的
路由信息。子网分配方案的目的就是让没有连在这种网络上的网关把整个网络作为一个
整体来路由。在这个方案中,由于一个网络中所有子网地址的前两个字节是相同的,远
端的网关就可以把前两个字节当作一个B类网络的地址来存储和处理。这种可以在适
当时候作为B类和C类网络地址的地址被叫做“B1/2”类地址。
更详细地说,网关可以对C类地址做如下处理:
看地址的高位是不是1,如果不是,则地址是普通的C类地址,做相应处理。如果
高位是1,则这个地址是某个网络的子网地址。测试网关是不是连在这个网络上。如果
是,把这个地址当普通C类地址处理。如果网关没有连在这个网络上,则去掉地址的
第三个字节,把剩下的两个字节当作B类地址处理。注意,这种模式的B类地址不会
和普通的B类地址冲突,因为这种地址的第一个字节不是有效的B类地址的首字节,
而是C类地址的。
优化
如果一个网络的子网大于256个,就需要分配两块特殊的C类地址空间,成为两
个独立的网络。但是,可以适当设计这两个网络之间的网关,使用一个综合这两个部分
的优化的路由的算法。就是在有很多网关时也是可行的。
在某些特殊的场合,如果没有和这个网络相连的网关保存单独的C类地址能很大
的提高网络效率的话,这样做也是可以的。
前面讲到实现这个方案不用改动主机软件。而在下面的情况中,少量的修改会有很
大的帮助。考虑一台没有和被划分正子网的网络直接相连的主机,它可以维护这个网络
的各个子网的各自的路由信息。对大多数主机而言,它只会记住现在感兴趣的主机的路
由信息,所以,记住这些子网的信息不会引起问题。但是,如果由于某些原因,主机要
记住所有见过的地址的路由信息,则主机的软件必须了解远处网关对两字节和三字节地
址的处理算法。我们不建议使用这个方法。在通常情况下,主机没有必要处理C类地
址到B类地址的转换。
缺点
可以想象以下其他模式的“折叠”地址。比如,256个B类地址可以组成一个A
类地址。但由于这种A类地址的前3个位是受约束的,只可能存在32个这样的子网。
另一种更有意思的方法是把C类地址折叠成A类地址。很明显,这不是组织地址的最
好的方法,但这样的组合可以使有大量子网的网络的存在。
“B1/2"地址最有意思的方法是增加标识子网的字段的长度。例如,有10个位用来
标识子网,这样,每个网络中就可以有1024个子网。网关形成相应的地址时,不但去
掉第三个字节,还去掉B类地址的最后两位。由于前3位受约束,所以有13位可以给
子网使用,也就是可以有8192个子网。这个数目不是很大。因此,选择合适的子网字
段是很重要的。
DannyCohen建议这个方案中,网络、子网和主机地段的边界可以改变。这种实
现的问题是网关怎么去维护“折叠”的地址。本建议,在短期内,只实现一种“B1/2”
地址作为Internet子网标准。