專利名稱:IPv6微型協(xié)議棧設(shè)計(jì)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ー種IPv6微型協(xié)議棧設(shè)計(jì)方法。
背景技術(shù):
IPv6協(xié)議(Internet Protocol Version6”的縮寫,也被稱作下一代互聯(lián)網(wǎng)協(xié)議)作為下一代網(wǎng)絡(luò)的核心協(xié)議,較好地解決了當(dāng)前IPv4協(xié)議所面臨的問題,適應(yīng)了未來網(wǎng)絡(luò)基礎(chǔ)設(shè)施在數(shù)量和質(zhì)量上的需求,體現(xiàn)出靈活性、高效性等優(yōu)點(diǎn)。IPv6與IPv4 —祥,都遵循TCP/IP模型分層化的體系結(jié)構(gòu)。一般來說,根據(jù)協(xié)議分層模型,可將TCP/IP參考模型分為4個(gè)層次網(wǎng)絡(luò)接ロ層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。應(yīng)用層直接面向用戶,并提供訪問其它層服務(wù)的功能;傳輸層用于提供源主機(jī)和目的主機(jī)上的對等實(shí)體對話功能,網(wǎng)絡(luò)接ロ層負(fù)責(zé)底層數(shù)據(jù)的接收和發(fā)送,該層技術(shù)細(xì)節(jié)通常與TCP/IP無關(guān);網(wǎng)絡(luò)層是整個(gè)TCP/IP體系結(jié)構(gòu)的 關(guān)鍵部分,其主要功能是主機(jī)可以把分組發(fā)往任何網(wǎng)絡(luò),并使分組可以獨(dú)立地傳送到目的主機(jī)。IPv6基本協(xié)議棧位于網(wǎng)絡(luò)層,是基于IPv6的網(wǎng)絡(luò)層協(xié)議棧,通過運(yùn)行該基本協(xié)議棧以完成網(wǎng)絡(luò)層的主要功能,支持其正常運(yùn)行。IPv6基本協(xié)議棧的主要內(nèi)容包括IPv6協(xié)議、IcMPv6協(xié)議、鄰居發(fā)現(xiàn)協(xié)議(ND)、地址自動(dòng)配置協(xié)議、IPv4到IPv6的過渡協(xié)議等。其中,IPv6協(xié)議定義了 IPv6的基本規(guī)范,負(fù)責(zé)把數(shù)據(jù)包添加包頭后交由底層發(fā)送,并把接收到的IPv6報(bào)文遞交給上層的TCP或uDP處理;ICMPv6協(xié)議封裝在IPv6包中,通過協(xié)議的控制報(bào)文進(jìn)行錯(cuò)誤報(bào)告和網(wǎng)絡(luò)診斷等;鄰居發(fā)現(xiàn)協(xié)議和地址自動(dòng)配置協(xié)議處于IPv6網(wǎng)絡(luò)層和網(wǎng)絡(luò)接ロ層之間,主要功能是實(shí)現(xiàn)無狀態(tài)地址的自動(dòng)配置和對網(wǎng)絡(luò)配置性能進(jìn)行改善;考慮到IPv6協(xié)議是在IPv4協(xié)議的基礎(chǔ)上發(fā)展而來的,在實(shí)際網(wǎng)絡(luò)中,利用IPv4到IPv6的過渡協(xié)議來實(shí)現(xiàn)從IPv4向IPv6的演進(jìn)。由于IPv6基本協(xié)議棧過于龐大,而傳感器節(jié)點(diǎn)上各種資源是有限的,如CPU的處理速度、字長、RAM、ROM存儲(chǔ)器的容量、接ロ的數(shù)量等和通用計(jì)算機(jī)相比有很大差距,所以“微型化”成為IPv6協(xié)議棧設(shè)計(jì)的關(guān)鍵問題?!拔⑿突彼枷胫饕w現(xiàn)在設(shè)計(jì)方案核心應(yīng)著眼于設(shè)計(jì)體積小,但又不影響運(yùn)行的協(xié)議棧,所以要對協(xié)議棧的裁剪方面進(jìn)行深入研究,去掉不必要的組件、傳統(tǒng)的復(fù)雜調(diào)度機(jī)制和額外的擴(kuò)展功能。
發(fā)明內(nèi)容
傳統(tǒng)的TCP/IP協(xié)議棧實(shí)現(xiàn)需要太多的硬件和軟件資源,無論是幾百K字節(jié)的代碼量還是幾百千字節(jié)的數(shù)據(jù)存儲(chǔ)區(qū)大小都無法滿足傳感器網(wǎng)絡(luò)路由器低成本、低能耗的要求。為了將IPv6技術(shù)運(yùn)用到無線傳感器網(wǎng)絡(luò)中,本發(fā)明的目的是設(shè)計(jì)一種精簡的微型TCP/IPv6協(xié)議棧,以滿足傳感器網(wǎng)絡(luò)路由器低成本、低能耗的要求。本發(fā)明采用的技術(shù)方案如下ー種IPv6微型協(xié)議棧設(shè)計(jì)方法,包括以下步驟I)精簡IPv6協(xié)議棧;2)獨(dú)立于操作系統(tǒng)進(jìn)行協(xié)議棧調(diào)度;
3)采用最大容限控制的內(nèi)存分配方案;4)采用基于事件和數(shù)據(jù)類型驅(qū)動(dòng)的應(yīng)用程序接ロ。進(jìn)一步地在所述步驟I)中,對包括IPv6協(xié)議、ICMPv6協(xié)議、ND協(xié)議、TCP協(xié)議在內(nèi)的各協(xié)議進(jìn)行簡化,去除其中無關(guān)和不必要的組件及擴(kuò)展功能。在所述步驟2)中,通過劃分中斷處理程序,使中斷處理程序縮短,減小執(zhí)行任務(wù)時(shí)產(chǎn)生的沖突。在所述步驟3)中,采用兩個(gè)全局變量inBuffer和outBuffer保存整個(gè)IPv6數(shù)據(jù)包,分別對TCP/IPv6協(xié)議棧各個(gè)字節(jié)進(jìn)行處理。
步驟3)包括以下詳細(xì)步驟當(dāng)數(shù)據(jù)包接收后,首先解析IEEE802. 15. 4數(shù)據(jù)幀頭部和適配層頭部,將適配層數(shù)據(jù)幀的載荷存儲(chǔ)在全局變量inBuffer中,同時(shí)將協(xié)議棧處理指針指向全局變量inBuffer的各個(gè)協(xié)議字段,調(diào)用TCP/IPv6協(xié)議處理函數(shù)進(jìn)行解析,最后由應(yīng)用程序接ロ進(jìn)行應(yīng)用數(shù)據(jù)的處理;對應(yīng)用層產(chǎn)生的數(shù)據(jù)進(jìn)行TCP/IPv6封裝的過程跟上述過程相反;在應(yīng)用層處理完數(shù)據(jù)后,首先將應(yīng)用數(shù)據(jù)寫入全局變量outBuffer,然后調(diào)用TCP/IPv6協(xié)議棧對數(shù)據(jù)包進(jìn)行封裝,填充適配層報(bào)頭格式,最后遞交到IEEE802. 15. 4介質(zhì)接入控制層和物理層完成數(shù)據(jù)幀封裝進(jìn)行發(fā)送。在所述步驟4)中,所述事件驅(qū)動(dòng)是指在TCP/IPv6協(xié)議棧中通過設(shè)置“輪循”、“接收數(shù)據(jù)”、“數(shù)據(jù)應(yīng)答”和“重傳”事件,通知應(yīng)用程序接ロ調(diào)度相應(yīng)的應(yīng)用程序。在所述步驟4)中,所述數(shù)據(jù)類型驅(qū)動(dòng)是指每個(gè)應(yīng)用數(shù)據(jù)的頭部都要填充傳感數(shù)據(jù)類型,應(yīng)用程序接ロ根據(jù)傳感數(shù)據(jù)的類型,分別調(diào)度對應(yīng)的應(yīng)用程序,應(yīng)用程序再進(jìn)行數(shù)據(jù)采集或者數(shù)據(jù)處理,封裝傳感數(shù)據(jù)類型,遞交到應(yīng)用程序接ロ,由應(yīng)用程序接ロ通知TCP/IPv6協(xié)議棧進(jìn)行處理。本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明的協(xié)議棧代碼量小、簡易輕型并且可以與使用完整的TCP/IPV6協(xié)議棧的對等節(jié)點(diǎn)進(jìn)行通信。本發(fā)明的協(xié)議棧采用了ー種獨(dú)立于操作系統(tǒng)的網(wǎng)絡(luò)事件調(diào)用方案,采用了基于事件和數(shù)據(jù)類型驅(qū)動(dòng)的應(yīng)用程序接口和基于需求驅(qū)動(dòng)的重傳機(jī)制,通過最大容限控制的內(nèi)存分配方案,使得最終的協(xié)議棧軟件的數(shù)據(jù)存儲(chǔ)區(qū)控制在20千字節(jié)以內(nèi)。
圖I為通用接ロ圖。
具體實(shí)施例方式由于傳感器節(jié)點(diǎn)上各種資源是有限的,如CPU的處理速度、字長、RAM、ROM存儲(chǔ)器的容量、接ロ的數(shù)量等和通用計(jì)算機(jī)相比有很大差距,所以如何使協(xié)議棧做到精細(xì)、通訊可靠、功能相對完善,而且又能發(fā)揮單片機(jī)的特點(diǎn)成為IPv6微型協(xié)議棧設(shè)計(jì)的關(guān)鍵問題。IPv6微型協(xié)議棧從以下幾個(gè)方面對IPv6協(xié)議棧進(jìn)行了精簡一 .精簡IPv6協(xié)議棧,去掉不必要的組件及額外擴(kuò)展功能
由于無線傳感器網(wǎng)絡(luò)通常是在特定環(huán)境下,完成ー種特定的功能或任務(wù),因此對運(yùn)行在其上的IPv6微型協(xié)議棧不必像通常IP協(xié)議棧那樣,實(shí)現(xiàn)IP層的所有功能,只需考慮實(shí)現(xiàn)IPv6協(xié)議棧的基本協(xié)議和功能的實(shí)現(xiàn)。因此,我們可以對原協(xié)議棧進(jìn)行必要的裁減,包括對IPv6協(xié)議、ICMPv6協(xié)議、ND協(xié)議、TCP協(xié)議等協(xié)議進(jìn)行簡化。ニ .獨(dú)立于操作系統(tǒng)進(jìn)行協(xié)議棧調(diào)度無線傳感器網(wǎng)絡(luò)IPv6微型協(xié)議棧,直接面對硬件,MCU中的程序結(jié)構(gòu)一般是順序執(zhí)行和硬件中斷相配合的方式,與高級(jí)操作系統(tǒng)中的多線程并發(fā)執(zhí)行的方式截然不同。在高級(jí)操作系統(tǒng)中,對網(wǎng)卡的驅(qū)動(dòng)采用中斷方式,中斷與軟中斷、消息機(jī)制等相結(jié)合,運(yùn)行時(shí)以分時(shí)為基礎(chǔ),進(jìn)行動(dòng)態(tài)優(yōu)先級(jí)調(diào)度。為了節(jié)約節(jié)點(diǎn)設(shè)備存儲(chǔ)空間和處理能耗,我們設(shè)計(jì)的IPv6微型協(xié)議棧獨(dú)立于操作系統(tǒng),通過劃分中斷處理程序,使中斷處理程序變短,減小執(zhí)行任務(wù)時(shí)產(chǎn)生的沖突,從而達(dá)到嵌入式系統(tǒng)的需要。三.最大容限控制的內(nèi)存分配方案我們設(shè)計(jì)的微型TCP/IPV6協(xié)議棧并不采用動(dòng)態(tài)分配內(nèi)存的方式,而是采用兩個(gè)全局變量inBuffer和outBuffer保存整個(gè)IPv6數(shù)據(jù)包,分別對TCP/IPv6協(xié)議棧各個(gè)字節(jié)進(jìn)行處理。兩個(gè)全局變量大小都為102個(gè)字節(jié),滿足IEEE802. 15. 4規(guī)定(最大包長度127字節(jié)-最小數(shù)據(jù)幀頭15字節(jié))。當(dāng)數(shù)據(jù)包接收后,進(jìn)行解析IEEE802. 15. 4數(shù)據(jù)幀頭部和適配層頭部,然后將適配層數(shù)據(jù)幀的載荷存儲(chǔ)在inBuffer中,用全局變量buf Ien表示載荷長度,同時(shí)將協(xié)議棧處理指針指向inBuffer各個(gè)協(xié)議字段,調(diào)用TCP/IPv6協(xié)議處理函數(shù)對數(shù)據(jù)幀進(jìn)行解析,最后由應(yīng)用程序接ロ進(jìn)行應(yīng)用數(shù)據(jù)的處理。同樣,應(yīng)用層產(chǎn)生的數(shù)據(jù)進(jìn)行TCP/IPv6封裝的過程跟上述過程相反。為了防止在數(shù)據(jù)包發(fā)送過程中,對下ー個(gè)接收的數(shù)據(jù)包進(jìn)行覆蓋,在應(yīng)用層處理完數(shù)據(jù)后,將應(yīng)用數(shù)據(jù)寫入outBuffer,然后調(diào)用TCP/IPv6協(xié)議棧對數(shù)據(jù)包進(jìn)行封裝,填充適配層報(bào)頭格式,然后遞交到IEEE802. 15. 4介質(zhì)接入控制層(MAC)和物理層(PHY)完成數(shù)據(jù)幀封裝進(jìn)行發(fā)送。四.基于事件和數(shù)據(jù)類型驅(qū)動(dòng)的應(yīng)用程序接ロ在大多數(shù)的操作系統(tǒng)中,TCP/IP協(xié)議棧的應(yīng)用程序接ロ為Socket應(yīng)用程序接ロ(SocketAPI)。由于SocketAPI使用的是ー種停止——等待的原語,需要多任務(wù)的操作系統(tǒng)的支持,并且任務(wù)管理的開銷、上下文的切換以及任務(wù)空間的分配都對當(dāng)前的傳感器節(jié)點(diǎn)體系結(jié)構(gòu)提出很高的要求,所以我們提出一種基于事件和數(shù)據(jù)類型驅(qū)動(dòng)的應(yīng)用程序接ロ。通用接ロ的設(shè)計(jì)使得系統(tǒng)具有很強(qiáng)的靈活性和擴(kuò)展性。一方面,能實(shí)現(xiàn)應(yīng)用層與下層無縫銜接,為新增應(yīng)用功能而設(shè)計(jì)的應(yīng)用程序可以方便載人系統(tǒng),無需考慮下層結(jié)構(gòu)實(shí)現(xiàn)細(xì)節(jié);另一方面,通用接ロ為應(yīng)用層的實(shí)現(xiàn)完全屏蔽了下層硬件平臺(tái)環(huán)境,同一應(yīng)用程序可以在某一特定應(yīng)用領(lǐng)域的各類設(shè)備上實(shí)現(xiàn)通用,大大增加了系統(tǒng)的靈活性和移植性。通用接ロ設(shè)計(jì)如圖I所示。在IPv6微型協(xié)議棧中設(shè)置“輪循”、“接收數(shù)掘”、“數(shù)據(jù)應(yīng)答”和“重傳”事件,協(xié)議棧處理函數(shù)根據(jù)事件類型,通知應(yīng)用程序通過接收接ロ APP_process(),把應(yīng)用數(shù)據(jù)傳入應(yīng)用層,在應(yīng)用層中的各應(yīng)用程序再由子接ロ接收屬于自己的數(shù)據(jù),完成相應(yīng)的應(yīng)用處理操作。處理后的應(yīng)用數(shù)據(jù),由子接ロ遞交到應(yīng)用程序通用發(fā)送接ロ SencL toserver (),通知IPv6微型協(xié)議棧進(jìn)行下ー步的處理。
權(quán)利要求
1.ー種IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于包括以下步驟 .1)精簡IPv6協(xié)議棧; .2)獨(dú)立于操作系統(tǒng)進(jìn)行協(xié)議棧調(diào)度; .3)采用最大容限控制的內(nèi)存分配方案; .4)采用基于事件和數(shù)據(jù)類型驅(qū)動(dòng)的應(yīng)用程序接ロ。
2.如權(quán)利要求I所述的IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于 在所述步驟I)中,對包括IPv6協(xié)議、ICMPv6協(xié)議、ND協(xié)議、TCP協(xié)議在內(nèi)的各協(xié)議進(jìn)行簡化,去除其中無關(guān)和不必要的組件及擴(kuò)展功能。
3.如權(quán)利要求I所述的IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于 在所述步驟2)中,通過劃分中斷處理程序,使中斷處理程序縮短,減小執(zhí)行任務(wù)時(shí)產(chǎn)生的沖突。
4.如權(quán)利要求I所述的IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于 在所述步驟3)中,采用兩個(gè)全局變量inBuffer和outBuffer保存整個(gè)IPv6數(shù)據(jù)包,分別對TCP/IPv6協(xié)議棧各個(gè)字節(jié)進(jìn)行處理。
5.如權(quán)利要求4所述的IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于 步驟3)包括以下詳細(xì)步驟 當(dāng)數(shù)據(jù)包接收后,首先解析IEEE802. 15. 4數(shù)據(jù)幀頭部和適配層頭部,將適配層數(shù)據(jù)幀的載荷存儲(chǔ)在全局變量inBuffer中,同時(shí)將協(xié)議棧處理指針指向全局變量inBuffer的各個(gè)協(xié)議字段,調(diào)用TCP/IPv6協(xié)議處理函數(shù)進(jìn)行解析,最后由應(yīng)用程序接ロ進(jìn)行應(yīng)用數(shù)據(jù)的處理; 對應(yīng)用層產(chǎn)生的數(shù)據(jù)進(jìn)行TCP/IPv6封裝的過程跟上述過程相反; 在應(yīng)用層處理完數(shù)據(jù)后,首先將應(yīng)用數(shù)據(jù)寫入全局變量outBuffer,然后調(diào)用TCP/IPv6協(xié)議棧對數(shù)據(jù)包進(jìn)行封裝,填充適配層報(bào)頭格式,最后遞交到IEEE802. 15. 4介質(zhì)接入控制層和物理層完成數(shù)據(jù)幀封裝進(jìn)行發(fā)送。
6.如權(quán)利要求I所述的IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于 在所述步驟4)中,所述事件驅(qū)動(dòng)是指在TCP/IPv6協(xié)議棧中通過設(shè)置“輪循”、“接收數(shù)掘”、“數(shù)據(jù)應(yīng)答”和“重傳”事件,通知應(yīng)用程序接ロ調(diào)度相應(yīng)的應(yīng)用程序。
7.如權(quán)利要求I所述的IPv6微型協(xié)議棧設(shè)計(jì)方法,其特征在于 在所述步驟4)中,所述數(shù)據(jù)類型驅(qū)動(dòng)是指每個(gè)應(yīng)用數(shù)據(jù)的頭部都要填充傳感數(shù)據(jù)類型,應(yīng)用程序接ロ根據(jù)傳感數(shù)據(jù)的類型,分別調(diào)度對應(yīng)的應(yīng)用程序,應(yīng)用程序再進(jìn)行數(shù)據(jù)采集或者數(shù)據(jù)處理,封裝傳感數(shù)據(jù)類型,遞交到應(yīng)用程序接ロ,由應(yīng)用程序接ロ通知TCP/IPv6協(xié)議棧進(jìn)行處理。
全文摘要
本發(fā)明公開了一種IPv6微型協(xié)議棧設(shè)計(jì)方法,包括以下步驟1)精簡IPv6協(xié)議棧;2)獨(dú)立于操作系統(tǒng)進(jìn)行協(xié)議棧調(diào)度;3)采用最大容限控制的內(nèi)存分配方案;4)采用基于事件和數(shù)據(jù)類型驅(qū)動(dòng)的應(yīng)用程序接口。本發(fā)明擺脫了傳統(tǒng)的TCP/IP協(xié)議棧實(shí)現(xiàn)需要太多的硬件和軟件資源的限制,滿足了傳感器網(wǎng)絡(luò)路由器低成本、低能耗的要求,具有體積小、能耗低、自適應(yīng)性強(qiáng)、成本低、簡單靈活等優(yōu)點(diǎn),符合IPv6協(xié)議棧的微型化趨勢,推動(dòng)了IPv6協(xié)議棧的微型化,在工農(nóng)業(yè)生產(chǎn)、軍事國防、醫(yī)療護(hù)理、環(huán)境監(jiān)測、智能家居等領(lǐng)域有著廣泛的應(yīng)用前景。
文檔編號(hào)H04L29/06GK102694774SQ201110070339
公開日2012年9月26日 申請日期2011年3月23日 優(yōu)先權(quán)日2011年3月23日
發(fā)明者劉 東, 劉銘, 步日欣, 程遠(yuǎn), 董偉, 谷晨 申請人:北京天地互連信息技術(shù)有限公司