蔣元兵,謝文希,顏浩洋,唐 瑜
(重慶金美通信有限責任公司,重慶 400030)
軟件升級可修正設計的缺陷和程序錯誤,適應數據環境和運行環境的變化,改進已有功能或增加新的功能[1]。軟件升級可分為現場升級和遠程在線升級。現場升級由維護人員到達目標機現場后,通過本地網絡或者仿真器,將目標程序燒寫到目標機的Flash。遠程在線升級則是利用網絡對接入網絡的設備進行遠程升級。
戰術通信網絡具有機動、快速和靈活的特點[2],廣泛使用無線信道,帶寬窄、丟包率高、拓撲變化快、IP路由不穩定。升級文件傳輸耗時久、重傳次數多,經常導致遠程在線升級不成功。由于設備分散甚至地處偏遠,現場升級費時費力。通常的軟件升級方法不能很好地適應戰術通信網絡。
基本的泛洪算法傳播過程是,一個節點發送報文給其所有的鄰接點,而收到報文的節點又將報文轉發給其所有鄰接點,但發給其報文的那個節點除外[3],直到該消息發布給整個網絡。泛洪算法在很多領域大面積使用,具有實現簡單、健壯性高等優點,可以作為無線網絡中一種最基本、最簡單的路由算法[4],也是實現網絡服務和資源發現的主要手段,可用于無線網絡的數據傳輸。
軟件在線升級已經廣泛使用,如常用的手機軟件、計算機的操作系統軟件或者應用軟件,均支持在線升級功能。設備只要聯網使用,即可檢測軟件的最新版本,廠家也會主動推送軟件版本更新通知。依托穩定可靠的網絡,完成軟件在線升級。
戰術通信網絡有安全保密的要求,設備不能連接互聯網,只能依托戰術網絡本身進行軟件升級。但是,戰術網絡的帶寬窄、丟包率高、路由動蕩頻繁,導致IP數據通信不可靠。依托IP數據通信的遠程在線升級,不能適應戰術通信網絡。戰術通信網絡的軟件升級還停留在現場升級的階段,由維護人員到達設備現場,依靠本地網口或者仿真器將目標程序升級到設備。
典型組網拓撲如圖1所示。

圖1 典型網絡拓撲
網絡通常根據編制劃分成多個區域,區域內部采用有線鏈路或者高帶寬的點對點無線鏈路連接,區域之間采用無線信道(窄帶廣播信道如衛星)連接。
區域內采用標準的泛洪算法轉發升級報文,選擇一個節點向無線信道轉發升級報文。無線信道支持廣播,一個節點發送其他各區域的連接無線信道的節點都能接收,接收的節點再到區域內泛洪。新入網節點向本區域鄰居或者通過無線信道向其他區域鄰居獲取最新版本。
詳細原理描述如下。升級終端通過本地網絡連接一臺目標機,通過現場升級的方式,將升級文件傳送給目標機。該目標機作為升級源節點,向全網發送升級請求消息。升級請求消息在有線區域內泛洪轉發。連接無線信道且信道同步的節點,先不向無線信道轉發,向源節點回復無線信道升級請求消息,在有線區域內泛洪轉發到源節點。源節點選擇最先收到無線信道升級請求消息的節點作為區域內無線信道升級節點。源節點向無線信道升級節點下發無線信道升級通知消息。接收到無線信道升級通知消息的節點,向無線信道轉發升級請求消息。所有接收到升級請求消息的節點接收處理升級文件。
源節點讀取升級文件,將升級文件分片封裝成消息,通過泛洪算法將消息發送給有線區域內所有節點。無線信道升級節點將消息通過無線信道發送給其他區域。其他區域連接無線信道的節點通過無線信道接收消息,在區域內泛洪。
新入網節點優先通過有線信道向鄰接點獲取升級文件。無法通過有線信道請求升級文件時,通過無線信道向其他區域節點獲取升級文件。
軟件升級處理流程圖2所示。

