當前位置:學問君>學習教育>畢業論文>

嵌入式精簡TCP/IPV6協議棧的設計與實現

學問君 人氣:2.14W

畢業論文

嵌入式精簡TCP/IPV6協議棧的設計與實現

摘 要:本文透過對常用 IPV6 技術的研究和分析,針對嵌入設備處理速度慢,存儲容量小
等特點,對常用 TCP/IPV6 協議棧進行了裁減和簡化,裁減掉1些不常用但不影響基本通信 功能的協議模組,同時對要保留下來要實現的各個協議進行簡化,只實現其基本功能。設計完 成實現後的協議棧,具有代碼量少,執行效率高和良好的可移植性等特點,適合於各種嵌入 式設備,是1種解決嵌入式設備接入 IPV6 網絡的可行方案。 關鍵詞:IPV6;嵌入式操作系統;鄰居發現;ICMPV6;地址解釋
中圖分類號:TP311
1. 引言

嵌入式Internet技術是指把Internet技術 應用於嵌入式設備, 實現嵌入式設備的資訊 交互,是嵌入式技術與Internet技術的結合, 具有非常廣大的市場前景。目前不少廠商都 在進行這方面研究, 並推出了不少嵌入式 Internet解決方案,比較常用的成熟的解決方 案有,瑞士計算機科學院Adam Dunkels寫的 ulP和 LWIP,它們以IPV4技術爲基礎,以精 簡爲指導思想,把複雜的TCP/IP技術引入嵌 入式設備,滿足嵌入式設備接入網絡的需 求。而作爲IPV4改良版本的IPV6,是對IPV4 的升級和改進,是下1代網絡的核心,如何 以IPV6技術爲基礎,設計1款和嵌入設備結 合的具 有 代碼量 少 ,功能 簡 單的精簡 TCP/IPV6協議棧是1件非常現實意義的挑 戰,也是本課題設計的目的所在。
2. IPV6 協議棧

IPV6協議棧是基於IPV6網絡層的協議, 和IPV41樣,遵循現有互聯網4層網絡互聯 體系結構,如圖1所示。從圖中我們可以看到, 協議棧分爲網絡接口層,互聯網
層,傳輸層,應用層4層。應用層直接面 向用戶,並提供訪問其它層服務的功能;傳 輸層用於提供源主機和目的主機上的對等 實體對話;網絡接口層屏蔽了具體的硬件實
現細節,負責底層數據的接收和發送;網絡
層是整個TCP/IP體系結構的關鍵部分,其主 要功能是在網絡上提供可靠的主機到主機 的數據傳送。IPv6協議正是位於該層,它包 含的主要協議模組有IPV6,ICMPV6,鄰居發 現ND,IPsec等。

2.1 IPV6 協議
根據RFC2460對IPV6功能的描述,IPV6 主要負責把上層來的數據段添加IPV6報頭, 交由底層發送;把下層接收到的報文經過處 理和分析,交給TCP,UDP或ICMPV6處理。 和IPv4相比 IPv6的改變主要集中在以下幾 個方面:地址容量的擴展,報頭格式的簡化, 支援擴展和選項的改進,數據流標籤的能力,認證和保密的能力等[1]。
2.2 ICMPV6 協議
ICMPV6協議合併了IPv4中ICMP(控制 報文協議),I- GMP(組成員協議)、ARP(地 址解析協議)等多個協議的功能,實現差錯 控制,地址解釋等功能,並支援Mobile IPv6。 ICMPV6報文封裝在IP報文中,是IP報文的 有效載荷數據,它透過它的各種錯誤報文和 資訊報文的交換來實現差錯控制,地址解釋 和路由前綴資訊獲取等功能。
2.3 鄰居發現(Neighbor discovery) 協議
鄰居發現協議ND是IPv6協議棧中的核 心協議,是IPV6解決鄰節點交互的1個重要 協議。它定義了下列問題的解決機制:路由 發現,前綴發現,參數發現,地址自動配置, 地址解釋,下1跳決定,鄰居不可達,重複 地址檢測,重定向。鄰居發現的這些功能是 透過5個ICMP報文(鄰居請求/鄰居通告報 文,路由器請求/路由器通告報文,重定向報 文)的交換來實現的。

$False$


3. IPV6 協議棧的精簡

協議棧精簡的核心是“微型化”,我們對 協議棧進行協議模組裁減和單個協議簡化。

