Mobile IPv6功能體實現(xiàn)
前面我們對Mobile IPv6通用功能體實現(xiàn)進行了詳細的說明,現(xiàn)在我們把剩下的部分,也就是內(nèi)核、適配層、安全機制的功能實現(xiàn)在進行一個具體的講解。那么,詳細的過程請參照下文。
◆Mobile IPv6內(nèi)核功能體實現(xiàn)
內(nèi)核功能體與操作系統(tǒng)直接相關(guān),需要根據(jù)操作系統(tǒng)具體情況選擇合適的實現(xiàn)方式,內(nèi)核功能體截獲上下行的IP數(shù)據(jù)報文,為通用功能體提供網(wǎng)絡(luò)控制消息,并轉(zhuǎn)發(fā)通用功能體發(fā)出的控制報文;同時也是數(shù)據(jù)報文處理者,負責添加、刪除報文的移動信息(Type2路由擴展頭,家鄉(xiāng)地址選項),封裝解封裝IP隧道,向IPv6協(xié)議棧提交還原的普通IP數(shù)據(jù)報文、發(fā)送添加了移動信息的IP數(shù)據(jù)報文。
內(nèi)核功能體與操作系統(tǒng)平臺緊密相關(guān)。它的實現(xiàn)需要解決兩個問題:
(1)IP報文截獲機制;
(2)內(nèi)核態(tài)與用戶態(tài)程序之間通信機制。
這里分別以Linux和Windows操作系統(tǒng)平臺為例介紹內(nèi)核功能體的實現(xiàn):
Linux平臺內(nèi)核功能體實現(xiàn)采用Net_filter、NetLink兩種機制,前者是網(wǎng)卡與網(wǎng)絡(luò)驅(qū)動程序之間編程接口、后者是用戶態(tài)程序與核心態(tài)程序通信的編程接口。利用Net_filter機制直接截獲IPv6網(wǎng)絡(luò)協(xié)議程序與網(wǎng)卡驅(qū)動之間的上下行IP報文,實現(xiàn)IP報文截獲。在Net_filter內(nèi)部使用NetLink的通信接口與通用功能體之間進行數(shù)據(jù)通信。
Windows平臺內(nèi)核功能體的實現(xiàn)類似于Linux,Windows的NDIS(Network Driver Interface Specification)機制(網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范)和WDM(WIN32 DRIVER MODEL)機制(設(shè)備驅(qū)動編程模型)分別提供了Windows平臺下截獲IPv6網(wǎng)絡(luò)協(xié)議層與網(wǎng)卡驅(qū)動之間上下行IP報文以及內(nèi)核功能體與通用功能體之間的數(shù)據(jù)通信機制,在NDIS中嵌入WDM結(jié)構(gòu)完成內(nèi)核功能體功能。其他操作系統(tǒng),內(nèi)核功能體的實現(xiàn)需要根據(jù)實際情況選擇合適的機制。
雖然內(nèi)核功能體根據(jù)不同的操作系統(tǒng)需要分別編寫,但它內(nèi)部的基本功能模塊相同,將其再次劃分,區(qū)分出邏輯處理模塊和非邏輯處理模塊(內(nèi)核結(jié)構(gòu)性模塊),將邏輯處理模塊統(tǒng)一編寫成為一個函數(shù)調(diào)用庫,采用比較好的封裝方法使得這些小的功能模塊在不同的操作系統(tǒng)內(nèi)核程序中可以被調(diào)用,不需要再重新修改。內(nèi)核功能體的編寫工作關(guān)鍵是根據(jù)操作系統(tǒng)平臺的不同將這些小邏輯模塊依據(jù)具體操作系統(tǒng)內(nèi)核結(jié)構(gòu)特點合理的組合,使其共同完成內(nèi)核功能體功能。
◆Mobile IPv6適配層實現(xiàn)
通用功能體是否能保持源代碼通用性,關(guān)鍵在于適配層的封裝質(zhì)量,適配層向通用功能體提供統(tǒng)一接口的相關(guān)函數(shù)。該層中包括內(nèi)核態(tài)與用戶態(tài)之間的通信接口函數(shù)、線程管理函數(shù)、定時函數(shù):
1) 通用功能體調(diào)用適配層通信接口監(jiān)聽并讀取MH、ICMP報文,其反饋的MH和ICMP報文通過通信接口通知內(nèi)核功能體轉(zhuǎn)發(fā)到移動網(wǎng)絡(luò)。通用功能體管理的相關(guān)狀態(tài)數(shù)據(jù)需要依靠通信接口即時地通知內(nèi)核功能體數(shù)據(jù)管理模塊,保持狀態(tài)數(shù)據(jù)信息同步;
2) 通用功能體調(diào)用線程管理函數(shù)管理控制線程,不同系統(tǒng)的線程管理函數(shù)各不相同,但線程管理函數(shù)的功能基本類似,包括線程產(chǎn)生,關(guān)閉,互斥等基本操作。為保持通用功能體代碼的通用性,適配層為其提供統(tǒng)一函數(shù)名稱和參數(shù)格式的線程管理函數(shù),內(nèi)部使用預(yù)編譯方法區(qū)別不同操作系統(tǒng)下的具體的函數(shù)實現(xiàn);
3) 通用功能體需要定期的維護移動相關(guān)信息,微秒到毫秒級的定時函數(shù)由操作系統(tǒng)提供,適配層同樣采用預(yù)編譯的方法統(tǒng)一封裝操作系統(tǒng)定時函數(shù)
◆Mobile IPv6安全機制實現(xiàn)
移動IPv6安全包括三個方面:HA注冊過程及CN注冊過程的安全保障;MN與CN之間的安全保障;HA與MN之間的安全保障。
1) 根據(jù)RFC3775規(guī)定HA注冊過程及CN注冊過程的安全保障由RR過程來完成,在通用功能體中得以實現(xiàn);
2) MN與CN之間的安全保障,可以采用通用IPsec機制實現(xiàn),這種機制實現(xiàn)在Mobile IPv6以上的網(wǎng)絡(luò)層次,這里不做特殊處理,值得注意的是在IPsec配置時需要針對MH的HoA地址配置;
3) HA與MN之間的安全是必須得到保障的,選擇在內(nèi)核功能體中實現(xiàn),采用手動方式配置安全策略,IP包截獲接口,監(jiān)督上下行的數(shù)據(jù)包,發(fā)現(xiàn)與HA通信的IP報文,根據(jù)HA和MN之間的IPsec策略配置調(diào)用安全模塊封裝解封裝IP數(shù)據(jù)來確保安全傳輸。