嵌入式精簡TCPIPV6協(xié)議棧設(shè)計和實現(xiàn)_第1頁
嵌入式精簡TCPIPV6協(xié)議棧設(shè)計和實現(xiàn)_第2頁
嵌入式精簡TCPIPV6協(xié)議棧設(shè)計和實現(xiàn)_第3頁
嵌入式精簡TCPIPV6協(xié)議棧設(shè)計和實現(xiàn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、嵌入式精簡TCPIPV6協(xié)議棧設(shè)計和實現(xiàn)     摘 要:本文通過對常用 IPV6 技術(shù)的研究和分析,針對嵌入設(shè)備處理速度慢,存儲容量小 等特點,對常用 TCP/IPV6 協(xié)議棧進行了裁減和簡化,裁減掉一些不常用但不影響基本通信 功能的協(xié)議模塊,同時對要保留下來要實現(xiàn)的各個協(xié)議進行簡化,只實現(xiàn)其基本功能。設(shè)計完 成實現(xiàn)后的協(xié)議棧,具有代碼量少,運行效率高和良好的可移植性等特點,適合于各種嵌入 式設(shè)備,是一種解決嵌入式設(shè)備接入 IPV6 網(wǎng)絡(luò)的可行方案。 關(guān)鍵詞:IPV6;嵌入式操作系統(tǒng);鄰居發(fā)現(xiàn);ICMPV6;地址解釋 Abstract Via

2、 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

3、protocols we only realize its basic function.After the achievment we find that this stack little-codes, efficiency-runing and have good grafted ability. So it fit for embeded system devices, and be considered as a feasible scheme for embedded system connecting to IPV6 network. Keywords: PV6; Embedde

4、d Operating System; Neighbor Discovery; ICMPV6; Address Resolution. 1. 引言 嵌入式Internet技術(shù)是指把Internet技術(shù) 應(yīng)用于嵌入式設(shè)備, 實現(xiàn)嵌入式設(shè)備的信息 交互,是嵌入式技術(shù)與Internet技術(shù)的結(jié)合, 具有非常廣大的市場前景。目前不少廠商都 在進行這方面研究, 并推出了不少嵌入式 Internet解決方案,比較常用的成熟的解決方 案有,瑞士計算機科學(xué)院Adam Dunkels寫的 ulP和 LWIP,它們以IPV4技術(shù)為基礎(chǔ),以精 簡為指導(dǎo)思想,把復(fù)雜的TCP/IP技術(shù)引入嵌 入式設(shè)備,滿足嵌入式設(shè)備接

5、入網(wǎng)絡(luò)的需 求。而作為IPV4改良版本的IPV6,是對IPV4 的升級和改進,是下一代網(wǎng)絡(luò)的核心,如何 以IPV6技術(shù)為基礎(chǔ),設(shè)計一款和嵌入設(shè)備結(jié) 合的具 有 代碼量 少 ,功能 簡 單的精簡 TCP/IPV6協(xié)議棧是一件非常現(xiàn)實意義的挑 戰(zhàn),也是本課題設(shè)計的目的所在。 2. IPV6 協(xié)議棧 IPV6協(xié)議棧是基于IPV6網(wǎng)絡(luò)層的協(xié)議, 和IPV4一樣,遵循現(xiàn)有互聯(lián)網(wǎng)四層網(wǎng)絡(luò)互聯(lián) 體系結(jié)構(gòu),如圖1所示。從圖中我們可以看到, 協(xié)議棧分為網(wǎng)絡(luò)接口層,互聯(lián)網(wǎng) 層,傳輸層,應(yīng)用層四層。應(yīng)用層直接面 向用戶,并提供訪問其它層服務(wù)的功能;傳 輸層用于提供源主機和目的主機上的對等 實體對話;網(wǎng)絡(luò)接口層屏蔽了

6、具體的硬件實 現(xiàn)細節(jié),負責(zé)底層數(shù)據(jù)的接收和發(fā)送;網(wǎng)絡(luò) 層是整個TCP/IP體系結(jié)構(gòu)的關(guān)鍵部分,其主 要功能是在網(wǎng)絡(luò)上提供可靠的主機到主機 的數(shù)據(jù)傳送。IPv6協(xié)議正是位于該層,它包 含的主要協(xié)議模塊有IPV6,ICMPV6,鄰居發(fā) 現(xiàn)ND,IPsec等。  2.1 IPV6 協(xié)議 根據(jù)RFC2460對IPV6功能的描述,IPV6 主要負責(zé)把上層來的數(shù)據(jù)段添加IPV6報頭, 交由底層發(fā)送;把下層接收到的報文經(jīng)過處 理和分析,交給TCP,UDP或ICMPV6處理。 和IPv4相比 IPv6的改變主要集中在以下幾 個方面:地址容量的擴展,報頭格式的簡化, 支持擴展和選項的改進,數(shù)據(jù)流標簽的

7、能力,認證和保密的能力等1。2.2 ICMPV6 協(xié)議 ICMPV6協(xié)議合并了IPv4中ICMP(控制 報文協(xié)議),I- GMP(組成員協(xié)議)、ARP(地 址解析協(xié)議)等多個協(xié)議的功能,實現(xiàn)差錯 控制,地址解釋等功能,并支持Mobile IPv6。 ICMPV6報文封裝在IP報文中,是IP報文的 有效載荷數(shù)據(jù),它通過它的各種錯誤報文和 信息報文的交換來實現(xiàn)差錯控制,地址解釋 和路由前綴信息獲取等功能。 2.3 鄰居發(fā)現(xiàn)(Neighbor discovery) 協(xié)議鄰居發(fā)現(xiàn)協(xié)議ND是IPv6協(xié)議棧中的核 心協(xié)議,是IPV6解決鄰節(jié)點交互的一個重要 協(xié)議。它定義了下列問題的解決機制:路由

8、 發(fā)現(xiàn),前綴發(fā)現(xiàn),參數(shù)發(fā)現(xiàn),地址自動配置, 地址解釋,下一跳決定,鄰居不可達,重復(fù) 地址檢測,重定向。鄰居發(fā)現(xiàn)的這些功能是 通過5個ICMP報文(鄰居請求/鄰居通告報 文,路由器請求/路由器通告報文,重定向報 文)的交換來實現(xiàn)的。 3. IPV6 協(xié)議棧的精簡 協(xié)議棧精簡的核心是“微型化”,我們對 協(xié)議棧進行協(xié)議模塊裁減和單個協(xié)議簡化。 3.1 協(xié)議模塊裁減 協(xié)議模塊裁減是指在保障基本通信功 能的前提下盡可能去掉一些協(xié)議模塊,節(jié)省 系統(tǒng)資源。網(wǎng)絡(luò)接口層我們只考慮 802.3 以 太網(wǎng)協(xié)議(CSMA/CD,MAC,LLC),不考 慮面向 CAN,RS-232,RS-485,射頻,藍牙等

9、 相關(guān)的支持模塊。接入方式上只考慮用路由 器接入方式,不考慮撥號連接方式,去掉和 撥號連接方式相關(guān)的面向點對點連接的 PPP 協(xié)議和 SLIP 協(xié)議,這兩個協(xié)議在網(wǎng)絡(luò) 接口層占用的代碼量比較多;IP 層只實現(xiàn)基 本的報頭,不實現(xiàn)擴展報頭,去掉基于認證 頭和封裝安全載荷頭選項的 IPsec 協(xié)議,安 全控制交給其他層。ICMPV6 和 ND 是核心 協(xié)議必須保留;傳輸層 TCP 和 UDP 可以全 部實現(xiàn)也可以只實現(xiàn)一種,考慮的適應(yīng)性, 本設(shè)計中都給予實現(xiàn)。因此協(xié)議模塊裁減后 要實現(xiàn)的核 心協(xié)議族 為 802.3 , IPV6 , ICMPV6,ND,TCP,UDP。 3.2 單個協(xié)議簡化 單個

10、協(xié)議簡化是指以單個協(xié)議為目標, 進行功能和數(shù)據(jù)結(jié)構(gòu)的簡化。對 IPV6 協(xié)議 來說,只接收,發(fā)送報文,不支持報文的分 片與重組,不支持擴展報頭選項,對可靠連 接傳輸來講,包過大得不到確認,會根據(jù)擁 塞控制機制和重傳機制,減少數(shù)據(jù)分組長 度,進行重新發(fā)送,對大多數(shù)應(yīng)用來說這不 會產(chǎn)生其他嚴重問題。對 ICMPV6 來說,只 實現(xiàn)錯誤報文中的目的不可達報文,信息報 文中的應(yīng)答回復(fù)報文,不實現(xiàn)超時報文,報 文過大報文和應(yīng)答請求報文,一般包過大, 超時報文由路由器實現(xiàn),應(yīng)答請求報文用于 主動測試中發(fā)起測試的 PC 機一端。對鄰居 發(fā)現(xiàn) ND 模塊來說,只實現(xiàn)鄰居請求和鄰居 應(yīng)答報文,嵌入式設(shè)備剛接入網(wǎng)

11、絡(luò),它可以靜 態(tài)的等待網(wǎng)絡(luò)上路由器定時發(fā)送的路由公 告報文,而不是主動發(fā)送路由請求報文來獲 取,不需實現(xiàn)路由請求/路由應(yīng)答報文。嵌 入式設(shè)備連接的鄰居接點,路由一般簡單, 傳輸量少,不需重定向報文來進行路由定 向。簡化的大塊在 TCP,TCP 是整個協(xié)議簇 中最復(fù)雜,代碼量最多的協(xié)議。它的功能模 塊有:滑動窗口,流量控制,擁塞控制,TCP 連接狀態(tài)機,往返時間估計,重傳協(xié)議。本 協(xié)議棧的目標是有操作系統(tǒng)支持的嵌入式 系統(tǒng),速度和存儲量比 8 位和 16 位單片機 都有提高,不必采用分配固定緩沖區(qū)的形式 進行接收一幀處理一幀,可以考慮采用分配 一個較大的緩沖區(qū)實現(xiàn)滑動窗口機制,用來 提高傳輸效率

12、,實驗證明,傳輸效率的提高 是明顯的,往返時間估計和重傳機制比較簡 單,代碼量不大,可以實現(xiàn),TCP 狀態(tài)機表 示 TCP 進程通信的狀態(tài)遷移,是 TCP 的核 心必須實現(xiàn),可以不實現(xiàn)流量控制機制,因 為流量不是很大。因此 TCP 模塊實現(xiàn)的功 能有:TCP 有限自動機,滑動窗口,往返時 間估計,重傳協(xié)議。忽略流量控制與擁塞控 制模塊,在可靠連接中,當因擁塞而發(fā)生數(shù) 據(jù)丟失的時候,發(fā)送方收不到確認就采用重 傳機制重發(fā)數(shù)據(jù)2。 4. 嵌入式精簡 IPV6 協(xié)議棧的設(shè) 計與實現(xiàn) 在設(shè)計協(xié)議棧過程中,我們在嵌入式操 作系統(tǒng)基礎(chǔ)上設(shè)計和實現(xiàn)一個操作系統(tǒng)模 擬層,實現(xiàn)基本的時鐘,消息管理和進程同 步等基

13、本操作系統(tǒng)功能。協(xié)議進程方面,把 所有的協(xié)議棧封裝到單獨進程中,應(yīng)用程序 可以駐留在其中或作為一個單獨的進程,這 樣既實現(xiàn)了與操作系統(tǒng)分離,又避免了層間 切換。對于內(nèi)存管理采用類 BSD buf 結(jié)構(gòu), 把靜態(tài)緩沖區(qū)和動態(tài)緩沖區(qū)鏈接起來3。 4.1 IPV6 IPV6 模塊主要用于完成對接收到的 IPv6 數(shù)據(jù)報進行處理,對需要發(fā)送的 IPV6 數(shù)據(jù)包進行構(gòu)造并遞交底層發(fā)送。當接收到 一個數(shù)據(jù)包時,網(wǎng)絡(luò)設(shè)備驅(qū)動調(diào)用 ip_input() 函數(shù)來對其 IP 報頭進行檢查,檢查其版本 號,報文長度,載荷長度,目的節(jié)點地址和 下一報頭,待檢查無誤后,根據(jù)下一包頭的 類型分別提交給不同的處理模塊。當要

14、發(fā)送 數(shù)據(jù)時 , 必須要知道發(fā) 送報文的下 一跳 IPV6 地址,以及該地址的相對應(yīng) MAC 地址, ip_route()函數(shù)就是為實現(xiàn)這樣的功能而設(shè) 計的,其獲取下一跳 IPV6 地址與其對應(yīng) MAC 地址的處理流程如圖 2 所示。 圖中,目的緩存用來存儲著一系列最近 的報文流量與對應(yīng)的下一跳 IP 地址的關(guān)系, 前綴列表存儲著一系列子網(wǎng)前綴和其他地 址前綴及其對應(yīng)的下一跳 IP 地址的關(guān)系, 如果兩者中都沒有找到匹配的記錄,則再從 前綴列表中選擇默認路由器作為傳輸?shù)南?一跳 IPV6 地址。  在成功獲取了下一跳 IPV6 地址后,數(shù) 據(jù)就進入傳輸階段,傳輸階段由 ip_outp

