面向混合负载的容器网络隔离技术研究

2018-12-05 09:14王佳维韩青
网络空间安全 2018年4期
关键词:容器

王佳维  韩青

摘 要:基于Docker的容器云在工業界得到了广泛地应用,大规模业务场景下,合理地分配带宽资源可以满足混合负载对QoS的不同需求。鉴于此,文章基于Docker容器实现了一种面向混合负载的网络隔离技术,利用Linux的流量管理工具(Traffic Control,TC)为不同负载分配合理的带宽资源,以满足混合负载的共同需求。通过在多种不同场景下进行实验证明,新技术可以按需地为混合负载中不同应用分配带宽资源,保证系统的整体性能稳定。

关键词:容器;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 引言

虚拟化技术是推动云计算诞生和发展的关键技术,通过对平台、基础设施以及软件等多个层次进行虚拟,实现了系统资源的有效复用和动态扩展[1]。容器是目前流行的一项虚拟化技术,是对应用层的抽象[2,3]。容器可以将应用程序及其依赖的运行环境打包为镜像,然后以独立进程的方式在宿主机上运行。与虚拟机相比,容器具有实例规模小,创建、启动以及迁移速度快等优点[4]。Docker是目前企业界普遍流行的一种容器实例,基于Docker的容器云为互联网企业及其用户提供了极大的方便[5]。同时网络空间安全问题是目前困扰广大研究者的难题[6-8],由于Docker对网络进行了有效的隔离,使得基于Docker的容器云对网络空间安全的管控起到巨大的促进作用。

随着计算机技术的不断发展,容器云规模、负载种类和数量以及用户数量正在持续的增长,有限的网络资源与日益增长的用户需求之间的矛盾越来越严重[9,10]。网络的服务质量是相对不同负载而言的,因此在混合负载场景下,如果不对负载进行网络资源隔离,部分负载因无法得到足够的网络资源而影响其服务性能[11]。例如,在网络总带宽固定的情况下,在线游戏、流媒体等应用将会占据大量的网络带宽,导致其它实时性服务由于网络带宽的不足而影响其用户体验,甚至会产生更严重的后果。因此,网络管理者需要根据各种业务的特点来对网络资源进行合理的规划和分配,从而使网络资源得到高效利用。

本文基于Docker容器实现了一种面向混合负载的网络隔离技术,利用Linux的流量管理工具(Traffic Control, TC)为不同负载分配合理的带宽资源[12]。搭建了四种网络服务,然后分别验证了静态和动态场景下,该技术可以按需地为混合负载中不同应用分配带宽资源。

2 研究动机

随着Docker容器云应用的不断丰富,新应用的不断出现及容器云中混合负载之间存在网络带宽资源的争夺,如果对所有负载一视同仁地进行网络资源分配,将使得部分网络服务因得不到足够的资源而影响其服务体验。针对该问题,做了三组实验进行验证。首先搭建了四种网络服务,分别为网页访问、在线游戏、文件下载以及流媒体服务。然后,分别测试独立负载以及混合负载场景下系统请求数、网络延迟以及带宽。

第一组实验测试了混合负载对网页访问服务的性能影响。如图1所示,当只有系统中只有网页访问一个负载时时,每秒请求数大约10000次左右。而在混合负载环境下,如文件下载和在线游戏将会抢夺带宽资源,网页访问的每秒请求次数降低到大约3000次。第二、三组实验分别测试了混合负载对在线游戏和流媒体服务的影响。具体的如图2所示结果显示,混合负载最大可将在线游戏的网络延迟增加到原来的123倍。同样,第三组实验结果证明混合负载争夺了流媒体服务的大部分带宽资源。

在不使用任何资源隔离规则的情况下,混合负载的流量分配很难得到控制,当有多个负载同时运行时,很容易发生拥塞,有时会产生丢包的现象,并且计算机不能结合实际生活为每个应用分配合理的带宽,因此,在这种情况下我们应该寻找一种可以合理控制带宽的方法。

3 相关工具及技术

本文利用Linux TC模块对Docker云网络进行流量隔离,为混合负载合理地分配带宽资源。为了实现并验证该技术的有效性,本文搭建了四种网络服务。本节首先介绍了本文使用的Linux TC模块,然后介绍了搭建网络服务使用到的相关技术。

3.1 Linux TC

