直接触摸IPv6——IPv6-IPv4协议转换的试验.doc_第1页
直接触摸IPv6——IPv6-IPv4协议转换的试验.doc_第2页
直接触摸IPv6——IPv6-IPv4协议转换的试验.doc_第3页
直接触摸IPv6——IPv6-IPv4协议转换的试验.doc_第4页
直接触摸IPv6——IPv6-IPv4协议转换的试验.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

直接触摸IPv6IPv6/IPv4协议转换的试验 编者按:从IPv4向IPv6迁移,已不再是什么热点话题、也不是什么新技术讨论。在经过多年准备之后,当前的网络主体产品都具备了IPv4/IPv6双模。但另一方面,有关如何在现实网络中部署IPv6的话题,仍然困扰着整个业界,除偶尔尚不完备的商业部署之外,更多的试验性合作仍然在继续。好的消息正在传来,例如美国的网络服务提供商MCI公司,已经着手向其第一批商业客户提供基于IPv6的服务及应用,尽管这些IPv6业务还不能够被视做真正意义上的“全面的IPv6”。再例如,除了早前中、日、韩三国在IPv6、下一代Internet试验网上的高调合作,2005年5月18日的另一项合作备忘录的签署,也不应被忽视,这就是中国信息产业部王旭东部长和法国工业部部长帕特里克戴维江(Patrick Devedjan)签署的关于IPv6合作的谅解备忘录,中法两国将合作推进新一代互联网的应用与服务产业化。既然涉及到产业化进程,就应当将IPv6的技术本身与实际应用结合起来。可以看到,大量现实中的网络核心设备,在走向IPv6的进程上已经成为难点所在。关键的一点是,不要指望现在就遗弃IPv4,而应当使IPv6和IPv4共存。现行的IPv4网络协议仍然不能充分支持新添节点或者新应用的要求,IPv6 是一个全新的协议,显著特性包括: 增强地址的可扩展性和路由功能,提升安全性,易于配置,和相对于IPv4的高性能。不幸的是,IPv4和IPv6并不兼容,因此以此一标准设计的程序和系统,无法和另一标准的系统通信。而IPv4系统普遍存在,并且也不会在一夜之间被蜂拥而至的IPv6取代。因此,设计一个平滑过渡的机制,让应用在网络升级的过程中继续工作,是十分必要的。对于协议上地址转换,有两种方式:第一种地址转换是,使用特殊IPv6地址,能简单地将所有应用的数据包进行转换。不幸的是,这种特殊IPv6地址,要求IPv6路由器能为此而包含特殊的路由信息,因此被认为不是一个很好的主意:路由器已被要求维护太多额外的状态信息了。第二种地址转换,维护一个IPv4和IPv6地址之间的清晰映射图,因此能够使用标准的IPv6 地址,而不需要任何特殊的IPv6路由器处理。这样处理的缺点是,如果IP地址内嵌在一些应用数据流中,比如FTP, 在升级的时候,也必须进行完全透明的转换。我们在试验中设计了一个IPv6/IPv4网络地址和协议中继器,作为设备驱动运行在Windows NT 操作系统中。我们的测试环境由一个中继器作为网关,帮助IPv6和IPv4主机连接到相互隔离的两个以太网中,这样可以使网络的性能损失很少。我们测量后的数据是,一对IPv6节点和IPv4 节点之间通过中继器通信,在100Mbps以太网环境下,TCP带宽为7210Kbps,往返数据包间隔424微秒。我们最初在SPIN的扩展操作系统上实现IPv6协议,这样能够使用系统内核扩展部分的快速原型。用这种方法实现基本的IPv6后,我们把自己的系统连到了6Bone网络(编者注:IPv6的主干网)。我们对使用IPv6服务的访问感兴趣,但是很快发现,只有很少的主机能通过6Bone网络访问,更别说使用IPv6多种常用的服务了。因此,我们决定设计一个IPv6/IPv4中继器,使IPv6系统和IPv4 系统能够互相访问,并享受对方提供的服务。两种转换地址转换通常来说,IPv6/ IPv4的网络地址转换有两种情形:一是IPv6站点和IPv4节点通信: 例如,一个由支持IPv6的新设备组成的新网络,有时候需要和一些外部网络的IPv4节点通信; 二是IPv4站点和IPv6节点通信: 例如,诸如网页、文件和打印服务等重要服务,要能同时被IPv6和IPv4节点访问,需要逐个将IPv4站点升级成IPv6。图1和图2大致上可以反映出这两种转换情况。图1 IPv6站点的中继器图1中中继器用于一个IPv6站点和IPv4网络内节点通信的情况。IPv6 站点的内部路由必须配置,使得供IPv4节点使用的数据包,能够路由到中继器。IPv6站内主机,使用能映射到纯粹IPv4 主机的IPv6地址,发送数据包到IPv4 网络中的节点。这一设计中,和纯粹IPv4节点的通信时,IPv6节点使用一个IPv4兼容的IPv6地址(IPv4-compatible IPv6地址)作为自己的地址,而给IPv4分配一个映射IPv4的IPv6地址(IPv4-mapped IPv6)。IPv4-兼容的 IPv6地址将IPv4地址作为低32位,并且能识别IPv6/IPv4兼容地址或者纯粹IPv6节点,但它无法识别纯粹的IPv4节点。同样,映射IPv4的IPv6地址也只能识别纯粹的IPv4节点。这种方法的结果是,中继器不需要保存额外的状态信息,不管IPv4和IPv6域地址映射所用的IPv6的前缀如何,只识别IPv6站点内含惟一IPv4 地址的主机。因此,图1中主机B和主机A通信需要IPv4地址,以便能够通过IPv4网络路由。为了克服这个限制,内含状态信息的中继器将几个IPv6主机映射到一个全球惟一的IPv4地址上,这需要使用TCP/UDP端口的转换技术。图2 IPv4站点的中继器图2的中继器用于IPv4站点与IPv6网络内节点的通信。IPv4站点内主机发送数据到IPv6网络内的节点,使用中继器指派的IPv4目标地址,映射到独立的 IPv6主机。为了让带有一个目标IPv4地址的数据包能正常抵达目标,IPv4站点的内部路由必须包含到达中继器的路由信息。中继器接到这些数据包后,进行IPv4-to-IPv6转换,并转发数据包到IPv6网络。这一模式中,中继器能使用惟一的IPv6地址访问IPv4站点内的节点,从而为来自IPv6 网络的数据包进行IPv6-to-IPv4转换。这些IPv6地址可能来自和IPv6 主机通信的IPv4 主机里面动态分配的地址池。一个更好的方法是,分配惟一的、可路由的IPv6地址,以便访问IPv4站点内的所有节点,并且在DNS中注册。这样可能很容易使得IPv6 地址有足够多的空余,而且还有一个好处是,IPv6网络内主机能很容易解析、并通过中继器和IPv4站点内的节点建立会话。总之,这两种模式之间的微妙区别在于,前者映射一个全局IPv4地址池访问IPv6地址,而后者使用私有IPv4地址访问IPv6地址。全局IPv4地址是稀缺的,这种机制要求为IPv6节点动态分配IPv4地址池,以便IPv6节点能够和IPv4节点通信。为了能在IPv4和IPv6节点之间通信,中继器需要同时进行地址和协议转换。协议转换将大多数域从一个IP协议版本转换到另外一个版本。地址转换需要跨越协议边界,将数据包中的地址进行转换。(更为详细的地址转换探讨,读者可参照第D6版的链接。)协议转换协议转换就是利用一些特别的规则处理数据分段和路径MTU发现问题(path MTU discovery),从而完成两种IP协议间的简单映射。基本的操作是移除原始的IP数据包头,并用另一个IP协议的新数据包头替代。首先需要讨论的是IP 转换。IPv6和IPv4数据包头有一些类似,但是大多数域要么意义不一,要么长度各异,也有的被移除了。中继器需要在IP 数据包头中,进行直接复制、转换、忽略、或者用缺省值来设置新的域,以便从一个IP协议版本转换成另外一个。许多域需要简单的调整。做IPv6-to-IPv4转换的时候,IPv4的域需要通过计算得到,而在IPv4-to-IPv6的转换时候,则需要进行忽略处理。和IPv4对比,IPv6数据包头没有明确的域支持数据分段处理,而使用一个独立的数据包头作为数据段,保存信息。当中继器接受一个数据包时,IPv4和IPv6的域之间有直接的映射关系,可以直接进行转换。需要当心的是,两种协议的识别域长度不一样。数据包从IPv4转换到IPv6,长度会增加,根据两个协议之间的数据包头长度不同而变。其次是ICMP 转换。当ICMP信息中有未知的域,中继器将默认简化ICMP的信息。为了保持ICMP信息,数据包头中ICMPv4 和 ICMPv6的格式基本相同。惟一例外的是,ICMP的参数问题信息在ICMPv4中是8位指针值,而在ICMPv6中是32位指针值。ICMP错误信息尽可能地包含IP 数据包头和相应的数据,是属于引起错误的那种数据包,并且需要像普通IP 数据包头一样传输,以便传递这些信息。这样,需要递归转换包含在ICMP错误信息中的IP 数据包。需要注意的是,IP数据包头的转换可能改变数据段的长度。实际测试过程这个部分,我们探讨基本性能衡量标准,并介绍一些我们所使用过的应用,验证中继器是否真正起作用。我们的实验环境是,IPv6和IPv4机器在相互隔离的私有以太网中互连。中继器配备了两个以太网网卡,作为IPv6和IPv4两个以太网之间的网关。我们使用Linux和 Windows NT 4.0作为我们测试IPv6的机器。Windows NT上,我们使用Microsoft Research公开发布的IPv6协议栈。中继器被当做一个Windows NT 设备驱动,Windows NT上的中继器使用IPv4和IPv6协议栈发送IP数据包。为了评估中继器的性能,我们使用工具来测量带宽,并用ping测量一对IPv6和IPv4主机之间的通信延迟,使用NT内建的IPv4转发功能,对比IPv6/IPv4 中继器进行数据包转发的性能,结果显示:在100Mbps网络上,我们测量了64字节到1440字节的ping数据包的往返延迟。表1中,v4-v4和v6-v6列,显示了使用相同协议的两个机器之间的通信延迟。FWD和NAPT列,分别显示了通过NT转发和我们的中继器进行通信的往返延迟。中继器比转发器平均慢了30微秒。表2则显示了在10M和100M以太网上,使用TCP发送64 MB的带宽。需要注意的是,10M以太网中,中继器和转发器对带宽没什么显著影响。但是在快速网络(100M以太网)中,转发器和中继器的带宽明显低于IPv4或IPv6内部的直接通信。使用NT性能检测软件,我们注意到,在快速以太网运行ttcp带宽标准检测时,转发器/中继器中处理器的利用率几乎接近100%。这是由NT的数据包接受体系架构引起的,这种设计结构假设设备驱动拥有数据包缓冲,不会把缓冲的权限给接收数据包的模块(在大多数UNIX系统中,正是如此)。报告结果,我们认为,使用中继器和转发器的带宽受到CPU的限制,明显地受到了NT数据包接受体系架构的影响;必须分配缓冲空间容纳IP数据包的有效负载,并在转发前,复制完整的数据。另外需要注意的是,使用中继器的带宽,比转发器少了10%。我们断定,性能损失部分是因为Microsoft Research的IPv6原型不够好,这种原型比Windows NT携带的产品化IPv4协议栈慢了1.9Mbps。我们估计Windows NT IPv6的实现比较成熟时,端到端的TCP带宽供应会有所改善。我们对目前的延迟和带宽测量结果比较满意,因为所进行的转换不一定会对性能产生明显的影响。设计中继器的目的,是为了“真实世界”的应用能够透明工作,我们使用了比较有代表性的一套程序,试验TCP、UDP和ICMP协议通过中继器工作的情况。测试的应用包括IPv6版本的Apache网页服务器、ttcp、finger、telnet、ping、traceroute和ftp等。实验中发现,TCP协议转换工作得很好,但是我们还想验证普通的TCP应用。我们用telnet和finger,通过中继器在IPv6和IPv4主机之间建立连接。另外,IPv4主机上的网页浏览器从IPv6的Apache网页服务器接收文档,也相当成功。ping程序使用ICMP信息,判断特定主机是否联网。我们也用ping测量主机之间的基本往返延迟。我们还测试了ftp,这个应用内含了一个ASCII码IP地址,并发送给接收者。为了使ftp能通过中继器正常工作,ftp客户端在支持IPv6的时候,需要侦测连接的ftp服务器,是IPv6还是IPv4。当和IPv4的ftp服务器通信时,需要将主机与IPv4兼容的IPv6地址当做ASCII的IP地址,而不是主机原来的IPv6地址。相反,当IPv4的ftp客户端访问IPv6的ftp服务器时,服务器要将ASCII码IP地址看做IPv4映射的IPv6 地址。这样,中继器就没有必要更新ASCII码IP地址。测试遗留问题为了真实的应用而做两种IP协议间转换,是可能的。我们还应看到一些未解决的问题:信息丢失、包含IP地址内容的应用,以及如何将IPv6主机转换成能够访问IPv4主机的IPv6地址 (例如,IP6NODE4地址) 和 反向转换(例如,IP4NODE6地址)等。信息丢失尽管两个IP协议的基本映射已经完成,但是有些域、选项和扩展仍然不能被顺利转换,结果导致信息丢失,从而影响一些应用。一个例子是,IPv6扩展数据包头的使用。这些数据包头可以是任意长度,并且可能封装的选项要比IPv4的40字节限制要大。而且,IPv6规范中定义特性的扩展,例如认证、封装和扩展路由,都是IPv4所没有的特性。因此,不可能完全透明地进行数据包头转换而不丢失信息。我们目前的方法是,转换过程中忽略所有这些特性,并观察对应用的影响。因此,我们在实验中,应用一般依赖于基本的IP特性,而不使用IP数据包头中扩展的域。内含IP地址内容的应用一些应用在数据包的有效负载的第三层,内含自己的IP地址,比如FTP程序和Windows 95/Windows NT的WINS注册进程。除非中继器解析所有这些应用的全部数据包,否则没有办法转换内含的IP地址,进而导致应用失败。我们实现的时候,没有做任何应用层次的IP地址转换,这对于使用能识别IPv4的IPv6新应用不会成问题,例如FTP。我们希望同样的解决方法能用于IPv6版本的所有内含IP地址应用。不过这也不可能,中继器需要在应用层次实现网关,扩展所支持的应用。主机名解析在一个主机和另外一个主机建立会话时,需要解析对方的地址。一般情况下, 使用主机表或者DNS。使用中继器时,解析需要为一个地址别名找到真实的主机。这种情况下,中继器使IPv4站点内的节点能够和IPv6网络内的节点通信。假设每个IPv4节点分配了一个惟一的IPv6地址是合理的。那么,任一IPv6节点都能解析自己的地址,并建立一个会话。然而反过来,IPv4解析一个IPv6主机的时候,就非常困难了,因为IPv4节点需要获得从中继器地址别名,而这个从中继器应该能够访问IPv6。有多种方法能将IPv6的DNS记录转换成IPv4的DNS记录。第一种方法是,有满足的IPv6 DNS记录时,修改IPv4节点的解析方法,从中继器请求别名解析。第二种方法是,当有满足的IPv6 DNS记录时,修改站点的DNS服务器,从中继器请求一个临时的地址,代表它的IPv4客户端。最后还有一个方法,建议中继器识别DNS请求和回应数据包,并透明地传输这些数据。整合的方法在网络中使用中继器的实验表明,完全透明地完成IPv6/IPv4转换,需要不同程度地整合其他服务。正如前面所提到的,DNS和中继器之间的一些层次的协作是必要的,可以将IPv4地址绑定到一个IPv6地址上,反之亦然。我们的策略是,将中继器的功能直接整合到IPv6/IPv4主机的操作系统中。这种整合的好处:一是失败隔离: 整合的中继器只为主机服务,失败后,也不会影响其他主机; 二是可升级性: 整合的中继器只需要适应运行在本机上的那么多网络应用,而不用适应网络中独立的中继器在站点内所提供的大量网络应用; 三是安全的地址绑定解除: 一个应用终止TCP/UDP 网络连接时,整合的中继器能够识别出来,并能安全解除地址绑定; 四是更值得注意的: 当在离开机器前被填充了原先IPv4应用的数据包传输到IPv6时,这种整合方法会产生一个假象,好像是一个纯粹IPv6节点发出的。其他机制可用性原则上,IPv6/IPv4地址转换的功能和IPv4网络地址中继器(NAT)类似, NAT 将私有内部地址转换成全球惟一地址,传送到骨干网,反之亦然。IPv4的NAT有如下限制:首先,需要保留状态信息,在全球惟一地址和私有内部地址之间建立映射,这样NAT是一个单点故障;其次,内含IP地址内容的应用需要特殊的转换,这是很困难的(比如,更新ASCII码IP字符串,传输过程中维护TCP序列号),或者根本不可能,因为应用数据流可能被加密或做了标记。任何保留状态信息的中继器都有这样的限制。然而,尽管有这些限制, NAT还是被广泛使用。我们推荐的“网络地址转换-协议转换”,描述了一个保留状态的IPv6/IPv4中继器设计。这个设计解决了如何合并IPv4中NAT风格的UDP/TCP端口号转换,而端口号的转换和我们设计中状态内容的转换类似。另一种机制是“无状态IP/ICMP转换”,这一机制避免了地址转换的需要,因此克服了IPv4 NAT的限制。首先,不用维护状态,不会受到网络失败的反复干扰。而且, 更多的无状态中继器可以用于更大的站点。其次,使用与IPv4映射和IPv4兼容的地址,允许避免转换内嵌在应用数据流中的IP 地址。然而,只有在IPv6套接字API能够正确把映射/兼容的地址当做IPv4 地址时,这个方法才能正常工作。IPv6/IPv4网络地址和协议中继器的设计和实现,简单对比了“有状态”和“无状态”两种转换。目前有三种建议,符合IETF NGTRANS 工作组的要求,支持IPv6和纯粹IPv4节点之间的互操作。我们的试验中,尽管转换有限制(例如,信息丢失),但我们相信,中继器既然支持网络传输的主要功能(HTTP、FTP),那么足够扮演短期的过渡辅助角色,辅助完成IPv4到IPv6的过渡。基于我们的实验,我们可以得出结论,IPv6/IPv4网络地址和协议中继器是AIIH方法的补充,有助于完成IPv4到IPv6的过渡。特别是,我们相信,这对开发者来说,是一个有价值的工具,可以将应用从IPv4移植到IPv6。举例来说,一个被移植到IPv6的服务器应用,不用移植客户端,就可以直接进行测试。链接:IPv4/ IPv6的地址转换细节使用IPv4映射和IPv4兼容的IPv6地址进行地址转换,过程相当繁琐。IPv6转换到IPv4时,中继器简单抽取IPv6 地址的低32位,就可以获得IPv4地址。相反,IPv4转换到IPv6时,中继器将IPv6源/目标地址的低32位设置成IPv4源/目标地址,高96位分别设置成IPv4映射和IPv4兼容的前缀。然而,这并不是一个好主意,使用IPv4映射地址的一个缺点是,需要IPv6路由器包含IPv4映射地址所需要的路由信息。一个比较好的选择是,使用IPv6-only地址访问IPv4节点,不过这需要中继器维护清晰的IPv4和IPv6地址间的映射关系。为了清楚说明情况,我们介绍一个IPxNODEy的符号来表示转换过程中所使用的地址类型。表1定义了四种地址。前两行定了IPv4 和 IPv6 节点内部访问的地址,后两行定了交叉访问的地址,由中继器负责分配,用于IPv4 和 IPv6地址范围内的相互转换。例如,使用IPxNODEy方法来描述下面的场景:一个IPv6-only主机希望和IPv4-only网页服务器通过中继器通信。这种情况下,IPv6主机需要一个交叉地址IP6 NODE 4,访问带IP4 NODE 4地址的IPv4网页服务器。同样,网页服务器回应IPv6主机时,需要IP4 NODE 6地址访问带IP6 NODE 6地址的IPv6主机。这样,中继器需要映射IP6 NODE 4地址到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论