專利名稱:一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,屬于計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù):
無線傳感器網(wǎng)絡(luò)由大量低功耗、低速率、低成本、高密度的微型節(jié)點組成,節(jié)點通過自我組織、自我愈合的方式組成網(wǎng)絡(luò)。利用無線傳感器網(wǎng)絡(luò)可實現(xiàn)數(shù)據(jù)的采集量化、處理融合和傳輸應(yīng)用,無線傳感器網(wǎng)絡(luò)可以部署在家庭、醫(yī)院、軍事、環(huán)境監(jiān)測及工業(yè)控制領(lǐng)域,利用各式的傳感器去測量溫度、濕度、噪聲、壓力等信號,從而提高人們現(xiàn)有的生活質(zhì)量和生產(chǎn)效率。
2004年11月IETF正式成立了6LOWPAN工作組,著手制定基于IPv6的無線傳感器網(wǎng)絡(luò)標準,該工作組的工作主要圍繞如何將IPv6與IEEE 802.15.4展開,研究基于IPv6的無線個域網(wǎng)的關(guān)鍵問題。由于IEEE 802.15.4標準規(guī)范的物理層的最大幀為127字節(jié),而IPv6標準包頭是40字節(jié),為了在IEEE 802.15.4上傳輸IPv6數(shù)據(jù)包,應(yīng)該對其包頭進行壓縮。同時,為了保證經(jīng)過包頭壓縮后的數(shù)據(jù)包如常到達目的節(jié)點,壓縮包的路由算法尤為重要,它是對包頭壓縮算法的重要支持。
IETF的6LOWPAN工作組于2005年2月發(fā)布了draft-montenegro-lowpan-ipv6-over-802.15.4-02,提出了一種包頭壓縮方案,同時初步給出支持這種壓縮包頭的路由算法,該算法使用網(wǎng)狀路由,適用于多跳壓縮傳輸。但是不能支持節(jié)點間多數(shù)據(jù)流的并行傳輸,兩個節(jié)點間只能同時傳輸一個數(shù)據(jù)流。這無疑為無線傳感器網(wǎng)絡(luò)的廣泛應(yīng)用帶來了很大限制。
IPv6數(shù)據(jù)報的MTU是1280字節(jié),但是IEEE 802.15.4標準規(guī)范的物理層的最大幀為127字節(jié),加上幀的負載和鏈路層加密算法的開銷,最大開銷情況下只留下81字節(jié)給上層應(yīng)用。為了在IEEE 802.15.4標準規(guī)范上傳送IPv6數(shù)據(jù)包,該草案在鏈路層和網(wǎng)絡(luò)層之間建立一個適應(yīng)層。在此適應(yīng)層上進行封裝,分片,重裝以及實現(xiàn)路由等等。該適應(yīng)層的最大傳輸單元大于IPv6的最小傳輸單元,同時與802.15.4標準規(guī)范下留給上層應(yīng)用的分組大小兼容。
為了建立這個適應(yīng)層,需要在每個IP數(shù)據(jù)報前添加一個封裝包頭。如果整個IP數(shù)據(jù)報能夠在一個適應(yīng)層分組里面?zhèn)鬏?,該適應(yīng)層的幀格式參見表1。
表1 不分片的適應(yīng)層封裝包頭格式域的定義如下LF2比特,這兩位的值為0,表示沒有分片。
數(shù)據(jù)類型5比特,這5位用來表示緊接著的數(shù)據(jù)的類型。例如,十六進制的1表示IPv6包,十六進制的2表示壓縮包等等。
M1比特,用來表示是否存在最終目的地址域,如果置1,最終目的地址域?qū)⒊霈F(xiàn)在IPv6包之前。
如果數(shù)據(jù)大于一個幀,則適應(yīng)層進行分片傳輸,第一個分片的幀格式如表2。
表2 第一個分片的封裝格式第二一直到最后一個分片的幀格式如表3。
表3 第二一直到最后一個分片的封裝格式LF域的定義參照表4。
表4 LF域的定義數(shù)據(jù)報大小11比特,用來對整個IP數(shù)據(jù)報的大小進行編碼。
數(shù)據(jù)類型7比特,只在第一個分片中出現(xiàn),用于INNA,具體用法待定。
數(shù)據(jù)報偏移11比特,該域只會在第二個及其之后的分片中出現(xiàn),用來標定偏移量。
數(shù)據(jù)報標簽8比特,在同一個IP數(shù)據(jù)報的所有分片中,這個值不變。發(fā)送方隨著發(fā)送數(shù)據(jù)報的個數(shù)增加而增加,當增加到255后返回1。0的值并不使用。
無狀態(tài)地址自動配置為了更好的實現(xiàn)壓縮,使用了一種IPv6鏈路本地地址,根據(jù)64位的IEEE地址生成一個鏈路本地地址,如表5,并在本地網(wǎng)絡(luò)中使用同一個前綴FE80∷/64。
10位 54位 64位
表5 鏈路本地地址生成方法同時,根據(jù)[I-D.ietf-ipv6-2461bis]提供的過程實現(xiàn)單點傳送地址到64位IEEE地址的映射。
包頭壓縮算法設(shè)計這個算法原理如下,壓縮的實現(xiàn)源于減少某些不變的量的傳輸。對那些在包頭中一直保持不變的字段信息,只在開始時發(fā)送一次,這樣就能極大地減小包頭的大小。依靠一組編碼標識出獲得這些壓縮信息的方法,再將沒有壓縮的信息依照約定格式存放在數(shù)據(jù)報中,就形成了壓縮包。在不壓縮的域里面,8位的路程段限制域必須在每個壓縮包里面?zhèn)鬏敗?br>
通過一組8位的HC1編碼,接收節(jié)點可以知道通過何種方法獲取被壓縮的信息,在傳輸了一個完整的IPv6包頭之后,每個包頭可以被壓縮到2個字節(jié)。如果經(jīng)過一定的手工設(shè)定,甚至可能從第一個包頭開始就直接發(fā)送壓縮包頭。
HC1編碼如下PI嵌入前綴PC壓縮前綴(假設(shè)共同的本地前綴)II嵌入接口地址IC省略接口地址(從相應(yīng)的鏈路層地址得到接口地址,在網(wǎng)狀路由中可以在最終目的地址域里面得到此值)
HC1編碼如下(從0位到7位)IPv6源地址(位0和1)00PI,II01PI,IC10PC,II11PC,ICIPv6目的地址(位2和3)00PI,II01PI,IC10PC,II11PC,IC優(yōu)先級和流標簽(位4)0不壓縮,傳送完整8位的優(yōu)先級和20位的流標簽1優(yōu)先級和流標簽都為0下一個包頭(位5和6)00不壓縮,傳送完整的8位01UDP10ICMP11TCPHC2編碼(位7)0沒有其他的包頭壓縮編碼位1HC1編碼后面還有HC2編碼等壓縮格式,HC2編碼用于壓縮TCP,UDP等包頭,將來可能實現(xiàn)更進一步的壓縮。
IPv6壓縮包頭幀格式如表6所示。
表6 IPv6壓縮包頭的幀格式路由設(shè)計包頭壓縮的確可以節(jié)省傳輸量,但是壓縮后的包頭沒有源地址,目的地址等信息,如何實現(xiàn)路由,讓壓縮包頭后的數(shù)據(jù)包能夠如常傳送到目的節(jié)點,是實際應(yīng)用中的關(guān)鍵問題。草案提出使用一種最終目的地址包頭來實現(xiàn)網(wǎng)狀路由的方法。
最終目的地址包頭的幀格式參見表7。
表7 最終目的地址包頭域值定義如下S1比特,該位為0表示目的地址使用IEEE擴展地址。該位為1表示目的地址使用短地址,但目前并不支持短地址。
剩余跳數(shù)7比特,每經(jīng)過一跳減1,如果該域域值為0,節(jié)點丟棄該包。
最終目的地址64比特,目的節(jié)點的鏈路層地址。目前版本使用IEEE擴展地址,今后可能支持16位短地址。
該方法利用鏈路本地IPv6地址是用MAC地址生成的原理,當知道目的節(jié)點IPv6地址的時候,也知道該目的節(jié)點的MAC地址。通過目的節(jié)點的MAC地址在路由表中尋找下一跳的路由,可以節(jié)省路由表的存儲空間,也可以省略中間節(jié)點對壓縮包頭的解壓縮。但是草案沒有說明具體實現(xiàn)細節(jié),只說明采取網(wǎng)狀拓樸的路由方法,并且兩個節(jié)點間只能同時傳輸一個數(shù)據(jù)流。
現(xiàn)有技術(shù)方案的缺點該草案對在IEEE 802.15.4標準規(guī)范上使用IPv6進行了針對性的研究,通過添加適應(yīng)層實現(xiàn)路由,能夠順利傳輸壓縮包頭后的數(shù)據(jù)包。但是其有一個關(guān)鍵的不足,兩個設(shè)備在同一個時間段只能夠傳輸一個數(shù)據(jù)流,相當于只能串行傳輸數(shù)據(jù)流。由于采用最終目的地址包頭,草案在適應(yīng)層上實現(xiàn)了路由,但是,僅僅依靠目的節(jié)點的MAC地址和從鏈路層獲得的上一跳的MAC地址,不足以區(qū)分多個數(shù)據(jù)流。如圖1所示,設(shè)備A要通過C中繼發(fā)送一段數(shù)據(jù)給設(shè)備D,同時設(shè)備B要通過C中繼一段數(shù)據(jù)給D,則設(shè)備D無法區(qū)分這兩個數(shù)據(jù)流,因為從C中繼發(fā)來的兩段數(shù)據(jù)流都只有壓縮后的包頭,里面沒有源地址、目的地址而只有一組HC1編碼和路程段限制域,而兩段數(shù)據(jù)流都是從C節(jié)點發(fā)送的,鏈路層中的發(fā)送方MAC地址相同。由于常規(guī)的路由協(xié)議很少支持節(jié)點間串行傳輸數(shù)據(jù)流,這會給路由協(xié)議的設(shè)計帶來很大問題。串行傳輸會大大降低整個無線傳感器網(wǎng)絡(luò)運行的效率,從而限制了無線傳感器網(wǎng)絡(luò)的廣泛應(yīng)用。
發(fā)明內(nèi)容
為了克服現(xiàn)有的技術(shù)的不足,本發(fā)明提供一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,解決了在使用無線傳感器網(wǎng)絡(luò)通過網(wǎng)狀路由傳送經(jīng)過包頭壓縮的IPv6數(shù)據(jù)包的模式下,任意兩個傳感器網(wǎng)絡(luò)節(jié)點間并行傳輸多數(shù)據(jù)流的問題。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是本發(fā)明在IETF草案《在IEEE 802.15.4網(wǎng)絡(luò)上進行IPv6數(shù)據(jù)包的傳輸》(draft-montenegro-lowpan-ipv6-over-802.15.4-02)的基礎(chǔ)上對適應(yīng)層的幀格式引入路由標識符(RID)域,一個8位的序列號,有一個基于網(wǎng)狀拓撲適用于多跳壓縮傳輸?shù)穆酚伤惴?,其路由算法有如下步驟;步驟1,當某個節(jié)點需要發(fā)送信息到一個給定的地址,它首先根據(jù)該網(wǎng)絡(luò)的路由協(xié)議獲得通向該地址的路由;步驟2,在此路由的相應(yīng)表項中產(chǎn)生一個路由標識符(RID),這個初始的路由標識符(RID)就是該節(jié)點擴展地址(MAC地址)的低八位;步驟3,進行路由標識符(RID)沖突的判斷與檢測,將修改后不沖突的路由標識符(RID)信息隨著信息包發(fā)送出去。
步驟4,節(jié)點收到數(shù)據(jù)包后,檢測適應(yīng)層中‘M’位的值;步驟5,如果‘M’位的值為0,說明該數(shù)據(jù)包的目的地址為當前節(jié)點,節(jié)點接收并處理該數(shù)據(jù)。
步驟6,如果‘M’位的值為1,檢測最終目的地址包頭中“剩余跳數(shù)”的域值。
步驟7,如果“剩余跳數(shù)”為0,丟棄該數(shù)據(jù)包。
步驟8,如果“剩余跳數(shù)”不為0,根據(jù)該網(wǎng)絡(luò)的路由協(xié)議獲得通向該地址的路由;步驟9,進行步驟3,循環(huán)下去。
步驟5和步驟7是該算法的出口。
發(fā)明的效果本發(fā)明基于IEEE 802.15.4標準規(guī)范,適用于低速率、低功耗的無線個域網(wǎng),針對網(wǎng)狀路由(mesh routing),適用于多跳網(wǎng)絡(luò),但是沒有具體限定路由協(xié)議的種類,這些設(shè)計都為應(yīng)用于實踐鋪開了道路。由于沒有確定路由協(xié)議,需要申明一個本路由算法的前提任意兩個節(jié)點之間不會同時存在兩個或多個路由。由于無線傳感器網(wǎng)絡(luò)節(jié)點的能量有限,存儲容量有限,這個前提在實際應(yīng)用中十分合理。本發(fā)明采用草案draft-montenegro-lowpan-ipv6-over-802.15.4-02中提出的IPv6包頭壓縮算法,通過對適應(yīng)層的幀格式的改造,創(chuàng)造性地引入RID域值,提出一種更好的路由算法。通過RID的引入,結(jié)合本發(fā)明的路由算法,任意兩個節(jié)點間能夠并行傳輸多個數(shù)據(jù)流,這是原草案提出的路由算法所不能實現(xiàn)的。
在有線網(wǎng)絡(luò)中,使用源地址、目的地址、源端口、目的端口能夠很好地區(qū)分每個數(shù)據(jù)流,但是在能量受限的無線傳感器網(wǎng)絡(luò)中,這樣做顯然開銷太大。引入RID的目的是讓目的節(jié)點區(qū)分開帶有壓縮包頭的不同的數(shù)據(jù)流,這樣節(jié)點才能根據(jù)HC1編碼獲得不同數(shù)據(jù)流的壓縮信息,順利完成解壓。增加RID域只占用一個字節(jié),卻能夠?qū)崿F(xiàn)節(jié)點問多數(shù)據(jù)流的并行傳輸,大大提高了無線傳感器網(wǎng)絡(luò)的效率,實現(xiàn)任意兩個節(jié)點間并行傳輸多個帶有IPv6壓縮包頭的數(shù)據(jù)流。
本發(fā)明在RID的生成方法上做了較好的選擇,在一個節(jié)點的MAC已知的條件下,另一個節(jié)點的MAC的低八位與其相同的概率只有1/256,不到0.4%,因此,RID沖突處理的開銷非常小。
下面結(jié)合附圖和實施例對本發(fā)明進一步說明。
圖1本發(fā)明示例圖2節(jié)點發(fā)送數(shù)據(jù)流程3節(jié)點接收數(shù)據(jù)處理流程4源節(jié)點的路由表處理流程5中間節(jié)點的路由表處理流程圖
具體實施例方式
實施例適應(yīng)層的設(shè)計與實現(xiàn)修改后,不分片的適應(yīng)層封裝包頭格式如表8所示
表8 修改后不分片的適應(yīng)層封裝包頭格式域的定義如下RIDrouter identifier,路由標識符。這是本發(fā)明獨立創(chuàng)造的。一個8位的序列號,用來區(qū)分來自同一個中間節(jié)點的多個數(shù)據(jù)流。每個RID對應(yīng)著一條路由信息。路由表中目的地址不同的表項可以具有相同的RID。
修改后,第一個分片的封裝格式表9。
表9 修改后第一個分片的封裝格式第二一直到最后一個分片的格式不變,參見表3。
路由算法的設(shè)計與實現(xiàn)壓縮包中沒有源地址,目的地址,為了將壓縮包如常地發(fā)送到目的節(jié)點,本發(fā)明利用RID信息,通過添加最終目的地址域(見表7),在適應(yīng)層實現(xiàn)路由。這樣的好處之一就是不用對每個壓縮包進行解壓以提取其IPv6目的地址進行路由選擇。由于該域的目的地址是目的節(jié)點的MAC地址,因此能夠唯一標識一個節(jié)點。本方案支持網(wǎng)狀路由,具體路由協(xié)議可以根據(jù)用戶需求而定。
路由算法概述如圖2所示,節(jié)點需要發(fā)送數(shù)據(jù),首先根據(jù)該網(wǎng)絡(luò)采用的路由協(xié)議獲得通向目的地址的路由,當無法找到路由的時候,取消發(fā)送。
當找到到達目的節(jié)點的路由后,檢查目的節(jié)點是否當前節(jié)點的鄰居。如果是鄰居節(jié)點的話則在數(shù)據(jù)包中省略最終目的地址包頭,向鄰居節(jié)點發(fā)送數(shù)據(jù);否則添加最終目的地址包頭,將數(shù)據(jù)發(fā)送到路由的下一跳地址。具體過程按圖2所述流程處理。
如圖3所示,節(jié)點收到數(shù)據(jù)包后,首先檢查′M′位,如果′M′位為0,則說明當前節(jié)點為數(shù)據(jù)包的目的節(jié)點,接收并處理數(shù)據(jù)。如果′M′位為1,檢測剩余跳數(shù)是否為0。如果剩余跳數(shù)為0,丟棄該數(shù)據(jù)包;如果非0,節(jié)點通過檢測最終目的地址包頭,提取目的地址,并根據(jù)目的地址在路由表中尋找下一跳的節(jié)點;將跳數(shù)限制的域值減1。如果目的節(jié)點是當前節(jié)點的鄰居,則修改′M′位為0,刪除數(shù)據(jù)包中的最終目的地址包頭,將跳數(shù)限制的域值減1,將該數(shù)據(jù)包轉(zhuǎn)發(fā)到下一跳;否則跳數(shù)限制的域值減1,將直該數(shù)據(jù)包接轉(zhuǎn)發(fā)到下一跳。具體過程按圖3所述流程處理。
RID的產(chǎn)生與沖突處理參考路由表的結(jié)構(gòu),每個路由對應(yīng)著一個“上一跳地址”鏈表,每個上一跳地址對應(yīng)著一個RID鏈表。
某個節(jié)點需要發(fā)送信息到一個給定的地址,當找到這條通向指定地址的路由后,如果該路由不存在“上一跳地址”為0的表項,(上一跳地址為0說明當前節(jié)點為數(shù)據(jù)的源節(jié)點),則為此路由新建一個“上一跳地址”為0的鏈表表項,同時為該“上一跳地址”新建一個RID鏈表。該RID鏈表初始的入口RID就是該節(jié)點MAC地址的低八位。然后進行RID沖突檢測,將修改后不沖突(如果需要修改的話)的RID信息記錄為出口RID,并隨著信息包發(fā)送出去。
對于路由表中不同的路由,節(jié)點不檢測它們的出口RID的沖突。也就是說,不同的路由完全可以使用相同的出口RID。
對于路由表中同一個路由的上一跳地址鏈表,節(jié)點負責檢測這些不同的上一跳地址之間出口RID信息的沖突。如果后產(chǎn)生的RID出現(xiàn)在該路由的“上一跳地址”的出口RID中,則后產(chǎn)生的路由的RID加1,直到不產(chǎn)生沖突為止。節(jié)點修改后的RID既存儲在相應(yīng)的“上一跳地址”的出口RID中,也存儲在原來信息包的RID域里,(原RID信息被刪除),并隨著信息包發(fā)送,從而使下一跳的節(jié)點不產(chǎn)生沖突。
對于路由表中同一個路由的同一個上一跳地址鏈表表項對應(yīng)的同一個RID鏈表,節(jié)點不檢測出口RID的沖突,因為此時不同的出口RID標識不同的數(shù)據(jù)流。
路由表的結(jié)構(gòu)、維護在802.15.4無線傳感器網(wǎng)絡(luò)中,每個FFD設(shè)備都具有路由功能,能夠為其他設(shè)備中繼傳輸數(shù)據(jù)。為實現(xiàn)該功能,每個設(shè)備都存儲一張路由表,格式如表10。
表10 路由表的格式一條路由有一個“上一跳地址”的鏈表,根據(jù)需要里面可以有多個表項,每個上一跳地址都有一個“RID”的鏈表,根據(jù)需要里面也可以有多個表項。但是,一個路由最多分配256個出口RID值,供所有的“上一跳地址”的“RID”鏈表使用。每個表項會有一定的生存時間,以便釋放相應(yīng)的資源。
該路由表中的目的地址、上一跳地址、下一跳地址都是使用IEEE的64位擴展地址(MAC地址)。根據(jù)草案使用的地址配置方案,每個MAC地址都能映射到一個合法的單點傳送地址。
作為源節(jié)點生成的路由如圖4所示,源節(jié)點需要發(fā)送數(shù)據(jù)包,根據(jù)路由協(xié)議獲取目的地址的路由;如果無法找到路由,取消數(shù)據(jù)的發(fā)送。
當找到到達目的節(jié)點的路由后,檢查該路由是否有一個上一跳的地址為0的表項, (上一跳地址為0說明當前節(jié)點為數(shù)據(jù)的源節(jié)點)。如果有,說明某個RID已經(jīng)在使用,繼續(xù)使用該值,將信息包的RID改為目前使用的出口RID值,如果需要修改的話。
否則,新建一個上一跳的地址為0的表項以及其相應(yīng)的RID表項,記錄當前RID(節(jié)點擴展地址的低8位)為入口RID,進行RID沖突檢測。檢查初始的RID是否出現(xiàn)在該路由所有“上一跳地址”表項對應(yīng)的RID鏈表的出口RID中。如果沖突,則RID加1,直到不產(chǎn)生沖突為止,當RID沒有發(fā)生沖突時,記錄當前不產(chǎn)生沖突的RID為出口RID。具體如圖4所述流程進行處理。
作為中間節(jié)點生成的路由如圖5所示,中間節(jié)點收到目的地址非本身的數(shù)據(jù)包,從MAC層獲取該數(shù)據(jù)包的上一跳地址,根據(jù)路由協(xié)議獲取到達目的地址的路由。
首先檢查路由是否存在該“上一跳地址”的鏈表表項。
如果存在該“上一跳地址”的鏈表表項,再檢查當前路由該“上一跳地址”表項的RID鏈表的入口RID中是否存在數(shù)據(jù)包中的RID值。如果存在,說明當前RID正在使用,無須檢測,將數(shù)據(jù)包的RID修改為其RID鏈表的出口RID值,轉(zhuǎn)發(fā)數(shù)據(jù)包;如果不存在,為該“上一跳地址”建立一個RID鏈表表項,將當前RID記錄為入口RID,進行RID沖突檢測。
否則,新建該“上一跳地址”的鏈表表項以及其對應(yīng)的RID鏈表表項,將當前RID記錄為入口RID,進行RID沖突檢測。
沖突檢測檢查當前RID是否出現(xiàn)在該路由所有“上一跳地址”表項對應(yīng)的RID鏈表的出口RID中。如果沖突,則RID加1,直到不產(chǎn)生沖突為止。當RID沒有發(fā)生沖突,記錄當前不產(chǎn)生沖突的RID為出口RID。
注同一個“上一跳地址”鏈表表項對應(yīng)的RID鏈表表項之間的出口RID不用進行沖突檢測,因為此時不同的出口RID代表不同的數(shù)據(jù)流。
802.15.4標準規(guī)范是針對低功耗、低速率的無線個域網(wǎng),出現(xiàn)某個節(jié)點為同一個目的節(jié)點中繼傳輸256個數(shù)據(jù)流的概率非常低。再者,設(shè)計路由協(xié)議的時候可以定義一個存儲空間的上界,限定同一個路由的RID表項的總存儲空間,以保證這種情況不會發(fā)生。
每個路由表項都有一定的生存時間,生存時間到達,路由表自動將其刪除,從而減少沖突的機會。
中間節(jié)點區(qū)分多個數(shù)據(jù)流的方法1.目的地址不一樣,無論上一跳地址、入口RID是否一樣,節(jié)點都可以區(qū)分多個數(shù)據(jù)流。
2.目的地址一樣,上一跳地址不一樣。此時如果入口RID各不相同,則可以直接發(fā)送到下一跳,在下一跳的節(jié)點中,會出現(xiàn)目的地址,上一跳地址都一樣,但是入口RID不一樣的情形;如果入口RID與當前路由的出口RID產(chǎn)生沖突,則把后產(chǎn)生的表項的RID加1,直到不存在相同為止,這個修改后的RID保存在該路由對應(yīng)的出口RID里面,并修改信息包的RID域,寫入修改后的RID值,轉(zhuǎn)發(fā)到下一跳,從而使下一跳節(jié)點收到目的地址,上一跳地址都一樣,但是入口RID不一樣的信息包。
3.目的地址、上一跳地址都一樣的情況下,一個入口RID對應(yīng)著一個數(shù)據(jù)流。
目的節(jié)點識別多數(shù)據(jù)流的方法目的節(jié)點接收到多個數(shù)據(jù)流,按表11所列對數(shù)據(jù)流進行分類。如果數(shù)據(jù)流來自不同的鄰居,通過鄰居節(jié)點的MAC地址就可以區(qū)分數(shù)據(jù)流;如果來自同一個鄰居,一個入口RID對應(yīng)一個數(shù)據(jù)流。
表11 目的節(jié)點存儲結(jié)構(gòu)節(jié)點對應(yīng)不同的RID分別利用其數(shù)據(jù)包中的HC1編碼解壓包頭,獲得完整的包頭信息,順利接收數(shù)據(jù)。
權(quán)利要求
1.一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,其特征是對適應(yīng)層的幀格式引入路由標識符域,一個8位的序列號,有一個基于網(wǎng)狀拓撲適用于多跳壓縮傳輸?shù)穆酚伤惴?,其路由算法有如下步驟;步驟1,當某個節(jié)點需要發(fā)送信息到一個給定的地址,它首先根據(jù)該網(wǎng)絡(luò)的路由協(xié)議獲得通向該地址的路由;步驟2,在此路由的相應(yīng)表項中產(chǎn)生一個路由標識符,這個初始的路由標識符就是該節(jié)點擴展地址的低八位;步驟3,進行路由標識符沖突的判斷與檢測,將修改后不沖突的路由標識符信息隨著信息包發(fā)送出去;步驟4,節(jié)點收到數(shù)據(jù)包后,檢測適應(yīng)層中‘M’位的值;步驟5,如果‘M’位的值為0,說明該數(shù)據(jù)包的目的地址為當前節(jié)點,節(jié)點接收并處理該數(shù)據(jù);步驟6,如果‘M’位的值為1,檢測最終目的地址包頭中“剩余跳數(shù)”的域值;步驟7,如果“剩余跳數(shù)”為0,丟棄該數(shù)據(jù)包;步驟8,如果“剩余跳數(shù)”不為0,根據(jù)該網(wǎng)絡(luò)的路由協(xié)議獲得通向該地址的路由;步驟9,進行步驟3,循環(huán)下去。
2.根據(jù)權(quán)利要求1所述的一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,其特征是路由標識符域,用來區(qū)分來自同一個中間節(jié)點的多個數(shù)據(jù)流,每個路由標識符域?qū)?yīng)著一條路由信息,路由表中不同的路由可以具有相同的路由標識符域。
3.根據(jù)權(quán)利要求1所述的一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,其特征是對于路由表中同一個路由的上一跳地址鏈表,節(jié)點負責檢測這些不同的上一跳地址之間出口路由標識符域信息的沖突,如果后產(chǎn)生的路由標識符域出現(xiàn)在該路由的“上一跳地址”的出口RID中,則后產(chǎn)生的路由的路由標識符域加1,直到不產(chǎn)生沖突為止,節(jié)點修改后的路由標識符域既存儲在相應(yīng)的“上一跳地址”的出口路由標識符域中,也存儲在原來信息包的路由標識符域里,并隨著信息包發(fā)送。
4.根據(jù)權(quán)利要求1所述的一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,其特征是中間節(jié)點收到目的地址非本身的數(shù)據(jù)包,從MAC層獲取該數(shù)據(jù)包的上一跳地址,根據(jù)路由協(xié)議獲取到達目的地址的路由后,首先檢查路由是否存在該“上一跳地址”的鏈表表項,如果存在該“上一跳地址”的鏈表表項,再檢查當前路由該“上一跳地址”表項的路由標識符域鏈表的入口路由標識符域中是否存在數(shù)據(jù)包中的路由標識符域值,如果存在,無須檢測,將數(shù)據(jù)包的路由標識符域修改為其路由標識符域鏈表的出口路由標識符域值,轉(zhuǎn)發(fā)數(shù)據(jù)包;如果不存在,為該“上一跳地址”建立一個路由標識符域鏈表表項,將當前路由標識符域記錄為入口路由標識符域,進行路由標識符域沖突檢測;否則,新建該“上一跳地址”的鏈表表項以及其對應(yīng)的路由標識符域鏈表表項,將當前路由標識符域記錄為入口路由標識符域,進行路由標識符域沖突檢測。沖突檢測過程檢查當前路由標識符域是否出現(xiàn)在該路由所有“上一跳地址”表項對應(yīng)的路由標識符域鏈表的出口路由標識符域中,如果沖突,則路由標識符域加1,直到不產(chǎn)生沖突為止,當路由標識符域沒有發(fā)生沖突,記錄當前不產(chǎn)生沖突的路由標識符域為出口路由標識符域。
全文摘要
一種IPv6傳感器網(wǎng)絡(luò)中支持壓縮包并行傳輸?shù)膶崿F(xiàn)方法,解決了在使用無線傳感器網(wǎng)絡(luò)通過網(wǎng)狀路由傳送經(jīng)過包頭壓縮的IPv6數(shù)據(jù)包的模式下,任意兩個傳感器網(wǎng)絡(luò)節(jié)點間并行傳輸多數(shù)據(jù)流的問題。本發(fā)明在對適應(yīng)層的幀格式引入路由標識符域,一個8位的序列號,有一個基于網(wǎng)狀拓撲適用于多跳壓縮傳輸?shù)穆酚伤惴ā0l(fā)明的效果適用于低速率、低功耗的無線個域網(wǎng),針對網(wǎng)狀路由,適用于多跳網(wǎng)絡(luò),但是沒有具體限定路由協(xié)議的種類,本發(fā)明在RID的生成方法上做了較好的選擇,在一個節(jié)點的MAC已知的條件下,另一個節(jié)點的MAC的低八位與其相同的概率只有1/256,不到0.4%,因此,RID沖突處理的開銷非常小。
文檔編號H04L12/56GK1694429SQ20051001174
公開日2005年11月9日 申請日期2005年5月20日 優(yōu)先權(quán)日2005年5月20日
發(fā)明者張宏科, 郜帥, 李昭樺, 秦雅娟, 王洪超, 王江林, 劉穎 申請人:北京交通大學(xué)