15、utif() 函數(shù)控制,ip_output()函數(shù)填充好報頭,選擇 好發(fā)送網(wǎng)絡(luò)接口,然后激活發(fā)送網(wǎng)絡(luò)接口進 行數(shù)據(jù)發(fā)送4。 4.2 ICMPV6 ICMPV6 負責(zé)接收, 解釋和發(fā) 送 ICMPV6 報文。收到報文后,如果為鄰居信 息報文則轉(zhuǎn)交給鄰居發(fā)現(xiàn)模塊,如果為診斷 報文則交給 ICMPV6 診斷模塊。ICMPV6 模 塊只實現(xiàn)了應(yīng)答回復(fù)報文,目的不可達報 文。當處理到達的 IP 報文時,如果下一報 頭既不是 TCP,UDP 也不是 ICMPV6,那么 表示在嵌入式設(shè)備端的協(xié)議棧的已經(jīng)到達 IP 層,是端口不可達,發(fā)送目的不可達報文。 當收到 ICMPV6 的應(yīng)答請求報文時,就發(fā)送 應(yīng)答回

16、復(fù)報文,其格式與請求報文相似,在收 到的請求報文的基礎(chǔ)上改變報文類型,重新 計算校驗和, 在 IP 報頭中將源,目的地址對調(diào)就可 以了。4.3 鄰居發(fā)現(xiàn) 鄰居發(fā)現(xiàn)是精簡 IPV6 協(xié)議簇最核心的 協(xié)議,它利用鄰居請求報文和鄰居公告報文 的交換,實現(xiàn)地址解釋,地址重復(fù)性檢測, 以及地址自動配置功能。不實現(xiàn)路由器請求 /路由器公告報文,和重定向報文。 鄰居請求報文 類型值為 135,報文 IP 頭的源地址域為 發(fā)送鄰居請求報文接口的地址或者未指定, 目的地址域為與被請求目標地址相關(guān)聯(lián)的 被請求節(jié)點組播地址,或者就是被請求目標 地址本身。ICMPV6 報頭域中的目標地址域 為被請求目標地址。選項域可

