APP下载

基于Traceroute路径的IPv6过渡元素识别策略

2013-11-30马东雯

计算机工程与设计 2013年12期
关键词:骨干网端点路由器

马东雯,刘 述,高 强

(1.北京航空航天大学 电子信息工程学院,北京100191;2.工业和信息化部电信传输研究所,北京100191)

0 引 言

截至2012年6月底,中国拥有IPv6地址数量为12499块/32地址,相比上年底增速达到33.0%,在全球的排名由2011年6月底的第15位迅速提升至第3位[1]。这预示着我国已进入IPv6网络部署的爆发期,IPv6骨干网的规模会在今后几年内迅速增长,但我们仍将长期处于IPv4与IPv6网络设备的共存期。

在IPv6骨干网中,存在相当多的IPv4/IPv6过渡元素,如双栈路由器,隧道端点路由器等。它们是IPv6与IPv4主机互通的重要转接点,而一些过渡元素需要对每个数据包进行判断、数据包封装等操作,因此过渡元素被普遍认为是整个网络性能的瓶颈[2]。本文旨在在IPv6骨干网拓扑发现的基础上,识别出网络中的过渡元素。在识别出过渡元素后,对它们的运行状况进行监测,按照需求进行性能的优化,是过渡期保持网络健康运行的可行方法之一。

在国内外已有的研究中,对局域网内的过渡元素识别已经有相当多的研究,如基于SNMP(simple network management protocol)协议的过渡元素发现[3]。而对骨干网层面的过渡元素发现则研究很少,已存在的方法也存在着识别设备类型有限、识别率不高的问题[4]。本文在研究已有科研成果的基础上,针对由Traceroute骨干网拓扑发现得到的接口路径 (由IPv6路由器的接口IP地址组成),提出了一种基于Traceroute路径的IPv6骨干网过渡元素识别策略,用以判断每条Traceroute接口路径上存在的过渡元素,从而最终得出整个IPv6骨干网网络中的过渡元素。

该识别策略结合了路径最大传输单元 (path maximum transmission unit,PMTU)试探、双栈节点识别、相邻双栈提取、ping注入、跳限检验等方法,合理设计了识别流程,删减了不符合网络实际情况的判断流程。同时采取PMTU和双栈节点判断进行粗判,提高了识别效率,采取跳限检验对初判为过渡元素的节点进行检验,提高判断的准确性。对识别策略进行实验测试,结果表明该识别策略具有识别多种主要过渡元素的能力,且具有冗余识别少,识别速度快,识别率较高的特点。

1 过渡元素分类及识别方法

IPv6骨干网过渡技术主要分为双栈技术、隧道技术和协议转换技术[5]。本小节将对前两种技术对应的过渡元素及识别方法进行介绍,而协议转换技术由于破坏了IP协议端到端的特性而没有被大规模使用,在此不进行深入讨论

1.1 双栈技术及双栈主机的识别

双栈技术要求网络节点同时支持IPv4和IPv6协议栈,使得路由器能同时与IPv4、IPv6主机通信。在一个路由器中,分别维护IPv6和IPv4两套路由协议栈和路由表,不同协议的数据包根据不同的路由表转发。由于现在各大硬件商的网络设备在逐步升级至支持双栈协议,因此双栈技术是过渡时期最主要的技术之一,运用的非常广泛[5]。

对于双栈主机的识别,现在通用的做法有两种:地址列表获取法和DNS报文分析法。

地址列表获取法:首先调用gethostbyaddr()函数,以已知的IPv6地址为参数,能得到该IPv6地址所在主机的主机名。根据RFC2553中的定义,以主机名为getaddrinfo()函数的参数,可以获得该主机硬件设备上包括IPv6和IPv4地址在内的所有IP地址。利用这一特性,若调用此函数返回的结果中包含IPv4地址,说明该路由器同时拥有IPv4和IPv6地址,则该路由为双栈路由器[6]。

