王佳維 韓青
摘 要:基于Docker的容器云在工業(yè)界得到了廣泛地應用,大規(guī)模業(yè)務場景下,合理地分配帶寬資源可以滿足混合負載對QoS的不同需求。鑒于此,文章基于Docker容器實現(xiàn)了一種面向混合負載的網(wǎng)絡(luò)隔離技術(shù),利用Linux的流量管理工具(Traffic Control,TC)為不同負載分配合理的帶寬資源,以滿足混合負載的共同需求。通過在多種不同場景下進行實驗證明,新技術(shù)可以按需地為混合負載中不同應用分配帶寬資源,保證系統(tǒng)的整體性能穩(wěn)定。
關(guān)鍵詞:容器;Docker;混合負載;帶寬分配;Linux TC
中圖分類號:TP39 文獻標識碼:A
Abstract: Bandwidth allocation is a key technology to allocate reasonable bandwidth for different loads. In the multi-service scenario, the demand of different applications for network resource is different. In this paper, we implement a traffic isolation technology for Docker clouds, which is based upon Linux TC modular to control traffic. With the help of this technology, system administrator can adaptive scalable as needed to meet all applications' need. This paper implements a traffic isolation technology for Docker clouds, which is based upon Linux TC modular to control traffic. Experimental results show that this technology can improve the using efficiency of system resources and increase the overall performance of the clouds.
Key words: container; docker; mixed loads; traffic allocation; linux TC
1 引言
虛擬化技術(shù)是推動云計算誕生和發(fā)展的關(guān)鍵技術(shù),通過對平臺、基礎(chǔ)設(shè)施以及軟件等多個層次進行虛擬,實現(xiàn)了系統(tǒng)資源的有效復用和動態(tài)擴展[1]。容器是目前流行的一項虛擬化技術(shù),是對應用層的抽象[2,3]。容器可以將應用程序及其依賴的運行環(huán)境打包為鏡像,然后以獨立進程的方式在宿主機上運行。與虛擬機相比,容器具有實例規(guī)模小,創(chuàng)建、啟動以及遷移速度快等優(yōu)點[4]。Docker是目前企業(yè)界普遍流行的一種容器實例,基于Docker的容器云為互聯(lián)網(wǎng)企業(yè)及其用戶提供了極大的方便[5]。同時網(wǎng)絡(luò)空間安全問題是目前困擾廣大研究者的難題[6-8],由于Docker對網(wǎng)絡(luò)進行了有效的隔離,使得基于Docker的容器云對網(wǎng)絡(luò)空間安全的管控起到巨大的促進作用。
隨著計算機技術(shù)的不斷發(fā)展,容器云規(guī)模、負載種類和數(shù)量以及用戶數(shù)量正在持續(xù)的增長,有限的網(wǎng)絡(luò)資源與日益增長的用戶需求之間的矛盾越來越嚴重[9,10]。網(wǎng)絡(luò)的服務質(zhì)量是相對不同負載而言的,因此在混合負載場景下,如果不對負載進行網(wǎng)絡(luò)資源隔離,部分負載因無法得到足夠的網(wǎng)絡(luò)資源而影響其服務性能[11]。例如,在網(wǎng)絡(luò)總帶寬固定的情況下,在線游戲、流媒體等應用將會占據(jù)大量的網(wǎng)絡(luò)帶寬,導致其它實時性服務由于網(wǎng)絡(luò)帶寬的不足而影響其用戶體驗,甚至會產(chǎn)生更嚴重的后果。因此,網(wǎng)絡(luò)管理者需要根據(jù)各種業(yè)務的特點來對網(wǎng)絡(luò)資源進行合理的規(guī)劃和分配,從而使網(wǎng)絡(luò)資源得到高效利用。
本文基于Docker容器實現(xiàn)了一種面向混合負載的網(wǎng)絡(luò)隔離技術(shù),利用Linux的流量管理工具(Traffic Control, TC)為不同負載分配合理的帶寬資源[12]。搭建了四種網(wǎng)絡(luò)服務,然后分別驗證了靜態(tài)和動態(tài)場景下,該技術(shù)可以按需地為混合負載中不同應用分配帶寬資源。
2 研究動機
隨著Docker容器云應用的不斷豐富,新應用的不斷出現(xiàn)及容器云中混合負載之間存在網(wǎng)絡(luò)帶寬資源的爭奪,如果對所有負載一視同仁地進行網(wǎng)絡(luò)資源分配,將使得部分網(wǎng)絡(luò)服務因得不到足夠的資源而影響其服務體驗。針對該問題,做了三組實驗進行驗證。首先搭建了四種網(wǎng)絡(luò)服務,分別為網(wǎng)頁訪問、在線游戲、文件下載以及流媒體服務。然后,分別測試獨立負載以及混合負載場景下系統(tǒng)請求數(shù)、網(wǎng)絡(luò)延遲以及帶寬。
第一組實驗測試了混合負載對網(wǎng)頁訪問服務的性能影響。如圖1所示,當只有系統(tǒng)中只有網(wǎng)頁訪問一個負載時時,每秒請求數(shù)大約10000次左右。而在混合負載環(huán)境下,如文件下載和在線游戲?qū)寠Z帶寬資源,網(wǎng)頁訪問的每秒請求次數(shù)降低到大約3000次。第二、三組實驗分別測試了混合負載對在線游戲和流媒體服務的影響。具體的如圖2所示結(jié)果顯示,混合負載最大可將在線游戲的網(wǎng)絡(luò)延遲增加到原來的123倍。同樣,第三組實驗結(jié)果證明混合負載爭奪了流媒體服務的大部分帶寬資源。
在不使用任何資源隔離規(guī)則的情況下,混合負載的流量分配很難得到控制,當有多個負載同時運行時,很容易發(fā)生擁塞,有時會產(chǎn)生丟包的現(xiàn)象,并且計算機不能結(jié)合實際生活為每個應用分配合理的帶寬,因此,在這種情況下我們應該尋找一種可以合理控制帶寬的方法。
3 相關(guān)工具及技術(shù)
本文利用Linux TC模塊對Docker云網(wǎng)絡(luò)進行流量隔離,為混合負載合理地分配帶寬資源。為了實現(xiàn)并驗證該技術(shù)的有效性,本文搭建了四種網(wǎng)絡(luò)服務。本節(jié)首先介紹了本文使用的Linux TC模塊,然后介紹了搭建網(wǎng)絡(luò)服務使用到的相關(guān)技術(shù)。
3.1 Linux TC
Linux TC模塊通過建立排隊論模型控制不同負載的網(wǎng)絡(luò)流量,即在計算機的輸出網(wǎng)卡建立一個隊列并對混合負載進行排隊以完成流量的管控。Linux TC模塊由隊列、類別以及過濾器組成并相互協(xié)作,具體的隊列由多個子隊列構(gòu)成,每個子隊列對應一種類別且每個子隊列與一個網(wǎng)卡相連。當內(nèi)核接收到輸出報文后利用過濾器將其進行分類,然后將其保存至對應子隊列中,由自讀列對應的網(wǎng)卡按預定順序發(fā)出[12]。
3.2 網(wǎng)絡(luò)服務搭建工具
3.2.1 Netperf——性能測試工具
目前,學術(shù)界和產(chǎn)業(yè)界存在多種網(wǎng)絡(luò)性能測試工具。其中,Netperf是一種針對多種類型的網(wǎng)絡(luò)性容能Benchmark工具,利用Netperf可以輕松地獲取混合負載環(huán)境下不同模式的網(wǎng)絡(luò)性能參數(shù),如網(wǎng)絡(luò)可用性、響應時間、利用率、吞吐量以及網(wǎng)絡(luò)帶寬等。Netperf采用C/S架構(gòu),其中服務端用來偵聽來自客戶端的連接請求,而客戶端幾位Netperf,負責向服務端發(fā)起網(wǎng)絡(luò)請求以完成網(wǎng)絡(luò)性能參數(shù)的測試。Netperf的具體工作流程是在服務端和客戶端之間建立控制連接,首先完成相關(guān)配置信息的傳遞,然后在服務端和客戶端之間進行多次的數(shù)據(jù)傳輸以測試網(wǎng)絡(luò)性能。本文在Docker容器中搭建Netpref,用來進行不同模式下的網(wǎng)絡(luò)性能的測試[13]。
3.2.2 Apache——網(wǎng)頁訪問、在線游戲及流媒體
Apache Tomcat是一種開源的服務器搭建工具,Tomcat提供了豐富的Web服務器功能。本文使用Apache Tomcat搭建Web服務器,以實現(xiàn)相應的網(wǎng)絡(luò)功能,如模擬在線游戲和流媒體等服務[14]。
3.2.3 Caddy——文件下載服務
作為新興 Web 服務器,Caddy 提供了很多簡單易用的功能,其默認支持并且可以幫助用戶自動配置 HTTP/2、HTTPS,對于 IPv6等都有很好的支持。Caddy 具有豐富的插件系統(tǒng),提供了諸如文件管理、文件上傳、等擴展功能。本文實驗使用了Caddy的文件下載,用以實現(xiàn)文件下載服務[15]。
4 容器網(wǎng)絡(luò)的隔離
本文利用Linux TC模塊實現(xiàn)了容器網(wǎng)絡(luò)隔離技術(shù),具體實現(xiàn)有二步驟。
第一步,創(chuàng)建隊列。隊列包含若干子隊列,而子隊列與網(wǎng)卡一一對應。因此,針對具有一個網(wǎng)卡的計算機而言,只需創(chuàng)建一個根隊即可。
第二步,創(chuàng)建分類。如上文所述分類與子隊列和網(wǎng)卡一一對應。同時,我們需要為不同分類建立不同的匹配規(guī)則以實現(xiàn)報文的分類。對于優(yōu)先順序,本文做如下規(guī)定:編號小的分類優(yōu)先進行匹配。當某一分類成功地匹配到報文數(shù)據(jù)后,該數(shù)據(jù)包便從進入該分類并從相應的輸出網(wǎng)卡中發(fā)送出去。
(1) 創(chuàng)建根分類
創(chuàng)建命令為:Tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps burst 1kbps。其中規(guī)定根分類的速率的100kbps,峰值為100kbps,突發(fā)值為1kbps。
(2) 創(chuàng)建應用分類
創(chuàng)建命令為:Tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80kbps ceil 100kbps burst 1kbps;Tc class add dev eth0 parent 1:1 classid 1:20 htb rate 20kbps ceil 100kbps burst 1 kbps。1:10分配給即時通訊類,占系統(tǒng)總帶寬80%,其中峰值為100kbps,突發(fā)值為1kbps。1:20分配給網(wǎng)頁訪問,占系統(tǒng)總帶寬20%,其中峰值為100kbps,突發(fā)值為1kbps。帶寬的分配原則根據(jù)常見網(wǎng)絡(luò)應用情況進行分配,系統(tǒng)的百分比可以根據(jù)情況進行調(diào)整。
本文首先將網(wǎng)絡(luò)隔離技術(shù)應用到靜態(tài)場景下,所謂靜態(tài)場景即為混合負載的種類和數(shù)量保持不變。本節(jié)實驗的主要思想是測試混合負載對三種不同網(wǎng)絡(luò)服務的性能影響,然后將使用Linux TC模塊對混合負載進行網(wǎng)絡(luò)隔離,然后繼續(xù)測試在TC模塊控制下混合負載對三種網(wǎng)絡(luò)服務性能的影響。
4.1 靜態(tài)場景下的帶寬隔離
如圖4所示為兩種靜態(tài)場景下混合負載對網(wǎng)頁訪問服務連接數(shù)的影響。該兩種場景分別為:網(wǎng)頁訪問與文件下載的混合負載場景以及網(wǎng)頁訪問、文件下載與在線游戲混合負載的場景。本文首先測試了兩種場景下,未使用Linux TC模塊對不同負載進行網(wǎng)絡(luò)隔離時網(wǎng)頁訪問服務的請求數(shù),然后分別對兩種場景下的混合負載進行網(wǎng)絡(luò)隔離并獲得了對應場景下的網(wǎng)頁訪問服務請求數(shù)。實驗數(shù)據(jù)顯示,混合負載使得網(wǎng)頁訪問服務的請求數(shù)急劇下降,當對混合負載進行網(wǎng)絡(luò)隔離后,網(wǎng)頁訪問服務的請求數(shù)得到了一定程度的提升,大約提升50%。
如圖5和圖6所示,分別為第二、三組靜態(tài)場景下在線游戲的網(wǎng)絡(luò)延遲和流媒體服務的網(wǎng)絡(luò)帶寬測試。針對在線游戲,本文搭建了兩種場景,分別是在線游戲與文件下載業(yè)務的混合負載以及在線游戲、文件下載業(yè)務與網(wǎng)頁訪問的混合負載。如圖5所示,混合負載對在線游戲的服務體驗產(chǎn)生了巨大的影響,其網(wǎng)絡(luò)延遲上升了數(shù)倍且表現(xiàn)非常不穩(wěn)定。接下來,當我們使用Linux TC模塊對混合負載進行網(wǎng)絡(luò)隔離后,在線游戲的網(wǎng)絡(luò)延遲明顯得到降低且延遲穩(wěn)定在0.02秒以下。如圖6展示的是第三組靜態(tài)場景下的實驗,實驗結(jié)果顯示,混合負載搶占了流媒體服務大部分的網(wǎng)絡(luò)帶寬資源,然而,流量隔離技術(shù)可以使得流媒體服務在混合負載的場景下保持其原有的帶寬。
上述實驗結(jié)果證明,使用Linux TC模塊對混合負載進行網(wǎng)絡(luò)隔離之后,網(wǎng)絡(luò)延遲、負載分配的帶寬以及請求數(shù)都能夠進行很好的控制,保證了系統(tǒng)的整體性能穩(wěn)定。本節(jié)實驗結(jié)果驗證了網(wǎng)絡(luò)隔離技術(shù)能夠有效地管控 網(wǎng)絡(luò)帶寬資源,按需地為不同負載分配相匹配的帶寬資源,以避免分配不均或資源搶奪的問題,對混合負載的整體性能提升具有促進作用。
4.2 動態(tài)場景下的帶寬隔離
本小節(jié)將流量隔離技術(shù)應用到動態(tài)場景下,隨著混合負載場景的切換動態(tài)地調(diào)整帶寬分配比例。本節(jié)搭建的動態(tài)場景為:網(wǎng)頁訪問、在線游戲與文件下載的混合負載,在線游戲與文件下載的混合負載,網(wǎng)頁訪問與文件下載的混合負載,流媒體與文件下載的混合負載。四種場景按順序動態(tài)地進行切換。如圖7-10所示,分別展示了四種連續(xù)切換的場景下,利用Linux TC模塊分別對網(wǎng)頁訪問、在線游戲以及流媒體服務進行流量隔離后的性能表現(xiàn)。
如圖7和圖8所示,展示了前兩個場景的測試數(shù)據(jù),結(jié)果顯示在線游戲的網(wǎng)絡(luò)延遲小于網(wǎng)頁訪問應用。雖然在線游戲的延遲相較于只有在線游戲負載時有所上升,但此時網(wǎng)頁訪問的延遲獲得更大的下降,降低到在只有網(wǎng)頁訪問一個負載時的50%。因此,使用Linux TC模塊隔離混合負載之后,系統(tǒng)的整體系統(tǒng)得到提升。數(shù)據(jù)顯示,95秒到100秒之間在線游戲負載的延遲逐漸上升,緊接著,101秒到105秒之間在線游戲的延遲逐漸下降。這是由于不同的場景的切換過程中沒有進行網(wǎng)絡(luò)的隔離,導致在線游戲的網(wǎng)絡(luò)帶寬被其它負載搶占。當場景切換過程結(jié)束之后,在線游戲的網(wǎng)絡(luò)延遲逐漸趨于穩(wěn)定,且網(wǎng)絡(luò)隔離后的網(wǎng)絡(luò)延遲接近單獨之后在線游戲時的延遲。
第三個場景為網(wǎng)頁訪問與文件下載的混合負載,數(shù)據(jù)顯示,網(wǎng)頁訪問的延遲逐漸趨近于100微秒。而網(wǎng)絡(luò)隔離后的網(wǎng)頁訪問延遲則降低到50微秒左右。第四個場景為流媒體與文件下載的混合負載,實驗結(jié)果顯示,該場景下的兩流媒體服務的延遲沒有明顯的區(qū)別。這是由于在流媒體與文件下載的混合負載中,流媒體搶奪網(wǎng)絡(luò)資源的能力較強,無需專門使用網(wǎng)絡(luò)隔離技術(shù)來保證它的服務性能。
5 結(jié)束語
本文實現(xiàn)了一種面向混合負載的容器網(wǎng)絡(luò)隔離技術(shù)。該技術(shù)利用Linux TC模塊對Docker云系統(tǒng)中的混合負載進行網(wǎng)絡(luò)隔離,按需求地為不同負載分配帶寬資源,以達到同時滿足混合負載對帶寬不同需求的目的。實驗結(jié)果證明,經(jīng)新技術(shù)隔離后,混合負載的網(wǎng)絡(luò)延遲有大幅度的降低,系統(tǒng)請求數(shù)以及負載的可用帶寬均有較高提升。
參考文獻
[1] Luo Y.Network I/O Virtualization for Cloud Computing[J].It Professional, 2010.12(5):36-41.
[2] 汪愷,張功萱,周秀敏.基于容器虛擬化技術(shù)研究[J].計算機技術(shù)與發(fā)展,2015(8): 138-141.
[3] Wüst S.,Schwerdel D.,and Müller P.,Container-based virtualization technologies[J].PIK - Praxis der Informationsverarbeitung und Kommunikation, 2017.39(3-4):51-61.
[4] Seo,K.T.,et al.Performance Comparison Analysis of Linux Container and Virtual Machine for Building Cloud[C]// NETWORKING and Communication.2014: 105-111.
[5] Boettiger C.An introduction to Docker for reproducible research[J].Acm Sigops Operating Systems Review,2015.49(1):p71-79.
[6] 袁敬.計算機網(wǎng)絡(luò)安全分析研究[J].網(wǎng)絡(luò)空間安全,2015(1):p28-29.
[7] 杜金秀,莊主,鄒銘.云計算平臺中的虛擬化技術(shù)與安全機制[J].網(wǎng)絡(luò)空間安全, 2013,4(3):p.41-43.
[8] 郭璐.計算機網(wǎng)絡(luò)信息技術(shù)安全及防范對策研究[J].網(wǎng)絡(luò)空間安全,2015.6(5):p 19-20.
[9] Primet V.B.and Zeng J.Traffic Isolation and Network Resource Sharing for Performance Control in Grids[C].Joint International Conference on Autonomic and Autonomous Systems and International Conference on NETWORKING and Services,2005.
[10] 楊世恩.多業(yè)務網(wǎng)絡(luò)動態(tài)帶寬分配算法研究[J].通信技術(shù),2011,44(4):82-84.
[11] 邵華鋼,程海英,王輝,等.基于流量隔離的公平聚集器[J].計算機工程,2010, 36(20):106-109.
[12] 倪飛.流量控制工具TC原理及應用[J].計算機科學,2006,33(b12):24-26.
[13] IBM.netperf 與網(wǎng)絡(luò)性能測量[R/OL].[2018-06-13]. https://www.ibm.com/developerworks/cn/linux/l-netperf/index.html.
[14] Apache.Apache Tomcat[R/OL].[2018-06-13].http://tomcat.apache.org.
[15] Polivka J.B.A Caddy-Cart Type of Table for Grub Survey[J].Journal of Economic Entomology,1956,49(2):279-280.
作者簡介:
王佳維(1984-),男,漢族,黑龍江哈爾濱人,哈爾濱工業(yè)大學,本科學士,中國電子科學研究院,助理工程師;主要研究方向和關(guān)注領(lǐng)域:計算機科學與技術(shù)、數(shù)據(jù)科學領(lǐng)域。
韓青(1994-),女,漢族,北京人,首都師范大學,碩士研究生;主要研究方向和關(guān)注領(lǐng)域:云計算。