- 相關推薦
嵌入式精簡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].Journal 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 article.In 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 protcols.Besides, for the saved protocols we only realize it’s basic function.After the achievment we find that this stack little-codes,
efficiency-runing and have good grafted ability. So it fit for em
[1]
【嵌入式精簡TCP/IPV6協議棧的設計與實現】相關文章:
在TMS320VC5402上實現的嵌入式TCP/IP協議棧03-19
嵌入式MPEG—4解碼系統的設計與實現03-19
面向網絡測試的嵌入式系統設計與實現03-07
嵌入式現場智能顯示系統的設計與實現03-07
基于FPGA的IPV6數字包配置實現03-07
用MSP430實現的嵌入式因特網終端設計03-18
嵌入式藍牙PSTN語音接入點的設計與實現03-18