DNS报文分析法:文献[4]中给出了基于DNS请求响应报文的分析来发现双栈设备的方法,其基本原理与上述地址列表获取法相同。该方法属于被动监听法,识别的效率较低。

1.2 隧道技术及隧道端点的识别

隧道技术是一项应用成熟的互联网技术,它通过将有效负载在隧道入口进行协议封装,在隧道出口对其解封,使得相互兼容的网络节点能够跨接在与之不兼容的网络上,实现兼容网络节点间的双向通信。隧道入口与隧道出口之间的逻辑关系被定义为隧道[5]。

在实际运行的IPv6网络中,主要采用的是IPv6-over-IPv4隧道[7],对于隧道端点的识别,常用的方法有以下3种。

基于PMTU发现的隧道识别方法:当源主机向网络注入较大的IPv6数据包 (数据包长度大于1500字节)时,由于每两个节点之间的链接都存在一个最大传输单元(MTU),因此过大的数据包会触发中间路由器返回ICMPv6数据包过大报文,报文中会告知源主机下一跳的MTU值。源主机根据此MTU值调整数据包大小,再次发送数据包。当数据包最终成功到达目的端时,数据包的大小即为该路径上的最大传输单元 (PMTU)[8]。通过获取到的PMTU值,与特征值进行比较,即可判断是否存在隧道。由于PMTU是一条路径中最小的MTU值,该方法仅可判断出隧道存在的可能性,无法给出确定的结论[4]。

基于IP欺骗和ping注入的隧道识别方法:IPv6-over-IPv4配置隧道采用的安全机制非常薄弱。若已知IPv6-over-IPv4配置隧道两个端点的IPv4地址,IPv4网络中的任意节点可以利用IPv4地址欺骗的方式,向隧道端口发送伪造的IPv6-over-IPv4隧道数据包,从而进入隧道端口后的IPv6网络,这个过程被称为IP欺骗。以IP欺骗为基础,文献[9]中提到利用构造ping数据报文的方法判断IPv6-over-IPv4配置隧道是否存在。

被动探测法:劫持目标网络内两个IPv6/IPv4双栈节点 (路由器或主机)之间的通信,通过对截获的数据报进行分析,很容易发现隐匿在其中的IPv6-over-IPv4隧道。这种方法具有一定的局限性,成功率也相对较低[10]。

2 基于Traceroute路径的过渡元素识别策略

针对由Traceroute方式进行骨干网拓扑发现得到的接口路径 (由IPv6路由器的接口IP地址组成),本文提出了一种过渡元素识别策略,用以判断每条接口路径上存在的过渡元素,从而最终得出整个IPv6骨干网网络中的过渡元素。

Traceroute的原理是探测点向目标点发送跳限 (hop limit)逐跳增加的ICMP或UDP报文,由每一跳路由器返回的ICMP超时报文中的信息,获知从探测点到目标点所经过的路径的全部路由器的接口IP地址。在对网络边缘的某一目标点进行一次Traceroute后,得到了探测点至目标点经过的IPv6路由器的接口路径 (可称为 “一条Traceroute结果”)。对该路径上的所有路由器进行判断,发现哪些节点属于过渡元素。将这样的方法运用至每一条Traceroute的结果,就能在获得IPv6骨干网拓扑的基础上,识别出其中的IPv6过渡元素。

根据我们对中国IPv6骨干网进行实际的Traceroute实验,对于IPv6骨干网路由器的界定为:从探测点开始经过的第三跳路由器起,至目标点前倒数第三跳路由器止 (如图1)。由于在网络中个别路由器由于网络拥塞或出于安全的考虑,不回应ICMP请求,会出现Traceroute结果中对应的IP地址为空,也就是网络拓扑发现领域中常说的 “匿名路由器”问题。因此在一条Traceroute结果中,可能存在一个或更多的匿名路由器,我们只知道它的存在,而无法获知该跳的IPv6地址 (见图1)。为了降低由匿名路由器造成的误差,我们进行如下处理:若一条Traceroute结果中存在匿名路由器,将再次对目标点进行Traceroute。若再次Traceroute的结果仍然存在匿名路由器,则表明Tracer-oute结果不可能完整,则选取匿名路由器最少的一条Traceroute结果,来进行我们上述的过渡元素识别过程。

