论文阅读 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.

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