馬琛璐, 唐俊勇
(西安工業(yè)大學計算機科學與工程學院,西安710021)
隨著網(wǎng)絡技術(shù)在能源裝備、工業(yè)互聯(lián)、邊緣與云計算中的發(fā)展與融合,極大地促進了智能化生產(chǎn)、運維服務和供應鏈的集成。傳統(tǒng)單一的網(wǎng)絡結(jié)構(gòu)已經(jīng)無法滿足高速發(fā)展的網(wǎng)絡環(huán)境,隨之產(chǎn)生的是由有線、WiFi、無線傳感、LTE和衛(wèi)星網(wǎng)絡等多種異構(gòu)網(wǎng)絡結(jié)合而成的混合網(wǎng)絡[1-2],作為一種新型網(wǎng)絡形式,以其覆蓋面廣、網(wǎng)絡兼容性好和轉(zhuǎn)發(fā)靈活等優(yōu)勢,被廣泛應用在各個領域。混合網(wǎng)絡由于具備有線、無線信道和高速、低速網(wǎng)絡結(jié)合的特點,決定了其各鏈路的延遲并不均衡,尤其是存在衛(wèi)星網(wǎng)絡這種高時延鏈路,使得網(wǎng)絡帶寬被低時延鏈路大量搶占,不僅造成了混合鏈路傳輸不公平,還導致與高時延鏈路所在的全部路徑傳輸利用率不足。解決高時延混合網(wǎng)絡的傳輸不均衡問題成為近年來研究的熱點。
目前研究主要是提出新的擁塞控制算法[3-5]來解決傳統(tǒng)TCP協(xié)議在混合網(wǎng)絡中的傳輸問題,在解決高時延混合網(wǎng)絡傳輸?shù)墓叫院团c其他擁塞機制共存的友好性問題上取得較好的效果,并開始應用在相應的傳輸環(huán)境中。其中TCP Hybla[6]算法以其明顯的優(yōu)越被應用在高延遲衛(wèi)星網(wǎng)絡中。避免了以TCP NewReno為代表的丟包觸發(fā)機制激進的數(shù)據(jù)發(fā)送模式,從而占用高延時鏈路帶寬的不公平性;提高了以TCP Vegas[7]為代表的延遲擁塞機制的響應靈敏性,較好地解決了高時延混合網(wǎng)絡各鏈路傳輸?shù)牟挥押眯浴?/p>
TCP Hybla已經(jīng)應用在實際環(huán)境中,現(xiàn)實中混合網(wǎng)絡的搭建費用昂貴且TCP擁塞控制理論復雜抽象,難以直觀地在課堂教學中表現(xiàn)出來。針對這些問題,本文利用NS-3(Network Simulator-3)[8]網(wǎng)絡仿真軟件靈活、便捷地設計高時延混合網(wǎng)絡仿真實驗,在節(jié)約實驗成本的基礎上,采用NS-3中的追蹤機制和流量監(jiān)測機制高效,便捷地將TCP擁塞控制中擁塞窗口(Congestion Window,CWND)和吞吐量(Throughput)的變化過程記錄下來,并通過模塊調(diào)用以文件的形式保存,便于進行實驗研究。
相較于傳統(tǒng)的教學實驗在擁塞控制部分黑板式教學[9-10]的缺陷,NS-3能夠針對高時延混合網(wǎng)絡的各鏈路時延不同的特點,觀察在混合網(wǎng)絡結(jié)構(gòu)中,傳統(tǒng)的TCP擁塞控制機制與TCP Hybla機制的性能優(yōu)劣以及細節(jié)變化,突破了原有實驗教學難以直觀分析抽象難懂的TCP理論的局限性。同時,該實驗可用于混合網(wǎng)絡的相關(guān)教學和研究,并可進一步開展TCP擁塞控制協(xié)議的一系列實驗教學。
NS-3旨在提高實驗效率,節(jié)省實驗成本,通過忽略底層細節(jié)進行大規(guī)模網(wǎng)絡的相關(guān)研究,縮小現(xiàn)實網(wǎng)絡與實驗結(jié)果的差距。利用該軟件進行混合網(wǎng)絡的擁塞控制相關(guān)教學實驗,可以幫助學生更好的理解理論知識,并有助于相關(guān)研究人員對新的網(wǎng)絡協(xié)議進行實驗和驗證,方便研究人員及時對新的協(xié)議進行改進、調(diào)整。該軟件用于實驗教學中,可有效提升教學質(zhì)量,培養(yǎng)學生獨立思維能力。
圖1所示為NS-3仿真[11]實驗平臺的基本搭建流程,根據(jù)相關(guān)網(wǎng)絡結(jié)構(gòu)編寫模塊源碼,若滿足仿真需求直接運行腳本文件,否則根據(jù)需求修改合適的源碼和模塊,并重新編譯運行,并將仿真結(jié)果以文件的形式輸出,收集相應的數(shù)據(jù),對仿真結(jié)果進行分析。
圖1 NS-3仿真平臺的基本搭建流程
本文采用NS-3中的Internet模塊設計傳輸層TCP協(xié)議性能分析仿真實驗[12]。在仿真中需要為網(wǎng)絡中的各節(jié)點設置相應的參數(shù),在NS-3中節(jié)點被視為裸機,需要添加相應的網(wǎng)卡、TCP/IP協(xié)議棧以及Application。圖2所示為NS-3中的Internet模塊架構(gòu)。
圖2 NS-3中Internet模塊架構(gòu)
各模塊的具體含義:
Internet 在NS-3中的TCP/IP協(xié)議棧,包含了所有傳輸層以及網(wǎng)絡層的協(xié)議算法,是網(wǎng)絡仿真的核心模塊;
TcpSocket 主要用來定義基本的TCP屬性,是一個虛擬類變量;
TcpSocketBase TCP協(xié)議的擁塞控制和窗口管理算法的核心類,是NS-3中實現(xiàn)擁塞控制仿真模擬的關(guān)鍵;
TcpTx 獲取TcpSocketBase產(chǎn)生的Tx trace變量,并接收應用層傳遞的數(shù)據(jù)分組;
TcpRx 通過TcpL4Protocol接收來自網(wǎng)絡層的Rx trace變量;
TcpL4Protocol 用于創(chuàng)建TcpSocketBase對象,是傳輸層與網(wǎng)絡層的接口,負責把TcpTx產(chǎn)生的數(shù)據(jù)傳遞給網(wǎng)絡層。
在NS-3中,當仿真程序開始時,由客戶端應用程序通過配置了跟蹤變量的SendApplication協(xié)議發(fā)送TCP分組,傳遞給Internet模塊的TcpSocket類,通過與IP地址對應的端口號中的TcpTx變量繼續(xù)發(fā)送TCP分組,在TcpL4Protocol創(chuàng)建的TcpSocketBase類的擁塞機制控制下,將下層所能容納的最大TCP分組傳遞下去,最終在接收端回調(diào)函數(shù)的作用下,通過配置接收跟蹤變量TcpRx將所接收的分組信息回傳給PacketSink。
在異構(gòu)網(wǎng)絡中,網(wǎng)絡資源的可用性通過CWND來探測評估。理想狀態(tài)下(即不丟包),每當發(fā)送方發(fā)送一個最大報文段(Maximum Segment Size,MSS),接收方會反饋一個確認號(Acknowledge character,ACK)作為響應。標準的TCP擁塞控制算法TCP NewReno在慢啟動(Slow Start,SS)階段,CWND 值呈指數(shù)變化,而在擁塞避免(Congestion Avoid,CA)階段,CWND值呈線性變化。
為便于觀察往返時延(Round-Trip Time,RTT)的變化對擁塞窗口的影響,將TCP NewReno的離散動態(tài)模型進行連續(xù)化處理,得到CWND隨時間變化的評估模型式:[13]
式中:tλ= RTT lbλ;λ 為慢啟動閾值(Slow Start Threshold,ssthresh),也是進入CA階段的起點。由此可以看出,在TCP NewReno中受RTT的影響,較長的RTT會使W(t)減小,使CWND數(shù)量減少,降低吞吐量。為使較長的RTT獲得與短的RTT相同的吞吐量,TCP Hybla算法原理通過平衡因子ρ使CWND擺脫對RTT的依賴,使得在高時延的網(wǎng)絡中,TCP Hybla仍然具有良好的性能。
其中ρ=RTT/RTT0,RTT0默認為25 ms,在NS中默認為50 ms。引入平衡因子ρ后的TCP Hybla的CWND 表達式[14]為:
由BH(t)=WH(t)/RTT 可得TCP Hybla的動態(tài)吞吐量模型[15-16]:
從式(2)、(3)可以看出,TCp Hybla算法的CWND和吞吐量與RTT無關(guān),只與RTT0這一參考常量相關(guān)。
此外,由式(1)、(2)對比可知,在高時延的網(wǎng)絡中,TCP Hybla比TCP NewReno算法更容易獲得更大的CWND,也可更快地獲得較高的吞吐量。這表明,在相同傳輸時間下,TCP Hybla擁有更好的調(diào)控性能,同時也說明了TCP Hybla更適用于包含衛(wèi)星網(wǎng)絡在內(nèi)的高時延的混合網(wǎng)絡。
為了驗證TCP Hybla算法原理優(yōu)于傳統(tǒng)的TCP NewReno算法并提供其吞吐量和CWND變化的相關(guān)實驗結(jié)果,本文使用NS-3模擬器進行仿真。仿真網(wǎng)絡結(jié)構(gòu)如圖3所示,由8個節(jié)點和R1,R2兩個路由組成的啞鈴狀混合網(wǎng)絡拓撲。
圖3 混合網(wǎng)絡結(jié)構(gòu)
啞鈴狀網(wǎng)絡結(jié)構(gòu)符合混合網(wǎng)絡多鏈路共享瓶頸帶寬的特點,可有效地模擬混合網(wǎng)絡有線、無線并存爭用網(wǎng)絡帶寬的情況。其各鏈路結(jié)構(gòu)具體仿真參數(shù)見表1。
表1 網(wǎng)絡結(jié)構(gòu)仿真參數(shù)
仿真的主要目的是通過追蹤機制和流量監(jiān)測機制追蹤數(shù)據(jù)來觀察TCP NewReno以及TCP Hybla算法的吞吐量及CWND的變化,以此驗證TCP Hybla算法在高時延混合網(wǎng)絡中的公平性、友好性及響應靈敏性。在NS-3中添加追蹤和流量監(jiān)測機制設置高時延混合網(wǎng)絡仿真場景的基本流程為:
(1)搭建高時延混合網(wǎng)絡結(jié)構(gòu);
(2)為各網(wǎng)絡節(jié)點設置變量屬性和參數(shù),具體參數(shù)見表1;
(3)分配IP地址給各個節(jié)點;
(4)配置MyApp函數(shù),并添加Trace變量用于記錄CWND的變化;
(5)為追蹤變量設置回調(diào)函數(shù),將CWND的變化以文件的形式保存下來;
(6)添加流量監(jiān)測和事件調(diào)度函數(shù),統(tǒng)計相同時間間隔內(nèi)?;旌暇W(wǎng)絡各鏈路吞吐量變化;
(7)為各個節(jié)點設置運行的始末時間,實時調(diào)控各鏈路的流量。
完成上述設計流程,可以建立一個完整的高時延混合網(wǎng)絡場景用于實驗教學,使學生可以更好地理解復雜抽象的TCP擁塞控制機制,并通過修改仿真時間、信道時延等仿真參數(shù)以獲得不同的仿真結(jié)果。通過設置追蹤變量和流量監(jiān)測機制將仿真結(jié)果進行相關(guān)計算并寫入相關(guān)的文件中,利用Oringin軟件對仿真結(jié)果繪圖分析。
為直觀觀察TCP NewReno以及TCP Hybla算法的吞吐量及CWND的變化并評估TCP Hybla的性能,采用7.5 Mb/s的瓶頸帶寬和1 Mb/s的4條支路帶寬,并設置時延為2.5 ms的3條鏈路和時延為100 ms的一條高時延鏈路,構(gòu)造混合網(wǎng)絡結(jié)構(gòu),模擬高時延衛(wèi)星鏈路和普通網(wǎng)絡鏈路的狀態(tài)。
在RTT 分別為25、50、100、200 ms的狀態(tài)下,由TCP Hybla理論可得CWND隨時間變化的趨勢如圖4所示。
圖4 理論Hybla算法CWND
理論上是每經(jīng)過一個傳輸輪次增大發(fā)送窗口數(shù),而NS-3仿真中發(fā)送窗口數(shù)量由具體仿真的網(wǎng)絡容量決定,在NS-3中仿真可得TCP Hybla的CWND隨時間變化的仿真結(jié)果如圖5所示。
圖5 NS-3仿真Hybla算法CWND
仿真結(jié)果表明,在高時延混合網(wǎng)絡里,TCP Hybla算法不會受RTT的影響而降低CWND,而且隨著RTT的增大,CWND越大,仿真結(jié)果與理論結(jié)果基本一致。
時延差異是混合網(wǎng)絡的一個重要特點,主要影響TCP擁塞控制算法的公平性,本節(jié)利用啞鈴網(wǎng)絡結(jié)構(gòu)評估Hybla算法和NewReno算法,為了確保公平性,仿真設定在丟包率為零(即僅有擁塞丟包)的理想狀態(tài)下,4條TCP流同時啟動,共享瓶頸帶寬,仿真時間持續(xù)50 s。
圖6為在NewReno算法下,3條低時延流與1條高時延流的對比,可以清晰的看到,從啟動開始,1、2、3號低時延流快速搶占瓶頸鏈路,分別占帶寬的0.27、0.28、0.30,幾乎均分瓶頸鏈路,而4號高時延流的帶寬幾乎為零。從圖中可以看出,只有當1、2、3號流逐漸減小,并趨于穩(wěn)態(tài)時,4號流才有機會分享帶寬,并且緩慢的增長,直到最后1,2,3號流均穩(wěn)定在吞吐量為0.30附近,4號高時延流的吞吐量才增長到0.11。恰好驗證了在標準的TCP擁塞協(xié)議下,較大的RTT會遭受TCP連接的嚴重懲罰,體現(xiàn)了NewReno算法在不同RTT的鏈路下的不公平性。
圖6 New Reno算法不同時延吞吐量
為了驗證Hybla算法不受RTT影響的特性,與圖6的標準TCP擁塞控制協(xié)議進行對比,圖7是在Hybla算法下,4條TCP流同時啟動的吞吐量分布情況,由對比可見,4號高時延流一開始就快速搶占帶寬,同時1、2、3號低時延流均逐漸減小,吞吐量都保持在0.28~0.325之間,并在第10 s快速的達到吞吐量為0.25的穩(wěn)定狀態(tài)。而4號高時延流在第10 s時也迅速增長至0.25,并在10 s之后逐漸穩(wěn)定在0.26附近。
圖7 Hybla算法不同時延吞吐量
這是由于Hybla算法里的擁塞系數(shù)ρ,使得Hybla算法公平地擺脫了RTT的依賴,大大優(yōu)化了因受RTT困擾而處于劣勢的高時延鏈路的性能,這也表明了在高時延鏈路中Hybla算法的公平性更好。
圖8則是為體現(xiàn)Hybla算法的優(yōu)越性,設置仿真時間為150 s,在1、2、3號低時延流啟動20 s后,逐漸進入穩(wěn)定狀態(tài)時再啟動4號高時延流。由圖可見,4號高時延流并未打破原有3條流的穩(wěn)定狀態(tài),而是快速增長至吞吐量為0.25附近,與其他3條流一起趨于穩(wěn)定,并均分帶寬。
圖8 Hybla穩(wěn)態(tài)吞吐量
圖9 為容錯率為0.1%,時延為100 ms的高時延鏈路中TCP Hybla算法和TCP Vegas算法的CWND變化,可見在高時延鏈路中TCP Hybla的CWND發(fā)送量遠高于TCP Vegas算法,由此可說明,在高時延鏈路中,TCP Hybla的響應靈敏性。
圖9 TCP Vegas和TCP Hybla算法CWND
為反映TCP Hybla算法的混合網(wǎng)絡中與其他算法之間的友好性,在混合網(wǎng)絡結(jié)構(gòu)中令1、2、3號低時延流為TCP NewReno,4號高時延流分別為TCP Hybla和TCP Vegas,將2次運行結(jié)果進行對比,如圖10所示。雖然TCP Vegas在高時延鏈路中的性能低于TCP Hybla,但是帶寬并沒有被完全搶占,稍低于適應高時延鏈路的TCP Hybla,約占20%,而TCP Hybla和TCP NewReno算法均穩(wěn)定在25%左右,這恰好說明了TCP Hybla算法友好性。
圖10 不同TCP算法的吞吐量
本文對在NS-3中搭建高時延混合網(wǎng)絡結(jié)構(gòu)仿真的過程進行了詳細描述,在仿真過程中運用追蹤機制和流量監(jiān)測機制對仿真結(jié)果進行輸出保存。實驗不僅仿真了TCP Hybla算法在高時延混合網(wǎng)絡中的吞吐量和CWND的變化,還設計實驗對TCP Hybla在混合網(wǎng)絡中的公平性,友好性以及響應靈敏性進行了評估,仿真結(jié)果與理論貼合度較高,實驗設計成功??稍诖藢嶒灥幕A上進一步進行混合網(wǎng)絡的研究與教學工作以及一系列相關(guān)的TCP擁塞控制教學實驗設計。