17、以包含源鏈路 層地址選項,用來告訴對方發(fā)送請求節(jié)點的 MAC 地址,當源地址為指定 地址時必須包含該選項。 鄰居公告報文 類型值為 136,用來響應(yīng)鄰居請求報文, 或者用來告知節(jié)點其鏈路層地址的改變,報 文 IP 頭的源地址為發(fā)送鄰居公告報文的接 口地址,目的地址為發(fā)送鄰居請求的單播地 址,或者是用來公告給所有鄰居節(jié)點其鏈路 層地址改變的全節(jié)點多播地址。目標地址就 是被解釋的 IPV6 地址,或者在地址唯一性 驗證中將要采用的 IPV6 地址。 地址解釋就是節(jié)點僅僅知道鄰居節(jié)點 IP 地址的情況下,通過發(fā)送鄰居請求報文和 接收鄰居公告報文,來得到對應(yīng)節(jié)點鏈路層 地址的過程,是鄰居發(fā)現(xiàn)模塊中最重

18、要的一 個功能模塊,其處理過程如圖 3 所示。  節(jié)點 A 知道節(jié)點 B 的鏈路 IPV6 地址 FEC0:0:0:1:B 但不知道節(jié)點 B 的鏈路層地 址 00-10-5C-F7-5C-96,沿箭頭方向,A 發(fā)送鄰 居請求報文,IP 域的目的地址是要求被解釋 的目標地址 FEC0:0:0:1:B。節(jié)點 B 收到鄰居請求報文后,查看目標地址就是屬 于本機,是則發(fā)送一個單播的鄰居公告報文 給 A,在鄰居公告報文的目的鏈路層地址選 項 里 包含節(jié) 點 B 的鏈 路層 地址 00-10-5C-F7-5C-96。這樣 節(jié)點 A 知道了節(jié)點 B 的鏈路層地址, 地址解釋過程完成5。 5. 測試

