潘豐旻, 江 明, 周加文, 葛 愿
(安徽工程大學(xué),安徽 蕪湖 241000)
網(wǎng)絡(luò)控制系統(tǒng)(Networked Contorl Systems,NCS)于1999年出現(xiàn)在馬里蘭大學(xué)Walsh的論著中,該系統(tǒng)利用通信媒介使控制回路形成閉環(huán)[1]。與傳統(tǒng)的控制系統(tǒng)不同,它采用多樣的網(wǎng)絡(luò)連接方式提高了系統(tǒng)組件的靈活性,在智能電網(wǎng)、智能交通等領(lǐng)域有著巨大的應(yīng)用前景[2-3]。融合了計(jì)算機(jī)技術(shù)和通信技術(shù)的NCS,除了控制算法影響其性能好壞以外,合理地調(diào)度計(jì)算機(jī)的網(wǎng)絡(luò)資源也十分必要.NCS的網(wǎng)絡(luò)服務(wù)質(zhì)量指標(biāo)包括時(shí)延、丟包和吞吐量等。由于網(wǎng)絡(luò)的不穩(wěn)定性必然引入時(shí)延、丟包等問題[4-6]。因此,要在NCS的網(wǎng)絡(luò)傳輸部分采用合適有效的隊(duì)列管理算法。
進(jìn)行實(shí)驗(yàn)?zāi)M是研究分析NCS性能的高效方法。NCS模擬工具主要包括MATLAB、OPNET以及NS2.MATLAB的TrueTime工具箱在控制策略方面的模擬功能強(qiáng)大,但其網(wǎng)絡(luò)模塊的功能相對薄弱,模擬NCS網(wǎng)絡(luò)環(huán)境中的隊(duì)列管理機(jī)制較為困難;OPNET具有很強(qiáng)的網(wǎng)絡(luò)功能,但這款商用軟件使用費(fèi)較為高昂;而NS2作為一款開源免費(fèi)的軟件,它采用分裂對象模型的方式,利用Otcl語言搭建網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),C++語言實(shí)現(xiàn)具體協(xié)議,達(dá)到了模擬配置靈活性和仿真運(yùn)行高效性的統(tǒng)一[7-9],受到越來越多的重視。如高文宇等人提出的網(wǎng)絡(luò)仿真軟件NS2中隊(duì)列調(diào)度算法的擴(kuò)展[10]。楊故等提出的基于NS2的改進(jìn)隊(duì)列管理算法及其實(shí)現(xiàn)[11]。高鵬等人基于NS2的主動(dòng)隊(duì)列管理算法的仿真與分析[12]等。為此,本文首先設(shè)計(jì)NCS中的優(yōu)先級隊(duì)列管理算法;其次利用NS2搭建一個(gè)網(wǎng)絡(luò)傳輸模型,并調(diào)用隊(duì)列管理算法進(jìn)行仿真實(shí)驗(yàn);最后進(jìn)行實(shí)驗(yàn)數(shù)據(jù)的分析和實(shí)驗(yàn)結(jié)果的總結(jié)。
網(wǎng)絡(luò)業(yè)務(wù)流以數(shù)據(jù)分組的形式在網(wǎng)絡(luò)中傳輸。它們流經(jīng)不同網(wǎng)絡(luò)節(jié)點(diǎn)時(shí)會(huì)采取隊(duì)列緩存、延遲轉(zhuǎn)發(fā)等服務(wù)方式,而隊(duì)列管理的作用就在于此。能通過丟棄或者標(biāo)記這些數(shù)據(jù)分組來管理網(wǎng)絡(luò)傳輸節(jié)點(diǎn)中的隊(duì)列緩沖資源。隊(duì)列管理主要分為主動(dòng)式隊(duì)列管理及被動(dòng)式隊(duì)列管理。主動(dòng)式隊(duì)列管理算法通過預(yù)測分組的狀態(tài)特性,在網(wǎng)絡(luò)擁塞還未發(fā)生之前就按照預(yù)先的設(shè)定進(jìn)行相應(yīng)的棄包,從而有效控制隊(duì)列緩沖區(qū)的長度,其中的典型算法為RED;而被動(dòng)式隊(duì)列管理算法在隊(duì)列緩沖區(qū)設(shè)置了固定的數(shù)據(jù)分組存儲上限,當(dāng)隊(duì)列中接收到的分組達(dá)到上限值,則啟動(dòng)棄包機(jī)制,其中典型算法有DropTail算法。驗(yàn)證隊(duì)列管理算法性能的好壞,要從業(yè)務(wù)需求和算法復(fù)雜程度出發(fā),結(jié)合時(shí)延、丟包、吞吐量等因素進(jìn)行綜合討論,而兩種典型算法的算法性能如表1所示。
主動(dòng)隊(duì)列管理算法結(jié)構(gòu)較為復(fù)雜,增加設(shè)備開銷,平均時(shí)延相對較高,網(wǎng)絡(luò)吞吐量也相對較低。其參數(shù)設(shè)置敏感并且網(wǎng)絡(luò)響應(yīng)相對滯后,并沒有在網(wǎng)絡(luò)當(dāng)中得到大量使用;相比之下,雖然被動(dòng)式隊(duì)列管理算法丟包率相對較高,但其相對較低的延時(shí)特性以及簡單的算法結(jié)構(gòu),在實(shí)際網(wǎng)絡(luò)中仍獲得廣泛使用。
NCS因?yàn)橄到y(tǒng)業(yè)務(wù)類型復(fù)雜,不同業(yè)務(wù)之間對于網(wǎng)絡(luò)服務(wù)質(zhì)量往往有著不同需求,需要在保持較低時(shí)延和較高吞吐量的基礎(chǔ)上進(jìn)行優(yōu)先級區(qū)分服務(wù)。所以新的算法具有優(yōu)先級識別機(jī)制,它在選擇棄包方面不再是直接“棄尾”,而是綜合考慮了隊(duì)列中數(shù)據(jù)分組的優(yōu)先級情況:當(dāng)數(shù)據(jù)分組進(jìn)入節(jié)點(diǎn)的隊(duì)列緩沖區(qū)時(shí),若緩沖區(qū)為未滿狀態(tài),則仍然按照先進(jìn)先出的原則實(shí)行隊(duì)列管理;若緩沖區(qū)為已滿狀態(tài),則啟動(dòng)優(yōu)先級識別機(jī)制,選取隊(duì)列緩沖區(qū)隊(duì)頭前兩個(gè)數(shù)據(jù)分組進(jìn)行優(yōu)先級比較。若第一個(gè)數(shù)據(jù)分組的優(yōu)先級較高,則選擇丟棄隊(duì)列尾的數(shù)據(jù)分組,否則丟棄隊(duì)列頭。PDropTail隊(duì)列管理算法原理如圖1所示。
表1 隊(duì)列管理算法性能對比
圖1 PDropTail隊(duì)列管理算法原理圖
利用NS2仿真軟件進(jìn)行PDropTail算法的設(shè)計(jì),首先需要在NS2中進(jìn)行算法腳本的編譯與添加。而PDropTail算法的優(yōu)先級識別機(jī)制和棄包選擇機(jī)制的部分核心程序代碼如下:
void PDropTail::enque(Packet* p)
{
……
int qlimBytes = qlim_ * mean_pktsize_;
if ((!qib_ && (q_->length() + 1) >= qlim_) ||
(qib_&&(q_->byteLength()+hdr_cmn::access(p)
->size()) >= qlimBytes))
{
int prio1,prio2;
prio1=HDR_IP(q_->lookup(0))->prio();
prio2=HDR_IP(q_->lookup(1))->prio();
if(prio2>prio1) {
q_->enque(p);
Packet* pp=q_->deque();
drop(pp);
}
else {
drop(p);
}
} else {
q_->enque(p);
}
}
qib_&&(q_->byteLength()+hdr_cmn::access(p)函數(shù)部分是對緩沖區(qū)的狀態(tài)進(jìn)行判斷,若隊(duì)列為滿狀態(tài),則啟動(dòng)優(yōu)先級比較機(jī)制對隊(duì)列頭前兩個(gè)數(shù)據(jù)分組的優(yōu)先級prio1和prio2進(jìn)行比較。該比較機(jī)制中若第二個(gè)數(shù)據(jù)分組的優(yōu)先級更大則強(qiáng)制丟棄隊(duì)頭數(shù)據(jù)分組drop(pp);若第一個(gè)數(shù)據(jù)分組優(yōu)先級大則強(qiáng)制丟棄隊(duì)尾分組drop(p)。而當(dāng)隊(duì)列狀態(tài)為未滿時(shí),數(shù)據(jù)分組將直接進(jìn)入隊(duì)列緩沖區(qū)enque(p)。
利用NS2仿真軟件搭建如圖2所示的NCS網(wǎng)絡(luò)傳輸模型。搭建該模型的步驟包括節(jié)點(diǎn)設(shè)置以及鏈路配置兩方面。從節(jié)點(diǎn)設(shè)置方面考慮,標(biāo)號為8、9的兩節(jié)點(diǎn)設(shè)為路由節(jié)點(diǎn),0、1、2、3節(jié)點(diǎn)設(shè)為發(fā)送節(jié)點(diǎn),4、5、6、7設(shè)置為接收節(jié)點(diǎn);從鏈路配置方面考慮,兩路由節(jié)點(diǎn)間的瓶頸鏈路帶寬設(shè)為1.7 M,時(shí)延設(shè)為20 ms,其余鏈路帶寬均設(shè)為2 M,時(shí)延為設(shè)10 ms。這樣的拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)和帶寬配置主要為了讓數(shù)據(jù)分組在傳輸過程中產(chǎn)生一定的網(wǎng)絡(luò)擁塞情況。
在0到4,1到5,2到6以及3到7鏈路之間各建立一條UDP聯(lián)機(jī),并在UDP聯(lián)機(jī)之上建立CBR流量發(fā)生器.為了模擬4個(gè)不同優(yōu)先級業(yè)務(wù),需要對數(shù)據(jù)分組的IP包頭設(shè)置優(yōu)先級。將4種業(yè)務(wù)的優(yōu)先級分別設(shè)置為1、2、3、4,其中數(shù)字越大為優(yōu)先級越高,在網(wǎng)絡(luò)中將獲得優(yōu)先服務(wù)。網(wǎng)絡(luò)模型搭建完成后,分別調(diào)用兩種算法進(jìn)行模擬實(shí)驗(yàn),模型正常工作后會(huì)出現(xiàn)如下的動(dòng)畫效果如圖2所示。網(wǎng)絡(luò)模型搭建的主要代碼如下:
set n8 [MYMns node]
set n9 [MYMns node] //路由節(jié)點(diǎn)設(shè)置
MYMns duplex-link MYMn8 MYMn9 1.7M 20ms 算法
MYMns queue-limit MYMn8 MYMn9 10
for {set i 0} {MYMi<3} {incr i} {
set s(MYMi) [MYMns node]
set d(MYMi) [MYMns node]
MYMns duplex-link MYMs (MYMi) MYMn8 2M 10ms 算法
MYMns duolex-link MYMn9 MYMd (MYMi) 2M 10ms 算法
//發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)設(shè)置以及鏈路參數(shù)配置
set udp (MYMi) [new Agent/UDP]
set null (MYMi) [new Agent/Null]
MYMns attach-agent MYMs (MYMi) MYMudp (MYMi)
MYMns attach-agent MYMd (MYMi) MYMnull (MYMi)
MYMns connect MYMudp (MYMi) MYMnull (MYMi)
MYMudp (MYMi) set fid_ MYMi
MYMudp (MYMi) set prio_ MYMi //建立udp聯(lián)機(jī)
set cbr (MYMi) [new Application/Traffic/CBR]
MYMcbr (MYMi) attach-agent MYMudp (MYMi)
} //cbr流量發(fā)生器設(shè)置
圖2 網(wǎng)絡(luò)模擬動(dòng)畫效果
調(diào)用兩種算法下的業(yè)務(wù)時(shí)延情況如圖3所示,其中業(yè)務(wù)cbr1為獲得最高優(yōu)先級的業(yè)務(wù),cbr4為優(yōu)先級最低的業(yè)務(wù)。調(diào)用兩種算法下,當(dāng)模擬時(shí)間在0.3 s之前,網(wǎng)絡(luò)業(yè)務(wù)量都不斷上升,節(jié)點(diǎn)緩沖區(qū)中的數(shù)據(jù)分組不斷增多導(dǎo)致網(wǎng)絡(luò)時(shí)延不斷增大。但此時(shí)由于緩沖區(qū)為未滿狀態(tài),隊(duì)列管理機(jī)制仍采取“先進(jìn)先出”的原則,此時(shí),兩種算法下的網(wǎng)絡(luò)時(shí)延情況大體一致。當(dāng)數(shù)據(jù)分組在隊(duì)列緩沖區(qū)開始擁塞的情況下,DropTail算法采取“棄尾”機(jī)制不停丟棄隊(duì)尾分組。而PDropTail算法采取優(yōu)先級識別和棄包選擇機(jī)制后,高優(yōu)先級業(yè)務(wù)獲得優(yōu)先服務(wù),相比DropTail算法就得到了更低的時(shí)延。因此兩種算法下的時(shí)延情況有較大不同。而表2為不同業(yè)務(wù)流的平均網(wǎng)絡(luò)時(shí)延情況。
圖3 兩種算法下的時(shí)延情況
表2兩種算法下的業(yè)務(wù)流平均時(shí)延
算法業(yè)務(wù)分組時(shí)延/scbr1cbr2cbr3cbr4DropTail0.052 0860.064 0970.082 4840.080 544PDropTail0.053 0870.060 7260.066 660.065 628
明顯可以看出在調(diào)用PDropTail算法時(shí),不同業(yè)務(wù)的時(shí)延基本低于DropTail算法下的時(shí)延,事實(shí)證明新算法能保證較低的網(wǎng)絡(luò)時(shí)延。而兩種算法下的實(shí)時(shí)網(wǎng)絡(luò)丟包率情況如圖4所示。兩種算法的實(shí)際網(wǎng)絡(luò)丟包情況如表3。
圖4 兩種算法下的丟包率情況
表3兩種算法下的業(yè)務(wù)流丟包情況
算法業(yè)務(wù)分組丟包(/125個(gè))cbr1cbr2cbr3cbr4DropTail951022313PDropTail92101328
由圖形和表格數(shù)據(jù)可知:兩種算法下的實(shí)時(shí)丟包率均隨著模擬時(shí)間逐步上升。雖然兩種算法情況下的總丟包數(shù)保持一樣的水平,但是調(diào)用PDropTail算法下確保了優(yōu)先級較高的業(yè)務(wù)cbr4獲得優(yōu)先服務(wù),保證了其較低的網(wǎng)絡(luò)丟包情況。 調(diào)用兩種算法的網(wǎng)絡(luò)吞吐量情況如圖5所示。圖5反映了新算法能保持與DropTail算法幾乎一致的高吞吐量。因此,通過時(shí)延、丟包和吞吐量等方面因素的實(shí)驗(yàn)對比分析,驗(yàn)證了新算法對于優(yōu)先級業(yè)務(wù)具有一定區(qū)分服務(wù)的能力,能保證較高優(yōu)先級業(yè)務(wù)較低的網(wǎng)絡(luò)時(shí)延和丟包率,也能確保業(yè)務(wù)在網(wǎng)絡(luò)傳輸過程中較高的吞吐量。
圖5 兩種算法下的吞吐量情況
本文利用NS2對NCS的網(wǎng)絡(luò)傳輸模型進(jìn)行模擬仿真,設(shè)計(jì)添加了優(yōu)先級隊(duì)列管理算法,并在實(shí)驗(yàn)中對DropTail算法、PDropTail算法的性能進(jìn)行了分析比較。從實(shí)驗(yàn)數(shù)據(jù)中可以得出,PDropTail算法能為NCS中具有不同優(yōu)先級的業(yè)務(wù)提供更好的區(qū)分服務(wù),保證較高優(yōu)先級業(yè)務(wù)具有較低的網(wǎng)絡(luò)傳輸延時(shí)、較低的網(wǎng)絡(luò)低丟包率,同時(shí)也繼承了DropTail算法較高吞吐量的優(yōu)點(diǎn)。因此,實(shí)驗(yàn)?zāi)M的結(jié)果達(dá)到了預(yù)期效果。
參考文獻(xiàn):
[1] WALSH G, HONG Y, BUSHNELL L. Stability analysis of networked control systems[J]. American Control Conference, 1999. Proceedings of the 1999 ,14(4):2876-2880
[2] IPACCHI A, ALBUYEH F. Grid of the future[J]. Power and Energy Magazine, IEEE ,2009,7(2):52-62
[3] WANG Feiyue. Parallel Control and Management for Intelligent Transportation Systems: Concepts, Architectures, and Applications[J]. Intelligent Transportation Systems, IEEE Transactions on,2010,11(3):630-638
[4] YUE Dong, HAN Qinglong, CHEN Peng. State feedback controller design of networked control systems[J]. Circuits and Systems II: Express Briefs, IEEE Transactions on,2004,51(11):640-644
[5] WU Jing, CHEN Tongwen. Design of Networked Control Systems With Packet Dropouts[J]. Automatic Control, IEEE Transactions on,2007,52(7):1314-1319
[6]WANG Xiaofeng. LEMMON M. Event-Triggering in Distributed Networked Control Systems[J]. Automatic Control, IEEE Transactions on,2011,56(3):586-601
[7] 徐雷鳴,龐博,趙耀.NS 與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2003
[8] 于斌,孫斌.NS2 與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2007
[9] 柯志亨,程榮祥,鄧德雋.NS2 仿真實(shí)驗(yàn)——多媒體和無線網(wǎng)絡(luò)通信[M].北京:電子工業(yè)出版社,2009
[10] 高文宇,王建新,陳松喬. 網(wǎng)絡(luò)仿真軟件NS2中隊(duì)列調(diào)度算法的擴(kuò)展[J].系統(tǒng)仿真學(xué)報(bào),2006(2):521-525
[11] 楊吉文,張衛(wèi)東.基于NS2的主動(dòng)隊(duì)列管理仿真研究[J].計(jì)算機(jī)工程,2006(17):189-191
[12] 高鵬,戴旭初. 基于NS的主動(dòng)隊(duì)列管理算法的仿真與分析[J]. 計(jì)算機(jī)仿真,2006(5):98-100,155