Linux TC模块通过建立排队论模型控制不同负载的网络流量,即在计算机的输出网卡建立一个队列并对混合负载进行排队以完成流量的管控。Linux TC模块由队列、类别以及过滤器组成并相互协作,具体的队列由多个子队列构成,每个子队列对应一种类别且每个子队列与一个网卡相连。当内核接收到输出报文后利用过滤器将其进行分类,然后将其保存至对应子队列中,由自读列对应的网卡按预定顺序发出[12]。

3.2 网络服务搭建工具

3.2.1 Netperf——性能测试工具

目前,学术界和产业界存在多种网络性能测试工具。其中,Netperf是一种针对多种类型的网络性容能Benchmark工具,利用Netperf可以轻松地获取混合负载环境下不同模式的网络性能参数,如网络可用性、响应时间、利用率、吞吐量以及网络带宽等。Netperf采用C/S架构,其中服务端用来侦听来自客户端的连接请求,而客户端几位Netperf,负责向服务端发起网络请求以完成网络性能参数的测试。Netperf的具体工作流程是在服务端和客户端之间建立控制连接,首先完成相关配置信息的传递,然后在服务端和客户端之间进行多次的数据传输以测试网络性能。本文在Docker容器中搭建Netpref,用来进行不同模式下的网络性能的测试[13]。

3.2.2 Apache——网页访问、在线游戏及流媒体

Apache Tomcat是一种开源的服务器搭建工具,Tomcat提供了丰富的Web服务器功能。本文使用Apache Tomcat搭建Web服务器,以实现相应的网络功能,如模拟在线游戏和流媒体等服务[14]。

3.2.3 Caddy——文件下载服务

作为新兴 Web 服务器,Caddy 提供了很多简单易用的功能,其默认支持并且可以帮助用户自动配置 HTTP/2、HTTPS,对于 IPv6等都有很好的支持。Caddy 具有丰富的插件系统,提供了诸如文件管理、文件上传、等扩展功能。本文实验使用了Caddy的文件下载,用以实现文件下载服务[15]。

4 容器网络的隔离

本文利用Linux TC模块实现了容器网络隔离技术,具体实现有二步骤。

第一步,创建队列。队列包含若干子队列,而子队列与网卡一一对应。因此,针对具有一个网卡的计算机而言,只需创建一个根队即可。

第二步,创建分类。如上文所述分类与子队列和网卡一一对应。同时,我们需要为不同分类建立不同的匹配规则以实现报文的分类。对于优先顺序,本文做如下规定:编号小的分类优先进行匹配。当某一分类成功地匹配到报文数据后,该数据包便从进入该分类并从相应的输出网卡中发送出去。

(1) 创建根分类

创建命令为:Tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps burst 1kbps。其中规定根分类的速率的100kbps,峰值为100kbps,突发值为1kbps。

(2) 创建应用分类

创建命令为: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分配給即时通讯类,占系统总带宽80%,其中峰值为100kbps,突发值为1kbps。1:20分配给网页访问,占系统总带宽20%,其中峰值为100kbps,突发值为1kbps。带宽的分配原则根据常见网络应用情况进行分配,系统的百分比可以根据情况进行调整。

本文首先将网络隔离技术应用到静态场景下,所谓静态场景即为混合负载的种类和数量保持不变。本节实验的主要思想是测试混合负载对三种不同网络服务的性能影响,然后将使用Linux TC模块对混合负载进行网络隔离,然后继续测试在TC模块控制下混合负载对三种网络服务性能的影响。

4.1 静态场景下的带宽隔离

如图4所示为两种静态场景下混合负载对网页访问服务连接数的影响。该两种场景分别为:网页访问与文件下载的混合负载场景以及网页访问、文件下载与在线游戏混合负载的场景。本文首先测试了两种场景下,未使用Linux TC模块对不同负载进行网络隔离时网页访问服务的请求数,然后分别对两种场景下的混合负载进行网络隔离并获得了对应场景下的网页访问服务请求数。实验数据显示,混合负载使得网页访问服务的请求数急剧下降,当对混合负载进行网络隔离后,网页访问服务的请求数得到了一定程度的提升,大约提升50%。

如图5和图6所示,分别为第二、三组静态场景下在线游戏的网络延迟和流媒体服务的网络带宽测试。针对在线游戏,本文搭建了两种场景,分别是在线游戏与文件下载业务的混合负载以及在线游戏、文件下载业务与网页访问的混合负载。如图5所示,混合负载对在线游戏的服务体验产生了巨大的影响,其网络延迟上升了数倍且表现非常不稳定。接下来,当我们使用Linux TC模块对混合负载进行网络隔离后,在线游戏的网络延迟明显得到降低且延迟稳定在0.02秒以下。如图6展示的是第三组静态场景下的实验,实验结果显示,混合负载抢占了流媒体服务大部分的网络带宽资源,然而,流量隔离技术可以使得流媒体服务在混合负载的场景下保持其原有的带宽。

