IPv6/IPv4协议转换的试验( 三 )


数据包从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测量主机之间的基本往返延迟 。

推荐阅读