蔣凌云 盧凱 黃海平
摘 要:為了解決復(fù)雜數(shù)據(jù)中心網(wǎng)絡(luò)仿真難題,在對NS3仿真工具的研究基礎(chǔ)上,對NS3的路由協(xié)議進(jìn)行擴充,研究使用NS-3網(wǎng)絡(luò)仿真軟件自動生成BCube網(wǎng)絡(luò)拓?fù)?,實現(xiàn)BSR路由協(xié)議,通過NetAnim可視化模塊直觀展示網(wǎng)絡(luò)仿真結(jié)果,并通過Tracing系統(tǒng)收集、統(tǒng)計與分析網(wǎng)絡(luò)丟包情況、端到端時延以及吞吐量等性能指標(biāo)。與傳統(tǒng)RIP協(xié)議、OSPF協(xié)議進(jìn)行對比,證明了BSR路由的優(yōu)越性。該研究可為數(shù)據(jù)中心網(wǎng)絡(luò)提供有效的參考信息,有利于簡化數(shù)據(jù)中心網(wǎng)絡(luò)仿真工作,使數(shù)據(jù)中心網(wǎng)絡(luò)能更快地投入使用。
關(guān)鍵詞:NS3;網(wǎng)絡(luò)仿真;BCube;數(shù)據(jù)中心;網(wǎng)絡(luò)性能指標(biāo)
DOI:10. 11907/rjdk. 192104 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2020)005-0190-05
0 引言
近年來,隨著云計算和計算機密集型網(wǎng)絡(luò)技術(shù)的快速發(fā)展,作為其基礎(chǔ)設(shè)施的數(shù)據(jù)中心網(wǎng)絡(luò)再次成為研究熱點。在當(dāng)前的云計算與大數(shù)據(jù)環(huán)境下,數(shù)據(jù)中心網(wǎng)絡(luò)中的服務(wù)器節(jié)點數(shù)呈指數(shù)級增長,而傳統(tǒng)多根樹型數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)[1]由于具有造價昂貴、容錯性差等缺點,很難滿足實際需求。因此,學(xué)術(shù)界與企業(yè)界研究出很多新的數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu),例如BCube[2]、DCell[3]、RCube[4]等以服務(wù)器為中心的數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu),以期解決現(xiàn)有問題。
每種數(shù)據(jù)中心網(wǎng)絡(luò)都有其對應(yīng)的路由協(xié)議。本文重點研究了BCube數(shù)據(jù)中心網(wǎng)絡(luò)中的BSR路由算法,其相比傳統(tǒng)RIP協(xié)議與OSPF協(xié)議有著很大不同。BSR是一種基于函數(shù)計算的路由協(xié)議,無需維護龐大的路由信息,路由負(fù)載能力較強,配置相對簡單,適用于大規(guī)模數(shù)據(jù)中心網(wǎng)絡(luò)[5]。
但由于受到數(shù)據(jù)中心網(wǎng)絡(luò)的服務(wù)器節(jié)點數(shù)量龐大、拓?fù)浣Y(jié)構(gòu)復(fù)雜及實驗成本高等現(xiàn)實因素限制,目前大多僅停留在理論研究階段[6]。一般來說,科研人員經(jīng)過研究提出的新數(shù)據(jù)中心網(wǎng)絡(luò)及路由協(xié)議不會立即部署使用,在此之前,必須進(jìn)行大量復(fù)雜的測試與分析工作,而如何更好地測試與驗證新提出的數(shù)據(jù)中心網(wǎng)絡(luò),是一個亟待解決的難題。
一種有效的解決方案是運用仿真方法對新提出的數(shù)據(jù)中心網(wǎng)絡(luò)進(jìn)行初步實現(xiàn)與驗證,有助于對新結(jié)構(gòu)作出及時調(diào)整與改進(jìn)。當(dāng)前有許多優(yōu)秀的網(wǎng)絡(luò)仿真軟件(如NS-2[7]、OPNET[8])都具備很強的模擬仿真功能。NS3在完備性、開源性、易擴展性等方面的特色使其優(yōu)于現(xiàn)有大多數(shù)主流網(wǎng)絡(luò)仿真軟件。NS3功能非常強大,其可以對各種網(wǎng)絡(luò)協(xié)議和各個層次進(jìn)行模擬與研究,并提供靈活的擴展支持[9]。
本文主要對NS3網(wǎng)絡(luò)仿真軟件的點到點通信模塊進(jìn)行分析,重點介紹網(wǎng)絡(luò)設(shè)備節(jié)點和網(wǎng)絡(luò)鏈路仿真特性,并以此為基礎(chǔ)給出BSR路由協(xié)議擴展方法,并構(gòu)建BCube結(jié)構(gòu)的數(shù)據(jù)中心網(wǎng)絡(luò)。
1 BCube數(shù)據(jù)中心網(wǎng)絡(luò)特點
BCube是一種基于集裝箱的模塊化數(shù)據(jù)中心新型網(wǎng)絡(luò)架構(gòu)[10]。BCube架構(gòu)核心是以服務(wù)器為中心的網(wǎng)絡(luò)結(jié)構(gòu),其中具有多個網(wǎng)絡(luò)端口的服務(wù)器連接到多層COTS(商品貨架式)小型交換機。BCube是遞歸定義的結(jié)構(gòu)。BCube0只是連接到 n 端口交換機的n個服務(wù)器。一個BCube1由 n 個 BCube0與n個n端口交換機構(gòu)成。以此類推,BCubek(k≥1)由n個BCubek-1和nk個n端口交換機構(gòu)成。BCubek中的每個服務(wù)器都有k + 1個端口,并從0級到k級編號。由此可知,BCubek有N = nk +1個服務(wù)器和k + 1級交換機,每個級別都有 nk個n端口交換機,如圖1所示。
BCube采用BSR路由協(xié)議提供高效的路由策略[11]。BSR可以充分利用BCube的高網(wǎng)絡(luò)容量,并自動均衡通信負(fù)載,同時具有良好的容錯性能。BSR將服務(wù)器分為起始服務(wù)器、中繼服務(wù)器和目的服務(wù)器[12]。其通過起始服務(wù)器控制路由路徑,而不需要中繼服務(wù)器的協(xié)調(diào)。中繼服務(wù)器不需要路由,只需要根據(jù)報文頭文件進(jìn)行轉(zhuǎn)發(fā)。起始服務(wù)器負(fù)責(zé)選取可達(dá)的最優(yōu)路徑,即最小剩余帶寬最大的路徑,若其相同時則選取最短路徑[13]。中繼服務(wù)器向起始服務(wù)器返回錯誤信息,并報告各條路徑的帶寬信息,目的服務(wù)器返回含有路徑中最小帶寬的探測信息,從而一方面避免了全局路由狀態(tài)播報,另一方面使BCube具有動態(tài)均勻負(fù)載能力,且路由效率極高[14]。
2 BCube網(wǎng)絡(luò)拓?fù)浞抡孢^程
NS3不是NS2的擴展,而是一款全新的網(wǎng)絡(luò)模擬軟件[15],是由美國華盛頓大學(xué)的Thomas教授及其研究小組開發(fā)的。其廣泛汲取了當(dāng)前主流仿真器NS2、YANS 和GTNets的特點,目前已經(jīng)發(fā)展到3.29版本。
NS3本質(zhì)上是一款離散事件仿真器,從上到下每個模塊都依賴于其底層模塊[16]。內(nèi)核模塊位于最底層,實現(xiàn)了NS3最核心的功能,如事件調(diào)度器、智能指針、回調(diào)機制等,為不同網(wǎng)絡(luò)類型提供一般性的網(wǎng)絡(luò)仿真服務(wù),其它模塊功能都建立在該底層模塊之上。Network是網(wǎng)絡(luò)數(shù)據(jù)分組模塊,主要定義了數(shù)據(jù)包、Pcap文件操作以及網(wǎng)卡等抽象基類。
2.1 點到點通信模型
NS3的點到點通信模型是一個非常簡單的點到點數(shù)據(jù)鏈路,通過一個PointToPointChannel正好連接兩個PointToPointNetDevice裝置,可以看作是一個全雙工RS-232或RS-422鏈路。PointToPointChannel模擬了點到點通信模型,并能以指定速率進(jìn)行通信,且提供以下屬性:Delay: NS3::Time用于指定信道的光傳輸延遲速度,而PointToPointNetDevice提供Address/DataRate/TxQueue等屬性。
通過實例化PointToPointHelper對象連接PointToPoint網(wǎng)絡(luò)設(shè)備,并配置信道屬性,構(gòu)建點到點通信網(wǎng)絡(luò)。
2.2 BSR路由協(xié)議實現(xiàn)
NS3中的所有路由協(xié)議都是繼承自Ipv4RoutingProtocol類,其實現(xiàn)了路由協(xié)議最基本的函數(shù)RouteOutput()和RouteInput(),且其中默認(rèn)了一個基本的靜態(tài)路由。首先通過函數(shù)RouteOutput()將應(yīng)用層(application)產(chǎn)生的數(shù)據(jù)包進(jìn)行層層封裝然后發(fā)送,直到到達(dá)網(wǎng)卡(device),再通過路由規(guī)則LookupStatic()轉(zhuǎn)發(fā)給其它節(jié)點,到達(dá)目的節(jié)點后通過函數(shù)RouteInput()接收數(shù)據(jù)包,并層層剝離數(shù)據(jù)包首部,一直發(fā)送到應(yīng)用層(application)。本文模擬的BCube網(wǎng)絡(luò)是一種以服務(wù)器為中心的互連結(jié)構(gòu),服務(wù)器兼具路由功能,報文在具有多個網(wǎng)絡(luò)接口的服務(wù)器中轉(zhuǎn)發(fā),交換機僅在第二層執(zhí)行報文轉(zhuǎn)發(fā)功能。其連接方式是在B0, n以外的層次采用普通交換機實現(xiàn)連接。BCube在任一級都具有相同的單元數(shù)n(基數(shù)),因此Bk, n擁有nk+1臺服務(wù)器(B0,n中的服務(wù)器數(shù)為n)[17]。
BCube網(wǎng)絡(luò)采用BSR(BCube Source Routing)路由協(xié)議,其是一種基于函數(shù)計算的路由方法,采用路徑自適應(yīng)協(xié)議,使用k+1進(jìn)制的地址組對每個服務(wù)器節(jié)點編號,通過任意兩節(jié)點編號之間的函數(shù)關(guān)系,自動生成路由,而不需要向局域網(wǎng)中廣播報文獲取相鄰路由信息,每個節(jié)點只需存儲目的節(jié)點編號,從而減少了內(nèi)存需求,提高了帶寬利用率[18]。BSR能很好地構(gòu)造網(wǎng)絡(luò)中最長路徑較短的多條不相交路徑,并實現(xiàn)可靠數(shù)據(jù)傳輸[19]。以下將詳述BSR路由協(xié)議在NS3中的實現(xiàn)過程。
為了能在NS3環(huán)境下模擬運行BSR路由協(xié)議,首先生成一個代理類,該類繼承于Ipv4RoutingProtocol類,同時繼承了兩個基本功能函數(shù)RouteOutput()和RouteInput(),用于轉(zhuǎn)發(fā)與接收經(jīng)過該節(jié)點的數(shù)據(jù)包;其次需要實現(xiàn)Bcube的路由轉(zhuǎn)發(fā)規(guī)則,先對每個主機(node)編號,當(dāng)網(wǎng)絡(luò)中的某個服務(wù)器節(jié)點發(fā)送數(shù)據(jù)時,該節(jié)點便會自動獲取本節(jié)點地址數(shù)組與目的地址數(shù)組,并進(jìn)行對比計算,記錄數(shù)據(jù)傳輸經(jīng)過的每一個節(jié)點,最終得到整條路由路徑。核心代碼如下:
BCube數(shù)據(jù)中心網(wǎng)絡(luò)的任意兩個服務(wù)器節(jié)點之間存在k+1條路徑,通過for循環(huán)隨機產(chǎn)生不同的array數(shù)組,生成k+1條不相交路徑。本文將源節(jié)點生成的路徑存放在報文頭中,每轉(zhuǎn)發(fā)一次報文,發(fā)送端便從數(shù)據(jù)包的path數(shù)組中向后遍歷一位,作為下一跳節(jié)點,直到遍歷結(jié)束。
3 BCube示例仿真實現(xiàn)
本文將構(gòu)建一個2層4端口的BCube拓?fù)洌ㄒ妶D2),并進(jìn)行簡單的性能測試。仿真實驗環(huán)境在虛擬機上構(gòu)建,在VMware上創(chuàng)建一臺Ubuntu虛擬機,并安裝NetAnim可視化軟件與NS3仿真軟件。
搭建BCube數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)?,在scratch/bcube.cc文件中編輯腳本。首先通過NodeContainer節(jié)點容器類的Create()方法創(chuàng)建24個節(jié)點,其中16個為服務(wù)器,另外8個為交換機。PointToPointHelper類負(fù)責(zé)連接網(wǎng)絡(luò)設(shè)備以及設(shè)置網(wǎng)絡(luò)信道屬性。通過實例化PointTopointHelper對象設(shè)置信道速率及時延等屬性,并通過InStall()方法安裝到每個節(jié)點。以上便完成了設(shè)備與信道配置,接下來通過InternetStackHelper類為每臺設(shè)備安裝一個網(wǎng)絡(luò)協(xié)議棧,主要是IP層。通過類Ipv4AddressHelper的SetBase()為節(jié)點上的設(shè)備配置IP地址和子網(wǎng)掩碼。至此,一個安裝了協(xié)議棧、配置了IP地址的點到點BCube網(wǎng)絡(luò)便搭建完成。核心代碼如下:
在成功建立拓?fù)浜螅梢酝ㄟ^NetAnim模塊顯示該網(wǎng)絡(luò)拓?fù)涞男Ч?。NS3中的NS3::AnimationInterface類負(fù)責(zé)追蹤節(jié)點間的數(shù)據(jù)分組流軌跡,并生成XML跟蹤文件[20]。在NetAnim中讀取statistics文件夾下生成的XML文件,生成如圖3所示的BCube拓?fù)?,可以動態(tài)顯示數(shù)據(jù)流向以及經(jīng)過的節(jié)點。
創(chuàng)建好的網(wǎng)絡(luò)并不會自己產(chǎn)生流量,需要選擇合適的網(wǎng)絡(luò)應(yīng)用模型產(chǎn)生數(shù)據(jù)通信。首先選擇一個節(jié)點作為客戶端發(fā)送數(shù)據(jù)(0號節(jié)點),另一個節(jié)點作為服務(wù)器端,負(fù)責(zé)接收數(shù)據(jù)(8號節(jié)點),客戶端節(jié)點以TCP流量發(fā)送數(shù)據(jù)包給服務(wù)器節(jié)點。本實驗仿真該拓?fù)渚W(wǎng)絡(luò)的TCP擁塞窗口機制,通過加入錯誤機制制造數(shù)據(jù)丟失,最終引起擁塞窗口的改變。主要代碼如下:
通過對NS3中Tracing文件的處理可以對整個網(wǎng)絡(luò)進(jìn)行性能分析,計算出整個網(wǎng)絡(luò)的數(shù)據(jù)傳輸延遲、丟包率和吞吐量,并通過Gnuplot工具生成相應(yīng)實驗結(jié)果圖,以反映各種網(wǎng)絡(luò)性能參數(shù)隨時間變化的趨勢。
4 實驗結(jié)果及分析
仿真分為3組實驗進(jìn)行,分別針對端到端時延、網(wǎng)絡(luò)吞吐量和丟包情況,并與RIP協(xié)議及OSPF協(xié)議進(jìn)行對比。
圖4給出了BSR協(xié)議、RIP協(xié)議和OSPF協(xié)議下網(wǎng)絡(luò)吞吐量隨時間的變化關(guān)系。BCube網(wǎng)絡(luò)吞吐量隨時間變化呈近似線性增長,當(dāng)數(shù)據(jù)流變大時,網(wǎng)絡(luò)吞吐量的增長率都有所降低,且趨于平穩(wěn)。在相同的網(wǎng)絡(luò)流量下,BSR協(xié)議吞吐量略高于OSPF協(xié)議,也高于RIP協(xié)議。
由仿真結(jié)果可知,BSR協(xié)議不涉及中間路由,避免了鏈路狀態(tài)廣播,其網(wǎng)絡(luò)結(jié)構(gòu)提供了大量并行不相交路徑,且網(wǎng)絡(luò)中更多服務(wù)器的平均長度小于3,可以有效減少路由產(chǎn)生的擁堵,增加網(wǎng)絡(luò)吞吐量,縮短網(wǎng)絡(luò)時延,減少網(wǎng)絡(luò)的丟包情況。
5 結(jié)語
本文通過實例介紹如何使用NS3快速、便捷地創(chuàng)建一個數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)洌ζ溥M(jìn)行簡單的性能測試與調(diào)整,以便其更符合實驗環(huán)境,且更貼近真實網(wǎng)絡(luò)。本文還在NS3中重點實現(xiàn)了適用于BCube架構(gòu)的BSR路由協(xié)議,并與RIP及OSPF路由協(xié)議進(jìn)行了比較。今后將對NS3模擬軟件的其它模塊進(jìn)行研究及改進(jìn),同時對其它數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)湎碌母黝悜?yīng)用性能及可行性進(jìn)行驗證。
參考文獻(xiàn):
[1] DIEGO K, FERNANDO M V R, PAULO V,et al. Software-defined networking: a ?comprehensive survey[J]. ?Proceedings ?of the IEEE, 2015, 103(1): 14-76.
[2] GUO C, LU G, LI D, et al. BCube: a high performance,server-centric network architecture for modular data centers[J]. ?ACM SIGCOMM Computer Communication Review, 2009, 39(4): 63-74.
[3] LI Z, YANG Y. RCube: a power efficient and highly available network for data centers[C]. Parallel and Distributed Processing Symposium (IPDPS), 2017 IEEE International. IEEE, 2017: 718-727.
[4] GUO C, WU H, TAN K, et al. DCell: a scalable and fault-tolerant network structure for data centers[C]. ACM SIGCOMM Computer Communication Review. ACM, 2008, 38(4): 75-86.
[5] HAN Z, YU L. A survey of the BCube data center network topology[C]. 2018 IEEE 4th International Conference on Big Data Security on Cloud (BigDataSecurity), 2018: 229-231.
[6] 茹新宇,劉淵. 網(wǎng)絡(luò)仿真器 NS3 的剖析與探究[J]. 計算機技術(shù)與發(fā)展, 2018, 28(3): 72-77.
[7] KASHYAP V K,ASTYA R, NAND P, et al. Comparative study of AODV and DSR routing protocols in wireless sensor network using NS-2 simulator[C]. 2017 International Conference on Computing, Communication and Automation (ICCCA). ?IEEE, 2017: 687-690.
[8] BISWAS S. Simulation model of beacon enabled 802.15. 4 networks with OPNET modeler[C]. 2017 International Electrical Engineering Congress (iEECON). ?IEEE, 2017: 1-4.
[9] COUDRON M, SECCI S. An implementation of multipath TCP in ns3[J]. ?Computer Networks, 2017, 116: 1-11.
[10] PAN T, CHENG B, FAN J, et al. Toward the completely independent spanning trees problem on BCube[C]. 2017 IEEE 9th International Conference on Communication Software and Networks (ICCSN). ?IEEE, 2017: 1103-1106.
[11] ASGHARI V, MOGHADDAM R F, CHERIET M. Performance analysis of modified BCube topologies for virtualized data center networks[J]. ?Computer Communications, 2016, 96: 52-61.
[12] KUMAR A R A, RAO S V, GOSWAMI D. Ns3 simulator for a study of data center networks[C]. 2013 IEEE 12th International Symposium on Parallel and Distributed Computing (ISPDC),2013: 224-231.
[13] SINGH A, ONG J, AGARWAL A, et al. Jupiter rising: a decade of clos topologies and centralized control in google's datacenter network[C]. ACM SIGCOMM Computer Communication Review,ACM, 2015, 45(4): 183-197.
[14] GUO D. Aggregating uncertain incast transfers in BCube-like data centers[J]. ?IEEE Transactions on Parallel and Distributed Systems, 2017, 28(4): 934-946.
[15] ZARRAD A, ALSMADI I. Evaluating network test scenarios for network simulators systems[J]. International Journal of Distributed Sensor Networks, 2017, 13(10): 6-8.
[16] 孫永勝,賀珊珊,王維. 基于 NS-3 的核電 DCS 網(wǎng)絡(luò)仿真框架[J]. ?電子技術(shù)與軟件工程, 2018 (5): 17-18.
[17] LI Z, YANG Y. Permutation generation for routing in BCube connected crossbars[C]. ?2015 IEEE International Conference on Communications. IEEE, 2015.
[18] WANG S, LUO J, LO Y H, et al. Forwarding and optical indices in an all-optical BCube networks[C]. 2018 IEEE 37th International Performance Computing and Communications Conference (IPCCC). ?IEEE, 2018.
[19] KLIAZOVICH D, BOUVRY P, KHAN S U. Simulation and performance analysis of data intensive and workload intensive cloud computing data centers[M]. Optical Interconnects for Future Data Center Networks. Springer, New York, NY, 2013: 47-63.
[20] ALDALBAHI A,RAHAIM M,KHREISHAH A,et al. Extending ns3 to simulate visible light communication at network-level[C]. 2016 23rd International Conference on Telecommunications (ICT), 2016.
(責(zé)任編輯:黃 ?。?/p>