IPv6网络多宿主技术探讨
2010-07-27洪阳
洪阳
(杭州师范大学钱江学院计算机科学与技术系,浙江 杭州 310012)
1 互联网多宿主的概念
网络的连通性和安全性具有十分重要的战略意义,只通过一条链路连接到骨干网络的模式容易发生单点失效而导致网络瘫痪,因此,许多企业和网络提供者(ISP)都迫切希望连接两个以上的提供者来实现更好的性能。据统计,目前Internet有至少60%的AS域有两个以上的ISP,而且数量在不断增加。AS域通过使用多条链路与Internet连接,建立一个可靠的、具有容错能力的网络,这就是互联网的多宿主概念。
2 多宿主技术现状
IPv4网络主要是通过边界网关协议BGP来实现多宿主。BGP是目前Internet上广泛使用的外部网关协议,该协议允许各个自治系统根据自身情况独立地配置IP策略来选择和发布路由信息,交换网络可达信息,是ISP互连的基本手段。Internet上每个ISP都至少拥有一个唯一的AS号,并且通过BGP向其对等互联同伴广播其网络信息。BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。
3 IPv6多宿主相关机制探讨
3.1 路由策略
路由策略是通过路由系统来解决多宿主问题的一种策略。路由系统是Internet的基础设施和用户网络的关键支撑,多宿主站点经过路由控制或路由优化以确定使用哪一条路径连接到Internet。路由策略可以分为使用BGP的IPv6多宿主、“隧道”机制的IPv6多宿主和ISP之间协商的多宿主。
3.2 主机中心策略
主机中心策略是指通过主机来实现链路容错性、均衡负载等能力,由主机对源地址和目的地址进行选择。多宿主站点的每个主机都拥有多个全局IP地址,选择不同的源地址相当于选择了不同的ISP。可以将NAROS和MobileIPv6看成是主机中心策略解决多宿主的方法。
3.3 网关策略
网关策略是指在多宿主站点和上游ISP网络之间使用一个“网关”,通过对源地址的转换来达到多宿主的目的。使用类似NAT的IPv6多宿主,MHTP和MHAP等都属于网关策略。
4 一种IPv6站点多宿主机制ASI
4.1 ASI原理
ASI机制重点研究当多宿主站点与对端主机进行数据传输时,当路径发生变化时应如何维持会话存活性,使上层服务不受影响的问题。若多宿主的主链路失效,多宿主主机选择备选ISP继续通信。为了避免备选ISP边界路由器对原始报文的过滤,我们选择多宿主站点出口路由器使用属于其空间的地址替换原始IP地址,并在报文头中隐匿报文原始的IP地址。当报文到达目的站点后,对端主机对报文源地址选项进行识别。
4.2 ASI报头格式
在ASI机制报文隐匿的过程中,站点出口路由器对报文头部进行修改。在修改报头源地址项的同时,需要一个新的选项将初始源地址作为候选地址保存。这样报文到达对端主机时才能识别,将候选地址还原成源地址。同样,对端主机向多宿主主机发送报文时也需要定义一个新的扩展选项,将要隐匿的地址放入其中。
4.3 IPv6报头格式
IPv6简化了报头格式,尽管IPv6的地址长度是IPv4的四倍,但是IPv6的基本报头只是IPv4报头长度的两倍,同时取消了对报头中可选项长度的严格限制,增加了灵活性。报文头的简化使得IP的某些工作方式发生了变化。一方面,所有报头长度统一,因此不再需要报头长度字段。此外,通过修改报文分段的规则可以在报头中去掉一些字段。IPv6中的分段只能由源主机进行,该报文所经过的中间路由器不能再进行任何分段。最后,去掉IP头校验和不会影响可靠性,这主要是因为头校验和将由更高层协议(UDP和TCP)负责。下面是对IPv6报头格式的描述,如下图所示:
版本:长度为4位的网际协议版本号,对于IPv6其值为60
类别:长度为8位,指明为该报文提供了某种“区分服务”。
流标签:长度为20位,用于标识属于同一业务流的包。
净荷长度:长度为16位,它包括数据包净荷的字节长度,即IPv6报头后面所包含的字节数。
下一个报头:指出后面紧跟的IPv6报头的协议类型。它可以用来指出高层是TCP还是UDP,也可以用来指明IPv6扩展头的存在。
跳数限制:长度为8位,每当一个节点对包转发一次,这个字段就会被减1。如果该字段值为0,此包将被丢弃。
源地址:长度为128位,指出了IPv6包的发送方。
目的地址:长度为128位,指出了IPv6包的接收方。
5 ASI机制的实现研究
5.1 Linux下TCP/IP协议栈结构及特点
Linux下TCP/IP协议的体系结构可以分为四层概念模型,即应用层、传输层、网络层和网络接口层。最底层是网络接口层,主要负责数据帧的接收和发送。接收来自物理介质的数据时,把它转换到能被网络协议识别的网络缓冲区中,并传递到特定的网络进行传输。发送数据时,把来自网络层的网络缓冲区数据发送到物理介质上,并接收硬件设备产生的应答信号。网络层主要实现IP层协议,负责将数据包封装或解封,并运行必要的路由算法。传输层能够实现TCP或UDP协议,在计算机之间提供通信会话。应用层是建立在TCP/IP协议组之上的一系列用户应用程序。
5.2 ASI隐匿模块
在ASI机制中多宿主主机向对端主机发送报文时,边界路由器对报文源地址的隐匿过程主要是在网络的IP层进行。因此可以通过对IP层接收和转发数据包的代码修改实现隐匿的过程。
5.3 ASI识别模块
报文经过多宿主站点出口路由器,从候选ISP接入Internet到达对端主机,报文的识别过程也是在对端主机的IP层完成。ASI Optional Header能够被解封,将候选内容源地址重写回数据包头部,然后再交给上层处理协议。
6 ASI原型系统的评测与性能分析
6.1 实验环境
Linux中实现了对路由器基本功能的完备支持,其原理是在Linux下用普通计算机添加多个网卡,每块网卡上的设置必须符合所属子网的相关属性,在其上运行支持路由功能的操作。在Linux下通过一些基本的设置就可以配置成稳定简单、功能齐全的路由器,取代硬件路由器。
我们采用的网络测试工具是Iperf。Iperf是一个TCP/IP和UDP/IP的性能测量工具,能够提供网络吞吐率信息,以及抖动、丢包率、最大段和最大传输单元大小等统计信息,从而能够帮助我们测试网络性能。选择的软件版本是Iperf-2.0.2其安装过程是在指定目录下,按以下进行:/configure;make clean;make;makeinstall。在测量过程中,主要使用到两个命令:PING命令和Iperf命令。PING命令可以用来测量指定报文大小的往返延迟时间,即RTT的平均值。PING命令是用户测试TCP/IP配置、判断连接问题的诊断工具。一台主机通过发送一个ICMP请求报文到网上的另一台主机并随后监听返回的应答报文来检查本地主机与该机的网络连接状况。ICMP应答报文一般包含信息有:
IP地址:返回ICMP数据包的主机IP地址
字节数:返回ICMP数据包的字节数
TTL:在ICMP返回数据包中的IP头中的TTL域的值
时间:数据包从送出到返回所消耗的时间erf命令在TCP下的主要功能有:可以测量网络带宽、报告MSS/MTU(最大传输单元)值的大小和观测值、支持TCP窗口值通过套接字缓冲、当P线程或Win32线程可用时,支持多线程等等。我们使用Iperf命令来测量网络的链接速度与报文大小的关系。
6.2 测试数据及结果分析
测量报文在正常路径下(路径1)传输时的往返延迟时间RTT和多宿主主机经过路径切换后(路径2)的RTT值,对它们进行比较。测量TCP链接速度和报文大小的关系,比较TCP链接速度在路径1和路径2中的区别。通过对ASI原型系统进行验证,从几组测试数据的比较结果我们可以看出,加入了隐匿和识别模块对传输时延和TCP的链接速度都有影响。报文长度越大,RTT越大,说明报文在传输过程中的处理时间变长。报文长度越大,TCP的链接速度越大,报文改变传输路径后,隐匿和识别过程使得TCP的链接速度降低。但是降低的幅度不大,表明了ASI机制的可行性。
[1]姚晓宇,赵晨,Linux内核防火墙Netfilter实现与应用研究,计算机工程,2003年.
[2]文伟平,文伟平,卿斯汉,蒋建春,王业君,应用IPv6路径MTU探测时的防火墙设计,计算机工程,2005年.