劉亦偉
(北京全路通信信號研究設計院集團有限公司,北京 100070)
鐵路通信作為通信系統的重要行業應用具有其特殊的應用需求,如應用信息傳送的高可靠性、高可用性、底時延、低誤碼率等[1-2]。在鐵路廣播通信系統中,使用前向糾錯技術可以有效降低系統誤碼率[3-4]。但現有的前向糾錯編碼技術通常使用固定碼率,且碼塊之間相互不獨立。固定碼率對于變長的應用層數據可能會造成通信系統承載能力的浪費。由于碼塊間不獨立,部分碼塊損壞可導致整個應用層信息錯誤或丟失。研究噴泉碼(RaptorQ)技術,將其作為一種前向糾錯的編碼方式[5]應用于鐵路廣播通信系統中,可在保證系統誤碼率的同時,最大限度的利用系統資源。同時,依賴于噴泉碼自身的編碼特點,譯碼是否成功僅與接收到的信息數量相關,部分信息的丟失不會對應用層信息造成影響。本文通過對不同丟包率條件下,達到不同誤碼率等級要求時所需的譯碼開銷進行仿真,實現對噴泉碼性能研究的目的。
噴泉碼是一種沒有碼率的編碼方式。編碼后生成的碼組包括兩部分:系統碼(Source symbols)和修復碼(Repair symbols)。其中系統碼由信源的內容按照碼組的符號(symbol)大小直接分割形成;修復碼由系統碼通過運算生成。系統碼的個數由每個碼組的長度和信源內容的大小決定,修復碼的個數由用戶根據網絡承載能力,丟包率等因素按照系統需要規定[6]。發送過程中源節點在不知道這些數據包是否被成功接收的情況下,持續發送數據包。例如:假設信源包含k個原始碼組,在噴泉碼編碼時可以產生k+n個碼組。其中n個新加碼組為修復碼,稱之為overhead。接收端只要收到k(1+ε)個碼組的任意子集,即收到一個稍微大于原來k值的N,就可通過譯碼,以高概率(和ε有關)成功地恢復全部信源內容。噴泉碼包含兩類,盧比變換LT 碼和Raptor 碼[7]。
鐵路車地廣播通信系統由地面發送系統和車載接收系統兩部分組成,如圖1 所示。地面發送系統由地面數據服務器和通信發送基站兩類設備組成。應用數據由數據服務器發送給通信基站后,由通信基站通過無線方式發射。
列車上裝備車載電臺。當列車進入基站覆蓋區后,由車載電臺接收數據,并將譯碼后的應用數據傳送給對應的車載設備。
由于廣播系統中地面與車載設備的通信沒有信息反饋機制,因此需要使用前向糾錯技術。廣播通信系統數據處理流程如圖2 所示。RaptorQ 所在的前向糾錯層,承擔了降低應用數據傳輸誤碼率,提高系統整體可靠性的重要任務。

圖1 鐵路車地廣播通信系統示意圖Fig.1 Schematic diagram of railway broadcast communication system

圖2 廣播通信系統數據處理流程示意圖Fig.2 Schematic diagram of data processing flow of railway broadcast communication system
地面側和車載側均包括3 個邏輯層次,即應用層、前向糾錯層、物理層。地面設備側,應用數據首先到達前向糾錯層,通過RaptorQ 編碼將信源信息變為系統碼組和修復碼組。RaptorQ 編碼后,將所有碼組傳遞給物理層,由物理層完成加擾,時隙映射,調制等工作后,通過無線方式發出。
車載設備側,從無線通道接收到數據后先經過物理層,完成解調、信息提取、解擾等工作。此時信息恢復為RaptorQ 編碼后得到的系統碼組和修復碼組。由于無線傳輸過程中存在誤碼的影響,接收到的碼組數量將小于等于發送的碼組數量。利用噴泉碼譯碼是否成功僅與接收到信息數量相關,部分信息的丟失不會對應用層信息造成影響的編碼特點,對接收到的碼組進行譯碼。理論上來說,當接收到的總碼組數量大于等于系統碼組個數時即可將應用數據成功譯出,對于應用數據來說不會出現誤碼。
因此,選擇合適的碼組長度和修復碼個數,是降低系統壓力,減少譯碼開銷,提高系統整體性能的關鍵環節。為了達到這個目的,本文對不同碼組長度在不同丟包率條件下的譯碼開銷進行了仿真。
噴泉碼在鐵路車地廣播通信系統中糾錯性能的仿真實驗基于LINUX 系統進行。使用C 語言在Ubuntu14.04 操作系統下進行仿真模型搭建。
系統仿真架構包括5 個部分,如圖3 所示。