图1 一条Traceroute结果的说明

下面将针对一条Traceroute结果进行阐述,如何识别其中的过渡元素。

2.1 PMTU试探

首先,使用路径MTU发现来试探隧道存在的可能性。

由于隧道的原理是将IPv6数据包封装在IPv4数据包中,使其可以在IPv4网络中传输。因此,若在一条Traceroute路径中存在IPv6-over-IPv4隧道,其路径MTU将在下层IPv4网络PMTU基础上减少封装报头的长度。在现实网络中,纯IPv4网络的典型MTU值为1500字节,而IPv6-in-IPv4隧道封装报头长度为20字节,GRE隧道封装报头长度为24或28字节。一些基于BSD系统的隧道接口使用1280字节的系统默认MTU。因此我们可以推断,当一条路径的路径 MTU值为1480 (1500-20)、1476 (1500-24)、1472(1500-28)、1280之一时,极有可能存在至少一条隧道。

通过路径MTU的发现,可以初步判断该路径上是否存在隧道这种过渡元素。

2.2 判断双栈节点

对于一条Traceroute结果中,每一个拥有全局单播IPv6地址的接口,使用双栈主机识别中的地址列表获取法,向每一个接口发送getaddrinfo()请求,获取其所在设备上全部socket信息。在返回的socket信息中,若包含IPv4地址,则判断其为双栈路由器,说明它是一个过渡元素。由于隧道端点的必要条件是支持双栈,因此要等待进行下一步判断,判断其是否为单纯的双栈路由器还是隧道端点。

若在本步骤中未发现双栈路由器,而又通过2.1所述的PMTU试探出这条Traceroute路径中可能存在隧道,则说明存在一种可能,刚好匿名路由器是过渡元素。因此我们只能判断这条路径上有很大可能存在某种类型的隧道,而无法确切获知哪几跳路由器为隧道端点,对于该条Traceroute的结果判断到此结束。

若在本步骤中未发现双栈路由器,在2.1步骤中也未发现隧道的典型PMTU值,则认为该条Traceroute路径中不存在任何过渡元素,该条Traceroute路径中的每一个路由器节点均为纯IPv6节点,对于该条Traceroute的结果判断到此结束。

2.3 提取相邻两跳双栈节点

若该条Traceroute结果在经过2.1、2.2两步判断后,仍未满足判断结束条件,则说明该路径上必然有过渡元素存在。由于隧道的端点必为双栈路由器,且隧道端点在Traceroute结果中均表现为相邻的两跳路由器,其底层复杂的隧道结构不反映在Traceroute结果中。因此要提取出该条Traceroute结果中相邻的两跳双栈路由器,它们之间有可能存在隧道,待下一步进行判断。为下文叙述方便,记此步骤提取出相邻的双栈路由器分别为A和B,它们的IPv4和IPv6地址已在2.2步骤中获知。

若该条Traceroute结果中未能找到相邻的两跳双栈路由器,则认为这条路径中存在的双栈路由器均为单纯的双栈路由器,路径中不存在隧道。虽然匿名路由器的存在可能使其相邻的双栈路由器被误判为纯双栈路由器,但由于无法得知匿名路由器的IPv6地址,也就无法验证其是否为隧道端点,对于该条Traceroute的结果判断到此结束。这是可能产生判断误差的一个原因。

2.4 ping注入初判

