摘 要 IPv6协议是因特网的新一代通信协议,如何实现从IPv4到IPv6的平滑过渡是IPv6发展目前急需解决的关键问题。本文从实际情况出发,对隧道模式提供一种可行的模拟方案,为即将到来的网络过渡[1]时期采用隧道模式提供一定的技术探索。
关键词 IPv6 IPv4 IPv4/IPv6双栈 隧道
1 引言
一旦IPv6投入应用,看起来网络中所有的主机都必须升级。但是,实际情况并非如此,研究向IPv6过渡的人士正在致力于IPv6的设计及IPv6所支持的协议和机制,以实现得体的渐进的升级。如果能有条理地、明智地进行现有网络向IPv6的升级,升级的影响可能较小。在RFC1933(主机和路由器向IPv6过渡的机制)、RFC 2185(向IPv6过渡的选路问题)、RFC2071(网络重新编号概观:为何需要及需要什么)以及RFC 2072(路由器重新编号指导)等文档中都涉及有关向IPv6过渡的讨论。
向IPv6过渡必定是渐进的,预计IPv4和IPv6将长期共存,目前大多数过渡策略都依靠隧道的实现方法,即至少在最初,将来自IPv6岛的IPv6包封装在IPv4包中,然后在广泛分布的IPv4海洋中传送。经过过渡的早期阶段,越来越多的IP网络和设备将支持IPv6。但即使在过渡的后期阶段,IPv6封装仍将提供跨越只支持IPv4的骨干网和其他坚持使用IPv4的网络的连接能力[2-3]。
本文在使用简单的实验室环境下实现隧道模式提供一种可行的模拟方案,为即将到来的网络过渡时期采用隧道模式提供一定的技术探索。
2 技术基础
(1)IPv6地址设置
IPv6地址长度为128位。RFC 2373中不仅解释了这些地址的表现方式,同时还介绍了不同的地址类型及其结构。IPv6地址有三类、单播、组播和泛播地址。单播和组播地址与IPv4的地址非常类似;但IPv6中不再支持IPv4中的广播地址,而增加了一个泛播地址。
一个完整的IPv6地址分为两个部分:子网前缀和接口标识符,因此人们期待一个IP节点地址可以按照类似CIDR地址的方式被表示为一个携带额外数值的地址,其中指出了地址中有多少位是掩码。即,IPv6节点地址中指出了前缀长度,该长度与IPv6地址间以斜杠区分,例如:1030:0:0:0:C9B4:FF12:48AA:1A2B/60,这个地址中用于选路的前缀长度为60位。
IPv6寻址模型与IPv4很相似。每个单播地址标识一个单独的网络接口。IP地址被指定给网络接口而不是节点,因此一个拥有多个网络接口的节点可以具备多个IPv6地址,其中任何一个IPv6地址都可以代表该节点。尽管一个网络接口能与多个单播地址相关联,但一个单播地址只能与一个网络接口相关联。每个网络接口必须至少具备一个单播地址。
(2)隧道机制
隧道技术是一种通过互联网络基础设施在网络之间传递数据的方式。使用隧道传递的数据可以是不同协议的数据帧或包,隧道协议将这些其它协议的数据帧或包重新封装在新的包头中发送,被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由,一旦到达网络终点,数据将被解包并转发到最终目的地。整个传递过程中,被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。
简言之,隧道技术是指包括数据封装,传输和解包在内的全过程。
3 模拟序列设计
由于IP地址被指定给网络接口而不是节点,对于隧道机制的编程模拟可以使用通用接口的方式实现,即将隧道模拟为一个虚拟的接口,实际使用中绑定到实际的物理接口中,其接口属性同普通的接口类似。该种方法比较灵活,能够以一种形式实现不同方式的隧道。
(1)确定隧道模式
各种类型的隧道都可以表示为图1所示的结构,其中协议B 作为协议A 的虚拟下层协议,源包源节点和隧道入口节点可以重合,源包目的节点和隧道出口节点可以重合。由于图1所示结构的典型性,模拟的隧道结构模式就在图1的基础上设计。
(2)确定模拟方法
图1所示结构实现比较复杂,因此要考虑用适当的模拟方法进行简化。实际模拟中只模拟了网络节点的一般隧道技术,包括隧道包的封装和解封装,对隧道包在传输过程中的各种处理技术不做模拟。同时加以一定扩展,以一台主机模拟多台,这样避免了模拟过程中的同步处理问题,也简化了模拟系统的实现。
(3)模拟程序序列设计
IPv6隧道模拟过程的形式化描述
[Simulate Procedure] // 模拟隧道序列
Char* Echo_IPv6_Local() // 发送IPv6 连接请求
Char* Reply_IPv6_Local() // 回复IPv6 连接请求
Char* Send_IPv6_Data() // 发送IPv6数据报文
Int IPv6_Over_IPv4() // 将IPv6数据包进行IPv4封装
Int IPv4_InTo_IPv6() // 从IPv4数据包中解封出IPv6数据包
Char* Accept_IPv6_Data() // 接收IPv6数据报文
Char* Simu_Exit() // 模拟结束
[/Procedure]
通过VC6编程实现的模拟序列正确的实现了以上模拟过程,在实验室(Windows 2003双栈主机+纯IPv4路由)环境下对隧道的数据封装,传输和解包在内的全过程进行了模拟。
4 结束语
在IPv6成为主流协议之前,首先使用IPv6协议栈的网络希望能与当前仍被IPv4支撑着的Internet进行正常通信,因此必须对过渡时期的IPv4/IPv6互通技术进行足够的技术研究,以保证IPv4能够平稳过渡到IPv6。本文给出了对IPv6过渡机制中隧道模式进行实验室模拟的一个简单方法,重点阐述了如何从IPv6协议说明得到模拟方法并生成模拟序列集的思想与设计过程。
参考文献
[1] Bradner S,Mankin A.The Recommendation for the IP Next Generation Protocol.RFC1752,1995-01
L EI Zhen-zhou.The transition from IPv4 to IPv6[J]. Modern Science and Technology of Telecommuni- cations, 2002,10 (10) :742 77
陶涛.我国IPv6网络市场发展综述[J].广播电视信息,2005,(04)
钱雁斌,陈性元.基于IPsec的隧道动态交换机制研究[J]计算机工程与应用,2006,(34)
沈曾伟,周刚.IPv6接入网拓扑结构自动发现方法研究[J]计算机工程,2006,(19)
ITU - T Recommendation Z. 120 :Message Sequence Chart (MSC) ( 11/1999)