趙 明,孫 偉
(北方自動控制技術研究所,太原 030006)
目前,隨著世界軍事信息化變革的加劇,兵器裝備網絡化程度越來越高,對于由戰術電臺組成的“初級戰術互聯網”面臨著業務量的迅猛增長壓力,但無線信道帶寬卻由于技術限制無法跟上業務增長的勢頭,這樣便在網絡上形成瓶頸,大大降低了網絡性能。
如何解決這一問題一直以來都是業界所關注的問題,一般來說有兩種解決方法,第一種即繼續加大對無線信道寬帶化技術的突破,例如采用LTE技術,OFDM技術、MIMO技術等,這是解決上述問題的根本出路,另一種方法是高效利用好目前可用的無線資源即采用負載均衡方法,此方法又分為信道鏈路層負載均衡和網絡層負載均衡,目的都是合理地將業務分配到冗余的信道或多跳路徑上,目前常用的方法有基于MPLS的隧道負荷分擔方法等。本文提出了一種基于鄰居節點的多信道負荷分擔方法,如圖1所示在初級戰術互聯網環境中,假設兩個相鄰節點之間存在多個無線信道連接的情況,一條UHF信道和一條VHF信道,由于目前初級戰術互聯網在此網絡環境下只選擇其中一條無線信道發送業務數據(按照路由控制報文發現信道的先后順序選擇),而另外一條信道只能空閑著,直至正在通信的無線信道完全斷路,路由才開始重新選擇無線信道,這樣就會產生對無線信道資源的浪費,沒有高效利用好無線資源。
在實際的初級戰術互聯網中上述網絡應用場景大量存在,本文正是基于這樣的背景下,在網絡層之下(即路由選擇之后)設計并開發一種負載均衡模塊,合理地將業務分配到一跳鄰居節點之間的多個信道之上。

圖1 相鄰節點多信道組網模式
為了說明負載均衡的設計思路,構造了圖2的無線多信道環境,可以看到網絡中存在3條信道:信道 1(VHF 電臺),信道 2(HF電臺),信道 3(UHF電臺),它們分別通過以太網總線接到組網控制設備的3個以太網口上,組網控制設備又通過以太網總線和指揮計算機相連,可以看出負載均衡模塊主要是在組網控制設備上進行添加便可實現業務的負載均衡。
模塊的處理流程分以下4步:

圖2 負載均衡軟件處理流程
第1步:由于初級戰術互聯網采用IP架構,其所有業務報文均為標準的IP數據包,所以為了區分基于IP數據包的業務信息流,首先在組網控制設備中建立接收業務信息流和轉發信道之間的映射信息庫,即“業務流信息庫”,庫中包含每個業務信息流的源地址、目的地址、協議號、源端口號、目的端口號的“五元組”和其對應的轉發信道號(信道號在組網控制設備初始化過程中人為設定,但不能重復)。當指揮計算機向組網控制設備發送業務信息流后,首先檢查業務信息流庫中是否存在已登記的信息流,即這5項內容完全一致,認為是同一個信息流,如果信息流中的5項中某一項或多項不一致,則認為是一個新的信息流,在業務信息流庫中進行登記,并執行下面的步驟。
第2步:周期性按照基于ETT算法來統計各個信道的鏈路質量值(ETT算法將在第3節詳細說明)。在統計各個相鄰信道鏈路質量時采用常用的基于最小二乘法的數據平滑算法,統計周期為1 min。
第3步:由第1步,在鄰接點多信道環境下,當一個分組需要向鄰節點發送時,節點根據該分組頭部的IP地址信息、協議號信息、UDP頭部的端口號信息,查找節點維護的業務流庫,如果庫中存在該業務流信息,則按照業務流庫中對應的信道進行轉發,這樣做的目的是為了讓同一業務流的數據在相同的信道上傳輸,避免因同一業務的數據流在不同信道上傳輸產生接續錯續、延時差距較大等錯誤。如果是一個新的業務流,則根據第2步的ETT算法統計計算各個信道的鏈路質量,最后將新流合理分配到鏈路質量最好的信道上進行傳輸,同時將該業務流信息記錄到業務流庫中。
第4步:當業務流不斷增加,原先“高帶寬”的信道鏈路質量會慢慢下降,直到下降到低于原先“低帶寬”的信道鏈路質量,這樣當再有新的業務流出現時將會分流到“低帶寬”信道上,而不會選擇原來的信道,以此類推,從而達到了多信道環境下的業務負荷分擔效果,有效提高了網絡吞吐量,降低了網絡擁塞。
負載均衡模塊的實現采用PPC+VxWorks的體系架構,接口主要為千兆以太網口。
采用VxWorks中可裁剪的增強型網絡協議棧(SENS)。SENS是完全兼容BSD4.4 TCP/IP協議棧,并且其最大的特點是在數據鏈路層和網絡層之間多了MUX層。在SENS中,網絡接口的驅動程序叫END(Enhance Network Driver),即增強型網絡驅動程序,它處于數據鏈路層[1]。MUX接口如圖3所示。

