趙 明,孫 偉
(北方自動控制技術(shù)研究所,太原 030006)
目前,隨著世界軍事信息化變革的加劇,兵器裝備網(wǎng)絡(luò)化程度越來越高,對于由戰(zhàn)術(shù)電臺組成的“初級戰(zhàn)術(shù)互聯(lián)網(wǎng)”面臨著業(yè)務(wù)量的迅猛增長壓力,但無線信道帶寬卻由于技術(shù)限制無法跟上業(yè)務(wù)增長的勢頭,這樣便在網(wǎng)絡(luò)上形成瓶頸,大大降低了網(wǎng)絡(luò)性能。
如何解決這一問題一直以來都是業(yè)界所關(guān)注的問題,一般來說有兩種解決方法,第一種即繼續(xù)加大對無線信道寬帶化技術(shù)的突破,例如采用LTE技術(shù),OFDM技術(shù)、MIMO技術(shù)等,這是解決上述問題的根本出路,另一種方法是高效利用好目前可用的無線資源即采用負載均衡方法,此方法又分為信道鏈路層負載均衡和網(wǎng)絡(luò)層負載均衡,目的都是合理地將業(yè)務(wù)分配到冗余的信道或多跳路徑上,目前常用的方法有基于MPLS的隧道負荷分擔(dān)方法等。本文提出了一種基于鄰居節(jié)點的多信道負荷分擔(dān)方法,如圖1所示在初級戰(zhàn)術(shù)互聯(lián)網(wǎng)環(huán)境中,假設(shè)兩個相鄰節(jié)點之間存在多個無線信道連接的情況,一條UHF信道和一條VHF信道,由于目前初級戰(zhàn)術(shù)互聯(lián)網(wǎng)在此網(wǎng)絡(luò)環(huán)境下只選擇其中一條無線信道發(fā)送業(yè)務(wù)數(shù)據(jù)(按照路由控制報文發(fā)現(xiàn)信道的先后順序選擇),而另外一條信道只能空閑著,直至正在通信的無線信道完全斷路,路由才開始重新選擇無線信道,這樣就會產(chǎn)生對無線信道資源的浪費,沒有高效利用好無線資源。
在實際的初級戰(zhàn)術(shù)互聯(lián)網(wǎng)中上述網(wǎng)絡(luò)應(yīng)用場景大量存在,本文正是基于這樣的背景下,在網(wǎng)絡(luò)層之下(即路由選擇之后)設(shè)計并開發(fā)一種負載均衡模塊,合理地將業(yè)務(wù)分配到一跳鄰居節(jié)點之間的多個信道之上。
圖1 相鄰節(jié)點多信道組網(wǎng)模式
為了說明負載均衡的設(shè)計思路,構(gòu)造了圖2的無線多信道環(huán)境,可以看到網(wǎng)絡(luò)中存在3條信道:信道 1(VHF 電臺),信道 2(HF電臺),信道 3(UHF電臺),它們分別通過以太網(wǎng)總線接到組網(wǎng)控制設(shè)備的3個以太網(wǎng)口上,組網(wǎng)控制設(shè)備又通過以太網(wǎng)總線和指揮計算機相連,可以看出負載均衡模塊主要是在組網(wǎng)控制設(shè)備上進行添加便可實現(xiàn)業(yè)務(wù)的負載均衡。
模塊的處理流程分以下4步:
圖2 負載均衡軟件處理流程
第1步:由于初級戰(zhàn)術(shù)互聯(lián)網(wǎng)采用IP架構(gòu),其所有業(yè)務(wù)報文均為標(biāo)準的IP數(shù)據(jù)包,所以為了區(qū)分基于IP數(shù)據(jù)包的業(yè)務(wù)信息流,首先在組網(wǎng)控制設(shè)備中建立接收業(yè)務(wù)信息流和轉(zhuǎn)發(fā)信道之間的映射信息庫,即“業(yè)務(wù)流信息庫”,庫中包含每個業(yè)務(wù)信息流的源地址、目的地址、協(xié)議號、源端口號、目的端口號的“五元組”和其對應(yīng)的轉(zhuǎn)發(fā)信道號(信道號在組網(wǎng)控制設(shè)備初始化過程中人為設(shè)定,但不能重復(fù))。當(dāng)指揮計算機向組網(wǎng)控制設(shè)備發(fā)送業(yè)務(wù)信息流后,首先檢查業(yè)務(wù)信息流庫中是否存在已登記的信息流,即這5項內(nèi)容完全一致,認為是同一個信息流,如果信息流中的5項中某一項或多項不一致,則認為是一個新的信息流,在業(yè)務(wù)信息流庫中進行登記,并執(zhí)行下面的步驟。
第2步:周期性按照基于ETT算法來統(tǒng)計各個信道的鏈路質(zhì)量值(ETT算法將在第3節(jié)詳細說明)。在統(tǒng)計各個相鄰信道鏈路質(zhì)量時采用常用的基于最小二乘法的數(shù)據(jù)平滑算法,統(tǒng)計周期為1 min。
第3步:由第1步,在鄰接點多信道環(huán)境下,當(dāng)一個分組需要向鄰節(jié)點發(fā)送時,節(jié)點根據(jù)該分組頭部的IP地址信息、協(xié)議號信息、UDP頭部的端口號信息,查找節(jié)點維護的業(yè)務(wù)流庫,如果庫中存在該業(yè)務(wù)流信息,則按照業(yè)務(wù)流庫中對應(yīng)的信道進行轉(zhuǎn)發(fā),這樣做的目的是為了讓同一業(yè)務(wù)流的數(shù)據(jù)在相同的信道上傳輸,避免因同一業(yè)務(wù)的數(shù)據(jù)流在不同信道上傳輸產(chǎn)生接續(xù)錯續(xù)、延時差距較大等錯誤。如果是一個新的業(yè)務(wù)流,則根據(jù)第2步的ETT算法統(tǒng)計計算各個信道的鏈路質(zhì)量,最后將新流合理分配到鏈路質(zhì)量最好的信道上進行傳輸,同時將該業(yè)務(wù)流信息記錄到業(yè)務(wù)流庫中。
第4步:當(dāng)業(yè)務(wù)流不斷增加,原先“高帶寬”的信道鏈路質(zhì)量會慢慢下降,直到下降到低于原先“低帶寬”的信道鏈路質(zhì)量,這樣當(dāng)再有新的業(yè)務(wù)流出現(xiàn)時將會分流到“低帶寬”信道上,而不會選擇原來的信道,以此類推,從而達到了多信道環(huán)境下的業(yè)務(wù)負荷分擔(dān)效果,有效提高了網(wǎng)絡(luò)吞吐量,降低了網(wǎng)絡(luò)擁塞。
負載均衡模塊的實現(xiàn)采用PPC+VxWorks的體系架構(gòu),接口主要為千兆以太網(wǎng)口。
采用VxWorks中可裁剪的增強型網(wǎng)絡(luò)協(xié)議棧(SENS)。SENS是完全兼容BSD4.4 TCP/IP協(xié)議棧,并且其最大的特點是在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層之間多了MUX層。在SENS中,網(wǎng)絡(luò)接口的驅(qū)動程序叫END(Enhance Network Driver),即增強型網(wǎng)絡(luò)驅(qū)動程序,它處于數(shù)據(jù)鏈路層[1]。MUX接口如圖3所示。
圖3SENS中MUX接口
為了實現(xiàn)負載均衡模塊設(shè)計了統(tǒng)一信道調(diào)度層,掛接在VxWorks協(xié)議棧的MUX接口下,通過添加默認網(wǎng)關(guān),將上層發(fā)送的業(yè)務(wù)信息流統(tǒng)一發(fā)送到統(tǒng)一信道調(diào)度層,在這一層首先進行路由選擇,即通過查詢路由表得到去往目的地址的下一跳,由下一跳便可以知道有幾個無線信道可以到達相鄰節(jié)點(由動態(tài)路由廣播控制報文探測出),然后分別計算每個信道上的ETT值,最后結(jié)合業(yè)務(wù)信息流庫、滑動平滑算法實現(xiàn)多信道環(huán)境下負載均衡。負載均衡模塊的軟件實現(xiàn)示意圖如圖4所示。
圖4 負載均衡模塊軟件實現(xiàn)示意圖
統(tǒng)一信道調(diào)度層的建立采用掛在MUX層下的虛擬END驅(qū)動的方式建立,掛載和啟動過程可以分為3個步驟,既指定END網(wǎng)絡(luò)驅(qū)動,裝載END網(wǎng)絡(luò)驅(qū)動和啟動END網(wǎng)絡(luò)驅(qū)動。END網(wǎng)絡(luò)驅(qū)動的指定是通過數(shù)組endDevTbl[]來完成的,該數(shù)組表述了系統(tǒng)中所有網(wǎng)絡(luò)設(shè)備的裝載入口點及其相關(guān)的參數(shù)。系統(tǒng)調(diào)用MUX驅(qū)動啟動函數(shù)muxDevLoad()來裝載END網(wǎng)絡(luò)驅(qū)動,調(diào)用MUX驅(qū)動啟動函數(shù)muxDevStart()來啟動END驅(qū)動。VxWorks操作系統(tǒng)通過 usrRoot()函數(shù)來調(diào)用 usrNetInit()函數(shù)完成MUX的初始化化,轉(zhuǎn)載網(wǎng)絡(luò)驅(qū)動表endDevTbl[]中描述的所有END網(wǎng)絡(luò)驅(qū)動。在END網(wǎng)絡(luò)驅(qū)動的編程中,需要關(guān)注的內(nèi)容包括配置文件定義,驅(qū)動符號定義以及相關(guān)驅(qū)動函數(shù)的編寫。圖5是END網(wǎng)絡(luò)驅(qū)動初始化順序。
圖5 END網(wǎng)絡(luò)驅(qū)動初始化順序
當(dāng)掛載完虛擬END后,本文在系統(tǒng)核心路由表中添加一條目的地址為全零,下一跳為虛擬END地址的默認網(wǎng)關(guān)路由,這樣所有目的地址不是本地地址的信息流系統(tǒng)將全部交給虛擬END驅(qū)動的adfEndSend()去處理,這樣便可以在驅(qū)動數(shù)據(jù)函數(shù)中實現(xiàn)負載均衡模塊,風(fēng)河公司提供了關(guān)于END網(wǎng)絡(luò)驅(qū)動程序的模板文件[2],可參照其進行修改,非常便利。
采用丟包率、帶寬、時延統(tǒng)一考慮的信道鏈路質(zhì)量策略作為度量鏈路質(zhì)量的方法,所以引入了ETT(成功傳輸時間)算法[3],從而最大程度提高信道鏈路質(zhì)量的可信度。
在引入鏈路ETT算法之前先引入ETX(期望成功傳輸次數(shù)),它是對相鄰節(jié)點間成功傳送一個探測包所需要傳輸次數(shù)(包括重傳次數(shù))進行預(yù)測,借此來衡量無線信道鏈路的質(zhì)量。
ETX度量由前向與反向鏈路上傳輸成功概率的測量統(tǒng)計而來,假設(shè)分別為pf與pr,可以根據(jù)它們計算出期望傳輸次數(shù)。
圖6 傳輸成功率圖
若在鏈路X→Y上,則pf表示X的前向傳輸成功率,pr表示X的后向傳輸成功率
假設(shè)p表示節(jié)點X到節(jié)點Y的丟包率,則
由Bernoulli公式[4],可得k次傳輸時成功的概率為:
則,期望傳輸次數(shù)為
傳輸成功率pf與pr通過在網(wǎng)絡(luò)中發(fā)射hello包來測量,每個探測包固定大小,按周期發(fā)送。為了避免偶然的同步,周期會加上±0.1的抖動時延。每個節(jié)點記錄在ω時間內(nèi)收到的探測包個數(shù),傳輸成功率為:
coun(tt-w,t)是在 ω 時間內(nèi)實際收到的探測包個數(shù),ω/是ω時間內(nèi)應(yīng)該收到的探測包數(shù)。在鏈路X→Y 上,X 可以用式(4)來計算 pr,Y 可以用式(4)來計算 pf。
ETX值僅反映了鏈路的可靠性性能指標(biāo),沒有反映出信道帶寬因素,當(dāng)多條鏈路的ETX值相同時,應(yīng)優(yōu)選帶寬寬的信道。因此,引入了ETT度量(平均成功傳輸時間),假設(shè)信道速率為S,數(shù)據(jù)包的大小為B,則ETT的計算公式如下:
節(jié)點間的信道質(zhì)量存在一定的差異,其差異情況可通過鏈路的ETT值來反映。數(shù)據(jù)流的分配依據(jù)鏈路 ETT值進行[5-6]。
經(jīng)測試,此種負載均衡模塊應(yīng)用于某初級戰(zhàn)術(shù)互聯(lián)網(wǎng)中,在多信道環(huán)境下不僅有效提高了網(wǎng)絡(luò)吞吐量,而且其投入少、改動小,兼容老裝備,對提升整體網(wǎng)絡(luò)性能和可靠性有一定參考價值。