Mobile IPv6平台移植步骤


在Mobile IPv6平台移植过程中,我们通常使用C语言来编写代码,可以保持普遍的语言统一性。现在,我们来了解Mobile IPv6协议栈的主要部分,那么分为四个功能体: 通用功能体、内核功能体、适配层、安全机制。本文主要针对通用功能体进行说明,其余的内容将在《Mobile IPv6功能体实现》中进行说明。

MultiPlat Mobile IPv6三个部分的实现都采用大多数操作系统编译器支持的标准C语言编写,这样可以保持语言的统一性。

通用功能体是协议栈的主要部分,它包含协议栈中绝大多数的代码,该部分源代码禁止直接调用基于平台的系统函数,采用统一的适配层接口函数调用操作系统相关功能。它是在MultiPlat Mobile IPv6平台移植过程中保持不变的部分。

内核功能体是移植过程的重要部分,移植的主要工作集中在重新编写这一部分的代码模块,它的实现需要根据实际情况选择具体的实现方式,我们选择模块安装的方法插入操作系统核心。不建议修改操作系统内核源代码,如修改操作系统源代码,操作系统升级可能产生新的移植工作,而且大多数的操作系统为非开源系统,修改源代码并不可行。

适配层起到连接通用功能体与内核功能体以及操作系统的桥梁作用,它直接关系到通用功能体通用性。适配层向通用功能体提供统一的通信接口函数、线程管理函数以及定时函数,避免通用功能体直接调用形式各异的操作系统API函数。

◆通用功能体实现

通用功能体集中了Mobile IPv6协议大多数逻辑处理过程,根据移动相关控制命令报文,触发操作过程,并维护移动相关数据,是移动切换,路由优化,移动状态数据产生和维护的管理过程。通用功能体是MultiPlat Mobile IPv6的核心部分,主要完成以下三个方面的功能:移动设备发生移动时根据相关网络信息发现新的链路,在新的链路中注册得到CoA地址,通知HA和CN并进行绑定,在MN和CN之间建立路由优化关系;产生并定期维护移动状态信息BC和BUL表);将最新的BC和BUL表信息通知内核功能体,保持准确的接收和发送状态。

通用功能体启动消息处理线程和定时器线程两个关键线程。消息处理线程是一个循环监听过程,通过适配层的通信接口得到Mobile IPv6需要处理的MH报文MH报文是Mobile IPv6定义的移动相关命令报文)以及ICMP报文,根据具体报文类型和参数分别启动移动切换、RR过程、家乡注册、CN注册等过程、创建并管理BC、BUL表项;定时器线程根据定时器链表定期维护BC、BUL表,调度其它需要定时操作的过程。

MultiPlat Mobile IPv6不采用RAW SOCKET机制截获Mobile IPv6需要处理的MH报文以及ICMP报文,而是采用内核功能体从NIC驱动程序上端直接截获将其存入缓冲区,并通过适配层函数向通用功能体传送的方法实现,这样做的原因是不同操作系统RAW SOKET机制存在很多差异,不利于通用功能体代码通用性,采取自己截获的方法易于统一接口。

通用功能体代码在MultiPlat Mobile IPv6中占绝大多数,是协议栈中最复杂的处理过程的集合。由于通用功能体需要启动消息处理线程和定时线程进行管理,并由内核截获的网络控制报文驱动相关处理。这些过程必定调用操作系统相关函数包括线程管理函数、定时函数以及内核通信函数),这些函数因操作系统不同而不同,为了使通用功能体程序代码保持通用性,我们不直接调用系统相关函数。适配层为其定义一套类似的调用函数,这些函数对通用功能体保持统一的函数名称和参数格式,以此屏蔽平台差异。

相关内容