圖3 噴泉碼糾錯性能仿真系統示意圖Fig.3 Schematic diagram of error correction performance simulation system of RaptorQ
1)生成定長的隨機數作為信源。信源的長度根據工程上的實際需求來確定,這里使用1 800 Byte。
2)將信源(隨機數)進行RaptorQ 編碼。
3)編碼后的系統碼組和修復碼組通過同樣的消除信道,以此來模擬網絡中的丟包現象。
4)接收端將收到的碼組進行RaptorQ 譯碼。
5)將譯碼后的數據與信源數據進行比較,得到應用層數據的誤碼率。
噴泉碼糾錯性能仿真使用1 800 Byte 的隨機數作為信源。選擇了4 種碼組長度大小(symbol size)作為研究對象,分別為16 Byte,32 Byte,48 Byte,64 Byte。每一種碼組的長度都對網絡丟包率從1%到10%的情況進行了測試。每組仿真傳輸都從k個系統碼組和1 個修復碼開始,此時傳輸的總碼組數為(k+1)。傳輸1 000 次,每次接收端譯碼成功則成功次數加1。如果1 000 次傳輸的成功次數不為1 000,即接收側出現了誤碼時,修復碼個數加1,傳輸的次數清零,此時傳輸的總碼組數為(k+2),以此類推。直到1 000 次傳輸,接收成功次數也為1 000,即誤碼率為0%時停止,此時傳輸的總碼組數為(k+n),記錄此時所需要的修復碼的個數n,計算譯碼開銷S。這里譯碼開銷S為修復碼與系統碼個數的比值,即:

1)仿真的碼組長度分為4 種:16 Byte,32 Byte,48 Byte,64 Byte。
2)需要編碼的信源大小為:1 800 Byte。
3)每種參數組合的仿真次數為1 000 次。
4)當出現丟包時認為丟失了一個碼組。
5)丟包率仿真范圍1%到10%,步長1%。
1)對于每種碼組長度和丟包率,仿真起始的修復碼個數為1。
2)嘗試1 000 次編碼、傳輸、解碼。
3)解碼成功,則成功計次數加1。
例如:在1%丟包率下,初始修復碼個數為1,若傳輸1 000 次的解碼成功率不為100%,則修復碼個數加1。直到修復碼個數為n時,解碼成功率為100%,記錄修復碼的個數。
4)將信道的丟包率加1%,進行下一個丟包率的仿真。
5)重復1)~4)。
6)找出每種丟包率下,解碼成功率為100%時的譯碼開銷,譯碼開銷計算方法見公式(1)。
4 種碼組長度在不同丟包率下達到100%譯碼成功率時所需要的譯碼開銷仿真結果如表1 和圖4所示。
通過對仿真數據和曲線的分析可以得到以下結論,對于固定大小的信源, 1 000 次傳輸達到100%的譯碼成功率:
1)對于任意的碼組長度和丟包率,通過增加修復碼的個數,總可以實現1 000 次傳輸100%的譯碼成功率;
2)隨著網絡丟包率的增加,需要的譯碼開銷隨之增加;
3)當網絡丟包率增加時,碼組越大,所需的譯碼開銷增長越快。

表 1 不同丟包率和碼組長度譯碼開銷測試結果Tab.1 Test results of decoding overhead for different packet loss rate and code block length

圖4 丟包率與譯碼開銷關系圖Fig.4 Relation diagram of packet loss rate and decoding overhead
4)對于不同的網絡丟包率,使用的碼組長度越小所需要的譯碼開銷越小。
5)同樣的譯碼開銷,碼組越小可以抵抗的網絡丟包率越大。
本文介紹了鐵路車地廣播通信系統架構,探討噴泉碼作為前向糾錯碼在系統中的作用,研究了噴泉碼譯碼開銷與碼組長度的關系。通過仿真實驗對噴泉碼的性能進行了測試。測試表明,在同樣的網絡條件下,碼組長度越小,譯碼開銷越小。同樣的譯碼開銷下,碼組長度越小,可以抵抗的網絡丟包率越大。
因此在實際使用中,在滿足系統需求的前提下,應優先考慮使用小長度的碼組進行噴泉碼編碼傳輸。但考慮到處理時間問題,小長度的碼組可能需要更大的處理時間,因此在鐵路通信系統設計時還需要進一步考慮。建議后續對碼組長度和處理時間相關問題做深入研究。