上述实验结果证明,使用Linux TC模块对混合负载进行网络隔离之后,网络延迟、负载分配的带宽以及请求数都能够进行很好的控制,保证了系统的整体性能稳定。本节实验结果验证了网络隔离技术能够有效地管控 网络带宽资源,按需地为不同负载分配相匹配的带宽资源,以避免分配不均或资源抢夺的问题,对混合负载的整体性能提升具有促进作用。

4.2 动态场景下的带宽隔离

本小节将流量隔离技术应用到动态场景下,随着混合负载场景的切换动态地调整带宽分配比例。本节搭建的动态场景为:网页访问、在线游戏与文件下载的混合负载,在线游戏与文件下载的混合负载,网页访问与文件下载的混合负载,流媒体与文件下载的混合负载。四种场景按顺序动态地进行切换。如图7-10所示,分别展示了四种连续切换的场景下,利用Linux TC模块分别对网页访问、在线游戏以及流媒体服务进行流量隔离后的性能表现。

如图7和图8所示,展示了前两个场景的测试数据,结果显示在线游戏的网络延迟小于网页访问应用。虽然在线游戏的延迟相较于只有在线游戏负载时有所上升,但此时网页访问的延迟获得更大的下降,降低到在只有网页访问一个负载时的50%。因此,使用Linux TC模块隔离混合负载之后,系统的整体系统得到提升。数据显示,95秒到100秒之间在线游戏负载的延迟逐渐上升,紧接着,101秒到105秒之间在线游戏的延迟逐渐下降。这是由于不同的场景的切换过程中没有进行网络的隔离,导致在线游戏的网络带宽被其它负载抢占。当场景切换过程结束之后,在线游戏的网络延迟逐渐趋于稳定,且网络隔离后的网络延迟接近单独之后在线游戏时的延迟。

第三个场景为网页访问与文件下载的混合负载,数据显示,网页访问的延迟逐渐趋近于100微秒。而网络隔离后的网页访问延迟则降低到50微秒左右。第四个场景为流媒体与文件下载的混合负载,实验结果显示,该场景下的两流媒体服务的延迟没有明显的区别。这是由于在流媒体与文件下载的混合负载中,流媒体抢夺网络资源的能力较强,无需专门使用网络隔离技术来保证它的服务性能。

5 结束语

本文实现了一种面向混合负载的容器网络隔离技术。该技术利用Linux TC模块对Docker云系统中的混合负载进行网络隔离,按需求地为不同负载分配带宽资源,以达到同时满足混合负载对带宽不同需求的目的。实验结果证明,经新技术隔离后,混合负载的网络延迟有大幅度的降低,系统请求数以及负载的可用带宽均有较高提升。

参考文献

[1] Luo Y.Network I/O Virtualization for Cloud Computing[J].It Professional, 2010.12(5):36-41.

[2] 汪恺,张功萱,周秀敏.基于容器虚拟化技术研究[J].计算机技术与发展,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].网络空间安全,2015(1):p28-29.

[7] 杜金秀,庄主,邹铭.云计算平台中的虚拟化技术与安全机制[J].网络空间安全, 2013,4(3):p.41-43.

[8] 郭璐.计算机网络信息技术安全及防范对策研究[J].网络空间安全,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] 杨世恩.多业务网络动态带宽分配算法研究[J].通信技术,2011,44(4):82-84.

[11] 邵华钢,程海英,王辉,等.基于流量隔离的公平聚集器[J].计算机工程,2010, 36(20):106-109.

[12] 倪飞.流量控制工具TC原理及应用[J].计算机科学,2006,33(b12):24-26.

[13] IBM.netperf 与网络性能测量[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-),男,汉族,黑龙江哈尔滨人,哈尔滨工业大学,本科学士,中国电子科学研究院,助理工程师;主要研究方向和关注领域:计算机科学与技术、数据科学领域。

韩青(1994-),女,汉族,北京人,首都师范大学,硕士研究生;主要研究方向和关注领域:云计算。

猜你喜欢
容器
难以置信的事情
怎样量出4升水
从容器的形状看压强
液体对容器底及容器对桌面的压力和压强
取米