王佳維 韓青
摘 要:基于Docker的容器云在工業(yè)界得到了廣泛地應(yīng)用,大規(guī)模業(yè)務(wù)場景下,合理地分配帶寬資源可以滿足混合負(fù)載對(duì)QoS的不同需求。鑒于此,文章基于Docker容器實(shí)現(xiàn)了一種面向混合負(fù)載的網(wǎng)絡(luò)隔離技術(shù),利用Linux的流量管理工具(Traffic Control,TC)為不同負(fù)載分配合理的帶寬資源,以滿足混合負(fù)載的共同需求。通過在多種不同場景下進(jìn)行實(shí)驗(yàn)證明,新技術(shù)可以按需地為混合負(fù)載中不同應(yīng)用分配帶寬資源,保證系統(tǒng)的整體性能穩(wěn)定。
關(guān)鍵詞:容器;Docker;混合負(fù)載;帶寬分配;Linux TC
中圖分類號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼: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ù)是推動(dòng)云計(jì)算誕生和發(fā)展的關(guān)鍵技術(shù),通過對(duì)平臺(tái)、基礎(chǔ)設(shè)施以及軟件等多個(gè)層次進(jìn)行虛擬,實(shí)現(xiàn)了系統(tǒng)資源的有效復(fù)用和動(dòng)態(tài)擴(kuò)展[1]。容器是目前流行的一項(xiàng)虛擬化技術(shù),是對(duì)應(yīng)用層的抽象[2,3]。容器可以將應(yīng)用程序及其依賴的運(yùn)行環(huán)境打包為鏡像,然后以獨(dú)立進(jìn)程的方式在宿主機(jī)上運(yùn)行。與虛擬機(jī)相比,容器具有實(shí)例規(guī)模小,創(chuàng)建、啟動(dòng)以及遷移速度快等優(yōu)點(diǎn)[4]。Docker是目前企業(yè)界普遍流行的一種容器實(shí)例,基于Docker的容器云為互聯(lián)網(wǎng)企業(yè)及其用戶提供了極大的方便[5]。同時(shí)網(wǎng)絡(luò)空間安全問題是目前困擾廣大研究者的難題[6-8],由于Docker對(duì)網(wǎng)絡(luò)進(jìn)行了有效的隔離,使得基于Docker的容器云對(duì)網(wǎng)絡(luò)空間安全的管控起到巨大的促進(jìn)作用。
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,容器云規(guī)模、負(fù)載種類和數(shù)量以及用戶數(shù)量正在持續(xù)的增長,有限的網(wǎng)絡(luò)資源與日益增長的用戶需求之間的矛盾越來越嚴(yán)重[9,10]。網(wǎng)絡(luò)的服務(wù)質(zhì)量是相對(duì)不同負(fù)載而言的,因此在混合負(fù)載場景下,如果不對(duì)負(fù)載進(jìn)行網(wǎng)絡(luò)資源隔離,部分負(fù)載因無法得到足夠的網(wǎng)絡(luò)資源而影響其服務(wù)性能[11]。例如,在網(wǎng)絡(luò)總帶寬固定的情況下,在線游戲、流媒體等應(yīng)用將會(huì)占據(jù)大量的網(wǎng)絡(luò)帶寬,導(dǎo)致其它實(shí)時(shí)性服務(wù)由于網(wǎng)絡(luò)帶寬的不足而影響其用戶體驗(yàn),甚至?xí)a(chǎn)生更嚴(yán)重的后果。因此,網(wǎng)絡(luò)管理者需要根據(jù)各種業(yè)務(wù)的特點(diǎn)來對(duì)網(wǎng)絡(luò)資源進(jìn)行合理的規(guī)劃和分配,從而使網(wǎng)絡(luò)資源得到高效利用。
本文基于Docker容器實(shí)現(xiàn)了一種面向混合負(fù)載的網(wǎng)絡(luò)隔離技術(shù),利用Linux的流量管理工具(Traffic Control, TC)為不同負(fù)載分配合理的帶寬資源[12]。搭建了四種網(wǎng)絡(luò)服務(wù),然后分別驗(yàn)證了靜態(tài)和動(dòng)態(tài)場景下,該技術(shù)可以按需地為混合負(fù)載中不同應(yīng)用分配帶寬資源。
2 研究動(dòng)機(jī)
隨著Docker容器云應(yīng)用的不斷豐富,新應(yīng)用的不斷出現(xiàn)及容器云中混合負(fù)載之間存在網(wǎng)絡(luò)帶寬資源的爭奪,如果對(duì)所有負(fù)載一視同仁地進(jìn)行網(wǎng)絡(luò)資源分配,將使得部分網(wǎng)絡(luò)服務(wù)因得不到足夠的資源而影響其服務(wù)體驗(yàn)。針對(duì)該問題,做了三組實(shí)驗(yàn)進(jìn)行驗(yàn)證。首先搭建了四種網(wǎng)絡(luò)服務(wù),分別為網(wǎng)頁訪問、在線游戲、文件下載以及流媒體服務(wù)。然后,分別測試獨(dú)立負(fù)載以及混合負(fù)載場景下系統(tǒng)請求數(shù)、網(wǎng)絡(luò)延遲以及帶寬。
第一組實(shí)驗(yàn)測試了混合負(fù)載對(duì)網(wǎng)頁訪問服務(wù)的性能影響。如圖1所示,當(dāng)只有系統(tǒng)中只有網(wǎng)頁訪問一個(gè)負(fù)載時(shí)時(shí),每秒請求數(shù)大約10000次左右。而在混合負(fù)載環(huán)境下,如文件下載和在線游戲?qū)?huì)搶奪帶寬資源,網(wǎng)頁訪問的每秒請求次數(shù)降低到大約3000次。第二、三組實(shí)驗(yàn)分別測試了混合負(fù)載對(duì)在線游戲和流媒體服務(wù)的影響。具體的如圖2所示結(jié)果顯示,混合負(fù)載最大可將在線游戲的網(wǎng)絡(luò)延遲增加到原來的123倍。同樣,第三組實(shí)驗(yàn)結(jié)果證明混合負(fù)載爭奪了流媒體服務(wù)的大部分帶寬資源。
在不使用任何資源隔離規(guī)則的情況下,混合負(fù)載的流量分配很難得到控制,當(dāng)有多個(gè)負(fù)載同時(shí)運(yùn)行時(shí),很容易發(fā)生擁塞,有時(shí)會(huì)產(chǎn)生丟包的現(xiàn)象,并且計(jì)算機(jī)不能結(jié)合實(shí)際生活為每個(gè)應(yīng)用分配合理的帶寬,因此,在這種情況下我們應(yīng)該尋找一種可以合理控制帶寬的方法。
3 相關(guān)工具及技術(shù)
本文利用Linux TC模塊對(duì)Docker云網(wǎng)絡(luò)進(jìn)行流量隔離,為混合負(fù)載合理地分配帶寬資源。為了實(shí)現(xiàn)并驗(yàn)證該技術(shù)的有效性,本文搭建了四種網(wǎng)絡(luò)服務(wù)。本節(jié)首先介紹了本文使用的Linux TC模塊,然后介紹了搭建網(wǎng)絡(luò)服務(wù)使用到的相關(guān)技術(shù)。
3.1 Linux TC
Linux TC模塊通過建立排隊(duì)論模型控制不同負(fù)載的網(wǎng)絡(luò)流量,即在計(jì)算機(jī)的輸出網(wǎng)卡建立一個(gè)隊(duì)列并對(duì)混合負(fù)載進(jìn)行排隊(duì)以完成流量的管控。Linux TC模塊由隊(duì)列、類別以及過濾器組成并相互協(xié)作,具體的隊(duì)列由多個(gè)子隊(duì)列構(gòu)成,每個(gè)子隊(duì)列對(duì)應(yīng)一種類別且每個(gè)子隊(duì)列與一個(gè)網(wǎng)卡相連。當(dāng)內(nèi)核接收到輸出報(bào)文后利用過濾器將其進(jìn)行分類,然后將其保存至對(duì)應(yīng)子隊(duì)列中,由自讀列對(duì)應(yīng)的網(wǎng)卡按預(yù)定順序發(fā)出[12]。
3.2 網(wǎng)絡(luò)服務(wù)搭建工具
3.2.1 Netperf——性能測試工具
目前,學(xué)術(shù)界和產(chǎn)業(yè)界存在多種網(wǎng)絡(luò)性能測試工具。其中,Netperf是一種針對(duì)多種類型的網(wǎng)絡(luò)性容能Benchmark工具,利用Netperf可以輕松地獲取混合負(fù)載環(huán)境下不同模式的網(wǎng)絡(luò)性能參數(shù),如網(wǎng)絡(luò)可用性、響應(yīng)時(shí)間、利用率、吞吐量以及網(wǎng)絡(luò)帶寬等。Netperf采用C/S架構(gòu),其中服務(wù)端用來偵聽來自客戶端的連接請求,而客戶端幾位Netperf,負(fù)責(zé)向服務(wù)端發(fā)起網(wǎng)絡(luò)請求以完成網(wǎng)絡(luò)性能參數(shù)的測試。Netperf的具體工作流程是在服務(wù)端和客戶端之間建立控制連接,首先完成相關(guān)配置信息的傳遞,然后在服務(wù)端和客戶端之間進(jìn)行多次的數(shù)據(jù)傳輸以測試網(wǎng)絡(luò)性能。本文在Docker容器中搭建Netpref,用來進(jìn)行不同模式下的網(wǎng)絡(luò)性能的測試[13]。
3.2.2 Apache——網(wǎng)頁訪問、在線游戲及流媒體
Apache Tomcat是一種開源的服務(wù)器搭建工具,Tomcat提供了豐富的Web服務(wù)器功能。本文使用Apache Tomcat搭建Web服務(wù)器,以實(shí)現(xiàn)相應(yīng)的網(wǎng)絡(luò)功能,如模擬在線游戲和流媒體等服務(wù)[14]。
3.2.3 Caddy——文件下載服務(wù)
作為新興 Web 服務(wù)器,Caddy 提供了很多簡單易用的功能,其默認(rèn)支持并且可以幫助用戶自動(dòng)配置 HTTP/2、HTTPS,對(duì)于 IPv6等都有很好的支持。Caddy 具有豐富的插件系統(tǒng),提供了諸如文件管理、文件上傳、等擴(kuò)展功能。本文實(shí)驗(yàn)使用了Caddy的文件下載,用以實(shí)現(xiàn)文件下載服務(wù)[15]。
4 容器網(wǎng)絡(luò)的隔離
本文利用Linux TC模塊實(shí)現(xiàn)了容器網(wǎng)絡(luò)隔離技術(shù),具體實(shí)現(xiàn)有二步驟。
第一步,創(chuàng)建隊(duì)列。隊(duì)列包含若干子隊(duì)列,而子隊(duì)列與網(wǎng)卡一一對(duì)應(yīng)。因此,針對(duì)具有一個(gè)網(wǎng)卡的計(jì)算機(jī)而言,只需創(chuàng)建一個(gè)根隊(duì)即可。
第二步,創(chuàng)建分類。如上文所述分類與子隊(duì)列和網(wǎng)卡一一對(duì)應(yīng)。同時(shí),我們需要為不同分類建立不同的匹配規(guī)則以實(shí)現(xiàn)報(bào)文的分類。對(duì)于優(yōu)先順序,本文做如下規(guī)定:編號(hào)小的分類優(yōu)先進(jìn)行匹配。當(dāng)某一分類成功地匹配到報(bào)文數(shù)據(jù)后,該數(shù)據(jù)包便從進(jìn)入該分類并從相應(yīng)的輸出網(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)建應(yī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分配給即時(shí)通訊類,占系統(tǒng)總帶寬80%,其中峰值為100kbps,突發(fā)值為1kbps。1:20分配給網(wǎng)頁訪問,占系統(tǒng)總帶寬20%,其中峰值為100kbps,突發(fā)值為1kbps。帶寬的分配原則根據(jù)常見網(wǎng)絡(luò)應(yīng)用情況進(jìn)行分配,系統(tǒng)的百分比可以根據(jù)情況進(jìn)行調(diào)整。
本文首先將網(wǎng)絡(luò)隔離技術(shù)應(yīng)用到靜態(tài)場景下,所謂靜態(tài)場景即為混合負(fù)載的種類和數(shù)量保持不變。本節(jié)實(shí)驗(yàn)的主要思想是測試混合負(fù)載對(duì)三種不同網(wǎng)絡(luò)服務(wù)的性能影響,然后將使用Linux TC模塊對(duì)混合負(fù)載進(jìn)行網(wǎng)絡(luò)隔離,然后繼續(xù)測試在TC模塊控制下混合負(fù)載對(duì)三種網(wǎng)絡(luò)服務(wù)性能的影響。
4.1 靜態(tài)場景下的帶寬隔離
如圖4所示為兩種靜態(tài)場景下混合負(fù)載對(duì)網(wǎng)頁訪問服務(wù)連接數(shù)的影響。該兩種場景分別為:網(wǎng)頁訪問與文件下載的混合負(fù)載場景以及網(wǎng)頁訪問、文件下載與在線游戲混合負(fù)載的場景。本文首先測試了兩種場景下,未使用Linux TC模塊對(duì)不同負(fù)載進(jìn)行網(wǎng)絡(luò)隔離時(shí)網(wǎng)頁訪問服務(wù)的請求數(shù),然后分別對(duì)兩種場景下的混合負(fù)載進(jìn)行網(wǎng)絡(luò)隔離并獲得了對(duì)應(yīng)場景下的網(wǎng)頁訪問服務(wù)請求數(shù)。實(shí)驗(yàn)數(shù)據(jù)顯示,混合負(fù)載使得網(wǎng)頁訪問服務(wù)的請求數(shù)急劇下降,當(dāng)對(duì)混合負(fù)載進(jìn)行網(wǎng)絡(luò)隔離后,網(wǎng)頁訪問服務(wù)的請求數(shù)得到了一定程度的提升,大約提升50%。
如圖5和圖6所示,分別為第二、三組靜態(tài)場景下在線游戲的網(wǎng)絡(luò)延遲和流媒體服務(wù)的網(wǎng)絡(luò)帶寬測試。針對(duì)在線游戲,本文搭建了兩種場景,分別是在線游戲與文件下載業(yè)務(wù)的混合負(fù)載以及在線游戲、文件下載業(yè)務(wù)與網(wǎng)頁訪問的混合負(fù)載。如圖5所示,混合負(fù)載對(duì)在線游戲的服務(wù)體驗(yàn)產(chǎn)生了巨大的影響,其網(wǎng)絡(luò)延遲上升了數(shù)倍且表現(xiàn)非常不穩(wěn)定。接下來,當(dāng)我們使用Linux TC模塊對(duì)混合負(fù)載進(jìn)行網(wǎng)絡(luò)隔離后,在線游戲的網(wǎng)絡(luò)延遲明顯得到降低且延遲穩(wěn)定在0.02秒以下。如圖6展示的是第三組靜態(tài)場景下的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果顯示,混合負(fù)載搶占了流媒體服務(wù)大部分的網(wǎng)絡(luò)帶寬資源,然而,流量隔離技術(shù)可以使得流媒體服務(wù)在混合負(fù)載的場景下保持其原有的帶寬。
上述實(shí)驗(yàn)結(jié)果證明,使用Linux TC模塊對(duì)混合負(fù)載進(jìn)行網(wǎng)絡(luò)隔離之后,網(wǎng)絡(luò)延遲、負(fù)載分配的帶寬以及請求數(shù)都能夠進(jìn)行很好的控制,保證了系統(tǒng)的整體性能穩(wěn)定。本節(jié)實(shí)驗(yàn)結(jié)果驗(yàn)證了網(wǎng)絡(luò)隔離技術(shù)能夠有效地管控 網(wǎng)絡(luò)帶寬資源,按需地為不同負(fù)載分配相匹配的帶寬資源,以避免分配不均或資源搶奪的問題,對(duì)混合負(fù)載的整體性能提升具有促進(jìn)作用。
4.2 動(dòng)態(tài)場景下的帶寬隔離
本小節(jié)將流量隔離技術(shù)應(yīng)用到動(dòng)態(tài)場景下,隨著混合負(fù)載場景的切換動(dòng)態(tài)地調(diào)整帶寬分配比例。本節(jié)搭建的動(dòng)態(tài)場景為:網(wǎng)頁訪問、在線游戲與文件下載的混合負(fù)載,在線游戲與文件下載的混合負(fù)載,網(wǎng)頁訪問與文件下載的混合負(fù)載,流媒體與文件下載的混合負(fù)載。四種場景按順序動(dòng)態(tài)地進(jìn)行切換。如圖7-10所示,分別展示了四種連續(xù)切換的場景下,利用Linux TC模塊分別對(duì)網(wǎng)頁訪問、在線游戲以及流媒體服務(wù)進(jìn)行流量隔離后的性能表現(xiàn)。
如圖7和圖8所示,展示了前兩個(gè)場景的測試數(shù)據(jù),結(jié)果顯示在線游戲的網(wǎng)絡(luò)延遲小于網(wǎng)頁訪問應(yīng)用。雖然在線游戲的延遲相較于只有在線游戲負(fù)載時(shí)有所上升,但此時(shí)網(wǎng)頁訪問的延遲獲得更大的下降,降低到在只有網(wǎng)頁訪問一個(gè)負(fù)載時(shí)的50%。因此,使用Linux TC模塊隔離混合負(fù)載之后,系統(tǒng)的整體系統(tǒng)得到提升。數(shù)據(jù)顯示,95秒到100秒之間在線游戲負(fù)載的延遲逐漸上升,緊接著,101秒到105秒之間在線游戲的延遲逐漸下降。這是由于不同的場景的切換過程中沒有進(jìn)行網(wǎng)絡(luò)的隔離,導(dǎo)致在線游戲的網(wǎng)絡(luò)帶寬被其它負(fù)載搶占。當(dāng)場景切換過程結(jié)束之后,在線游戲的網(wǎng)絡(luò)延遲逐漸趨于穩(wěn)定,且網(wǎng)絡(luò)隔離后的網(wǎng)絡(luò)延遲接近單獨(dú)之后在線游戲時(shí)的延遲。
第三個(gè)場景為網(wǎng)頁訪問與文件下載的混合負(fù)載,數(shù)據(jù)顯示,網(wǎng)頁訪問的延遲逐漸趨近于100微秒。而網(wǎng)絡(luò)隔離后的網(wǎng)頁訪問延遲則降低到50微秒左右。第四個(gè)場景為流媒體與文件下載的混合負(fù)載,實(shí)驗(yàn)結(jié)果顯示,該場景下的兩流媒體服務(wù)的延遲沒有明顯的區(qū)別。這是由于在流媒體與文件下載的混合負(fù)載中,流媒體搶奪網(wǎng)絡(luò)資源的能力較強(qiáng),無需專門使用網(wǎng)絡(luò)隔離技術(shù)來保證它的服務(wù)性能。
5 結(jié)束語
本文實(shí)現(xiàn)了一種面向混合負(fù)載的容器網(wǎng)絡(luò)隔離技術(shù)。該技術(shù)利用Linux TC模塊對(duì)Docker云系統(tǒng)中的混合負(fù)載進(jìn)行網(wǎng)絡(luò)隔離,按需求地為不同負(fù)載分配帶寬資源,以達(dá)到同時(shí)滿足混合負(fù)載對(duì)帶寬不同需求的目的。實(shí)驗(yàn)結(jié)果證明,經(jīng)新技術(shù)隔離后,混合負(fù)載的網(wǎng)絡(luò)延遲有大幅度的降低,系統(tǒng)請求數(shù)以及負(fù)載的可用帶寬均有較高提升。
參考文獻(xiàn)
[1] Luo Y.Network I/O Virtualization for Cloud Computing[J].It Professional, 2010.12(5):36-41.
[2] 汪愷,張功萱,周秀敏.基于容器虛擬化技術(shù)研究[J].計(jì)算機(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] 袁敬.計(jì)算機(jī)網(wǎng)絡(luò)安全分析研究[J].網(wǎng)絡(luò)空間安全,2015(1):p28-29.
[7] 杜金秀,莊主,鄒銘.云計(jì)算平臺(tái)中的虛擬化技術(shù)與安全機(jī)制[J].網(wǎng)絡(luò)空間安全, 2013,4(3):p.41-43.
[8] 郭璐.計(jì)算機(jī)網(wǎng)絡(luò)信息技術(shù)安全及防范對(duì)策研究[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ù)網(wǎng)絡(luò)動(dòng)態(tài)帶寬分配算法研究[J].通信技術(shù),2011,44(4):82-84.
[11] 邵華鋼,程海英,王輝,等.基于流量隔離的公平聚集器[J].計(jì)算機(jī)工程,2010, 36(20):106-109.
[12] 倪飛.流量控制工具TC原理及應(yīng)用[J].計(jì)算機(jī)科學(xué),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è)大學(xué),本科學(xué)士,中國電子科學(xué)研究院,助理工程師;主要研究方向和關(guān)注領(lǐng)域:計(jì)算機(jī)科學(xué)與技術(shù)、數(shù)據(jù)科學(xué)領(lǐng)域。
韓青(1994-),女,漢族,北京人,首都師范大學(xué),碩士研究生;主要研究方向和關(guān)注領(lǐng)域:云計(jì)算。