,
(陸軍勤務學院 軍事物流系, 重慶 401311)
我國幅員遼闊,地震、洪水、泥石流等大型自然災害時有發生,造成的人員傷亡和經濟損失都十分巨大[1-4]。災害發生地區容易產生通信設備癱瘓問題,導致鏈路中斷、通信不暢,加之偏遠地區本身所存在的通信盲區,無法將災區信息及時傳遞出去,對于救援工作的開展帶來很大的不便[5]。為了盡快投入救援工作,最大程度的保護人民群眾的生命財產安全,構建應急通信鏈路進行信息的傳遞是十分必要的。
常規的通信技術由于通信原理的限制,在應急情況下無法很好的完成通信任務[6]。例如采用以太網進行遠程數據傳輸,雖然可以確保數據傳輸的實時性,但基站等通信設備易遭到破壞[7-8];基于手機無線自組織網構建小范圍應急通信系統,雖然可以實現語音和文本的一對一或一對多通信,但無法保證傳輸鏈路的通暢性以及數據傳輸的可靠性[9-10];使用ZigBee網絡和GPRS傳輸數據,雖然可以提高數據傳輸的可靠性,但ZigBee網絡無法進行移動終端組網,且傳輸的距離較近,GPRS存在著丟包現象和轉接時延的問題[11-14]。
相比而言,衛星通信技術可以不受自然災害的影響,不存在通信盲區,穩定性較高;并且誤碼率低,北斗系統的誤碼率最大為105,傳輸可靠[15-16]。因此,研究應急情況下北斗短報文通信功能的應用,構建通信系統,實現一對一或一對多的通信,對于災區信息的及時發送具有現實意義。
應急情況下,首先應當保證信息發送的時效性,在此基礎上,考慮到北斗短報文通信功能所具有的容量和頻度的限制,為了充分利用傳輸空間,盡可能多地將有用信息正確發送出去,需要對信息進行前期處理。為了便于說明,本文將一條信息稱為一個數據單元(Data Unit),用符號DU進行表示。
處理1:根據數據單元所含內容重要程度的差異,將其分為緊急數據單元和普通數據單元兩類,用符號UDU和ODU進行表示。UDU的內容較為重要,時效性要求比較高,需盡快讓接收方知曉;ODU內的內容相對來說對于發送時間沒有嚴格要求,因此,發送端應優先對UDU進行處理。
為了處理方便,在發送端緩沖區內,劃定隊列Queue1和隊列Queue2。如圖1所示,Queue1是由UDU組成的隊列,具有優先處理權;Queue2是由ODU組成的隊列,優先級較低。在發送信息時,指針首先指向隊列Queue1,當遍歷Queue1內數據單元后,再將指針指向隊列Queue2,從而保證數據單元按重要程度進行發送。
圖1 發送端緩沖區內隊列劃分
處理2:根據北斗短報文通信功能容量的限制,將需要發送的數據單元按照所含數據量的多少進行劃分。理論上北斗短報文通信功能的傳輸能力可達1680bit/次,但由于生產廠商、應用對象等因素的不同,各北斗設備的實際傳輸容量存在著差異。
如圖2所示:假定某北斗設備的傳輸容量為Nbit,設定限值區間為(N/2,N)。DU內所含數據量用M表示,當M
圖2 根據DU大小進行劃分
為了滿足應急情況下應用的實際需求,本文提出了相應的機制,需要對北斗短報文通信協議進行一定的改進。在北斗原有協議的基礎上,添加必要的傳輸約定關鍵字,以便于后續對數據的處理。協議改進部分的具體格式如表1所示。
表1 通信協議改進部分的格式
1)起始位。占用一個字節,以符號“*”表示。當讀取到起始位標識時,表明一條信息的開始。起始位對于SDU整合處理后的信息讀取具有重要作用。
2)標志位。用于傳輸機制的控制,可分為四個部分:反饋標識、數據類型標識、數據序列號、長數據單元標識。
(1)反饋標識。占用1個比特,用于表示DU是否為反饋數據單元。設定若反饋標識為0,則DU不是反饋信息;若反饋標識為1,則DU為反饋信息。反饋標識用于確保傳輸可靠,對發送的信息進行回復。
(2)數據類型標識。占用1個比特,用于表示DU所含信息的緊急程度。設定若數據類型標識為0,則為UDU;若數據類型標識為1,則為ODU。數據類型標識,對于應急條件下優先發送緊急信息的處理具有重要作用。
(3)數據序列號。占用5個比特,對需要發送的DU進行編號,并且根據劃分出的隊列Queue1和隊列Queue2分別進行編號。這樣能夠使得處理過程中能夠簡單快捷的找到所需的數據單元,對重傳處理具有重要作用。
(4)長數據單元標識。占用1個比特,用于表示DU是否為LDU。設定若長數據單元標識為0,則不是LDU;若長數據單元標識為1,則是LDU。長數據單元標識對于LDU的切分以及接收后的重組處理具有重要作用。
3)長度位。占用1個字節,用來標識DU的凈長度(不包含添加的傳輸約束關鍵字)。長度位是SDU整合處理以及LDU切分處理的依據。
4)終止位。占用一個字節,以符號“#”表示。當讀取到終止位標識時,表明一條信息讀取完畢。
對于成為“信息孤島”的應急狀況而言,在有限的時間和容量條件下,緊急情況中發送的多為SDU和MDU,對于LDU的使用較少,這樣可以盡可能多的將信息發送出去,對救援工作的指揮部署和具體方案的實施提供可靠的保障。因此,本文僅對SDU進行處理,處理步驟如下:
步驟一:順勢檢驗隊列Queue1中是否還有其它UDU。若有的話,進一步判斷其是否也為SDU;若沒有的話,就直接發送該UDU;
步驟二:若其后一個UDU也為SDU,則判斷兩者能否整合成一個UDU;若其后不是SDU,則直接發送第一個UDU;
步驟三:若兩者能夠整合,則整合成一個UDU,進而判斷整合后的UDU是否仍舊是SDU;若不能整合,則直接發送第一個UDU;
步驟四:若整合后的UDU仍舊是SDU,則重復步驟一至三,直至整合后的UDU不是SDU為止,將整合后的UDU進行發送。
UDU的處理過程如圖3所示。
圖3 UDU的處理
對于UDU而言,為了不影響信息傳輸的時效性,處理過程應當在極短的時間內完成。為防止SDU過多,整合過程持續循環,數據長時間滯留的情況發生,在整合處理中需設定一個計時器。計時器的時間設置為北斗設備發送兩次報文的時間間隔,從而強制終止整合操作,將數據信息發送出去。
值得注意的是,SDU整合過程中,對于每個DU添加的關鍵字仍然需要保留,這樣接收端在接收到數據包后,按照協議制定的規則進行解析就能夠還原出每條信息,避免造成信息的混淆。但處理后的DU相比于長度位所標定的DU的凈長度有所增加,所以整合時應當考慮傳輸約定關鍵字的因素,每合并一個SDU其真實數據量為標志位標定的數據量加上關鍵字的長度。
相較于UDU僅對SDU進行整合處理的情況,在ODU中,由于時效性的要求降低,信息滯留的時間相對較長,因此數據處理的可操作性增加,不單只是SDU間可以進行整合,也可考慮和MDU,甚至于LDU切分后的數據單元進行整合。
一些ODU雖然達到了MDU的限值,但是數據量不是特別的大,如果將其按照一個數據包進行發送,則會造成傳輸空間的浪費。為了盡可能充分的利用傳輸空間,需設定一個更加精確的限值如(5N/6,N),當數據量不滿足限值時,雖然是MDU,但仍需進行整合處理。
如圖4所示,在發送端緩沖區中建立一個臨時隊列Queue3,專門用來存放隊列Queue2中的SDU。通過這一處理過程,可以將SDU挑揀出來,這樣在整合處理的過程中,就能有針對性的進行操作,使整合處理高效快捷。
圖4 建立臨時隊列Queue3
對于ODU的處理過程如下:
當隊列Queue2中為SDU時,將其提取出來按序放入臨時隊列Queue3中。同時檢查Queue3的長度是否達到精確限值(5N/6,N),若達到限值,則將Queue3中的SDU整合成一個數據包進行發送;若沒有達到限值,則暫時擱置。
當隊列Queue2中為MDU或者LDU切分后的數據單元時,步驟如下:
步驟一:讓其按照Queue3的排列順序從前至后進行嘗試,看能否和其中的某個SDU進行整合;
步驟二:如果能夠整合,則將兩者進行合并,成為一個ODU,并判斷整合后的ODU是否滿足精確限值(5N/6,N);如果不能夠整合,則直接發送該MDU或者LDU切分后的數據單元;
步驟三:若整合后的ODU不滿足精確限值,則重復步驟一和二;若滿足精確限值,則發送整合后的ODU。
雖然ODU對于時效性的要求沒有那么嚴格,但是也不應一直滯留,因此在隊列Queue3中應該添加一個機制,當某個SDU滯留的時間達到一定值時,強制性進行發送。因此考慮對SDU添加計時器,從其進入隊列Queue3開始計時,當滯留時間達到30分鐘時,不再考慮數據的整合,直接進行發送。
ODU具體的處理過程如圖5所示。
圖5 ODU的處理
對于LDU而言,保證接收端數據的完整性是重要條件。因此,對于LDU的切分,要考慮切分出來數據塊的大小和順序性。為了處理簡單,以ODU處理中設定的精確限值作為切分的依據。這樣切分出來的前幾個數據塊都可直接發送,不必再考慮和SDU的整合問題。對于切分出來的最后一個數據塊,應當按照ODU處理中提到的處理方法進行處理。
為了方便傳輸,需要對切分出來的數據塊進行處理,使其符合制定的傳輸協議規則。為了便于數據塊的重組,在標志位中增加一個數據塊序列號,約占用3個比特位,其傳輸協議格式如表2所示。
LDU切分后,第一個數據塊保留有起始位和標志位,最后一個數據塊保留有長度位和終止位。為了整合處理方便,現將其舍棄,重新添加關鍵字信息。由同一個LDU切
表2 LDU切分后的傳輸協議格式 bit
分出來的數據塊,其起始位和標志位相同,使用LDU本身的起始位和標志位信息,僅根據實際改變數據塊序列號,這樣保證了切分出來的數據塊符合整個傳輸協議所制定的規則。在數據接收端進行LDU數據塊的重組時,就能夠根據相同的數據序列號對其進行合并,并通過數據塊序列號進行合并順序的確定,確保數據重組的完整性。
在北斗短報文通信的傳輸過程中存在著丟包的問題,據相關研究表明,北斗短報文通信單數據包的傳輸成功率約為95.5%;并且對于一個數據包來說存在著一定的傳輸出錯率,隨著包內數據量的增加傳輸出錯的可能性也會增加。因此,接收端在收到數據包時,首先需要進行差錯檢測。
針對丟包問題的檢測,通過數據包編號來進行。設定數據包編號標志位,編號取1~1 000,當發送端發送數據包時,按照從小到大的順序對其自動進行編號。當數據包發生丟失時,可通過其相鄰的數據包編號將其查找出來。假設46號數據包發生丟包問題,接收端在接收到45號包后,下一個接收到的數據包編號將為47,這樣就能夠檢測出46號包丟失。
針對傳輸數據出錯的檢測,通過長度位關鍵字來進行。接收端收到數據包后,對其進行解析,通過計算DU的長度和長度位進行比較,如果結果一致,則表明DU傳輸正確,若不一致,則檢測出傳輸錯誤。
這種方法僅為一種簡單快速的檢驗,并不能精確的將所有錯誤檢測出來,但是相比于其他差錯檢測方法而言,具有所需添加的冗余信息少,檢測時間短的優勢,在應急情況下具有一定的應用價值。
北斗短報文通信從本質上來說屬于不可靠通信,再加上丟包和傳輸數據出錯等因素,發送端不能明確的得知報文是否發送成功。在應急情況下,信息的交互顯得至關重要,為了讓通信雙方能夠知曉信息發送結果,充分利用其雙向通信的性質,采用最原始的逐條反饋機制,對接收到的每一個數據包都發送一個反饋數據包。
接收端接收到數據包后,首先對其進行差錯檢測,然后根據檢測結果,向發送端發送反饋信息,告知發送端數據包是否發送成功,數據傳輸是否完整,以便發送端采取相應的措施。反饋信息作為一個UDU存在,在接收端按照UDU發送方法進行操作。
當發生數據包丟失時,反饋信息中只需說明數據包編號即可;當發生數據單元傳輸出錯時,需要發送數據類型標識以及數據序列號,并且若為LDU出錯,還需要發送長數據單元標識以及數據塊序列號。這樣發送端在接收到反饋信息時,就能確定發送出錯的原因,并定位到出錯位置。
4.3.1 丟包問題的處理
通信系統中解決數據丟包的問題,主要采用自動重傳請求技術和前向糾錯技術兩種[17]。自動重傳請求技術根據反饋數據包的內容,對丟失的數據包進行重新發送;前向糾錯技術通過增加冗余數據來實現數據的恢復。
前向糾錯技術雖然具有時延低和恢復丟包效率高的優點,但是其操作過程更加復雜,并且需要加入冗余數據包,這對于傳輸信道極其珍貴的應急情況而言,并不適用。相比較而言,重傳技術簡單而且不會帶來過多的額外信息傳輸,因此本文采用重傳技術處理丟包問題。
當通過反饋信息得知數據包丟失時,接收端根據數據類型決定是否進行重發。對于緊急數據類型的數據包,信息重要程度較高,應立即進行重發;對于普通數據類型的數據包,則可以根據信息的內容有選擇的進行重發,那些可有可無的信息將不再進行重發,以節約傳輸信道空間。
4.3.2 傳輸數據出錯處理
發送端在讀取到反饋信息時,根據出現錯誤的數據單元類型采取相應的處理。當UDU出現錯誤時,將其進行按照緊急數據類型的處理方式進行重新發送;當ODU出現錯誤時,由發送者決定是否進行重傳。
這種處理方法對于SDU出錯的情況有很好的效果,不必將由該SDU整合而成的數據包進行全部的重傳,節約了傳輸信道空間,同時避免了重復性傳輸信息,在應急情況下具有較高的實用性。
本文采用Matlab軟件對所提出的傳輸機制進行模擬仿真,主要對數據類型分類以及DU的處理方法進行了驗證。如圖6所示,引入元胞數組的概念,將每一行看作是一個DU,某一時刻發送端所有需要發送的DU看作是一個元胞數組。第一列模擬DU的大小,第二列用“急”和“普”來標識UDU和ODU,第三列用數字來表示數據單元形成的先后順序。為提高仿真效率,本實驗中設置N=30。
為了模擬現實情況中所需處理的DU的任意性,在形成第一列的元胞數據時,首先通過‘A=randint(1,i)’產生由0和1兩個數組成的1*i維矩陣;然后通過循環產生30個長度不固定的1*i維矩陣,分別組成UDU和ODU兩個元胞數組,并在第二列進行標識;最后通過‘r= 1 + 30*rand([1 10])’,產生10個(1,30)范圍內均勻分布的隨機數,通過‘r1=fix(r)’對隨機數取整,并按照產生的隨機數從兩個胞元數組中分別抽取相應的10行組成圖6所示元胞數組,在第三列進行編號。運用對UDU和ODU的處理方法,對元胞數組進行編程處理,得到的處理結果如圖7所示。
圖6 處理前元胞數組 圖7 處理后元胞數組
通過圖6和7的對比,可以看出對于帶有“急”標識的行進行了優先處理,并將某些行按照相應的規則進行了合并。通過分析可以得出所設計的通信機制能夠在有限的傳輸空間下,優先對UDU進行處理,并通過DU的整合充分利用傳輸信道,提高了應急狀況下數據傳輸的效率,具有應用的價值。
本實驗還有許多不足之處:對于數據傳輸出錯以及丟包問題的處理沒有進行模擬;用于模擬的數據僅由0和1組成,且數據量較少;沒有仿真北斗短報文通信的過程,僅對處理機制進行了模擬等問題。因此還有待于進一步完善模擬仿真的過程。
該傳輸機制的設定對于大量數據需要發送的情況能夠根據數據的重要程度進行有選擇的發送,相比于北斗原有的通信而言,傳輸信息更具有針對性,更加適用于應急情況下北斗短報文通信功能的工作環境。
應急情況下北斗短報文通信功能傳輸機制的設計,通過對信息進行分情況處理,SDU的整合以及LDU的切分,提高了信息交互的有效性,對于救援工作的開展提供了良好的通信保障,為保護人民群眾的生命財產安全做出一定貢獻。下一步將對差錯檢驗的方法進行更深入的研究,在不增加過多冗余信息的前提下,提高糾錯的能力。