首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FreeFlow:基于软件的虚拟RDMA容器云网络(一)

来源:NSDI 19

作者:Daehyeok Kim and Tianlong Yu,Carnegie Mellon University;Hongqiang Harry Liu,Alibaba;Yibo Zhu,Microsoft and Bytedance;Jitu Padhye and Shachar Raindel,Microsoft;Chuanxiong Guo,Bytedance;Vyas Sekar and Srinivasan Seshan,Carnegie Mellon University

编译:张春海 ,出品:星云Clustar

摘 要

为实现资源的高效利用和轻量隔离,很多流行的大型云应用都在逐渐使用容器化。同时,很多数据密集型应用(例如,数据分析和深度学习框架)正在或希望采用RDMA来提高网络性能。行业趋势表明,这两种场景不可避免地会发生冲突。在本文中,我们介绍了FreeFlow,一个为容器云设计的基于软件的RDMA虚拟化框架。FreeFlow纯粹使用基于软件的方法,利用商用RDMA NICs实现了虚拟RDMA网络。与现有的RDMA虚拟化解决方案不同,FreeFlow完全满足来自云环境的需求,例如多租户的隔离、容器迁移的可移植性、以及控制和数据平面策略的可控制性。FreeFlow对应用程序也是透明的,且使用很小的CPU开销提供了接近裸机RDMA的网络性能。在我们对TensorFlow和Spark的评估中,FreeFlow提供了几乎与裸机RDMA相同的应用性能。

第一章 介 绍

大型云应用开发者一直在追求高性能、低运维成本和高资源利用率,导致容器化和远程直接内存访问(RDMA)网络技术被越来越多的采用。

容器[7,11,6]提供的轻量级隔离和可移植性,降低了部署和管理云应用的复杂性(从而降低了成本)。因此,现在容器成为管理和部署大型云应用的实际方式。

因为与基于标准TCP/IP的网络相比,RDMA网络能够提供更高的吞吐量、更低的延迟和更少的CPU占用,所以许多数据密集型应用(例如,深度学习和数据分析框架)都会采用RDMA [24,5,18,17]。

但不幸的是,这两种技术趋势在云环境中是相互矛盾的。容器化的核心价值是为应用提供高效灵活的管理。为此容器云需要容器在网络中具有以下三个属性:

隔离:每个容器都应该有其专用的网络命名空间(包括端口空间、路由表、接口等),以消除与同一主机上其他容器的冲突。

可移植性:容器应该使用虚拟网络与其他容器通信,并且与它的虚拟IP保持关联,而不管它被调度到哪个主机上或迁移到哪个主机上。

可控性:编排器可以容易地执行控制平面策略(例如,准入控制、路由)和数据平面策略(例如,QoS、计费)。此属性在(多租户)云环境中尤其需要。

对于在云环境中,自由放置、迁移容器、以及控制每个容器可使用的资源,这些属性都是必需的。为此,在基于TCP/IP的操作中,网络可以通过软件(虚拟)交换机来实现完全虚拟化[15]。

但是,很难对基于RDMA的网络进行完全虚拟化。RDMA通过将网络处理卸载到硬件NIC中,绕过内核软件栈,实现了高网络性能。 在共享的云环境中难以修改硬件中的控制平面状态(例如,路由),同时由于流量直接通过PCIe总线在RAM和NIC之间传输,也难以控制数据路径。

因此,采用这两种技术的几个数据密集型应用(例如,TensorFlow [24],CNTK [5],Spark [18],Hadoop [17])仅在专用裸机群集中运行时才使用RDMA; 当在共享的云环境中运行时,不得不完全摒弃RDMA提供的性能优势。 当然,使用专用集群来运行应用对于提供商或客户来说都是不划算的。

本文的目的很简单:我们希望基于云环境中的容器化应用能够像在专用裸机集群中那样高效地使用RDMA,同时也能实现容器云中的隔离、可移植性和可控性的要求。

目前,还没有成熟的容器RDMA虚拟化解决方案。表1总结了可能通过扩展来支持容器的一些重要选项,尽管它们未能达到关键要求,也可能需要以很大的性能成本为代价进行实现。

表 1: 可用于容器的RDMA网络解决方案。

例如,基于硬件的I/O虚拟化技术,如SR-IOV[21],具有根本的移植性限制[39,28],因为它们需要重新配置硬件网卡和交换机来支持容器的迁移。控制路径虚拟化解决方案,例如HyV[39],只操作控制平面命令来实现隔离和可移植性,它们不具有数据流的可见性或可控制性。因此,它们不能灵活地支持云提供商所需的数据平面策略。软件仿真RDMA,如SoftRoCE[36],通过在UDP网络栈上运行RDMA并使用现有的虚拟IP网络解决方案,可以轻松实现隔离、可移植性和可控性,但其性能将受到UDP的限制。

本文提出了一种基于软件的容器云虚拟RDMA网络框架FreeFlow,该框架实现了隔离、可移植性和可控性,并提供了接近裸机RDMA的性能。FreeFlow的核心是运行在每个服务器上的软件虚拟交换机,来实现在商业RDMA 网卡上虚拟化RDMA。FreeFlow不需要专门的硬件或基于硬件的I/O虚拟化。软件虚拟交换机具有对容器间通信的控制路径(如地址、路由)和数据路径(如数据流量)的完全访问权。这种设计理念类似于容器云中用于TCP / IP网络的现有软件虚拟交换机,例如Open vSwitch(OvS)[15],尽管由于RDMA的特性,FreeFlow的实际设计与OvS截然不同。

FreeFlow的设计解决了两个关键挑战。首先,我们希望FreeFlow对应用程序完全透明。这很有挑战性,因为RDMA需要网卡来操作内存缓冲区和文件描述符,而容器内的应用程序由于网络虚拟化而不能直接与网卡交互。我们解决这一问题的关键点是,容器本质上是进程,它们可以使用FreeFlow轻松共享内存和文件描述符等资源。如果FreeFlow和容器共享相同的内存(§4.3)和文件描述符(§4.4),则底层物理RDMA NIC上的任何操作都将自动在容器内生效。另一个问题是,鉴于应用程序不会协作地创建可共享的资源,因此共享对应用程序透明的资源并不简单。 我们设计了将资源从不可共享转换为可共享的方法,对应用程序代码无需修改或只需很少的修改。

其次,FreeFlow必须提供与裸机RDMA相当的吞吐量和延迟。我们将吞吐量和延迟中的性能瓶颈分别定义为内存复制和进程间通信。我们利用一个零拷贝设计吞吐量(§4.3), 一个共享内存进程间通道与CPU旋转延迟(§5.2)。同时还优化了FreeFlow来限制CPU开销。

我们使用标准的微基准测试工具和真实的数据密集型应用程序、Spark和TensorFlow来评估FreeFlow的性能,不需要对它们进行任何修改或只需很小的修改。FreeFlow的性能可与裸机RDMA相媲美,无需太多的CPU开销。同时,与使用传统TCP/IP虚拟网络相比,FreeFlow显著提高了实际应用程序的性能,吞吐量提高了14.6倍,延迟降低了98%。FreeFlow吸引了多个RDMA解决方案提供商的兴趣,并已开放源代码https://github.com/Microsoft/Freeflow。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190211A04S6R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券