本發(fā)明屬于無線網(wǎng)絡傳輸?shù)募夹g領域,具體涉及一一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)和方法。
背景技術:
6lowpan的一個重要特性就是,ieee.802.15.4提供的數(shù)據(jù)報的有效載荷的大小有限,其中約一半會被ipv6報頭消耗掉,但當ipv6可以放進ieee802.15.4數(shù)據(jù)報時,6lowpan才是最有效率的。lowpan的壓縮方案一直考慮的是對ipv6頭部字段進行壓縮。
由于在ipv6中,mac層支持的載荷長度遠遠大于6lowpan的底層所能提供的載荷長度,為了實現(xiàn)mac層與網(wǎng)絡層的無縫鏈接,所以在網(wǎng)絡層和mac層之間增加一個網(wǎng)絡適配層,用來完成報頭壓縮、分片和重組及其他工作。當數(shù)據(jù)報在適配層傳輸時,多以分片的形式進行傳輸,除第一分片外,后續(xù)分片的分片頭的很多數(shù)據(jù)是重復多余的,極大地增加了網(wǎng)絡的負載,導致了分片的增多,并降低了適配層的傳輸效率。
在2016年第35屆中國控制會議論文集的論文《low-powerwirelesssensornetworkprotocolofmobilehealthbasedonipv6》中提出,可在適配層中對6lowpan數(shù)據(jù)報的分片頭部進行壓縮,對適配層的分片頭部進行壓縮前的格式如表1所示:
表1
對表1中所示的適配層的分片頭部進行壓縮后的格式如表2所示:
表2
如表1、表2所示,該方法對適配層中分片頭部進行了兩部分壓縮:一是將數(shù)據(jù)報標記(datapackettag)由16個比特壓縮成8個比特,即提供標記0~255,足以區(qū)分數(shù)據(jù)報;二是將數(shù)據(jù)偏移(datapacketoffset)將8個比特壓縮為5個比特,0~31自增足以表示后續(xù)分片的個數(shù)。雖然該方法在一定程度上將適配層中的分片頭部進行了壓縮,然而,在分片頭部還有許多的冗余字段并沒有被壓縮,這就降低了數(shù)據(jù)報在適配層的傳輸效率。
技術實現(xiàn)要素:
本發(fā)明克服現(xiàn)有技術存在的不足,所要解決的技術問題為:提供一種能夠提高數(shù)據(jù)報在適配層的傳輸效率,降低網(wǎng)絡的負載的6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)和方法。
為了解決上述技術問題,本發(fā)明采用的技術方案為:一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng),壓縮動作發(fā)生在適配層,重組動作發(fā)生網(wǎng)絡層,在適配層中傳輸?shù)臄?shù)據(jù)報包括:第一分片和后續(xù)分片,所述的壓縮重組系統(tǒng)包括:標識壓縮單元:用于將后續(xù)分片的分片頭標識由多個比特壓縮為一個比特,并確定壓縮后的標識符號;標識符號賦值單元:用于對確定后的標識符號進行賦值,并建立不同的標識符號值與是否代表其為后續(xù)分片的分片頭之間的對應關系;長度壓縮單元:用于將后續(xù)分片的分片頭數(shù)據(jù)報長度由多個比特壓縮為零個比特;數(shù)據(jù)包重組單元:用于將進行報頭壓縮后的數(shù)據(jù)包在網(wǎng)絡層進行重組。
優(yōu)選地,所述數(shù)據(jù)包重組單元包括:第一判斷單元:用于判斷當前數(shù)據(jù)報的長度是否大于122字節(jié);第二判斷單元:用于當當前數(shù)據(jù)報的長度大于122字節(jié)時,根據(jù)數(shù)據(jù)報標記,判斷是否接收過該數(shù)據(jù)報;調(diào)用單元:用于當判定接收過當前數(shù)據(jù)報時,直接調(diào)用該標記的單鏈表,然后將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理;緩存單元:用于當判定沒有接收過當前數(shù)據(jù)報時,緩存當前數(shù)據(jù)報的數(shù)據(jù)報標記,將接收到的分片頭標識未被壓縮的第一分片,放在單鏈表的表頭;第三判斷單元:用于判斷當前分片的分片頭是否為后續(xù)分片的分片頭;退出單元:用于當當前分片的分片頭不是后續(xù)分片的分片頭時,則退出,重新進行下一數(shù)據(jù)包的重組;排序單元:用于當當前分片的分片頭是后續(xù)分片的分片頭時,根據(jù)當前分片在重組時的排列序號,使后續(xù)分片在單鏈表中有序排放,然后將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理;組裝釋放單元:用于將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理。
優(yōu)選地,所述的壓縮重組系統(tǒng)還包括:數(shù)據(jù)報標記壓縮單元:用于將分片的數(shù)據(jù)報標記所占的比特進行壓縮;數(shù)據(jù)偏移壓縮單元:用于將分片的數(shù)據(jù)偏移所占的比特進行壓縮。
優(yōu)選地,所述標識符號為t,t的值為1或0,當t為1時,表示該分片的分片頭為后續(xù)后片頭,當t為0時,表示后續(xù)分片錯誤。
相應地,一種6lowpan數(shù)據(jù)報的壓縮重組方法,壓縮動作發(fā)生在適配層,重組動作發(fā)生網(wǎng)絡層,在適配層中傳輸?shù)臄?shù)據(jù)報包括:第一分片和后續(xù)分片,所述的壓縮重組方法包括:將后續(xù)分片的分片頭標識由多個比特壓縮為一個比特,并確定壓縮后的標識符號;對確定后的標識符號進行賦值,并建立不同的標識符號值與是否代表其為后續(xù)分片的分片頭之間的對應關系;將后續(xù)分片的分片頭數(shù)據(jù)報長度由多個比特壓縮為零個比特;將進行報頭壓縮后的數(shù)據(jù)包在網(wǎng)絡層進行重組。
優(yōu)選地,所述將進行報頭壓縮后的數(shù)據(jù)包在網(wǎng)絡層進行重組,具體包括以下步驟:s101、判斷當前數(shù)據(jù)報的長度是否大于122字節(jié),如是,則分片執(zhí)行步驟s102,否則,直接執(zhí)行步驟s107;s102、根據(jù)數(shù)據(jù)報標記,判斷是否接收過該數(shù)據(jù)報,如是,則直接調(diào)用該標記的單鏈表,執(zhí)行步驟s105,否則,執(zhí)行步驟s103;s103、緩存當前數(shù)據(jù)報的數(shù)據(jù)報標記,將接收到的分片頭標識未被壓縮的第一分片,放在單鏈表的表頭;s104、判斷當前分片的分片頭是否為后續(xù)分片的分片頭,如是,執(zhí)行步驟s105,否則,執(zhí)行步驟s106;s105、根據(jù)當前分片在重組時的排列序號,使后續(xù)分片在單鏈表中有序排放,然后執(zhí)行步驟s107;s106、退出,重新進行下一數(shù)據(jù)包的重組;s107、將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理。
優(yōu)選地,所述的壓縮重組方法還包括:將分片的數(shù)據(jù)報標記所占的比特進行壓縮;將分片的數(shù)據(jù)偏移所占的比特進行壓縮。
優(yōu)選地,所述標識符號為t,t的值為1或0,當t為1時,表示該分片的分片頭為后續(xù)后片頭,當t為0時,表示后續(xù)分片錯誤。
本發(fā)明與現(xiàn)有技術相比具有以下有益效果:
1、本發(fā)明在現(xiàn)有技術的基礎上進行了改進,一方面設立了標識符號來減少分片頭標識所占的字節(jié),另一方面壓縮了后續(xù)分片中冗余的分片頭數(shù)據(jù)報長度,全方位地對適配層中的分片頭部進行了壓縮,提高了數(shù)據(jù)報在適配層的傳輸效率,降低了網(wǎng)絡的負載。
2、本發(fā)明在適配層中對分片頭部進行壓縮之后,也有利于壓縮后的數(shù)據(jù)包在網(wǎng)絡層的重組;此外,本發(fā)明只是在現(xiàn)有的壓縮方法的基礎上對其進行改進與完善,并不是推倒重來,具有良好的推廣性。
附圖說明
下面結(jié)合附圖對本發(fā)明做進一步詳細的說明;
圖1為本發(fā)明實施例一提供的一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)的結(jié)構示意圖;
圖2為本發(fā)明實施例二提供的一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)的結(jié)構示意圖;
圖3為本發(fā)明實施例三提供的一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)的結(jié)構示意圖;
圖4為本發(fā)明實施例一提供的一種6lowpan數(shù)據(jù)報的壓縮重組方法中數(shù)據(jù)包在網(wǎng)絡層中進行重組的流程示意圖;
圖中:101為標識壓縮單元,102為標識符號賦值單元,103為長度壓縮單元,104為數(shù)據(jù)包重組單元,105為數(shù)據(jù)報標記壓縮單元,106為數(shù)據(jù)偏移壓縮單元,1041為第一判斷單元,1042為第二判斷單元,1043為調(diào)用單元,1044為緩存單元,1045為第三判斷單元,1046為退出單元,1047為排序單元,1048為組裝釋放單元。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部的實施例;基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
6lowpan,是ipv6overlowpowerwirelesspersonalareanetwork的簡稱,是基于ipv6協(xié)議框架下,完成ipv6數(shù)據(jù)在低速無線個域網(wǎng)傳輸?shù)膮f(xié)議框架;數(shù)據(jù)報標記(datapackettag),用來標識一個被拆分的ipv6數(shù)據(jù)報,所以同一個數(shù)據(jù)報的所有分片的該字段的值全部相等,當發(fā)送端發(fā)送一個完整的數(shù)據(jù)報,將其值自動加一;數(shù)據(jù)偏移(datapacketoffset),在后續(xù)分片中出現(xiàn),是一個8字節(jié)長度的自增1的數(shù)據(jù),用來標識該分片在重組時的排列序號;數(shù)據(jù)報的長度(datapacketsize),表示在分片之前的ipv6數(shù)據(jù)報的原始長度。
圖1為本發(fā)明實施例一提供的一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)的結(jié)構示意圖,如圖1所示,一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng),壓縮動作發(fā)生在適配層,重組動作發(fā)生網(wǎng)絡層,在適配層中傳輸?shù)臄?shù)據(jù)報包括:第一分片和后續(xù)分片,所述的壓縮重組系統(tǒng)包括:
標識壓縮單元101:用于將后續(xù)分片的分片頭標識由多個比特壓縮為一個比特,并確定壓縮后的標識符號。
標識符號賦值單元102:用于對確定后的標識符號進行賦值,并建立不同的標識符號值與是否代表其為后續(xù)分片的分片頭之間的對應關系。
長度壓縮單元103:用于將后續(xù)分片的分片頭數(shù)據(jù)報長度由多個比特壓縮為零個比特。
數(shù)據(jù)包重組單元104:用于將進行報頭壓縮后的數(shù)據(jù)包在網(wǎng)絡層進行重組。
具體地,所述標識符號可為t,t的值可為1或0,當t為1時,表示該分片的分片頭為后續(xù)后片頭,當t為0時,表示后續(xù)分片錯誤。
以表1中所示的分片頭部為例,后續(xù)分片的分片頭的前五個字節(jié)11100用來表示這是一個分片頭并始終為11100,占據(jù)了五個字節(jié),由于后續(xù)分片可能有多個,重復的11100累計,增加了網(wǎng)絡的負載同時又導致了分片的增加,并降低了適配層的傳輸效率。采用本實施例,壓縮了后續(xù)分片的分片頭的前五個比特11100,用一個1比特的t標識代替11100,節(jié)省了四個字節(jié)。
同樣地,原始數(shù)據(jù)報長度(datapacketsize)經(jīng)過6lowpan分片之后的所有分片幀的該字段值全部相等,后續(xù)分片重復的數(shù)據(jù)報長度增加了網(wǎng)絡的負載。采用本實施例,壓縮后續(xù)分片的分片頭數(shù)據(jù)報的長度(datapacketsize)11比特,在第一個分片到達接收端時,第一個分片攜帶的datapacketsize就已經(jīng)告訴接收端要重組的原始ipv6數(shù)據(jù)包的大小,而后續(xù)分片中攜帶的datapacketsize就是冗余的可以壓縮掉。
采用本實施例對適配層的分片頭部進行壓縮后的格式如表3所示:
表3
從表3中可以看出,第一個分片提高的效率為:(1/20-1/32)*32=60%,后續(xù)分片提高的效率為:(1/14-1/40)*40=185%??梢姡琲pv6數(shù)據(jù)報在適配層傳輸時,對于分片壓縮可以減少報文分片的個數(shù)和冗余的分片頭部數(shù)據(jù),降低網(wǎng)絡的負載,提高適配層的效率。
圖2為本發(fā)明實施例二提供的一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)的結(jié)構示意圖,如圖2所示,在實施例一的基礎上,所述數(shù)據(jù)包重組單元104可包括:
第一判斷單元1041:用于判斷當前數(shù)據(jù)報的長度是否大于122字節(jié)。
第二判斷單元1042:用于當當前數(shù)據(jù)報的長度大于122字節(jié)時,根據(jù)數(shù)據(jù)報標記,判斷是否接收過該數(shù)據(jù)報。
調(diào)用單元1043:用于當判定接收過當前數(shù)據(jù)報時,直接調(diào)用該標記的單鏈表,然后將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理。
緩存單元1044:用于當判定沒有接收過當前數(shù)據(jù)報時,緩存當前數(shù)據(jù)報的數(shù)據(jù)報標記,將接收到的分片頭標識未被壓縮的第一分片,放在單鏈表的表頭。
第三判斷單元1045:用于判斷當前分片的分片頭是否為后續(xù)分片的分片頭。
退出單元1046:用于當當前分片的分片頭不是后續(xù)分片的分片頭時,則退出,重新進行下一數(shù)據(jù)包的重組。
排序單元1047:用于當當前分片的分片頭是后續(xù)分片的分片頭時,根據(jù)當前分片在重組時的排列序號,使后續(xù)分片在單鏈表中有序排放,然后將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理。
組裝釋放單元1048:用于將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理。
圖3為本發(fā)明實施例三提供的一種6lowpan數(shù)據(jù)報的壓縮重組系統(tǒng)的結(jié)構示意圖,如圖3所示,在實施例一的基礎上,所述的壓縮重組系統(tǒng)還可包括:
數(shù)據(jù)報標記壓縮單元105:用于將分片的數(shù)據(jù)報標記所占的比特進行壓縮。
數(shù)據(jù)偏移壓縮單元106:用于將分片的數(shù)據(jù)偏移所占的比特進行壓縮。
相應地,一種6lowpan數(shù)據(jù)報的壓縮重組方法,壓縮動作發(fā)生在適配層,重組動作發(fā)生網(wǎng)絡層,在適配層中傳輸?shù)臄?shù)據(jù)報包括:第一分片和后續(xù)分片,所述的壓縮方法包括:
將后續(xù)分片的分片頭標識由多個比特壓縮為一個比特,并確定壓縮后的標識符號。
對確定后的標識符號進行賦值,并建立不同的標識符號值與是否代表其為后續(xù)分片的分片頭之間的對應關系。
將后續(xù)分片的分片頭數(shù)據(jù)報長度由多個比特壓縮為零個比特。
將進行報頭壓縮后的數(shù)據(jù)包在網(wǎng)絡層進行重組。
圖4為本發(fā)明實施例一提供的一種6lowpan數(shù)據(jù)報的壓縮重組方法中數(shù)據(jù)包在網(wǎng)絡層中進行重組的流程示意圖,如圖4所示,所述將進行報頭壓縮后的數(shù)據(jù)包在網(wǎng)絡層進行重組,具體包括以下步驟:
s101、判斷當前數(shù)據(jù)報的長度是否大于122字節(jié),如是,則分片執(zhí)行步驟s102,否則,直接執(zhí)行步驟s107。
s102、根據(jù)數(shù)據(jù)報標記,判斷是否接收過該數(shù)據(jù)報,如是,則直接調(diào)用該標記的單鏈表,執(zhí)行步驟s105,否則,執(zhí)行步驟s103。
s103、緩存當前數(shù)據(jù)報的數(shù)據(jù)報標記,將接收到的分片頭標識未被壓縮的第一分片,放在單鏈表的表頭。
s104、判斷當前分片的分片頭是否為后續(xù)分片的分片頭,如是,執(zhí)行步驟s105,否則,執(zhí)行步驟s106。
s105、根據(jù)當前分片在重組時的排列序號,使后續(xù)分片在單鏈表中有序排放,然后執(zhí)行步驟s107。
s106、退出,重新進行下一數(shù)據(jù)包的重組。
s107、將單鏈表組裝,釋放單鏈表的緩沖區(qū),交給網(wǎng)絡層處理。
具體地,所述的壓縮重組方法還可包括:
將分片的數(shù)據(jù)報標記所占的比特進行壓縮。
將分片的數(shù)據(jù)偏移所占的比特進行壓縮。
具體地,所述標識符號為t,t的值為1或0,當t為1時,表示該分片的分片頭為后續(xù)后片頭,當t為0時,表示后續(xù)分片錯誤。
本發(fā)明為了減少現(xiàn)有技術中的重復數(shù)據(jù)傳輸,中能實現(xiàn)原來的功能的基礎之上,對分片的頭部進行了修改,一方面設立了標識符號來減少分片頭標識所占的字節(jié),另一方面壓縮了后續(xù)分片中冗余的分片頭數(shù)據(jù)報長度,全方位地對適配層中的分片頭部進行了壓縮,提高了數(shù)據(jù)報在適配層的傳輸效率,降低了網(wǎng)絡的負載。本發(fā)明在適配層中對分片頭部進行壓縮之后,也有利于壓縮后的數(shù)據(jù)包在網(wǎng)絡層的重組;此外,本發(fā)明只是在現(xiàn)有的壓縮方法的基礎上對其進行改進與完善,并不是推倒重來,具有良好的推廣性。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。