圖2 升級流程
(1)升級人員通過FTP軟件將升級文件上傳到本地的目標機,該節點作為升級源節點;
(2)源節點向本區域發送升級請求消息;
(3)區域內各節點泛洪轉發升級請求消息;
(4)區域內連接無線信道且同步的節點生成無線信道升級請求消息發送給源節點,區域內節點泛洪轉發到源節點;
(5)源節點選擇最先收到無線信道升級請求消息的節點作為無線信道升級節點,向其發送無線信道升級通知消息,區域內各節點泛洪轉發到無線信道升級節點;
(6)無線信道升級節點向無線信道發送升級請求消息;
(7)其他區域連接無線信道的節點接收升級請求消息,并在區域內泛洪轉發;
(8)源節點讀取升級文件,分片封裝成消息,發送給鄰居;區域內各節點泛洪轉發;無線信道升級節點向無線信道轉發升級文件;
(9)其他區域連接無線信道的節點通過無線信道接收升級文件,在區域內泛洪轉發;
(10)無線信道接收節點從無線信道和區域內有線鏈路接收的升級文件缺少分片時,通過無線信道向無線信道升級節點發起分片請求;
(11)無線信道升級節點下發分片給請求節點;
(12)各節點組裝升級文件,校驗文件正確性,更新升級文件;
(13)新入網節點與鄰居交互軟件版本,發現鄰居節點版本高時,向鄰居節點發起文件請求;
(14)鄰居節點接收到文件請求后,下發文件。
區域內節點之間的鏈路通常為有線鏈路或者無線點對點鏈路,傳輸帶寬、可靠性較高,采用標準的泛洪算法傳輸消息。接收消息的節點將消息發送給所有鄰接點(除了已經接收到相同消息的節點),消息會通過多條鏈路到達各節點。
無線信道的帶寬窄、時延大、丟包率較高,需要盡量減少在無線信道傳輸的報文。由于無線信道的廣播特性,一個節點發送其他節點都能接收,所以區域內只需要選擇一個節點向無線信道轉發消息,其他區域的節點都能接收,以大幅減少無線信道傳輸的消息,避免同一區域內的多個節點同時將消息發送到無線信道而浪費信道資源。
由于無線信道的丟包率較高,其他區域的節點可能出現接收文件不完整的情況。當其他區域存在多個連接無線信道的節點時,每個連接無線信道的節點都會從無線信道接收消息,然后在區域內泛洪,以相互彌補丟失的消息。只有其他區域內所有連接無線信道的節點都未接收到同一消息時,才判斷為消息丟失。其他區域的節點缺少某一分片時,通過無線信道向無線信道升級節點請求缺少的分片。當一個節點請求某一分片后,其他節點不需要再請求。
分片傳輸可靠性采用分片長度和校驗和予以保證。發送每片升級文件的消息都包含分片序號、分片長度、分片校驗和。各節點接收消息后,對消息長度和消息校驗和進行校驗,校驗正確后使用分片。文件完整性和正確性采用文件長度、校驗和和試運行保證。升級請求消息中攜帶升級文件的版本、文件長度和文件校驗和,各節點接收完成后對文件進行長度和校驗和的校驗,對校驗正確的文件試運行,試運行后獲取的版本與升級請求的版本一致時,使用升級文件替換原有文件。
區域內某條鏈路的消息丟失由其他鏈路進行補償。由于網絡拓撲通常為柵格網,每個節點都有多條鏈路連接鄰接點,泛洪轉發機制能夠保證每個節點從多個鄰接點接收到相同序號的分片。有線鏈路本來丟包率較低,即使發生某條鏈路分片丟失的情況,也能夠從其他鄰接點接收到丟失的分片,保證區域內各節點能夠接收完整的升級文件。
無線信道傳輸的可靠性通過無線信道一發多收的特性和分片請求的機制保證。雖然區域內只有一個節點向無線信道轉發升級文件,但是接收區域一般都存在多個節點連接無線信道。通過無線信道一發多收的廣播特性,接收區域會同時有多個節點接收到升級文件。雖然無線信道丟包率較高,但是通常不會出現接收區域的多個節點同時丟失相同序號的分片。只要其中有一個節點接收到分片,通過有線鏈路即可泛洪到區域的其他所有節點。當出現接收區域連接無線信道的節點都未接收到某分片時,由其中一個節點通過無線信道向無線信道升級節點請求缺失分片。
當全網升級完成后,未入網的節點沒有完成軟件升級,需要自動完成軟件升級。節點通過鄰居學習功能學習鄰居節點的版本,發現版本不一致時,由版本低的節點向高版本的節點發起文件請求。
節點可能通過有線鏈路或者無線信道學習到高版本的鄰居節點,優先選擇有線鏈路請求升級文件。學習到高版本的鄰居節點后,低版本的節點向高版本的節點發起文件請求,高版本的節點下發升級文件。
當通過無線信道請求升級文件時,區域內可能會存在多個節點同時連接了無線信道,導致多個節點向不同的鄰居節點請求升級文件,浪費無線信道資源。為解決上述問題,設計了一種半雙工機制。由于無線信道的廣播特性,一個節點發送的文件請求消息,所有節點都能夠接收,所以只要一個節點向鄰居節點發起文件請求,接收到文件請求消息的鄰居節點將占用無線信道,并向無線信道發送升級文件,而其他節點不再發起文件請求消息,也不響應文件請求消息。
搭建如圖3所示的測試網絡拓撲。

