论文部分内容阅读
在移动IPv6中,无论移动节点当前在哪里接入因特网,始终都是通过其永久的家乡地址来识别该节点的。离开家乡网络时,每个移动节点都会获取一个转交地址来表示节点当前的位置,到达其家乡地址的数据包被家乡代理重定向(隧道封装)到转交地址,因此家乡代理在移动IP技术中扮演着至关重要的角色。目前移动IPv6标准尚未制定完成,但相应研究工作已经在进行,Linux凭借其开源、免费和众多丰富成熟的软件成为研究的最好平台,由HUT(赫尔辛基技术大学)开发的MIPL(Mobile IPv6 for Linux)是目前Linux下移动IPv6协议实现最为活跃的一个,目前已发行多个版本。与MIPL全部基于内核实现所不同的是,本文将家乡代理的转发功能移至用户空间来实现,既有利于对内核的小型化要求较高的应用,也保证了内核的稳定性;除此之外,未来移动设备和应用的多样性决定了移动IPv6协议实现的多样性,因此本文对后续研究有积极意义。通过对家乡代理转发机制的分析,本文将其分为以下2个操作:①建立绑定缓存;②截获发往移动节点的数据包,并通过隧道送至其转交地址。为实现上述操作,本文主要做了以下5个方面的工作:①结合1000M以太网和3GPP技术,对家乡代理的转发能力进行了分析,从而选择了hash为查找算法,并设计了绑定缓存的数据结构。②对ICMPv6的邻居通告消息的数据结构进行了详细的分析,结合RFC3775,确定了该消息中各域的取值。③在对iptables命令进行详细了解的基础上,对iptables提供的libiptc库函数中涉及规则添加的源码进行了分析,并设计了规则添加的程序模块。④对比了ip_queue和libnetfilter_queue两种数据包的传输和操作机制,在择优选择后者的基础上,通过该API设计了完成数据包从内核排队至用户空间的程序模块。⑤结合ip6ip6.c源码,分析了Linux下IPv6 in IPv6隧道的实现机制,通过系统调用的方式设计了家乡代理转发机制的隧道模块。通过上述工作,基本完成了Linux中家乡代理转发机制的大致功能,但目前这只是一个粗略的实现,未考虑绑定更新对转发机制的影响,此外,iptables的规则未能实现通过程序写入,需要人工进行录入。