論文閱讀 Performance Evaluation of a Virtualized HTTP Proxy in KVM and Docker

Performance Evaluation of a Virtualized HTTP Proxy in KVM and Docker


本人通過http代理的場景分析了kvm和docker性能。從一個因素進行評估並且做出可信實驗是發論文的一種方式。

Abstract - 網絡功能虛擬化(NFV)是一種新的網絡服務虛擬化範式,它可以在通用和通用硬件中運行,從而提高服務的敏捷性並降低成本。有許多因素鼓勵NFV的使用,但是一些特定的要求必須仔細評估,例如選擇虛擬化技術。本文在HTTP代理場景中提供了兩個開源虛擬化解決方案KVM和Docker的性能分析。我們的結果表明,由於Docker的輕量級虛擬化,它處理HTTP請求的時間比KVM更短。此外,基於這些結果,我們對NFV環境中應用的每個虛擬化解決方案進行了廣泛的討論

INTRODUCTION

網絡功能虛擬化(NFV)[1]是最近的一種範例,其中網絡功能(NFs),如防火牆、代理和nat,通常作爲專用設備實現,部署在運行在公共和通用硬件之上的虛擬服務器上。最近,歐洲電信標準協會(ETSI)啓動了NFV[1]的行業規範,其目標是使NFV體系結構的組件標準化,併爲消費者市場提供更方便的電信資源。NFV利用了虛擬環境的優勢,因爲它允許快速的可伸縮性和隨需應變的實現。
NFV的一個重要挑戰是提供與專用硬件解決方案[2]類似的性能。在虛擬環境中,應用程序的性能可能比原生的解決方案差(比如,沒有虛擬化的應用程序)。這是因爲虛擬機操作需要由虛擬機監控程序進行轉換,以確保虛擬機隔離[3]。在[4]中,實驗表明,在相同的硬件配置下,運行Linux作爲操作系統的基於軟件的路由器可以達到1.2 M包/秒的轉發包速率,而在Xen[5]虛擬環境中,轉發包速率約爲0.2 M包/秒。因此,需要高轉發包速率的應用程序在使用標準虛擬化技術時可能會有較低的性能,這對NFV的部署是一個挑戰。針對傳統虛擬化環境中的VNF(虛擬網絡功能)性能問題的另一種解決方案是輕量級虛擬化或通常稱爲基於容器的虛擬化,它將應用程序而不是整個操作系統隔離在同一個操作系統環境中。因此,容器不是由系統管理程序控制的,這可以提高性能,但是會減少系統管理程序提供的隔離。
鑑於上述情況,一個重要的研究方向是評估NF是否可以虛擬化,以及哪種虛擬化解決方案更適合它。在本文中,我們評估了虛擬超文本傳輸協議(HTTP)代理的性能。NF在不同的網絡類型中非常重要,它負責通過緩存系統和過濾網站訪問來提高網絡帶寬利用率。根據Squid 3[6]文檔[7],代理服務對網絡和CPU使用非常敏感;當我們虛擬化這個NF時,這可能會變成一個問題。我們的評估是使用兩個開源虛擬化解決方案執行的:基於內核的虛擬機(KVM)[8],這是一種標準的虛擬化技術;Docker[9],它通過Linux容器實現輕量級虛擬化。爲了完成這項工作,我們使用Squid 3代理服務作爲實例化VNF設備的應用程序。
本文的其餘部分組織如下。第二部分概述了相關工作,第三部分總結了我們實驗中使用的虛擬化解決方案。第四部分給出了實驗結果,第五部分對論文進行了總結,並對未來的工作進行了描述。

RELATED WORK

