閆樂樂,劉小勇
(1.中國電子科技集團公司第五十四研究所,河北 石家莊 050081;2.火箭軍裝備部駐廊坊地區軍事代表室,河北 廊坊 065000)
以太網業務作為無線通信系統中的主要業務類型,其傳輸質量是評價通信設備性能好壞的重要指標。通常以太網業務傳輸是采用透明傳輸方式,上層業務處理在通信設備層面是不可見的,業務層也不必清楚具體信道層面的實現細節。并且無線信道底層協議可承載最大幀長往往小于以太網標準最大幀長,依靠傳輸設備協議拆組包勢必帶來很大的信道和資源開銷[1]。另一方面,由于復雜不穩定的無線信道環境會導致業務數據在傳輸過程產生誤碼現象,丟包率隨著誤碼率升高而上升,進而極大影響上層的業務通信質量[2]。即使在以太網協議傳輸層增加重傳機制(如TCP協議),信道頻繁的分片數據丟失會導致整個分組數據的頻繁重傳,信道利用率會大大下降[3,4]。綜合考慮以上因素,為了提高通信可靠性,本文從信道幀長適配以及在低層增加輕量級重傳機制角度設計實現了一種無線通信透傳以太網數據分片重傳協議和裝置。
無線通信透傳以太網數據分片重傳協議,包括業務接口模塊、拆幀模塊、組幀模塊、數據緩存管理模塊和信道接口模塊,信號流程如圖1所示。
業務接口模塊包含數據接口和控制接口,數據接口負責接收所有上層以太網數據幀,對無用的雜包進行過濾以節省信道帶寬資源,將有用的數據幀輸出至拆幀模塊,以及將經過組幀模塊正確組幀后的完整以太網幀發送至上層業務端。控制接口負責接收上層監控端的控制數據以調整工作參數。
拆幀模塊負責將業務接口模塊來的標準以太網幀按長度拆分成適合信道接入設備的分片數據,添加利于收端組幀模塊處理的幀頭和校驗字段后封裝成小幀輸出至原始數據緩存和重傳數據緩存[5]。
原始數據緩存、重傳數據緩存和ACK應答緩存中存放有將要發送至信道接入設備的小幀數據和重傳次數以及加入隊列時間等控制信息,在緩存控制器的作用下按照ACK應答緩存>重傳數據緩存>發送數據緩存的優先級排隊發送至信道接口模塊。
信道接口模塊包含數據接口和控制接口,數據接口負責將不同緩存送來的小幀發送給信道接入設備,同時接收信道接入設備發來的數據并送至組幀模塊處理。控制接口負責接收信道接入設備發來的信道狀態參數,并適應性地調整工作參數。
組幀模塊負責將收到的信道小幀組合成為完整以太網幀并發送至業務接口模塊,并提取收到的數據幀序號信息送至ACK應答緩存,以及提取接收到的ACK幀信息給緩存控制器處理重傳數據緩存。
1.2.1 數據幀結構
以太網標準數據幀長度為64~1518 Bytes,除去4 Bytes幀校驗序列(Frame Check Sequence,FCS),網卡裸抓下來長度為60~1514 Bytes[6]。本文以太網數據分片長度為190 Bytes,分片數據幀結構如圖2所示。
其中Type、Seq、Subseq、Len字段組成了小幀頭部,Type表示小幀類型,用來區分數據幀和ACK應答幀;Seq表示大幀序號,范圍0~65 535;Subseq表示小幀序號,范圍0~7,用來標記該小幀處于大幀的什么位置;Len用來表示Data數據長度;Last標記位用來表示該小幀是否為大幀的最后一片;Data為有效的分片數據;Chksum為CRC-16校驗字段。數據幀有效長度為7~196 Bytes,相當于減小了以太網幀最大長度,分片數據幀格式能夠更好地適應無線信道特點,在信道存在誤碼的情況下減小丟包概率。
1.2.2 ACK幀結構
ACK應答幀結構如圖3所示。
圖3中,Type表示小幀類型;Num_int為已經組幀成功的大幀序號個數,Int_seqs表示具體Num_int個大幀序號;Num_part表示未組幀成功的大幀序號個數;Part_seqs表示這些大幀的具體接收狀態信息,這其中包含3部分內容,第1部分是未收全小幀即組幀未成功的大幀序號Seq,第2部分是該大幀序號下已經接收到的小幀個數Num_in,第3部分是具體的小幀序號Subseq;Chksum為幀校驗。
整個ACK應答幀的最大長度需與數據幀保持一致以適應信道特征。組幀模塊判斷接收到的數據是ACK應答幀,則解析出對端已成功接收的幀序號信息,輸入到本端的重傳緩沖,執行重傳緩沖刪除相應序號幀的操作。這種將組幀成功與否的大幀序號進行分類填充的方法(ACK信息聚合)相比ACK回復所有接收包序號的方式,可以減少ACK應答數據量降低信道開銷。幀中包含整個接收端收包狀態信息,能夠在小幀丟包情況下達到選擇重傳效果,極大減少重傳數據量,并且降低以太網包丟包率。
重傳緩存數據發送的前提是超時時間內未接收到ACK回復,超時時間由信道狀態信息決定。ACK應答緩存數據發送的前提為ACK緩存數據已滿或超時未傳送,設置ACK緩存超時時間目的是能夠在業務量極少情況下及時獲取ACK應答以節約系統內部資源,提高性能。當收到的小數據幀循環冗余驗碼(Cyclic Redundancy Check,CRC)校驗正確后需放入組包緩存,由于系統資源受限,組包緩存需循環利用,每個大幀應該在組包緩存超時時間內完成組幀操作。
無線信道下誤包率PER和誤碼率BER和幀長L的關系為
可以看出在一定誤碼率下,誤包率會隨著幀長的增加而增加[7]。在誤碼率為10-5、最大重傳次數為1次的情況下,計算不同幀長下引入分片重傳機制前后的誤包率,如圖4所示。由圖4可見,本文分片重傳協議能夠明顯降低誤包率。
根據數據幀和ACK(信息聚合前后)幀格式計算不同以太網幀長情況下的協議開銷,如圖5所示。
由圖5可知,在ACK使用信息聚合后,協議開銷在不同以太網幀長下均下降,并且幀長越大效果越顯著。
本文主要解決了無線信道以太網數據透明傳輸的可靠性問題,提出一種無線通信透傳以太網數據分片重傳方法,協議分析與仿真結果表明,該方法在增加有限的帶寬開銷的情況下可極大降低以太網誤幀率,提高業務傳輸質量。特別適用于誤碼率較高的無線信道下對以太網數據傳輸有高可靠性要求的場合。