论文部分内容阅读
随着移动互联网的迅速发展,移动IPv6将会得到广泛的应用。而目前的移动IPv6协议实现大多在Linux操作系统的用户空间运行,不但运行效率较低,而且无法在Android等基于Linux内核的操作系统中使用。为了解决这两个问题,本文将其从用户空间移植到内核中,使大部分基于Linux内核的操作系统都能高效直接地使用该实现,避免重复开发。根据软件移植的一般步骤,本文首先从Linux用户空间与内核编程的差异以及Linux网络协议栈结构特点来分析,确定移植的是可行的。其中用户空间与内核程序的区别包括启动方式、系统接口、支持函数库等的不同。在内核中可以找到类似的机制或函数来代替在用户空间中所用到的相关机制与函数。其次,本文分析了移动IPv6开源代码(即UMIP程序)的软件结构以及实现的具体方式,并将其中需要移植修改的代码分为四类,对不同类型的代码提出了不同的移植策略。接着,根据移植策略,本文从启动过程、GLIB函数库、Linux系统接口以及其他类型等四个方面来具体描述了移植的方法与过程。其中,GLIB函数库的移植包括了文件操作函数、多线程函数、互斥信号等一系列函数的移植;Linux系统接口移植包括了sysctl文件系统、ioctl接口、Netlink套接字等接口与系统调用的移植;而其他类型的移植包括了配置文件读取方式的移植等。在完成了所有代码的移植工作后,本文介绍了如何将移植后的代码加入内核源代码中,并对移植后的代码进行了编译与调试。由于移植后代码的整体调试工作量较大,目前调试工作尚未结束。下一步工作是完成调试与测试,并发布移植后的代码。