文獻中有幾篇評估虛擬化解決方案(如容器和虛擬機)性能的文章。Bondan等人從網絡管理的角度分析了三種不同的虛擬化解決方案:ClickOS[11]、CoreOS[12]和OSv[13],它們是NFV中考慮的開源解決方案。當他們專注於網絡管理時,他們的度量與部署和監視VNFs的性能相關。例如,它們計算實例化虛擬機和容器的時間。Dua等人對hypervisor和基於容器的虛擬化技術進行了比較。他們比較了作爲平臺即服務(PaaS)的每種技術的安全性、性能、隔離、存儲和通信等參數。它們主要關注容器和大規模託管應用程序的能力,但不評估性能指標。Jing Yang和Yuqing Lan[15]提出了一個基於kvm的虛擬服務器性能評估模型。他們研究在基於KVMbased的環境中可能影響性能的因素,並使用一個web服務器和一個數據庫服務器作爲要提供的服務,評估不同場景的響應時間等指標。他們不考慮基於容器的解決方案和NFV環境。技術報告[16]提供了虛擬機和容器之間的比較。與我們專注於NFV的工作不同,他們專注於數據庫系統,評估MySQL數據庫的性能。
對於HTTP代理,Kim等人使用校園網環境中的高帶寬網絡中的web代理緩存來評估大型文件傳輸的影響。它們度量真實環境中的延遲、響應時間和帶寬利用率等指標。他們不評估任何虛擬化環境上的代理的性能,也不使用NFV方法,只關注幾個可能導致瓶頸的場景中的緩存系統行爲。
在前面提到的情況下,我們的貢獻在於在虛擬化HTTP代理中提供hypervisor-based和container-based的虛擬化之間的比較,這在當前的文獻中沒有介紹。

VIRTUALIZATION SOLUTIONS

虛擬化解決方案使對計算機硬件的訪問變得複雜,允許在計算機硬件上運行不同的虛擬片。在遺留數據中心環境中,如果沒有虛擬化,一臺計算機一次只能運行一個操作系統(OS)。該操作系統負責控制計算機[18]的所有硬件設備,如CPU、內存、磁盤控制器、磁盤驅動器、顯卡、網卡和許多其他外圍設備。當一臺給定的機器只提供一個服務時,這種方法仍然在許多數據中心中使用,通常是爲了達到高性能水平。然而,機架空間、能耗、可伸縮性和硬件升級[19]是一些需要注意的地方。虛擬化可以通過允許不同的OSs共享相同的硬件來解決這些挑戰,從而將虛擬片合併到一臺物理機器中。因此,每個虛擬片具有來自物理服務器的給定數量的資源。由於NFV採用了虛擬化概念,VNFs可以運行在最初爲數據中心開發的虛擬化解決方案之上。在本文中,我們將這些解決方案分爲標準虛擬化和輕量級虛擬化。

Standard Virtualization

標準的虛擬化解決方案使用一個稱爲hypervisor的軟件層,它位於硬件和虛擬機(vm)之間。管理程序控制硬件訪問併爲每個VM執行資源分配,從而在多個VM之間提供隔離。因此,vm使用不同的操作系統並託管自己的應用程序。簡而言之,我們可以說每個虛擬機都有自己的虛擬計算機硬件環境、自己的操作系統以及硬件抽象[20]。虛擬化解決方案可以虛擬化所有常見的硬件設備,如CPU、內存、顯卡、硬盤控制器等。因此,不需要修改VM OS以在虛擬環境中運行,儘管一些解決方案修改VM OSs以提高性能[5]。
現有的虛擬機監控程序有VMware ESXi[21]、Citrix XenServer[22]、Microsoft Hyper-V[23]、Oracle Virtualbox[24]等。在這項工作中,我們選擇使用KVM[8]作爲虛擬機管理程序,因爲它是開源的,並且與Linux內核完全集成。Linux服務器的數量正在快速增長,2017年[25]的新服務器將達到7200萬臺。這將是一個使用KVM的好機會,因爲它已經隨幾個Linux發行版一起出現了。國際數據公司(IDC)報告稱,自2011年以來,使用KVM部署的新服務器數量超過278,000臺,複合年增長率(CAGR)爲42%。
關於採用基於管理程序的方法(如KVM)的主要問題是它在vm中造成的性能瓶頸。由於VM操作在到達硬件之前需要首先通過hypervisor,所以與本機解決方案[4]相比,虛擬化應用程序的性能可能更低。因此,與所使用的管理程序無關,使用虛擬化技術實現的服務需要被很好地定義,因爲它們增加了系統的複雜性和動態性,主要是在預期NFV部署[15]時。

