邱宏燕+楊燦+張大明
【摘 要】為了提高無線網(wǎng)絡(luò)的報頭壓縮效率及壓縮魯棒性,針對無線網(wǎng)絡(luò)存在多種窄帶傳輸鏈路且傳輸速率較低、誤碼率較高、節(jié)點移動頻繁等特征,介紹了ROHC報頭壓縮算法,研究了基于無線信道估計與上層業(yè)務(wù)需求、節(jié)點移動和多播三種情況下壓縮算法優(yōu)化改進思路,并通過仿真測試對比和分析,驗證了無線節(jié)點移動情況下ROHC改進算法的可行性。
【關(guān)鍵詞】魯棒性報頭壓縮協(xié)議 自適應(yīng)報頭壓縮 多播傳輸系統(tǒng)
1 引言
隨著無線網(wǎng)絡(luò)和IP技術(shù)的發(fā)展及融合,未來通信系統(tǒng)向全IP網(wǎng)絡(luò)方向發(fā)展,因此IP協(xié)議將成為下一代無線網(wǎng)絡(luò)的核心承載技術(shù)。在無線網(wǎng)絡(luò)中,存在短波、衛(wèi)星、VHF、UHF等多種窄帶無線傳輸手段,鏈路傳輸速率較低,誤碼率較高,而IPv4(20字節(jié))、IPv6(40字節(jié))等報頭較長,為了有效提高有限的無線帶寬資源,需對無線分組報頭進行壓縮。
目前應(yīng)用于IPv4/IPv6等報頭的壓縮協(xié)議主要有VJHC、IPHC、CRTP、ROHC等,前三類壓縮協(xié)議都是采用差分編碼,而且簡單修復(fù)機制,壓縮效率容易受到丟包影響,在誤碼率較高的鏈路上反而會降低傳輸效率?;谶@些原因,為了能在無線鏈路上獲得較高的壓縮率和較好的抗差錯魯棒性,IETF工作組于2001年提出了魯棒性報頭壓縮協(xié)議(ROHC,Robust Header Compression)。在2007年、2008年、2013年相繼對ROHC進行修正或補充。ROHC適用于誤碼率高、往返時間較長的無線鏈路,可對RTP/UDP/IPv4/IPv6、UDP/IPv4/IPv6、TCP/IPv4/IPv6等多種報頭進行壓縮。
2 無線網(wǎng)絡(luò)中ROHC壓縮總體設(shè)計
2.1 ROHC壓縮算法總體架構(gòu)
ROHC作為一種單跳點到點壓縮協(xié)議,在無線網(wǎng)絡(luò)中的應(yīng)用如圖1所示。主要針對其窄帶傳輸通道,利用ROHC壓縮協(xié)議將上層報頭(RTP/UDP/IPv4/IPv6、TCP/IPv4/IPv6)進行有效壓縮,從而減小報頭占用鏈路帶寬,提升有效載荷傳輸能力和服務(wù)質(zhì)量。
ROHC壓縮算法總體框架如圖2所示,由ROHC壓縮和解壓兩個模塊構(gòu)成,主要包括以下八個部分:
(1)根據(jù)報頭確定簡檔類型ID:PID(如RTP PID為0x0101);
(2)根據(jù)分組流確定上下文CID;
(3)ROHC工作模式:U、O、R模式;
(4)ROHC壓縮器工作狀態(tài):IR、FO、SO三個狀態(tài);
(5)ROHC解壓器工作狀態(tài):NC、SC和FC三個狀態(tài);
(6)IP、UDP、TCP等各報頭域分類;
(7)ROHC壓縮分組類型:IR、IR-DYN、UOR-2等14類;
(8)W-LSB編解碼和CRC校驗。
2.2 ROHC壓縮算法思路
(1)報頭域的分類
大多數(shù)連續(xù)報文的報頭域并不是隨機變化的,許多域在大部分時間內(nèi)是靜態(tài)不變的,即使有變化的域也是可以預(yù)測或和其他域相關(guān)的。這就使得報頭壓縮是可實現(xiàn)的。當設(shè)計一個壓縮算法之前,必須了解每個域的行為和細節(jié)。在基本的分類中,報頭域分為可推算域、靜態(tài)域、靜態(tài)定義域、靜態(tài)可知域和動態(tài)域??赏茢嘤虬挠蛑悼梢詮钠渌虻挠蛑抵型茢喑鰜?,這些字段域在所有的壓縮方案中是不傳送的,如IPv6報頭中數(shù)據(jù)長度、TCP報頭中數(shù)據(jù)偏移字段。靜態(tài)域在數(shù)據(jù)流的整個生命周期內(nèi)都是固定值,只在初始化時傳輸一次即可,如IP報頭中的版本號等。靜態(tài)定義域?qū)儆陟o態(tài)域中的一種,該類型的字段域用來區(qū)分不同的數(shù)據(jù)流,在整個數(shù)據(jù)流發(fā)送期間保持不變,如IPv6報頭中的流標記、源IP地址、目的IP地址等。靜態(tài)已知域的字段域是可知的,所以不需要傳送。動態(tài)域的字段域值是改變的,或隨機改變或有規(guī)律地改變,如TCP報頭中的SN字段是有規(guī)律的,但TCP校驗和是無規(guī)律的。
(2)分流器和上下文
在一個包流的生命周期內(nèi),無線鏈路上傳輸?shù)臄?shù)據(jù)包之間并不是各自獨立的,而是具有某些相同的參數(shù),比如相同的IP版本、源地址和目的地址等。封裝后的數(shù)據(jù)包在經(jīng)過分流器后按照一定的匹配原則分成不同的組,比如音頻流的數(shù)據(jù)包和視頻流的數(shù)據(jù)包。同一個組的包流共享相同的靜態(tài)定義域。
當數(shù)據(jù)流經(jīng)過分流器時,壓縮器首先進行歸類,然后讀取靜態(tài)定義域來區(qū)分不同的流,如表1所示,最后生成上下文并根據(jù)當前的信道狀態(tài)信息分配上下文標識符。不同的包流對應(yīng)著不同的壓縮規(guī)則。同一個流在報頭壓縮器和解壓器中維持一個相同的上下文,上下文由分流器分配的上下文標識符來識別。
(3)ROHC報文類型
ROHC方案中規(guī)定了兩種報文類型:一種是壓縮報頭類型;一種是反饋報文類型。壓縮報頭類型包括初始化類型(IR-header)、FO動態(tài)域類型(FO-DYN)和基于具體協(xié)議族的M-header壓縮報文。
IR-header:用來初始化上下文,傳輸?shù)氖巧舷挛闹械撵o態(tài)信息,有時也傳輸部分動態(tài)信息,如IR或IR-DYN報文。
FO-DYN:一般傳輸上下文中的動態(tài)信息,從不傳輸已經(jīng)初始化過的信息。
M-header:不同的協(xié)議族傳輸?shù)腎R-header和FO-DYN格式基本一樣。但M-header壓縮報文格式由于不同協(xié)議族壓縮策略不一樣,具體格式有所區(qū)別。如RTP/UDP/IP壓縮報頭可以分為三種類型:報文類型0(UO_0)、報文類型1(UO_1_ID、UO_1_TS、UO_1_RTP)、報文類型2(UOR_2、UOR_2_ID、UOR_2_TS、UOR_2_RTP)。
反饋報文類型包括Feedback1、Feedback2兩種類型。其中Feedback2包含ACK、NACK、STATIC-NACK三種類型。ACK表示正反饋,用于上下文正確更新的反饋;NACK表示負反饋,用于上下文沒有正確更新的反饋;STATIC-NACK用于靜態(tài)上下文沒有正確更新的反饋。Feedback1只用于傳輸ACK反饋報文。
(4)ROHC狀態(tài)機和工作模式
ROHC定義了三種工作模式:單向模式(Unidirectional,U-Mode)、雙向樂觀模式(Bidirectional Optimistic,O-Mode)、雙向可靠模式(Bidirectional Reliable,R-Mode)。每種模式下都有不同的壓縮狀態(tài)和解壓狀態(tài),不同的工作模式對應(yīng)的壓縮/解壓縮狀態(tài)轉(zhuǎn)移方式也不同。
ROHC壓縮器有三種壓縮狀態(tài),每一種都是不同程度的壓縮,分別為:IR狀態(tài)(Initialization and Refresh)、FO狀態(tài)(First Order)和SO狀態(tài)(Second Order),這三種壓縮狀態(tài)級別依次升高,壓縮器總是從最低壓縮狀態(tài)IR狀態(tài)開始工作,然后根據(jù)轉(zhuǎn)移條件或解壓器反饋情況依次向高壓縮狀態(tài)(FO或SO)轉(zhuǎn)移。ROHC解壓器也有三種狀態(tài):無上下文狀態(tài)(No Context,NC)、靜態(tài)上下文狀態(tài)(Static Context,SC)、全上下文狀態(tài)(Full Context,F(xiàn)C)。
(5)ROHC編碼算法
最低有效位(LSB,Least Significant Bit)和基于滑動窗口最低有效位(W-LSB,Windows-Least Significant Bit)編碼算法是ROHC協(xié)議中非常重要的壓縮算法,貫穿于ROHC算法的整個壓縮和解壓過程。LSB方法雖然簡單,但每個信頭的解壓需要上一個信頭的正確接收。這種方法不適合于無線鏈路,因為單個分組丟失時,用于下個分組解壓的上下文無效,導(dǎo)致丟棄壓縮/解壓縮上下文同步,于是下一個分組不能正確解壓而被丟棄?;贚SB算法存在的問題,為了提高算法可靠性,提出了W-LSB編碼算法,該算法使用含有多個參考值的滑動窗口,傳輸過程中即使某個參考值丟失,解壓器只要接收到其它參考值中的任意一個,就可以正確解壓LSB編碼的值。
3 無線網(wǎng)絡(luò)中ROHC壓縮算法改進
3.1 基于ROHC的自適應(yīng)報頭壓縮
在無線網(wǎng)絡(luò)中,任意兩節(jié)點間的信道條件隨著地形環(huán)境、干擾情況而變化,同時不同的業(yè)務(wù)需求也不同,有的業(yè)務(wù)對實時性要求很高,有的必須保障可靠傳輸?shù)鹊?,基于這些因素,不能簡單地將具有相同參數(shù)配置的ROHC算法應(yīng)用到無線網(wǎng)絡(luò)中的任何一個節(jié)點中。為此,提出了一種結(jié)合無線信道估計、業(yè)務(wù)需求的基于ROHC的自適應(yīng)報頭壓縮框架,即根據(jù)無線信道狀態(tài)進行信道估計并自適應(yīng)調(diào)整W-LSB算法中SWW滑動窗口大小、壓縮器和解壓器的工作模式以及狀態(tài)轉(zhuǎn)移。當上層業(yè)務(wù)需求改變時,工作模式的選擇由壓縮器控制,具體如圖3所示。
3.2 無線節(jié)點移動情況下ROHC改進
在無線網(wǎng)絡(luò)中,節(jié)點移動頻繁且兩個無線節(jié)點間存在多條鏈路,如圖4所示,如果直接采用表1的分流器匹配類型對分組流(即按照業(yè)務(wù)目的地址和源地址)進行分類,則當某業(yè)務(wù)源和目的節(jié)點間節(jié)點移動或者發(fā)送鏈路斷開時,中間節(jié)點解壓器上下文將失去同步,而從導(dǎo)致頻繁發(fā)送反饋信息占用信道帶寬?;诖饲闆r,通過將表1中的分流器匹配類型增加一個匹配條件即下一跳ID來解決該問題,即根據(jù)業(yè)務(wù)目的地址、源地址、業(yè)務(wù)下一跳ID對數(shù)據(jù)進行分流。通過搭建實際測試平臺驗證了此改進思路的可行性。
3.3 無線網(wǎng)絡(luò)多播環(huán)境下ROHC改進
在無線網(wǎng)絡(luò)多播環(huán)境中,如果采用ROHC算法設(shè)計思路,一旦某一個解壓方解壓失敗,就會導(dǎo)致壓縮方返回到低狀態(tài)上。此時壓縮方的狀態(tài)轉(zhuǎn)移邏輯如圖5所示。
從圖5可以看出,在無線網(wǎng)絡(luò)多播環(huán)境下,如果按照ROHC壓縮方狀態(tài)轉(zhuǎn)移思路,不管是已連接用戶上下文不同步還是新用戶加入多播系統(tǒng),都會造成壓縮方向較低狀態(tài)轉(zhuǎn)移[10],從而導(dǎo)致整個系統(tǒng)的壓縮效率降低。
為了解決無線網(wǎng)絡(luò)多播環(huán)境所面臨的這個問題,結(jié)合參考文獻[10]中的思路,提出了一種基于組播鄰居數(shù)的壓縮方周期性發(fā)刷新報文的機制,以完善整個多播系統(tǒng)上下文更新方案,并進一步提升壓縮效率。如圖6所示,組播源節(jié)點S,節(jié)點D、E、F、G為同一個組播組,在S、A節(jié)點(組播鄰居數(shù)為1)還是按照通用ROHC方式發(fā)送壓縮報文,到B節(jié)點(組播鄰居數(shù)大于1)以后,就按照這一方案,壓縮方在不改變壓縮狀態(tài)的情況下,通過周期性地發(fā)送完整報頭來完成多播系統(tǒng)的壓縮上下文同步。這樣一來,解壓失敗的單個解壓方和新加入組播系統(tǒng)的成員在無法正常解壓的情況下都無需向壓縮方主動發(fā)送失敗反饋,而只需等待至多一個刷新周期就能獲取到最新的報頭上下文,從而成功解壓后續(xù)報文。同時,組播鄰居數(shù)為1的用戶還是按照ROHC原先壓縮思路進行工作,不需周期性發(fā)送刷新報文,只有當收到解壓失敗反饋信息時才調(diào)整壓縮器到低狀態(tài)。具體說來,壓縮方按照通用ROHC方式進入FO狀態(tài)再進入SO狀態(tài)。之后除非壓縮方接收到的待壓縮數(shù)據(jù)包的報頭信息出現(xiàn)不規(guī)律變化,否則壓縮方就一直處在SO狀態(tài)。同時,壓縮方還需要設(shè)置一個定時器IR_TIMEOUT,每次超時之后,發(fā)送三個IR數(shù)據(jù)包,用來為新加入的接收方初始化壓縮上下文,也可以作為已經(jīng)加入多播系統(tǒng)的其他接收方檢查上下文是否同步的依據(jù)。同時,這三個IR數(shù)據(jù)包的原始待壓縮數(shù)據(jù)還是按照正常壓縮流程進行相應(yīng)狀態(tài)下的壓縮并發(fā)送,以保證正在傳輸數(shù)據(jù)的鏈路的信息連續(xù)性。改進后的壓縮方狀態(tài)轉(zhuǎn)移流程如圖7所示。
4 仿真結(jié)果與分析
下面以無線節(jié)點移動情況下ROHC算法改進為例,對改進前和改進后的ROHC壓縮性能進行評估(仿真測試場景如圖4所示),其中測試條件、測試業(yè)務(wù)和評估指標如下所示。
(1)測試條件
ROHC采用O工作模式,部分參數(shù)設(shè)置如下:
1)SWW滑動窗口值:C_WINDOW_WIDTH為4;
2)從IR轉(zhuǎn)移到FO狀態(tài)的n1為:#define MAX_IR_COUNT 3;
3)從FO轉(zhuǎn)移到SO狀態(tài)的n2為:#define MAX_FO_COUNT 3;
4)從FO返回到IR的timeout1:#define CHANGE_TO_IR_COUNT 1200;
5)從SO返回到FO的timeout2:#define CHANGE_TO_FO_COUNT 500;
6)解壓器反饋模式參數(shù)設(shè)置:成功解壓一個報文就反饋ACK,3個報文解壓失敗就發(fā)送NACK。
(2)測試業(yè)務(wù)
測試業(yè)務(wù)大小為68字節(jié)報文,其中報頭48字節(jié)(40字節(jié)IPv6報頭+8字節(jié)UDP報頭);業(yè)務(wù)負載為20字節(jié)的分組話數(shù)據(jù)(假定為分組話,編碼為G.729,編碼速率為8 kbps)。
(3)評估指標
1)平均壓縮報頭長度ACL(Average Compressed header Length):為成功解壓前的報頭總長度/成功解壓的分組數(shù);
2)報頭壓縮增益HG(Header Gain):為1-報頭壓縮長度/未壓縮的報頭長度;
3)分組丟棄百分率RLR(ROHC Lost Rate):為丟失的分組/總發(fā)送的分組個數(shù)。
假定發(fā)送5個分組報文后,圖4中的節(jié)點A移動出節(jié)點S的無線覆蓋范圍,仿真測試對比ROHC算法和改進后的ROHC壓縮性能,仿真測試結(jié)果如表2所示。從表2可以看出,改進后的ROHC算法在平均壓縮報文長度、報文壓縮增益和分組丟棄百分率方面優(yōu)于改進前的ROHC算法。
5 結(jié)論
本文針對無線網(wǎng)絡(luò)特征,結(jié)合ROHC報頭壓縮算法,提出的基于無線信道估計與上層業(yè)務(wù)需求、節(jié)點移動和多播三種情況下算法優(yōu)化改進思路,同時通過仿真測試對比和分析,驗證了無線節(jié)點移動情況下ROHC改進算法的可行性,為提高無線網(wǎng)絡(luò)的報頭壓縮效率、壓縮魯棒性提供了技術(shù)解決方案,改進算法適合Ad hoc網(wǎng)絡(luò)、PMP、民用移動通信3G/4G等所有無線網(wǎng)絡(luò)。
參考文獻:
[1] 吳亦川. 互聯(lián)網(wǎng)無線接入系統(tǒng)中IP報頭壓縮算法的研究[D]. 北京: 中國科學(xué)院研究生院, 2005.
[2] 崔成華. 平流層通信系統(tǒng)IPv6報頭壓縮算法研究[D]. 成都: 電子科技大學(xué), 2007.
[3] 劉天釗. 魯棒性報頭壓縮算法研究[D]. 成都: 電子科技大學(xué), 2008.
[4] 翁金成. 移動網(wǎng)絡(luò)中的包頭壓縮技術(shù)[D]. 北京: 北京郵電大學(xué), 2008.
[5] 周邏理. 基于Linux平臺的ROHC報頭壓縮系統(tǒng)的研究與實現(xiàn)[D]. 北京: 北京郵電大學(xué), 2008.
[6] 厲群,王春曉. ROHC協(xié)議分析與建模[J]. 計算機工程與設(shè)計, 2008,29(13): 3309-3312.
[7] 李祥中. 魯棒性報頭壓縮中實現(xiàn)滑動窗口動態(tài)調(diào)整[J]. 科技信息, 2012(7): 97-98.
[8] 曾宇輝,朱光喜,吳偉民,等. LTE系統(tǒng)中適應(yīng)鏈路層機制的TCP頭壓縮算法[J]. 小型微型計算機系統(tǒng), 2012, 33(4): 819-824.
[9] 陳陽. 無線通信ROHC協(xié)議技術(shù)研究與實現(xiàn)[D]. 大連: 大連海事大學(xué), 2012.
[10] 晉永龍. 基于ARM平臺的WCDMA系統(tǒng)中PDCP協(xié)議棧的分析與實現(xiàn)[D]. 北京: 北京郵電大學(xué), 2012.