朱 博,雙 煒,喻竹希,王 璇,呂佳歡
(航天行云科技有限公司,湖北 武漢 430048)
低功耗廣域網(wǎng)是一種資源受限型網(wǎng)絡(luò),其主要特點(diǎn)包括低速率、低功耗和海量連接[1]。較長的數(shù)據(jù)報(bào)頭會對傳輸效率造成不可忽略的影響,如果使用IPv6作為網(wǎng)絡(luò)層協(xié)議,雖然在地址空間分配和組網(wǎng)效率方面比IPv4有了大幅度的提升,但是IPv6長達(dá)40字節(jié)的報(bào)頭對于物聯(lián)網(wǎng)應(yīng)用而言顯得過于冗長,從而使得該協(xié)議的實(shí)際效率低下[2]。IEEE802.15.4曾經(jīng)嘗試使用IPv6作為網(wǎng)絡(luò)層協(xié)議,稱之為6LoWPAN(IPv6 over LPWPAN)適配層[3]。相比于IEEE802.15.4而言,LPWAN受到的限制更多,所以6LoWPAN無法直接用于LPWAN。為此,IETF成立了LPWAN工作組,提出了靜態(tài)上下文報(bào)頭壓縮(Static Context Header Compression,SCHC)機(jī)制[4],這種機(jī)制利用了LPWAN網(wǎng)絡(luò)拓?fù)浜唵?、易于建立靜態(tài)的上下文關(guān)系等特點(diǎn),很好地解決了長報(bào)頭壓縮和數(shù)據(jù)分段傳輸?shù)葐栴}。
物聯(lián)網(wǎng)發(fā)展的最終愿景是與Internet進(jìn)行無縫連接,尤其是在IPv6普及之后,每個終端都可擁有全網(wǎng)唯一的IP地址,LPWAN終端可隨時(shí)被Internet上任意一臺應(yīng)用服務(wù)器直接訪問[5]。因此從網(wǎng)關(guān)→終端的下行流量將無法事先預(yù)知,從而難以維持網(wǎng)關(guān)與終端間的靜態(tài)上下文關(guān)系。
本文提出了一種可提高未知流量報(bào)頭壓縮成功率的方法,稱為動態(tài)虛擬映射(Dynamic Virtual Mapping,DVM),該方法的設(shè)計(jì)思想是利用可重用的DVM單元來封裝流量報(bào)頭中的未知字段,通過屏蔽掉未知流量動態(tài)性的方式提高SCHC的壓縮效率。因此,本方法實(shí)現(xiàn)了一種動態(tài)的上下文構(gòu)建機(jī)制,能夠減少網(wǎng)關(guān)和LPWAN終端之間的同步次數(shù),從而提高SCHC的壓縮成功率并降低網(wǎng)絡(luò)資源的消耗。
支持SCHC機(jī)制的LPWAN網(wǎng)絡(luò)架構(gòu)如圖1所示,它提供了LPWAN終端與應(yīng)用服務(wù)器之間的雙向連接,網(wǎng)關(guān)在轉(zhuǎn)發(fā)數(shù)據(jù)包到LPWAN網(wǎng)絡(luò)之前先使用網(wǎng)關(guān)側(cè)壓縮/解壓縮(Compress/Decompress,SCHC C/D)操作對報(bào)頭進(jìn)行壓縮,同樣,在終端側(cè)壓縮后發(fā)送的數(shù)據(jù)包也需要在網(wǎng)關(guān)處進(jìn)行解壓處理,恢復(fù)出原始數(shù)據(jù)報(bào)頭后再轉(zhuǎn)發(fā)給服務(wù)器。
圖1 支持SCHC的LPWAN網(wǎng)絡(luò)架構(gòu)
SCHC中的上下文信息由一些包含字段描述和壓縮/解壓縮操作的規(guī)則項(xiàng)組成。本地規(guī)則庫中每一條規(guī)則都由對應(yīng)的標(biāo)識號(Rules ID)表示,SCHC壓縮規(guī)則中字段的定義如表1所示。
表1 SCHC壓縮規(guī)則
SCHC處理數(shù)據(jù)包時(shí)首先在本地規(guī)則庫中通過輪詢方式選中匹配項(xiàng)最多的一條規(guī)則,然后將當(dāng)前字段值與對應(yīng)的目標(biāo)值進(jìn)行匹配運(yùn)算,如果所有字段都滿足匹配規(guī)則,則根據(jù)對應(yīng)的C/D操作進(jìn)行處理,產(chǎn)生一個壓縮報(bào)頭,否則繼續(xù)檢測下一條規(guī)則。如果同時(shí)有多條規(guī)則與報(bào)頭字段匹配,則選擇開銷最小的那一條。壓縮完成后,按照規(guī)則ID、壓縮殘留信息(未能完全匹配的字段)、Payload(有效負(fù)載)的順序重新封裝數(shù)據(jù)包。在接收端,解壓縮器首先通過查看規(guī)則ID來識別壓縮數(shù)據(jù)包中使用的規(guī)則。然后在規(guī)則庫中查找,并根據(jù)對應(yīng)的C/D操作來解壓縮,恢復(fù)出原始報(bào)頭后進(jìn)行下一步處理。
圖2 DVM映射方法解壓縮流程
DVM(動態(tài)虛擬映射)方法是在SCHC基礎(chǔ)之上進(jìn)行的擴(kuò)展,使用一組可復(fù)用的DVM單元來存儲SCHC機(jī)制無法識別的報(bào)頭字段,例如那些無法找到可匹配壓縮規(guī)則的字段或隨時(shí)間而變的字段。從而提高SCHC的壓縮效率。該方法的使用需滿足3個條件:(1)報(bào)頭中存在某些終端不關(guān)心其取值(可忽略)的字段。(2)在交互過程中字段的值始終不變(比如請求標(biāo)志符)。(3)在DVM單元的生存時(shí)間內(nèi),報(bào)頭字段的實(shí)際值與DVM單元中的值所建立的映射始終有效。
DVM方法在SCHC的基礎(chǔ)上增加了一種稱為DVM的匹配運(yùn)算符(Matching Operator)。并在目標(biāo)值字段(Target Value)中添加了一組DVM單元列表,[(DVM1),(DVM2)……],列表中的單元包含3部分:(1)DVM索引值。DVM單元的唯一ID,可自定義;(2)實(shí)際值。待壓縮字段的實(shí)際值;(3)DVM單元的生存時(shí)間(TTL)。該值非零時(shí),DVM單元表示被占用,TTL到期后對應(yīng)單元將被釋放。DVM索引值不隨時(shí)間而變,而其實(shí)際值和生存時(shí)間則會在執(zhí)行過程中被更新。
DVM方法的執(zhí)行流程如圖2所示,首先判斷數(shù)據(jù)的流向,即在進(jìn)行匹配操作時(shí)判斷是否應(yīng)該在網(wǎng)關(guān)側(cè)(見圖3)或終端側(cè)(見圖4)執(zhí)行相應(yīng)操作。如果壓縮操作在網(wǎng)關(guān)側(cè)已經(jīng)完成,則判斷是否報(bào)頭字段已經(jīng)與某個DVM值建立了映射關(guān)系,如果這個報(bào)頭字段值已經(jīng)存在,表示DVM操作已對此報(bào)頭生效。如果該報(bào)頭字段不存在,壓縮器會將這個值映射到列表中第一個空閑的DVM單元里或者已經(jīng)過期失效的單元中。如果報(bào)頭字段匹配成功,則與SCHC機(jī)制一樣,執(zhí)行規(guī)則中對應(yīng)的C/D操作進(jìn)行壓縮。如果DVM列表中存在多個可用單元,則C/D Action的選項(xiàng)中應(yīng)該使用mapping-sent(TTL),同時(shí)壓縮器發(fā)送用于與報(bào)頭字段建立映射關(guān)系的DVM索引值,索引值的編碼取決于DVM映射表中的單元總數(shù)。TTL值表示該DVM單元的最大生存時(shí)間,如果列表中僅有一個DVM映射單元,那么C/D Action選項(xiàng)應(yīng)該使用not-sent(TTL),此時(shí)壓縮器不會發(fā)送任何內(nèi)容。
DVM方法的解壓縮流程如圖2所示,首先,需要從DVM列表中恢復(fù)出使用過的DVM單元,可依據(jù)索引值的發(fā)送順序來確定,除非這是列表中的唯一的DVM單元。如果解壓縮需要在網(wǎng)關(guān)側(cè)完成,則解壓縮器使用該單元對應(yīng)的真實(shí)值來還原報(bào)頭,如果在終端側(cè)執(zhí)行解壓縮,報(bào)頭字段則使用相應(yīng)的DVM值進(jìn)行重構(gòu)即可,同時(shí)更新其生存時(shí)間。
圖3 網(wǎng)關(guān)側(cè)發(fā)起的DVM壓縮流程
圖4 終端側(cè)發(fā)起的DVM壓縮流程
由此可見,DVM值與真實(shí)值之間的映射關(guān)系在網(wǎng)關(guān)側(cè)表現(xiàn)出了動態(tài)性,終端在處理時(shí)并不需要知道其真實(shí)值?;诖颂攸c(diǎn),DVM映射技術(shù)并不適用于處理那些必須在終端側(cè)完整恢復(fù)的字段(比如IPv6的目的地址),更適合于那些取值對于終端而言可忽略的報(bào)頭字段。
本文以一臺LoRaWAN終端使用CoAP[6]向Internet上一臺應(yīng)用服務(wù)器發(fā)起請求并接收應(yīng)答消息的過程為實(shí)驗(yàn)場景。由于終端請求的服務(wù)器地址沒有存儲在本地規(guī)則庫中,因此服務(wù)器返回的應(yīng)答消息沒有與終端事先建立起靜態(tài)的上下文關(guān)系,此時(shí)便可使用DVM方法來進(jìn)行壓縮處理。
存儲在本地的SCHC壓縮規(guī)則庫如表2所示,其包含了完整的網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。在本示例中,終端的IPv6前綴(IPv6DEVprefix)是alpha::/64,設(shè)備ID部分(IPv6DEViid)可以依據(jù)其MAC地址而定。終端中CoAP運(yùn)行在UDP5678端口。CoAP的指令碼為(0.02)和(0.00)。此外,因?yàn)榻鈮嚎s器可重新計(jì)算UDP長度(UDPLength)和校驗(yàn)(UDPchksum),所以它們的取值可以忽略。
本場景下的DVM映射方法可用于IPv6地址的前綴部分(IPv6APPprefix)以及它的ID部分(IPv6APPid)、UDP報(bào)頭中的端口號(UDPAPPort)以及CoAP報(bào)頭中的消息ID段(CoAPMID)。因?yàn)檫@些字段的值會在不同流量中發(fā)生變化,原生SCHC機(jī)制無法處理。此外,這些值對于終端而言可忽略,但是在終端和網(wǎng)關(guān)之間傳輸時(shí)保持不變。因此,這些字段非常適合使用DVM方法進(jìn)行壓縮。如表2所示,規(guī)則庫在每個DVM列表中定義了兩個DVM單元(DVM1,DVM2),此時(shí)每個列表中的DVM值必須是唯一的,并使用一個比特來標(biāo)識單元是否被占用。本場景中的TTL值被設(shè)置為20(s),使用以上配置,本規(guī)則庫已經(jīng)可以滿足實(shí)驗(yàn)場景的需求。
筆者以報(bào)文壓縮率來衡量DVM方法的執(zhí)行效率,為此構(gòu)建分析和評價(jià)模型。在該模型中,DVM方法在執(zhí)行操作時(shí),TTL值需要滿足公式(1)的約束。這里的RTTL表示網(wǎng)關(guān)側(cè)到終端側(cè)的最長往返時(shí)間。
表2 DVM方法的壓縮規(guī)則庫
滿足公式(1)可以確保使用的DVM單元在生存時(shí)間內(nèi),網(wǎng)關(guān)側(cè)有足夠的時(shí)間接收到響應(yīng)報(bào)文。在理想的信道環(huán)境下,RTTL被定義為將要發(fā)送的最長請求消息所需的時(shí)間TLreq與將要被接收的最長響應(yīng)消息所需的時(shí)間TLres之和。同時(shí),還需要考慮真實(shí)信道環(huán)境中可能引起消息的重傳,因此,公式(1)中RTTL在計(jì)算時(shí)考慮了最大的MAC層重傳次數(shù)Rmax,這就意味著任何的傳輸在被有效接收前都需要傳輸最多Rmax次,我們可依據(jù)該原則設(shè)置TTL的初始值。
TTL≥RTTL
(1)
RTTL=Rmax(TLreq+TLres)+TLpre
本實(shí)驗(yàn)以M/D/N隊(duì)列[7]的形式為DVM映射列表進(jìn)行建模,在這種排隊(duì)模型中,到達(dá)網(wǎng)關(guān)側(cè)的請求消息分布服從泊松過程,到達(dá)速率λ和平均間隔時(shí)間為1/λ,服務(wù)接收率μ=1/TTL。N表示DVM列表中參與壓縮操作的單元數(shù)量。公式(2)表示新請求達(dá)到時(shí),所有DVM單元都不可用的概率。相應(yīng)的[1-P(ρ,N)]表示新到來的請求消息中發(fā)現(xiàn)有一個單元可用的概率。依據(jù)給定的N和λ,計(jì)算P(ρ,N)便得出能夠被DVM壓縮的概率,計(jì)算方法如公式(2)所示,對公式(2)進(jìn)行化簡并令初始值P(ρ,0)=1后得到公式(3)。
(2)
(3)
我們使用可壓縮率CRDVM來評價(jià)DVM方法的處理效率,其被定義未壓縮流量與已壓縮流量的比值。因此,對于一個長度為FL的報(bào)頭字段,如果在使用DVM方法的情況下,可使用公式(4)來計(jì)算其壓縮率。
(4)
如表3所示,LoRAWAN支持7擋速率的自適應(yīng)功能,此外還為每種不同速率指定了最大MAC幀長。為便于設(shè)置TTL的值,這里使用最大幀長和最大重傳次數(shù)Rmax=3來計(jì)算最差情況下的RTTL。在本場景中,可認(rèn)為響應(yīng)報(bào)文發(fā)出時(shí)的TLpre=0。根據(jù)公式(1)可知,RTTL等于使用最低速率傳輸最大幀長所需的時(shí)間TLreq加上使用當(dāng)前設(shè)備使用比特率發(fā)送最大幀長時(shí)所需的傳輸時(shí)間TLres之和的3倍。我們使用Semtech官方提供的計(jì)算工具[8]得出了不同Rb下對應(yīng)的RTTL值(如表3所示),可以根據(jù)這些值來設(shè)置合適的TTL值以滿足公式(1)的約束條件。
表3 LoRaWAN傳輸速率
本實(shí)驗(yàn)的仿真結(jié)果表明如果不使用DVM方法,根據(jù)公式(4)計(jì)算得出請求消息和響應(yīng)消息的壓縮率分別是3.85和4。在使用DVM方法時(shí),當(dāng)列表中存在1個、2個、4個和8個空閑單元可用時(shí),請求和響應(yīng)消息的壓縮率變化曲線如圖5所示。其中對于每個不同的N值,隨著請求消息到達(dá)速率λ的增加,4種情況下的壓縮率均表現(xiàn)為從最高值逐漸降低到最低值。當(dāng)P(ρ,n)=0(表明請求消息總是能找到至少一個可用的DVM單元)和當(dāng)P(ρ,N)增加時(shí)壓縮率降低到最小值。當(dāng)P(ρ,n)=1時(shí)就意味著報(bào)頭字段沒有被執(zhí)行壓縮。如圖4所示,壓縮率會隨著N的增加而減少,這是因?yàn)橛糜趯進(jìn)行編碼所需要的比特位在增加,從而降低了壓縮率。需要注意的是,最好將N的取值設(shè)置為2的整數(shù)次冪,假如設(shè)置N=3,則會與取N=4時(shí)得到相同的壓縮率,而N=4時(shí)可在更高的請求速率下維持更高的壓縮率。綜上所述,在相同的請求速率下,更小的TTL值可以得到更高的壓縮率,主要因?yàn)闇p少TTL的同時(shí)增加了找到生存時(shí)間到期的DVM單元的概率。
圖4 不同配置下的壓縮效率對比
目前LoRAWAN網(wǎng)絡(luò)只能運(yùn)行在非授權(quán)ISM頻段上,其發(fā)送占空比通常會被限制在一個很低的值[9-10],比如歐洲要求在863~870 MHz頻段內(nèi)發(fā)送占空比僅為1%。在這種低占空比的情況下,LoRAWAN應(yīng)用的平均請求到達(dá)時(shí)間通常在數(shù)十分鐘以上。因此,如果能實(shí)現(xiàn)如圖4所示的壓縮率,對于LoRAWAN應(yīng)用來說已經(jīng)足夠。在N=1時(shí)兩次請求和響應(yīng)的平均時(shí)間間隔分別為27和52 min。意味著在本場景下,相比于原生SCHC,DVM方法的請求和響應(yīng)消息壓縮率分別提高了600%和1 200%,這對于網(wǎng)絡(luò)資源和設(shè)備功耗的控制都是非常有利的,同時(shí)也反映出DVM方法在壓縮效率方面具有明顯的優(yōu)勢。
在LPWAN與Internet深度融合的長期愿景下,隨著IPv6的普及以及終端移動性需求的增加,SCHC機(jī)制所倡導(dǎo)的靜態(tài)上下文關(guān)系變得越來越難以維護(hù),針對一些無法建立穩(wěn)定上下文關(guān)系的場景,如何有效地提高報(bào)頭壓縮效率是值得研究的問題。本文在原生SCHC的基礎(chǔ)上進(jìn)行改進(jìn),提出了動態(tài)虛擬映射方法。該方法使用一組固定大小的DVM存儲單元,將一些無法處理的字段動態(tài)的映射到這些單元中,并在SCHC添加對應(yīng)的處理規(guī)則,同時(shí)建立復(fù)用方式。該方法相比于SCHC建立了一種動態(tài)的上下文映射機(jī)制,避免由于上下文關(guān)系發(fā)生變化而導(dǎo)致終端與網(wǎng)關(guān)之間的重新同步。實(shí)驗(yàn)證明本方法在適用條件滿足時(shí),相比于SCHC能夠大幅度提高報(bào)頭的壓縮效率,同時(shí)縮短響應(yīng)時(shí)間。