文献[9]提到,IPv6-over-IPv4配置隧道采用的安全机制非常薄弱。当隧道端点接收到IPv4数据包时,会验证该数据包的源地址。若源地址为该隧道起点的IPv4地址,则认为这个数据包是经由隧道起点传输过来的,将IPv4封装头解封后,继续在IPv6网络中传输至目标点。若已知IPv6-over-IPv4配置隧道两个端点的IPv4地址,IPv4网络中的任意节点可构造一以隧道起点IPv4地址为源地址、隧道端点IPv4地址为目的地址、封装了IPv6数据包的IPv4数据包。这样,就得以利用IPv4地址欺骗的方式向隧道端口发送伪造的IPv6-over-IPv4隧道数据包,从而进入隧道端口后的IPv6网络,这个过程被称为IP欺骗。

若AB之间为隧道连接,则到达B点的IPv4数据包首先会经过源地址的检验,若源地址为A的IPv4地址,则认为是由隧道起点A封装并发送过来的数据包,解封后继续传输。因此我们设想,通过任意节点 (为了方便,我们选定为探测点S)构造一IPv4封装的IPv6数据包,其中IPv4封装部分的源地址应伪装为A的IPv4地址,目的地址为B的IPv4地址。若该数据包到达B点后成功解封继续向后传输,则说明AB间确实存在隧道。为得知数据包到达B点后是否成功解封向后传输,被封装的IPv6数据包应向AB所在路径上B之后某一已知IPv6地址的主机T发送ICMP Echo-request请求。若AB间确为隧道,则探测点S会收到主机T发回的ICMP Echo-reply数据包。该过程称作ping注入,如图2所示。

图2 ping注入的说明

若AB间非隧道连接,当B点收到如上所述的IPv4数据包后,会直接丢弃,目标点T无法收到ICMP Echo-request请求,则探测点S收不到任何回应报文。

2.5 跳限法确认AB间为隧道

本步骤仍以IP欺骗为基础,通过跳限法验证隧道端点B的IPv6地址来进一步确认AB间是否存在隧道。

由于IPv6-over-IPv4隧道在网络的IPv6层中被视为一跳,我们发送一被封装的跳数限制 (hop limit)为1的IPv6数据包,该数据包一旦到达隧道端点被解封为纯IPv6数据包,即触发一ICMP超时报文。若探测点收到一个源地址为B的IPv6地址的ICMP超时报文,则确认AB之间确实存在隧道。这种验证的方法我们称其为跳限法。

具体方法如下:从探测点S发送一IPv4封装IPv6数据包,IPv4封装报头的源地址伪装为A的IPv4地址,目的地址为B的IPv4地址,被封装的IPv6数据包为目标点S到探测点T的HL(hop limit)=1的任意数据包。若AB间存在隧道,则该数据包到达B点时成功解封,进入IPv6网络传输。但由于该IPv6数据包跳数限制为1,B点的IPv6协议栈在转发前将HL值减为0,触发B点发送ICMP超时报文。该过程如图3所示。

图3 跳限法的说明

若AB间确实为隧道连接,探测点S将收到一ICMP超时报文,该报文的源地址为隧道端点B的IPv6地址,该地址是Traceroute结果中已知的。至此,可以确认AB间存在隧道,对AB这一对双栈路由器的判断结束。若在该条Traceroute结果中存在其它相邻的双栈路由器,则对它们应用2.4、2.5所述的方法,判断其是否为隧道端点。

2.6 隧道类型判断

根据文献[7],我们可以根据该条路径的PMTU粗略判断路径中可能存在哪种类型的隧道 (见表1)。但由于路径MTU的值取决于路径中所有路由器最小的MTU值,因此当存在一个以上的隧道时,只能判断其中MTU最小的隧道的类型,而MTU较大的隧道类型无法获知。

表1 隧道典型PMTU值

图4 基于Traceroute路径的IPv6过渡元素识别总流程

2.7 判断过程总流程图

基于Traceroute路径的IPv6过滤元素识别总流量,如图4所示。

3 实验结果

本文以Cernet2主干网作为IPv6骨干网实验环境,按照上述过渡元素识别算法使用JAVA语言编写过渡元素识别程序,使用双栈主机接入IPv4和IPv6网络进行测试。