19、與驗證 5.1 在 Altera De2 上的實現(xiàn)與測試 課題的開發(fā)環(huán)境: Altera De2(硬件平 臺), Quartus II 5.1 和 Nios II 5.1(軟件平 臺),整個開發(fā)過程以 LWIP1.1.0 為參考, 在理解了 LWIP 的結(jié)構(gòu)后在結(jié)合開發(fā)環(huán)境改 寫。完成后對協(xié)議棧進行了測試和驗證,測 試主要集中在網(wǎng)絡(luò)層的 ND,IPV6,ICMPV6 模塊。由 于鄰居發(fā) 現(xiàn)模塊建 立在 IPV6,ICMPV6 基礎(chǔ)上的,對鄰居模塊的測試 相當于對 IPV6 和 ICMPV6 也進行了測試, 很具有代表性6。 受周圍網(wǎng)絡(luò)環(huán)境中無 IPV6 路由器所 限,測試在 IPV6 局域網(wǎng)上

20、進行,Altera de2 通過以太網(wǎng)與 PC 機直接相連。測試對象電 路板 MAC 地址為 00-10-5C-F7-5F- 5D,其經(jīng)過地址轉(zhuǎn)換算法得到的本地 IPV6 地址為:fe80:210:5cff:fef7:5f5d,當它 接入網(wǎng)絡(luò)時,為了對自己將要配置的地址進 行唯一性驗證,它要發(fā)送鄰居請求報文,通 過 PC 端網(wǎng)絡(luò)抓包工具 Sniffer,我們抓到了由 目標板發(fā)出的鄰居請求報文,如圖 4 所示:  圖 4 鄰居請求報文從圖中看到其報文的類型值為 135。目 標地址為 fe80:210:5cff:fef7:5f5d。 測試協(xié)議棧在獲取鏈路地址后,我們在 PC 機端執(zhí)行 p

