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