Lightweight Virtualization

與hypervisor相比,輕量級虛擬化(也稱爲基於容器的虛擬化)在虛擬化和隔離方面提供了不同級別的抽象。正如我們前面提到的,管理程序提供了一個硬件抽象,這導致了虛擬化硬件和虛擬設備驅動程序方面的開銷。這意味着每個VM實例都是一個完全實現的虛擬硬件,以支持未修改的來賓操作系統。
與標準虛擬化不同,容器在操作系統級別執行進程隔離,避免了每個部署的VM的虛擬硬件抽象層的開銷。容器運行在物理服務器的相同共享操作系統內核之上,每個容器中可以運行一個或多個進程。共享內核爲基於容器的解決方案提供了一些優勢,比如實現了更多的虛擬化實例,因爲它們不需要大型磁盤映像,而這是基於管理程序的解決方案所需要的。作爲一個缺點,這種抽象限制了容器所支持的操作系統分佈;例如,不可能在Linux服務器上實現Microsoft Windows容器,反之亦然。此外,物理服務器中的每個容器都運行相同的OS發行版。另一個常見的缺點是基於容器的虛擬化提供的隔離方法,因爲主機內核暴露在容器中,這可能是一個安全問題[27]。表I比較了標準虛擬化和輕量級虛擬化,重點關注隔離、性能、通信和存儲[14]等因素。
與標準虛擬化不同,容器在操作系統級別執行進程隔離,避免了每個部署的VM的虛擬硬件抽象層的開銷。容器運行在物理服務器的相同共享操作系統內核之上,每個容器中可以運行一個或多個進程。共享內核爲基於容器的解決方案提供了一些優勢,比如實現了更多的虛擬化實例,因爲它們不需要大型磁盤映像,而這是基於管理程序的解決方案所需要的。作爲一個缺點,這種抽象限制了容器所支持的操作系統分佈;例如,不可能在Linux服務器上實現Microsoft Windows容器,反之亦然。此外,物理服務器中的每個容器都運行相同的OS發行版。另一個常見的缺點是基於容器的虛擬化提供的隔離方法,因爲主機內核暴露在容器中,這可能是一個安全問題[27]。表I比較了標準虛擬化和輕量級虛擬化,重點關注隔離、性能、通信和存儲[14]等因素。
在我們的實驗中,我們選擇Docker作爲基於容器的虛擬化來作爲NFV應用程序。Docker是一個實現容器的現代開源解決方案,有一個大型社區在雲環境中使用它。Docker是一個守護進程,它提供了將Linux容器管理爲自包含映像的能力。Docker的主鍵屬性是:進程——每個容器接收一個唯一的進程ID (PID)和一個私有IP。資源隔離——使用cgroups和名稱空間概念。網絡隔離——獲取連接到Linux接口的私有IP地址。文件系統隔離——每個容器都有自己的有色文件系統。
在我們的實驗中,我們選擇Docker作爲基於容器的虛擬化來作爲NFV應用程序。Docker是一個實現容器的現代開源解決方案,有一個大型社區在雲環境中使用它。Docker是一個守護進程,它提供了將Linux容器管理爲自包含映像的能力。Docker的主要關鍵屬性有:

  • 進程——每個容器接收一個唯一的進程ID (PID)和一個私有IP。
  • 資源隔離——使用cgroups和名稱空間概念。
  • 網絡隔離——獲取連接到Linux接口的私有IP地址。
  • 文件系統隔離——每個容器都有自己的chrooted文件系統。
    表1

[4] N. C. Fernandes, M. D. D. Moreira, I. M. Moraes, L. H. G. Ferraz, R. S. Couto, H. E. T. Carvalho, M. E. M. Campista, L. H. M. K. Costa, and O. C. M. B. Duarte, “Virtual networks: Isolation, performance, and trends,” Annals of Telecommunications, vol. 66, no. 5-6, p. 339–355, 2011.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章