21、ing6 fe80:210:5cff:fef7:5f5d。 這個過程中要知道目標板的鏈路層地址,于 是發(fā)起針對目標板 IPV6 地址的地址解釋。 在地址解釋過程中,我們抓到了目標協(xié)議棧 發(fā)送的,包含自己鏈路層地址的單播鄰居公 告報文,如圖 5 所示。  圖 5 鄰居公告報文由圖可得知,報文類型值為 136,目標 地址為目 標板本地 IPV6 地址 fe80:210:5cff:fef7:5f5d。 5.2 在 s3c4410box 上的移植 移植目標平臺:基于 s3c4410box 處理器的 ARM7 開發(fā)板,按照通用的方法,先移植了 uc/os-ii 嵌入式操作系統(tǒng),在移植好 的基礎(chǔ)上用操作系統(tǒng)函數(shù)編寫了操作系統(tǒng) 模擬層,把網(wǎng)絡(luò)接口層的函數(shù)指針指向電路 板提供的網(wǎng)卡驅(qū)動程序,在系統(tǒng)啟動初試化 函數(shù)中添加針對 IPV6 協(xié)議棧的啟動代碼。 完成這些后我們使用 altera de2 上一樣的測試方法進行測試,實驗結(jié)果證明協(xié)議棧滿足基本通信功能。證明協(xié)議??梢栽谠撾娐钒?上進行移植7。6. 結(jié)束語 本文介紹了嵌入式精簡 TCP/IPV6 的設(shè) 計思想和實現(xiàn)方法,精

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論