李晨琛++申圣
[摘 要]IPv4、IPv6过渡技术是当前网络技术领域研究的热点之一,过渡技术在网络进化的过程中已不可或缺。DS-Lite技术是一种为IPv6用户提供IPv4网络接入服务的过渡技术,具有效率高、适用范围广等优势,但DS-Lite技术对于设备稳定性及工作效率有较高的要求。在大量用户的情况下,容易出现通信时延增大,数据包转发效率降低的问题。本文结合现有文献,分析DS-Lite技术的不足,并根据DS-Lite技术的缺点提出域内隧道功能的解决方案。
[关键词]过渡技术;DS-Lite技术;隧道技术
doi:10.3969/j.issn.1673 - 0194.2017.16.086
[中图分类号]TP393 [文献标识码]A [文章编号]1673-0194(2017)16-0-02
现代网络的不同参与者对IPv6部署的积极性不同,工业界,包括某些大型应用服务提供商,需要耗费较多资源才能对IP协议进行升级。针对此类问题,学术界提出了过渡技术,希望通过过渡技术对IPv4网络和IPv6网络进行融合,最终将整个网络全部平滑升级为IPv6网络。过渡技术一般分为双栈、隧道、翻译等方式,无论是哪种技术都涉及一定的复杂度和相对较多的资源消耗,如何达到最低的过渡成本,已成为工程部署上的难题。
DS-Lite过渡技术,结合三种基础过渡方式:双栈、隧道、翻译。其中,AFTR作为隧道集中器,是整个DS-Lite的核心设备,承担地址转换功能的功能,但AFTR设备也有其不足之处,如DS-Lite基于星型拓扑架构,对AFTR的依赖性是阻碍DS-Lite发展的因素之一。
1 主機模式下DS-Lite域内隧道设计模型
1.1 DS-Lite主机模式应用场景
DS-Lite主机模式适用于新型大范围的网络部署,可以针对具有双栈特点的网络设备,DS-Lite的应用范围不局限于固定网络,还可以应用于移动网络。主机模式中,用户终端发起隧道,AFTR作为隧道终点和聚集点,负责数据报文的解析和地址转换,双栈用户配以私有IPv4地址,通过隧道进行通信,在AFTR处,通过用户终端的隧道地址端点来区分私有IPv4地址相同的用户。
典型DS-Lite主机模式中,由于AFTR设备需进行大量的网络地址协议转换,因此,其转换速度和资源利用率成为整个网络的性能“瓶颈”。
本设计是对典型的DS-Lite主机模式进行改进。如图1所示,CPE_A与CPE_B属于一个AFTR域内,而CPE_C与CPE_D属于另一个AFTR域内,IPv4网络表示域外通信流量。该通信流量先经由AFTR的地址及端口转换,再通过路由器连接到相应的AFTR设备上,随后再进行地址翻译和数据包的封装,再发送到目的主机。此外,域外通信包括典型的终端与IPv4服务器通信,通信经由AFTR设备进行翻译及解封装,依据纯IPv4网络中的路由表转发至相应的IPv4服务提供商主机上。
其次,CPE_A与CPE_B间表示终端域内通信,域内通信旨在将域内的流量直接定向到目的主机上,不经由AFTR翻译及解封,减轻了AFTR处的负载及减少了网络中的流量,降低了用户的通信延迟。通过这样的方式,降低了整个网络的负载。
1.2 DS-Lite网络参数自动配置设计
本设计主要对Android终端进行适应性修改和功能增强。通过在底层代码修改DHCPv6逻辑代码,使用户终端获得IPv6地址以及相关网络参数。通过“脚步”对网络进行配置和查询,使客户端配置透明。
自动配置是IPv6中一个重要的特性,在本项目中,DHCPv6安装在Android移动端系统中,从网络自动获取需要使用的相关参数,本地自动配置。DHCPv6虽然简单,且其具有信息自定义机制,通过配置文档,可以实现自定义网络及操作系统的自动配置,DHCPv6这种特性能够更好地实现移动互联网用户的前期接入。因此,将DHCPv6移植到移动终端,实现通过DHCPv6选项(DHCPv6 option)传递网络参数,并支持移动终端自动配置是有相应的应用场景及实践意义的。
修改后的DHCPv6选项,按照传统的点分十进制,配合子网长度定义得到地址格式,由于该格式化表达方式已经被广泛应用于当前网络的通信过程中,因此,使用同一套地址格式可以使设备具有更好的兼容性。
在Linux系统中,Shell脚本具有高度自动化功能。在Shell脚本的帮助下,可以实现对用户透明,不需要额外配置。本设计使用脚本完成自动化设计模式。Android本地化脚本首先尝试开启DHCPv6客户端,把从DHCPv6服务器接收到的参数配置到相应的接口上,随后将上文所述的地址进行无状态转换,并将相应的IPv4地址配置到物理接口,并运行开启隧道的相关配置,使用户终端能够自动建立DS-Lite隧道,同时将IPv4地址存入Android系统属性中,用于后续应用的调用。
2 基于Android的DS-Lite隧道的实现
整个Android的DS-Lite隧道的实现分为两部分,第一部分是服务器,路由的配置的实现;第二部分是用户终端的实现。
服务器位置如图1所示,从图1可以看出,内容提供给服务器设置在IPv4网络中,用户设备在IPv6网段,同时,AFTR设备与用户终端并不处于同一网段中,中间以路由器进行分隔,跨越多个网络,这样的部署更加具有普遍性。最后,在网络拓扑中,AFTR设备的两侧网络制式必须不同,其中一侧为纯IPv6网络,另一侧为纯IPv4网络。
本设计的重点是针对移动用户设备的修改。用户设备是基于Android操作系统的。通过交叉编译工具链的工作原理,使用NDK进行交叉编译,在系统底层对DHCPv6进行移植,实现通过DHCPv6传递网络参数,支持自动化配置,修改后的Android系统的网络配置更加透明化、智能化、自动化。
另外,Android还需要重点实现域内隧道功能模块。Linux系统内核本身已经提供了一个IPv4-in-IPv6隧道功能,此功能可以对从上层来的使用隧道功能的报文报头封装,并构造相应的数据报文。整个隧道处理发生报文的流程如图2所示。
其中,增加IPv6报头的部分由内核本身提供的ip4ip6_tnl_xmit函数执行,之后,在发送函数ip6_tnl_xmit2中,增加判断功能和提取地址功能。本设计扩展了ip6_tnl_xmit2本身的封装功能,由于需要提取IPv4报头中的信息,函数会首先对IPv4报头中的目的地址进行提取,并对比目的地址信息与私有IPv4地址信息,当发现目的地址与本机不属于同一个AFTR域时,执行函数本身的默认流程会将AFTR的隧道端点作为IPv6数据包头的目的地址,完成典型的DS-Lite的通信过程。
3 基于Android的DS-Lite方案的测试
搭建测试环境的目的是测试和验证基于Android设备的DS-Lite的有效性和正确性。测试拓扑如图3所示。
测试拓扑中,CPE_A 和CPE_B终端用户均处于2001:da8:
202:102::/64网段。其中,CPE_A配置有隧道功能,CPE_B作为参照物没有配置隧道,路由器作为IPv6中的默认网关,起到模拟真实环境的作用,AFTR设备的IPv6位于IPv6和IPv4网络的交界处,其中,IPv6网络的地址前缀为2001:da8:202:103::/64;IPv4网络地址前缀为202.204.22.0/24;AFTR的虚拟DS-Lite隧道端点地址为2001:da8:202:102::2。测试过程为:首先,通过脚本对DS-Lite进行配置,其次,在配置有DS-Lite功能及域内隧道模块用户终端CPE_A执行ping和ping6命令,模拟用户进行网络访问IPv4网络和IPv6网络。
主要参考文献
[1]赵金萍,熊君星,罗华群.对IPv4到IPv6协议转换技术的研究[J].电脑知识与技术:学术交流,2007(10).
[2]李涛.IPv4向IPv6过渡策略的分析及应用[J].计算机与网络,2007(9).endprint