3.1 協議模組裁減
協議模組裁減是指在保障基本通信功 能的前提下儘可能去掉1些協議模組,節省 系統資源。網絡接口層我們只考慮 802.3 以 太網協議(CSMA/CD,MAC,LLC),不考 慮面向 CAN,RS-232,RS-485,射頻,藍牙等 相關的支援模組。接入方式上只考慮用路由 器接入方式,不考慮撥號連接方式,去掉和 撥號連接方式相關的面向點對點連接的 PPP 協議和 SLIP 協議,這兩個協議在網絡 接口層佔用的代碼量比較多;IP 層只實現基 本的報頭,不實現擴展報頭,去掉基於認證 頭和封裝安全載荷頭選項的 IPsec 協議,安 全控制交給其他層。ICMPV6 和 ND 是核心
協議必須保留;傳輸層 TCP 和 UDP 可以全 部實現也可以只實現1種,考慮的適應性, 本設計中都給予實現。因此協議模組裁減後 要實現的核 心協議族 爲 802.3 , IPV6 ,
ICMPV6,ND,TCP,UDP。
3.2 單個協議簡化

單個協議簡化是指以單個協議爲目標, 進行功能和數據結構的簡化。對 IPV6 協議 來說,只接收,發送報文,不支援報文的分 片與重組,不支援擴展報頭選項,對可靠連 接傳輸來講,包過大得不到確認,會根據擁 塞控制機制和重傳機制,減少數據分組長 度,進行重新發送,對大多數應用來說這不 會產生其他嚴重問題。對 ICMPV6 來說,只 實現錯誤報文中的目的不可達報文,資訊報 文中的應答回覆報文,不實現超時報文,報 文過大報文和應答請求報文,1般包過大, 超時報文由路由器實現,應答請求報文用於 主動測試中發起測試的 PC 機1端。對鄰居 發現 ND 模組來說,只實現鄰居請求和鄰居 應答報文,嵌入式設備剛接入網絡,它可以靜 態的等待網絡上路由器定時發送的路由公 告報文,而不是主動發送路由請求報文來獲 取,不需實現路由請求/路由應答報文。嵌 入式設備連接的鄰居接點,路由1般簡單, 傳輸量少,不需重定向報文來進行路由定 向。簡化的大塊在 TCP,TCP 是整個協議簇 中最複雜,代碼量最多的協議。它的功能模 塊有:滑動視窗,流量控制,擁塞控制,TCP 連接狀態機,往返時間估計,重傳協議。本 協議棧的目標是有操作系統支援的嵌入式 系統,速度和存儲量比 8 位和 16 位單片機 都有提高,不必採用分配固定緩衝區的形式 進行接收1幀處理1幀,可以考慮採用分配 1個較大的緩衝區實現滑動視窗機制,用來 提高傳輸效率,實驗證明,傳輸效率的提高 是明顯的,往返時間估計和重傳機制比較簡 單,代碼量不大,可以實現,TCP 狀態機表 示 TCP 進程通信的狀態遷移,是 TCP 的核
心必須實現,可以不實現流量控制機制,因
爲流量不是很大。因此 TCP 模組實現的功 能有:TCP 有限自動機,滑動視窗,往返時 間估計,重傳協議。忽略流量控制與擁塞控 制模組,在可靠連接中,當因擁塞而發生數 據丟失的時候,發送方收不到確認就採用重 傳機制重發數據[2]。
4. 嵌入式精簡 IPV6 協議棧的設
計與實現

