作 者:汪涛
1、可伸缩的n×IPv4层区结构
SuIP协议用严格的技术语言来表达可以被称为“可伸缩的n×IPv4协议”。当引入SuIP技术后,整个IP网络变成一种完全以IPv4地址为基础的,具有可伸缩特性的层区结构,如图1所示。
图1 可伸缩的层区结构
第一层L1对应于我们现在所说的“公网”地址区。L2及以下对应于我们现在所说的“私网”,L2对应于一级私网,L3对应于二级私网。
层区向下的延伸是可伸缩的。事实上,如果采用图1所示的4个层区的结构,其等效的最大地址空间已经是128位了。每一个向下延伸的层区深度可以是不一样的。例如某一个向下的路径上最大是5(最底层为L5)层,而另一个路径上最大的路径可能只有2(最底层为L2)层。
2、层区和终端的编址
每个层区的层区子地址是以其与上层IP层区联结处(层区网关)的IPv4地址进行编址。如:
例1,位于L2的某层区网关的IP地址为202.32.11.240,这个IPv4地址就是它对应层区的层区子地址。
每个层区的完整层区地址为从上往下所有层区的子地址连接起来的n个IPv4地址。如:
例2,在例1中的某个地址10.31.66.30下面还接了一个L3的层区,它的层区子地址就是10.31.66.30,而其完整的层区地址为:202.32.11.240.10.31.66.30。它是两个IPv4地址的拼接。
终端的完整SuIP为层区地址加上其本机在本层区内的IPv4地址。如:
例3,例2中L3的层区内有一个终端,其本机的IP地址为192.168.3.10,则其完整的SuIP地址就是由层区地址加上本机地址来表达。层区地址为:202.32.11.240.10.31.66.30,本机地址为:192.168.3.10。
3、SuIP包头的封装及格式
图2 SuIP包头的封装
SuIP包头是插在原IP包头和传输层包头之间的。IP包头仅调整协议号,如传输层是TCP,就将协议号从6改为200,如果是UDP,就将协议号从17改为201。从SuIP恢复时依同样映射关系改回去。
传输层包头不作任何变化。SuIP包头格式如图3所示。
图3 SuIP的格式
获取封装的MIPA(映射IP地址)的一个案例如图4所示。
例4,假设图4中SuIP包从A传到B:
Ø A的层区地址为:MIPA1+IPd,本机地址为IPs
Ø B的层区地址为:MIPA2+MIPA3+MIPA4,本机地址为MIPA5
图4 SuIP的MIPA获取
在完整的SuIP包中,IP包头的源地址为IPs,目的地址为IPd。封装的SuIP包头中的映射IP(MIPA)依次为MIPA1,MIPA2,MIPA3,MIPA4,MIPA5。
Totalnum字段表示封装的MIPA地址总数,本例中此字段值为5;
Stagenum字段为当前指针,表示SuIP包在整个传递过程中当前所在的层区,初始值为1;
Checksum为校验和。
4、SuIP包的传递
SuIP包的传递很简单,在每个层区内,该包的传递和路由与现IPv4协议100%一致,没有任何变化。当SuIP包传递到层区网关上时,根据Totalnum和Stagenum两个字段的指示,对IP包头的源地址和目的地址进行置换。例如当SuIP包到达第一个层区结束的层区网关(IPd的位置)时,将IP包头的源地址置换为IPd,目的地址置换为MIPA1,IPs转放在原MIPA1的位置,从而进行第二个层区的IPv4路由传递。在第二个层区内SuIP包的路由依然100%与现在IPv4协议是一样的。
当到达第二个层区的结束位置的层区网关(MIPA1的位置)时,再将IP包头的源地址置换为MIPA1,目的地址置换为MIPA2,IPd转放到MIPA2的位置,从而进行第三个层区的IPv4路由传递。
依此方法一个层区接一个层区地通过不断置换IP包头的源地址和目的地址,就可以最终100%兼容IPv4路由地将SuIP包从A传到B。
5、对SuIP技术的评估
5.1流量汇集和路径收缩
在基本的树状层区结构里,每个层区在其层区网关处会形成流量的汇集,这个汇集点可能形成流量的瓶颈。在RFC1631中,NAT地址协议的提出者就认为这是NAT技术的5个缺点之一。但事实上,由于实际的电信级的网络中从接入层向汇聚层、骨干层的收敛过程中就天然存在这种路径收缩,因此它并不是一个值得认真考虑的问题。
另外,SuIP封装的MIPA并非绝对就是一定要汇集到最上层的当前为公网的地址层,而是容许采用最短路径,以及容许横向的不同地址区之间存在直接联接,因此可以比较容易地解决较大的流量汇集。
而从好的方面说,这种路径的汇集可以有利于安全的管理。一个层区可能就是一个企业内部的网络。这也是现有私网被认为有利的一个方面。
5.2升级涉及工作量及成本
将现有NAT升级为SuIP在网络侧仅仅涉及到原NAT网关处的设备,并且完全为软件升级,不涉及任何硬件变化。并且由于SuIP包在层区网关处仅仅是作极少量的包内地址置换工作,因此其处理量非常少,速度非常快。
终端侧传输层协议基本可以不作任何改变,接近100%兼容。仅需极少量软件改变。
显而易见,以上两个软件基本功能的规模都仅为几百行代码的量级。即使加上其它相关的增强功能,其软件代码规模也是相当小的。