圖3 測試網絡拓撲
如圖3所示,節點1、節點2、節點3通過有線鏈路連接組成區域1,升級終端連接到節點1;節點4和節點5通過有線連接組成區域2;節點6組成區域3。三個區域通過無線信道(衛星鏈路)連接。
網絡連接完成后,配置設備間的鏈路參數,保證鏈路層正常通信,IP參數不需要配置。各設備初始版本V0.0.1/2018.05.25,升級文件版本號V0.0.2/2018.05.28。通過升級終端給網絡中的各節點進行軟件升級。首先,通過本地網絡采用FTP協議將升級文件發送給節點1,由節點1向全網發起軟件升級。升級完成后,查看網絡中各節點的版本號,見表1。

表1 升級完成后的版本號
從表1可以看出,全網各節點的軟件版本已經升級到升級文件的版本,說明軟件升級成功。
從網絡拓撲分析,節點2到節點1為1跳,節點3到節點2為2跳且需要經過節點2,選擇的無線信道轉發節點應該是節點2。當節點1向全網發起升級請求消息后,抓包分析,先收到了節點2的無線信道升級請求消息,然后收到了節點3的無線信道升級請求消息,選擇節點2作為區域內的無線信道轉發節點。通過區域2接收的升級請求消息判斷,來自于節點2,與前面分析一致。
在節點4設置丟棄從無線信道接收的報文序號為除10余0的升級文件消息。從可靠性保證原理上分析,節點4丟失的分片能夠通過節點5補齊。查看節點4的升級結果,發現升級文件接收正確,說明可靠性保證機制有效。
將節點5和節點6還原為V0.0.1/2018.05.25,連接節點5和節點4之間的有線鏈路,連接節點6的衛星鏈路。等待一段時間后,查看節點5和節點6的軟件版本,結果顯示兩個節點的版本均升級為V0.0.2/2018.05.28,說明新入網節點自動獲取升級文件成功。
本文完成了一種適用于戰術通信網絡的軟件升級方法設計。該方法不依賴IP路由,采用泛洪算法完成軟件升級。使用標準的泛洪算法完成區域內節點之間的消息轉發,將泛洪算法與無線信道廣播特性相結合,對泛洪算法進行優化,大幅減少了升級消息占用無線信道的開銷。設計的軟件升級方法能夠很好地適應戰術通信網絡帶寬窄、丟包率高和路由不穩定的特性,具有較強的通用性。最后,對該方法進行了工程實現,并且進行了組網驗證。