事先采集了287个属于中国IPv6地址范围内的、处于网络边缘的IPv6目标点。实验进行了3次独立的Traceroute路径发现,并对其运用了本文提出的过渡元素识别策略,实验结果见表2。

表2 实验结果

隧道识别的结果表明,该算法可以成功识别出IPv6骨干网中的纯双栈节点和隧道端点,并粗判出其隧道类型,证明该过渡元素识别算法的有效性。判断一个路由器是否属于过渡元素平均用时2.11秒,识别速度快。

4 结束语

本文提出的基于Traceroute路径的IPv6骨干网过渡元素识别策略属于主动探测法。结合了路径MTU值和相邻双栈路由器的粗判,使其与已有方法相比,具有识别速度快、减少冗余识别的优势。采用了精准的ping注入方式进行初判,以及跳限法进行验证,使其识别率较高。但由于依赖PMTU判断隧道类型只能判断一条路径上MTU最小的隧道的类型,因此在隧道分类上还有待进行进一步研究。

[1]China Internet Network Information Center.CNNIC 30th internet report[EB/OL].[2012-07-19].http://www.cnnic.cn/research/bgxz/tjbg/201207/t20120719_32247.html(in Chinese).[中国互联网络信息中心.CNNIC第30次互联网报告[EB/OL].[2012-07-19].http://www.cnnic.cn/research/bgxz/tjbg/201207/t20120719_32247.html.]

[2]Zhou Xiaoming,Martin Jacobsson,Henk Uijterwaal,et al.IPv6delay and loss performance evolution[J].International Journal of Communication Systems,2008,21 (6):643-663.

[3]CUI Ze.Research on topology and fault management based on IPV6network[D].Shanghai:East China Normal University,2010(in Chinese).[崔泽.基于IPv6网络的拓扑与故障管理研究[D].上海:华东师范大学,2010.]

[4]XU Liang.Study and realization on topology discovery of IPv6 network[D].Chongqing:Chongqing University,2008 (in Chinese).[许靓.IPv6网络拓扑发现的研究与实现[D].重庆:重庆大学硕士学位论文,2008.]

[5]WU Xiaojin.Technology and application of IPv6[M].Beijing:Tsinghua University Press,2010 (in Chinese).[伍孝金.IPv6技术与应用[M].北京:清华大学出版社,2010.]

[6]ZHU Mingming.Research on router-lever topology discovery technology based on IPv6[D].Henan:The PLA Information Engineering University,2009 (in Chinese).[朱 明 明.基 于IPv6的路由器级拓扑发现技术研究[D].河南:解放军信息工程大学,2009.]

[7]IETF RFC4459,MTU and Fragmentation Issues with In-the-Network Tunneling[S/OL].http://tools.ietf.org/html/rfc4459,2013.

[8]IETF RFC1981,Path MTU discovery for IP version 6[S/OL].http://www.ietf.org/rfc/rfc1981.txt,2013.

[9]Guanlan Chen,Qin Zhao,Yan Ma,et al.A new topology discovery solution for IPv4 &IPv6coexisting networks[C]//Beijing:International Conference on Advanced Intelligence and Awarenss Internet,2010:208-212.

[10]REN Jie.The research and realization on IPv6-over-IPv4tunnel discovery and using technology[D].Zhengzhou:The PLA Information Engineering University,2007 (in Chinese).[任杰.IPv6-over-IPv4隧道发现及利用技术研究与实现[D].郑州:解放军信息工程大学,2007.]

猜你喜欢

骨干网端点路由器
买千兆路由器看接口参数
非特征端点条件下PM函数的迭代根
维持生命
路由器每天都要关
路由器每天都要关
有轨电车信号系统三层骨干网传输方案分析
不等式求解过程中端点的确定
NGB骨干网中QoS 保证实现机制研究
基丁能虽匹配延拓法LMD端点效应处理
OTN和PTN技术在高速公路骨干网中的应用