在設計協議棧過程中,我們在嵌入式操 作系統基礎上設計和實現1個操作系統模 擬層,實現基本的時鐘,消息管理和進程同 步等基本操作系統功能。協議進程方面,把 所有的協議棧封裝到單獨進程中,應用程序 可以駐留在其中或作爲1個單獨的進程,這 樣既實現了與操作系統分離,又避免了層間 切換。對於內存管理採用類 BSD buf 結構, 把靜態緩衝區和動態緩衝區連結起來[3]。
4.1 IPV6
IPV6 模組主要用於完成對接收到的 IPv6 數據報進行處理,對需要發送的 IPV6 數據包進行構造並遞交底層發送。當接收到 1個數據包時,網絡設備驅動調用 ip_input() 函數來對其 IP 報頭進行檢查,檢查其版本 號,報文長度,載荷長度,目的節點地址和 下1報頭,待檢查無誤後,根據下1包頭的 類型分別提交給不同的處理模組。當要發送 數據時 , 必須要知道發 送報文的下 1跳 IPV6 地址,以及該地址的相對應 MAC 地址, ip_route()函數就是爲實現這樣的功能而設 計的,其獲取下1跳 IPV6 地址與其對應
MAC 地址的處理流程如圖 2 所示。 圖中,目的快取用來存儲着1系列最近 的報文流量與對應的.下1跳 IP 位址的關係,
前綴列表存儲着1系列子網前綴和其他地 址前綴及其對應的下1跳 IP 位址的關係, 如果兩者中都沒有找到匹配的記錄,則再從 前綴列表中選擇默認路由器作爲傳輸的下 1跳 IPV6 地址。

在成功獲取了下1跳 IPV6 地址後,數
據就進入傳輸階段,傳輸階段由 ip_outputif() 函數控制,ip_output()函數填充好報頭,選擇 好發送網絡接口,然後激活發送網絡接口進 行數據發送[4]。
4.2 ICMPV6
ICMPV6 負責接收, 解釋和發 送 ICMPV6 報文。收到報文後,如果爲鄰居信 息報文則轉交給鄰居發現模組,如果爲診斷 報文則交給 ICMPV6 診斷模組。ICMPV6 模 塊只實現了應答回覆報文,目的不可達報 文。當處理到達的 IP 報文時,如果下1報 頭既不是 TCP,UDP 也不是 ICMPV6,那麼 表示在嵌入式設備端的協議棧的已經到達 IP 層,是端口不可達,發送目的不可達報文。 當收到 ICMPV6 的應答請求報文時,就發送 應答回覆報文,其格式與請求報文相似,在收 到的請求報文的基礎上改變報文類型,重新 計算校驗和,
在 IP 報頭中將源,目的地址對調就可 以了。


4.3 鄰居發現
鄰居發現是精簡 IPV6 協議簇最核心的 協議,它利用鄰居請求報文和鄰居公告報文 的交換,實現地址解釋,地址重複性檢測, 以及地址自動配置功能。不實現路由器請求
/路由器公告報文,和重定向報文。
●鄰居請求報文
類型值爲 135,報文 IP 頭的源地址域爲 發送鄰居請求報文接口的地址或者未指定, 目的地址域爲與被請求目標地址相關聯的 被請求節點組播地址,或者就是被請求目標 地址本身。ICMPV6 報頭域中的目標地址域 爲被請求目標地址。選項域可以包含源鏈路 層地址選項,用來告訴對方發送請求節點的 MAC 地址,當源地址爲指定
地址時必須包含該選項。
●鄰居公告報文
類型值爲 136,用來響應鄰居請求報文, 或者用來告知節點其鏈路層地址的改變,報 文 IP 頭的源地址爲發送鄰居公告報文的接 口地址,目的地址爲發送鄰居請求的單播地 址,或者是用來公告給所有鄰居節點其鏈路 層地址改變的全節點多播地址。目標地址就 是被解釋的 IPV6 地址,或者在地址唯1性
驗證中將要採用的 IPV6 地址。 地址解釋就是節點僅僅知道鄰居節點
IP 位址的情況下,透過發送鄰居請求報文和 接收鄰居公告報文,來得到對應節點鏈路層 地址的過程,是鄰居發現模組中最重要的1 個功能模組,其處理過程如圖 3 所示。

節點 A 知道節點 B 的鏈路 IPV6 地址
FEC0:0:0:1::B 但不知道節點 B 的鏈路層地 址 00-10-5C-F7-5C-96,沿箭頭方向,A 發送鄰 居請求報文,IP 域的目的地址是要求被解釋
的目標地址 FEC0:0:0:1::B。節點 B
收到鄰居請求報文後,檢視目標地址就是屬 於本機,是則發送1個單播的鄰居公告報文 給 A,在鄰居公告報文的目的鏈路層地址選 項 裏 包含節 點 B 的鏈 路層 地址
00-10-5C-F7-5C-96。這樣
節點 A 知道了節點 B 的鏈路層地址, 地址解釋過程完成[5]。
5. 測試與驗證
5.1 在 Altera De2 上的實現與測試

