移动IPv6技术的研究及其在Linux环境下的实现

来源:互联网 发布:sas数据分析 编辑:程序博客网 时间:2024/04/30 13:11
http://shop.zte.com.cn/main/include/showemagazinearticle.jsp?articleId=280&catalogId=12165
摘要:文章简介了当前移动IPv4和IPv6的研究情况,着重讨论在一个纯IPv6的环境下移动IPv6协议软件设计中的几个问题。
关键词:移动IPv6;本地代理;移动节点;切换
Abstract:The advances of studies on mobile IPv4 and mobile IPv6 technologies are outlined, and some problems in the design of mobile IPv6 protocols under pure Linux are discussed.
Key words:Mobile IPv6; Home agent; Mobile node; Handover
 互联网经过近20年的发展,现有的IPv4(互联网协议版本4)协议面临着一些难以解决的问题,同时各类应用的扩展对IP协议也提出了新的要求。

  IPv6的主要技术特征表现在:全新的IPv6地址管理方案;对安全性的特别支持;对移动性提供了内在的支持;对服务质量的扩展支持;定义了流的优先级,分别支持不同的业务需求等。与IPv4比较,IPv6彻底解决了地址空间耗尽和路由表爆炸等问题,而且使支持安全、主机移动以及多媒体成为IP协议的有机组成部分。该协议可使路由器处理报文更加简便,扩展性也更好。目前,IPv6的实验网6Bone已在全球扩展,IP协议从IPv4过渡到IPv6的轮廓已经越加清晰。

  1 新业务对移动性的需求

  目前先进的高速数据传输网络正在建设中,用不了多久就会有大量新颖而有趣的服务供移动用户选择。这些新服务的出现必将大量增加对IP地址的需求,不仅移动电话和其他个人电子设备需要IP地址,那些需要通过互联网交换信息的设备,如汽车、自动售货机、家用电器和其他机器设备等都必须有IP地址。

  IPv6扩展了地址空间,它的128位地址与IPv4的32位地址相比,几乎可以无限制地提供新IP地址。除外,IPv6还具备其他重要的优点,如支持规模更大的网络结构,改进了数据的安全性和完整性,具有自动配置、移动计算、数据组播和更有效的网络路由聚合等功能。现有因特网的连接范围和对象有了极大的扩展,特别是移动性主机所占比例的逐步增加,给IP协议提出了新的要求。IPv4对移动IP提供支持,一般是通过本地代理(Home Agent)和外地代理(Foreign Agent)的相互作用实现的。移动主机到达新的子网后,寻找外地代理,并通过外地代理向本地代理进行位置更新。本地代理解析移动主机的地址,把其他主机发给移动主机的报文通过本地代理和外地代理间的隧道传送给移动主机。这种解决方案在处理迂回路由和小区移动时存在困难。

  IPv6对移动性提供了内在的支持。首先,路由器在多播路由器广告报文时,指示了它是否能担任本地代理。同一个子网内允许多个本地代理存在,移动主机可以向任意一个本地代理注册。本地代理中保存有移动主机的固有地址和转交地址(Care-of Address)的对照表,收到发送给移动主机的报文后,根据对照表把报文转发给移动主机。其次,每当移动主机收到其他主机发来的报文后,在响应报文中以现有地址作为源地址,并要附带上移动主机的固有地址。其他主机的后续报文以移动主机的现有地址为目的地址,但是要附带源路由选择头,报头内容为移动主机的固有地址。使用这种机制的目的是保证移动主机在移动过程中也不会丢失报文。最后,IPv6中定义了重定向过程。当移动主机在小区间切换时,移动主机重新登记成功后,基站应该向原来的基站发重定向包文,使切换过程中路由有偏差的报文重新找到移动主机。

   2 目前移动IPv4以及移动IPv6的研究状况

  移动IP于1996年6月由IESG(Internet Engineering Steering Group)通过,并于1996年11月公布为Proposed Standard。对于移动IPv4,IETF的移动IP工作组(IP Routing for Wireless/Mobile Hosts)制订了一系列标准。但是,到目前为止移动IPv6的标准仍在制订的过程中,其中的建议正作为Internet-Draft在激烈讨论之中,并经历了多次版本的更新,到目前为止最新的草案(Draft)为第16版本的Mobility Support in IPv6 (http://www.ietf.org/internet- drafts/draft- ietf- mobileip-ipv6-16.txt)。
目前世界上有很多组织或者机构在对移动IPv4和移动IPv6进行研究,并且有一些在不同操作系统上开发出来的实验系统。下面按照不同的操作系统来分别介绍。

  2.1 Linux系统下的实验系统

   (1)MosquitoNet Mobile IP Implementation:该系统是由MosquitoNet小组研制开发的移动IPv4的软件。MosquitoNet小组属于美国斯坦福大学计算机科学和电子工程系的计算机系统实验室。MosquitoNet移动IP依照的是RFC 2002标准。小组开发的目的有两个:一是作为移动计算试验床的一个组成部分,提供透明的移动功能;二是寻找移动IP的应用方法。

  (2)Dynamics Mobile IP System:该系统是由芬兰赫尔辛基技术大学通信与软件工程学院的成员研究开发。该移动IP系统是一个分级系统,主要考虑应用于无线环境下,其802.11 b Dynamics系统主要用于Linux系统,但是它的移动节点(MN)的功能部分可以运用于Windows操作系统(如Win98,Win Me,Win NT4等)。

  (3)Lancaster Mobile IPv6 Package:该系统是由英国兰卡斯特大学(Lancaster University)的计算机系的IPv6小组开发的,但是从1998年3月6日以来该项目就一直未更新。

  (4)MIPL Mobile IPv6 for Linux:该系统最早是由芬兰赫尔辛基技术大学的HUT Software Project项目开发,现在由赫尔辛基大学的通信与多媒体实验室的GO/Core项目组负责后续的开发工作。MIPL项目更新速度快,并且支持最新的Linux内核版本。该项目基于GNU GPL(通用公共许可证)的条款发行最新版本。

  2.2 BSD系统下的实验系统

   (1)Monarch Project Implementation:Monarch Project项目属于美国卡耐基梅隆大学的计算机科学学院。项目主要集中研究支持无线和移动主机的网络,内容包括协议设计、实现、性能评估等等。移动IP是该项目的一个子项目,已经发行了移动IPv4软件包和移动IPv6软件包。

  (2)Secure Mobile Networking Project:该项目属于美国波特兰州立大学,开始于1995年7月,最初由DARPA资助。其主要目的是开发高性能的安全移动网络。该项目将IPSec与Mobile IP集成起来,使移动无线节点收发的所有包都在IPSec的保护之下。

  (3)KAME Project:这是由日本WIDE(Widely Integrated Distributed Environment)组织从事IPv6/IPSec协议栈开发的项目组开发的。目前协议栈中移动IPv6的功能正在开发之中。

  2.3 Unix系统下的实验系统

  Solaris:SUN公司一直从事Mobile IP技术的研究,并且积极参与IETF关于IPv6标准的制订工作。目前发布的Solaris 8已经支持IPv6。SUN公司的Mobile IP Implementation是基于Solaris操作系统的,但不支持移动IPv6,但是SUN公司已经表示要在后续版本中支持移动IPv6。

  2.4 Windows系统下的实验系统

  (1)University of Bucharest Implementation:该项目是罗马尼亚布加勒斯特理工大学(POLITEHNICA University of Bucharest)控制与工业信息学系和柏林开放通信研究院的一个联合项目,所实现的移动IP采用Windows驱动程序编程。

  (2)Microsoft MIPv6 Project:微软公司一直积极参与IPv6协议栈的研发工作,继2001年发布IPv6的协议栈软件包后,微软公司在最新的Windows XP操作系统中已经内置支持IPv6。在移动IPv6的研究上,微软和英国兰卡斯特大学合作,在LandMARC Project的基础上推出了基于Win2000的移动IPv6软件。

  下面以我们自己开发的BMTS系统为例,说明Linux系统下移动IPv6的实现。图1为开发测试环境示意。

326x224
图1 BMTS系统的开发测试环境

  3 移动IPv6 BMTS系统简介

  该系统的设计目的是在一个纯IPv6环境下,设计并实现移动IPv6协议软件,使计算机设备可以在物理空间自由移动(具体实现时可以模拟为将它的网线连接到另外一个子网),并且不用手工配置任何网络信息(如IP地址、网络号、路由器等)就能够继续通信,且保持网络连接不中断。

  BMTS实验系统的硬件平台包括:3台主机??一台作为本地网(Home Subnet)的本地移动代理,一台作为移动主机,一台是与移动主机通信的固定主机;3个IPv6子网??一个是移动主机所属的本地网,一个是移动主机漫游到的外网(Outer Subnet),一个是固定主机所在的固定网络;一台IPv6路由器,用来连接3个网络,可以用本地移动代理主机和固定主机兼作路由器。

  BMTS系统的软件平台包括操作系统和IPv6协议栈,选用Linux操作系统作为开发环境(具体选用产品为Redhat Linux 7.1)。这是因为,目前Linux已经在操作系统内核中支持IPv6协议栈;Linux操作系统具有完全开放的源代码以及大量的网络资源;内核代码TCP/IPv6协议栈部分结构清晰,便于理解。支持IPv6的网络应用软件Redhat Linux 7.1操作系统中已经包含了ping6命令,可以测试各个主机间IPv6的连通性。另外在Linux系统上有支持IPv6协议的FTP软件和TELNET软件,这两个软件都能保持长时间的TCP连接,有利于测试设备的移动性。最新版本的Apache web服务器(Apache 2.0.32 Beta)也支持IPv6,可测试移动环境中对HTTP协议以及多媒体业务的支持。

  4 BMTS系统实现中的几个问题

  在系统选型时,我们通过对BMTS系统结构和几种操作系统内核的分析,决定在Linux Netfilter的基础上开展研究和开发工作。下面简要介绍其工作机制。

  4.1 Netfilter 框架简介

  Netfilter是由Paul Russell提出的一个新型的分析处理特定协议数据包框架。在该框架的基础上,Paul Russell在Linux系统上构造了一个非常精简、高效、易于扩展的包过滤系统IPtables,它克服了以往ipfwadm和ipchains等两种包过滤系统的一些弊病,为构筑安全的防火墙和进一步开发安全系统提供了支持。

  Netfilter是不同于通常的Berkeley套接字接口的协议数据包处理框架。它的主要思想是:Netfilter在每种协议的处理过程中定义了一些检查点(称作hook),目前已经支持IPv6协议。在每个检查点协议以数据包和hook号为参数来调用执行Netfilter框架;部分内核程序可以注册监听每个协议的不同hook。这样,当一个数据包被传送到Netfilter框架后,它检查是否有程序在注册监听这种协议的数据包,并进一步执行相关的检查和处理。

  Netfilter是在协议栈中不同点上建立一系列的hook。当数据传输时,数据包到达系统后经过了简单的完整性检查,如数据包是否应被截取,IP 检查和正确否,是否混杂模式等;然后将数据包传递给Netfilter的NF_IP_PRE_ROUTING模块;接着数据包进入路由选择模块,由路由代码来判定它们是要转发给另一接口还是要发送给本地进程,并丢掉不能路由的数据包。基于Netfilter软件的开放结构,我们构造了本课题所要求的移动IPv6 BMTS系统。实现移动IPv6系统最关键的一点就是能够正确拦截并修改与移动IPv6相关的IP包,而对于其他正常的IP包不作任何改动。Netfilter框架正好提供了这种能力。

  4.2 在Netfilter框架上实现移动IPv6协议

  Netfilter的设计开发者在Linux内核中实现了IPv4以及IPv6协议的Netfilter框架。在这个框架之上,Netfilter的设计实现者可以实现功能很丰富的包处理软件。利用Netfilter框架,对于从本机发出去的IPv6包,可以用NF_LOCAL_OUT hook来拦截它们,并判断是否属于移动IPv6协议的包。如果不是,则不作任何改动,将这些包发送出去;如果是移动IPv6协议的包,则将它们递交到相应的移动IPv6处理模块。该模块按照移动IPv6协议规范,或者改动包的内容将其重新放入内核协议栈后发送出去,或者是从该包中获取需要的信息后将其丢弃。同样,对于从网络中接收到的IPv6包,操作基本相同,只不过包的流动方向相反。即使用Netfilter框架的NF_PRE_ROUTING hook拦截收到的IPv6包,判断并递交到移动IPv6处理模块进行处理,然后重新放入协议栈,交给相应的上层应用软件。

  4.3 基于Linux系统的几个关键技术

  通过实验,本系统解决了在移动IPv6环境中如何收发IPv6_in_IPv6 Tunnel包;本地代理如何拦截发给移动节点的包;如何实现移动检测;如何让移动节点正确发送IPv6包;在离家时发送包;在离家时接受通信数据包;移动检测;发送绑定更新;接收绑定确认;接收绑定请求等细节,并达到了预定的目标,组建了演示系统。图2表示了移动节点处理接收BRO消息的流程。

382x283
图2 移动节点处理接收BRO消息的流程

  5 展望

  移动IPv6是一个庞杂的协议,包含的内容非常多,而且目前还在继续发展。我们项目组的研究目标不仅仅是在Linux操作系统上开发一个移动IPv6的演示系统。由于课题、人力资源和时间的限制,系统在实现的时候作了较大的简化,不少移动IPv6系统在部属时候要求的功能没有在这一期的研究工作中包含进去。下面是以后的工作中我们应予以关注的几个方面:

  (1)DHAAD:动态的本地代理地址发现(DHAAD)技术在实际部署移动IPv6系统时非常有用。

  (2)注册安全:目前移动IPv6面临的最大问题就是安全问题。

  (3)与路由器的完美结合:目前的系统是利用一台独立的主机作为本地代理,该代理与网络中别的主机是平等的。实际上本地代理最好能够作为路由器软件的一部分存于路由器中。下一步应考虑如何将本地代理的功能移植到路由器软件中。

  (4)网络快速切换:本系统目前是利用路由器宣告的消息作移动发现处理,这样做简单、方便,缺点是速度慢,可靠性需进一步改进。在一些关键应用中,秒级的延迟都可能是不被容许的。

  虽然如此,移动IPv6又是一个设计精巧的协议,虽然目前还有一些缺陷,但我们可以看到,移动IPv6协议的前景是非常光明的。在可以预见的未来,我们将可以充分享受移动IPv6给我们带来的便捷,自由徜徉在移动信息社会里。

  参考文献

1 Postel J.Internet Protocol.RFC791, 1981
2 Postel J.Internet Control Message Protocol. RFC792, 1981
3 Postel J.Transmission Control Protocol. RFC793, 1981
4 Postel J.User Datagram Protocol. RFC 768, 1980
5 Hinden R, Deering S. IP Version 6 Addressing Architecture. RFC 2373, 1998
6 Deering S, Hinden R. Internet Protocol, Version 6 (IPv6) Specification. RFC2460, 1998
7 Narten T, Nordmark E, Simpson W. Neighbor Discovery for IP Version 6. RFC 2461, 1998
8 Thomson S, Narten T. IPv6 Stateless Address Autoconfiguration. RFC 2462, 1998
9 Conta A, Deering S. Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification. RFC2463, 1998
10 Conta A, Deering S. Generic Packet Tunneling in IPv6 Specification. RFC 2473, 1998
11 Perkins C, David B J. Route Optimization in Mobile IP. Internet draft, 2000
12 David B J, Perkins C. Mobility Support in IPv6. Internet draft, 2000
13 Perkins C. IP Mobility Support. RFC 2002, 1996
14 James D S. Mobile IP: The Internet Unplugged[M]. Prentice Hall, 1999
15 Christian Huitema.新因特网协议 IPv6.陶文星,等译.北京:清华大学出版社,1999
16 Rusty Russell. Netfilter Hacking HOWTO, 1999. http://www.mattgillen.net/netfilter/netfilter- hacking- HOWTO.html
17 Rusty Russell. Iptables HOWTO 1999. http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables- HOWTO.html
18 Ori Pomerantz. Linux Kernel Module Programming Guide. iUniverse.com, 1999

原创粉丝点击