圖3SENS中MUX接口
為了實現負載均衡模塊設計了統一信道調度層,掛接在VxWorks協議棧的MUX接口下,通過添加默認網關,將上層發送的業務信息流統一發送到統一信道調度層,在這一層首先進行路由選擇,即通過查詢路由表得到去往目的地址的下一跳,由下一跳便可以知道有幾個無線信道可以到達相鄰節點(由動態路由廣播控制報文探測出),然后分別計算每個信道上的ETT值,最后結合業務信息流庫、滑動平滑算法實現多信道環境下負載均衡。負載均衡模塊的軟件實現示意圖如圖4所示。

圖4 負載均衡模塊軟件實現示意圖
統一信道調度層的建立采用掛在MUX層下的虛擬END驅動的方式建立,掛載和啟動過程可以分為3個步驟,既指定END網絡驅動,裝載END網絡驅動和啟動END網絡驅動。END網絡驅動的指定是通過數組endDevTbl[]來完成的,該數組表述了系統中所有網絡設備的裝載入口點及其相關的參數。系統調用MUX驅動啟動函數muxDevLoad()來裝載END網絡驅動,調用MUX驅動啟動函數muxDevStart()來啟動END驅動。VxWorks操作系統通過 usrRoot()函數來調用 usrNetInit()函數完成MUX的初始化化,轉載網絡驅動表endDevTbl[]中描述的所有END網絡驅動。在END網絡驅動的編程中,需要關注的內容包括配置文件定義,驅動符號定義以及相關驅動函數的編寫。圖5是END網絡驅動初始化順序。

圖5 END網絡驅動初始化順序
當掛載完虛擬END后,本文在系統核心路由表中添加一條目的地址為全零,下一跳為虛擬END地址的默認網關路由,這樣所有目的地址不是本地地址的信息流系統將全部交給虛擬END驅動的adfEndSend()去處理,這樣便可以在驅動數據函數中實現負載均衡模塊,風河公司提供了關于END網絡驅動程序的模板文件[2],可參照其進行修改,非常便利。
采用丟包率、帶寬、時延統一考慮的信道鏈路質量策略作為度量鏈路質量的方法,所以引入了ETT(成功傳輸時間)算法[3],從而最大程度提高信道鏈路質量的可信度。
在引入鏈路ETT算法之前先引入ETX(期望成功傳輸次數),它是對相鄰節點間成功傳送一個探測包所需要傳輸次數(包括重傳次數)進行預測,借此來衡量無線信道鏈路的質量。
ETX度量由前向與反向鏈路上傳輸成功概率的測量統計而來,假設分別為pf與pr,可以根據它們計算出期望傳輸次數。

圖6 傳輸成功率圖
若在鏈路X→Y上,則pf表示X的前向傳輸成功率,pr表示X的后向傳輸成功率
假設p表示節點X到節點Y的丟包率,則

由Bernoulli公式[4],可得k次傳輸時成功的概率為:

則,期望傳輸次數為

傳輸成功率pf與pr通過在網絡中發射hello包來測量,每個探測包固定大小,按周期發送。為了避免偶然的同步,周期會加上±0.1的抖動時延。每個節點記錄在ω時間內收到的探測包個數,傳輸成功率為:

coun(tt-w,t)是在 ω 時間內實際收到的探測包個數,ω/是ω時間內應該收到的探測包數。在鏈路X→Y 上,X 可以用式(4)來計算 pr,Y 可以用式(4)來計算 pf。
ETX值僅反映了鏈路的可靠性性能指標,沒有反映出信道帶寬因素,當多條鏈路的ETX值相同時,應優選帶寬寬的信道。因此,引入了ETT度量(平均成功傳輸時間),假設信道速率為S,數據包的大小為B,則ETT的計算公式如下:

節點間的信道質量存在一定的差異,其差異情況可通過鏈路的ETT值來反映。數據流的分配依據鏈路 ETT值進行[5-6]。
經測試,此種負載均衡模塊應用于某初級戰術互聯網中,在多信道環境下不僅有效提高了網絡吞吐量,而且其投入少、改動小,兼容老裝備,對提升整體網絡性能和可靠性有一定參考價值。