王相林,朱 晨
(杭州电子科技大学计算机学院,浙江杭州310018)
随着因特网的蓬勃发展,网络应用范围的扩大,IPv4越来越后继乏力[1],IPv6取代IPv4是一种必然趋势[2]。但是要将IPv4网络过渡转变成一个纯IPv6网络需要经历一个长期的过程[3],在这个过渡时期,产生了一系列相关的过渡策略[4],以保证IPv4与IPv6之间的互通性。IVI是一种基于无状态地址映射的翻译机制[5],可以真正地实现IPv4与IPv6的直接通信。在IVI网关中,内核目标模块是最核心的模块,该模块中的ICMPv4/ICMPv6协议翻译的设计十分重要。本文针对ICMPv4/ICMPv6协议翻译进行了研究与设计,并通过实验设计,测试和验证了ICMPv4/ICMPv6翻译机制的可行性。
IPv6作为下一代网络协议,拥有众多IPv4所无可比拟的优点,但是要将IPv4网络完全转化成纯IPv6网络不是一蹴而就的。在这期间产生了多种过渡策略,主要有:双栈技术[6]、隧道技术[7]、翻译技术[8]。
不同于双栈技术与隧道技术,翻译技术可以真正实现IPv4网络与IPv6网络的直接通信,其核心是IPv4和IPv6之间的地址转换和协议转换。目前主要的翻译技术包括:SIIT、NAT-PT和IVI翻译技术[8]。
(1)SIIT是用于对IP报文与ICMP报文进行协议转换的技术,这种转换不记录流的状态,是无状态翻译的,它只是根据单个报文将IPv6协议报文转换成IPv4协议报文,或者将IPv4协议转换成IPv6协议的报文。由于SIIT对于地址的转换是静态的,而且IPv4地址对应IPv6地址的位置固定,使得网络规模无法得到很大程度的扩展,这是其致命的缺陷。
(2)NAT-PT机制是把SIIT协议转化技术与IPv4网络中的动态地址转换技术NAT有机地结合在一起,在使用SIIT技术完成协议翻译工作的同时又利用传统的NAT技术来动态地给访问IPv4节点的IPv6点分配一个对应的IPv4地址。
(3)IVI翻译机制是一种无状态的完成N到N映射的NAT机制,主要用以完成IPv4协议和IPv6协议之间的相互翻译。IVI机制的主要思路是在尚未被分配出去的全球IPv4中取出一部分与IPv6地址中特定的一部分(称为IVI6地址)来进行一一映射,在这个范围内的每一个IPv4地址都有一个对应的IPv6地址,使用这部分地址的用户既可以访问IPv4资源又能访问IPv6资源,具有很大的优越性。
在ICMPv4/ICMPv6转换时,ICMPv4和ICMPv6中,类型(type)和代码(code)这两个字段的值不同,所以需要对这两种协议的类型和代码字段要进行翻译转换。
ICMPv4报文分为:目的不可达、超时、参数问题、源点抑制、改变路由、路由器通告和询问、时间戳请求和回答、地址掩码请求和回答、回送请求和回答。ICMPv4到ICMPv6报文的翻译如表1所示。
表1 ICMPv4到ICMPv6报文的翻译
根据表1可以得到:
(1)ICMPv4的目的不可达、超时、参数问题、回送请求和回答报文可以翻译转换成了相应的ICMPv6报文;
(2)ICMPv6不需要源点抑制差错报文,ICMPv4的源点抑制差错报文直接丢弃;
(3)ICMPv6不包含路由器通告和询问、时间戳请求和回答、地址掩码请求和回答报文,所以,ICMPv4的这些报文直接丢弃。
ICMPv6报文分为:目的不可达、参数问题、分组太大、超时、回送请求和回答报文。ICMPv6到ICMPv4报文的翻译如表2所示。
根据表2可以得到:
(1)ICMPv6的目的不可达、参数问题、超时、回送请求和回答报文可以翻译转换成相应的ICMPv4报文;
(2)ICMPv4中没有数据包太大差错报文,ICMPv6数据包太大报文翻译转换为ICMPv4的终点不可达报文。
表2 ICMPv6到ICMPv4报文的翻译
在本文实验设计部分,采用将202.115.8.0/24网段作为映射到IVI6网络的IPv4地址段,同时将IVI6中的前缀规定为2001:250:6400::/40,即本实验环境中的IVI6网络的地址段为:2001:250:64CA:7308::/64。ICMPv4/ICMPv6翻译可行性测试的网络拓扑如图1所示。
图1 ICMPv4/ICMPv6翻译可行性测试的网络拓扑
其中各设备网络接口配置的具体情况如表3所示。
表3 各设备网络接口配置的具体情况
测试两个网络的连通性,IPv4用的测试命令为ping,IPv6用的测试命令为ping6。在ICMPv4向ICMPv6翻译的可行性测试时,可通过在IPv4实验网络的IVI4-PC1主机上使用ping命令来访问IVI6-PC2的IPv4映射地址。
ICMPv4向ICMPv6翻译的可行性测试结果如图2所示,图2中收到了ICMPv4回送回答(Echo Reply)报文,说明ICMPv4向ICMPv6的翻译是可行的。
图2 ICMPv4向ICMPv6翻译的可行性测试
该部分测试可在IPv6实验网IVI6-PC2主机上,通过ping6命令来访问IPv4实验网中的IVI4-PC1主机来完成。ICMPv6向ICMPv4翻译的可行性测试结果如图3所示,图3中收到了ICMPv6回送回答报文,说明ICMPv6向ICMPv4的翻译是可行的。
图3 ICMPv6向ICMPv4翻译的可行性测试
IVI是一种基于无状态地址映射的翻译机制,可以真正地实现IPv4与IPv6的直接通信。在IVI网关中,内核目标模块是最核心的模块,该模块中的ICMP协议翻译的设计十分重要。本文针对IVI网关的协议翻译模块,设计了ICMPv4报文和ICMPv6报文类型和代码的翻译算法。通过实验设计部分进行了测试,结果表明所设计的ICMPv6/ICMPv4的翻译机制可以实现ICMPv6与ICMPv4的正常转换。
[1]王相林.IPv6技术——新一代网络技术[M].北京:机械工业出版社,2008:6-10.
[2]周逊.IPv6—下一代互联网的核心[M].北京:电子工业出版社,2003:77-80.
[3]王相林.IPv6核心技术[M].北京:科学出版社,2009:361-365.
[4]杨国良,李阳春,伍佑明.IPv6技术、部署与业务应用[M].北京:人民邮电出版社,2011:104-161.
[5]Li X,Bao C,Chen M,et al.The China Education and Research Network(CERNET)IVI Translation Design and Deployment for the IPv4/IPv6 Coexistence and Transition[S].RFC6219,2011.
[6]Bound J,Toutain L,Medina O,et al.Dual Stack Transition Mechanism(DSTM)[S].IETF Internet Draft,Jan 2002.
[7]邢宁.基于隧道技术的IPv6承载网过渡方案分析与测试[D].北京:北京邮电大学,2010.
[8]Templin F,Gleeson T,Thaler D.Intra-Site Automatic Tunnel Addressing Protocol(ISATAP)[S].RFC5214,March 2008.
[9]熊忠阳,张逢贵,张玉芳.Linux下基于Netfilter个人内核防火墙的设计与实现[J].计算机应用,2009,29(6):95-97.