課題的開發環境: Altera De2(硬件平 臺), Quartus II 5.1 和 Nios II 5.1(軟件平 臺),整個開發過程以 LWIP1.1.0 爲參考, 在理解了 LWIP 的結構後在結合開發環境改 寫。完成後對協議棧進行了測試和驗證,測 試主要集中在網絡層的 ND,IPV6,ICMPV6 模組。由 於鄰居發 現模組建 立在 IPV6,ICMPV6 基礎上的,對鄰居模組的測試 相當於對 IPV6 和 ICMPV6 也進行了測試,
很具有代表性[6]。
受周圍網絡環境中無 IPV6 路由器所 限,測試在 IPV6 局域網上進行,Altera de2 透過以太網與 PC 機直接相連。測試對象電 路板 MAC 地址爲 00-10-5C-F7-5F-
5D,其經過地址轉換算法得到的本地 IPV6 地址爲:fe80:210:5cff:fef7:5f5d,當它 接入網絡時,爲了對自己將要配置的地址進 行唯1性驗證,它要發送鄰居請求報文,通 過 PC 端網絡抓包工具 Sniffer,我們抓到了由 目標板發出的鄰居請求報文,如圖 4 所示:

圖 4 鄰居請求報文
從圖中看到其報文的類型值爲 135。目
標地址爲 fe80:210:5cff:fef7:5f5d。
測試協議棧在獲取鏈路地址後,我們在
PC 機端執行 ping6 fe80::210:5cff:fef7:5f5d。 這個過程中要知道目標板的鏈路層地址,於 是發起針對目標板 IPV6 地址的地址解釋。 在地址解釋過程中,我們抓到了目標協議棧 發送的,包含自己鏈路層地址的單播鄰居公 告報文,如圖 5 所示。

圖 5 鄰居公告報文
由圖可得知,報文類型值爲 136,目標
地址爲目
標板本地 IPV6 地址
fe80::210:5cff:fef7:5f5d。
5.2 在 s3c4410box 上的移植
移植目標平臺:基於 s3c4410box 處理器的 ARM7 開發板,按照通用的方法,先移植了 uc/os-ii 嵌入式操作系統,在移植好 的基礎上用操作系統函數編寫了操作系統 模擬層,把網絡接口層的函數指針指向電路 板提供的網卡驅動程序,在系統啓動初試化 函數中添加針對 IPV6 協議棧的啓動代碼。 完成這些後我們使用 altera de2 上1樣的測試方法進行測試,實驗結果證明協議棧滿足基本通信功能。證明協議棧可以在該電路板 上進行移植[7]。


6. 結束語

本文介紹了嵌入式精簡 TCP/IPV6 的設 計思想和實現方法,精簡性和可移植性是其 考慮的主要方面,該協議棧是1種解決了嵌 入設備和接入 IPV6 網絡的可行解決方案。
參考文獻

[1] Robert e f. Embedded Internet Systems Come
Home[
J]. IEEE Internet Computing,2001,5(1):52-53.
[2] Ruhuarvi j,Mahonen P,Saaranen M J. providing
[3] Soung S. Network-Driven layered multicast with
IPV6[J],Lecture Notesin Computer Science, 2000 , Volume
18 :11.
[4] Liu Li-feng,Zou Shi-hong. A congestion and rate control scheme based on directed diffusion in wireless sensor networks[J]nal of Beijing University of Posts and Telecommunications,2006,29(2):54-58.
[5] Chris M,Maillik T, A look at native Ipv6
multicast[J], IEEE Internet Computing,2004 Volume8
Issue4: 48
[6] 周立功. SOPC 嵌入式系統實驗教程. 深圳:北
京航空航天出版社. 2006 :241-248
[7] 姚羽,石林. IPV6 技術項目實驗指導書. 北京: 電子工業出版社. 2007 :24-28
[8]免費論文網Design and achievment of Embedded Light-Weight 

TCP/IPV6 Stack

Cheng Jizhong, Zhao Huan
College of computer and communication, Hunan University, Changsha (410082)

Abstract
Via the research and analyse for the IPV6 technique in this allusion to the MCU on embeded system is not fast,and the storage capability is low,we cut down the common IPV6 stack. In this design
we cut down some unusuary used but not affect basic communication des, for the saved protocols we only realize it’s basic r the achievment we find that this stack little-codes,
efficiency-runing and have good grafted ability. So it fit for em

[1]