多租户数据中心拥塞控制学习笔记(一)

作者简介:刘宇欣,福州大学数学与计算机科学学院2015级软件工程研究生 ,研究方向:数据中心的拥塞控制;数据平面可编程。邮箱:562613629@qq.com。

(一)初步认识

前言

网络领域顶级会议SIGCOMM2016一次性发表了两篇关于多租户数据中心拥塞控制的论文“Virtualized Congestion Control”及“AC/DC TCP: Virtual Congestion Control Enforcement for Datacenter Networks”,可见多租户数据中心是当今计算生态系统的关键组成部分。为促进多租户数据中心拥塞控制的研究,也为了分享交流,本文以两篇论文为基础,初步介绍多租户数据中心的拥塞控制方案。

一、介绍

随着数据量的增长和互联网应用的多样化,数据中心已经成为用于支持数据存储、部署多样化的网络服务和应用(例如,视频流,云计算),最有效、最有前景的基础设施。这些应用和服务通常需要底层基础设施满足多种资源需求(存储,计算能力,带宽,延迟)。现有的数据中心架构对这些应用的灵活性缺乏有效支持,这导致对QoS、可部署性、可管理性和对安全攻击的防御有较差的支持。数据中心网络虚拟化是解决这些问题的有效解决方案。虚拟化数据中心可以提供更好的管理灵活性,更低的成本,可扩展性,更好的资源利用率和能源效率。

而虚拟化数据中心解决这些问题的翘楚即是,多租户数据中心,多租户租赁和共享一个共同的物理基础设施来运行他们的虚拟机(VM)工作负载,租户可以无缝地将其应用程序和服务移植到云中。虚拟机(VM)技术在这一成功中发挥了不可或缺的作用,它使一组不同的软件能够在统一的底层框架上运行,但这样就会有一个问题即[18]:不同租户实施自己的拥塞控制算法。多租户数据中心所有者必须确保所有算法在共享数据中心网络中仍然一起良好地工作,以便满足商定的SLA。

针对这个问题,有几种方法可以考虑。例如,多租户数据中心所有者可以严格地划分租户之间的带宽,给予固定分配。或者修改所有数据中心交换机并调整每个交换机上的租户之间的公平规则,例如通过在同一队列内实现单独的队列或应用不同的标记阈值。不幸的是,随着租户拥塞算法的数量增加,这种方法要保证公平性变得愈发困难。相反,我们采用不同的方法,利用所有流量都需要通过由多租户数据中心的管理程序(hypervisors)的特性。即通过管理程序中的转换层(translation layer)确保整个数据中心使用单个最佳拥塞控制算法,同时给不同的租户它仍然保持使用自己的拥塞控制算法的幻觉。即,客户拥塞控制算法是被覆盖的算法,管理程序将其转换为在数据中心网络中使用的底层算法。我们将这种方案称之为虚拟化拥塞控制或vCC。

图一 在虚拟机管理程序中实现的转换层

二、虚拟拥塞控制

我们试图解决问题的常见表现是,当旧应用程序在使用旧TCP版本(例如,non-ECN的TCP NewReno)的旧客户VM操作系统(OS)上运行时。 该应用程序已正常运行多年,几乎没有维护,但最近已移至云端。如果其他VM使用更现代的(例如,ECN感知的)拥塞控制算法,则它们可以使得较早应用的性能降低,如图二所示。

图二 non-ECN、virtual-ECN及ECN流吞吐量对比图

而将旧应用程序移植到较新的操作系统,以及迫使新应用程序使用过时的拥塞控制算法的问题通常是不切实际的。虚拟拥塞控制是通过允许两种类型的应用程序享受ECN的好处来解决这个问题。拥塞控制方案大致可以分为三个部分,(a)管理程序中的vCC转换层修改所发送的分组的TCP报头字段以实现底层中的ECN支持; (b)在接收到ECN拥塞通知时,减少接收窗口以使得覆盖TCP客户发送机减少其速度并且表现得好像是ECN感知的; (c)修改ACK分组的TCP报头字段以掩蔽拥塞通知。

我们将讨论可用于我们的虚拟拥塞控制的几种可用的TCP修改技术。

写入客户端内存(Write into guest memory)。
现代虚拟化技术,例如活动内存自省和VMware的VMSafe 等工业产品使虚拟机管理程序对原始内存状态具有完全可见性来安全地监视客户虚拟机,并在需要时写入此内存中。因此,管理程序可以通过在相应的客户存储器和寄存器中写入期望的TCP参数来直接修改客户中的拥塞控制算法。

缺点。租户可能希望更强的VM隔离保证,而不接受管理程序写入VM内存,即使是为了提高性能。在管理程序和客户VM都控制网络栈的情况下,由于需要保持一致性并确保写入操作之间的同步,写入存储器会导致VM性能的虚弱。

读取客户机内存(Read from guest memory)。 如上所述,管理程序可以使用访客自检来访问访客存储器。只是它只监视内存,不需要同步。

缺点。同样,租户可能不会接受管理程序在虚拟机中的监视。此外,当管理程序访问客户存储器而不是保持内部状态机时,将增加了处理和通信延迟。

拆分连接(Split connection)。 分裂连接方法将TCP连接分成几个子连接。 它可以以某个期望的速率确认到客户端VM的分组,然后使用期望的目标拥塞控制算法在数据中心网络上发送它们。

缺点。除了需要许多资源来缓冲分组之外,该解决方案违反TCP端到端语义。

缓冲数据包(Buffer packets)。 管理程序翻译层可以缓冲传输中分组,例如,以能够重新发送它们而不通知客户。

缺点。管理程序需要管理数据包缓冲区。缓冲区显着增加了vCC的内存占用。

缓冲ACK(Buffer ACKs)。 管理程序可以类似地缓冲接收的ACK。

缺点。管理程序需要管理ACK缓冲区。它可能还会在ACK延迟时增加延迟。

重复ACK(Buffer ACKs)。 管理程序可以复制并重新发送最后发送的ACK,以强制客户将其拥塞窗口减半。

缺点。除了需要保留最后一个ACK,这种技术也可能违反TCP语义4。

调节接收窗口(Throttle the receive window)。管理程序可以减少接收窗口以迫使客户具有较少的未完成分组,因为传输中的分组数量受到拥塞和接收窗口的最小限制。因此,所通告的接收窗口可以遵循目标拥塞窗口。

缺点。这种技术可以使拥塞窗口无意义,因为它依赖于接收窗口来限制传输中分组的数量。另外,需要注意的一点是,接收窗口可能会比当前传输数据包的数目更小。这可能与TCP缓冲器管理的常见实现冲突。

修改三次握手(Modify the three-way handshake)。 管理程序可以更改在设置连接时协商的选项。

图三说明了三次握手修改和接收窗口节流技术的组合如何帮助为non-ECN TCP流量提供虚拟ECN的优势。管理程序中的vCC转换层首先使用三次握手修改技术:在图三(a)中,它修改所发送的分组的TCP报头字段以实现底层中的ECN支持。接下来, vCC设置输出数据分组的IP报头中的ECT比特并且透明地转发ACK(图三(b)),并其在拥塞时使用接收窗口抑制技术。如图三(c)所示,在接收到ECN拥塞通知时,它减少的接收窗口,以迫使覆盖TCP客户发送机减少其速度并且表现得好像是ECN感知的。它还修改ACK分组的TCP报头字段以掩盖拥塞通知。

图三 转换层的详细工作流程

三、结语

以上就是多租户数据中心拥塞控制方案,希望能给研究数据中心虚拟化的同袍们提供帮助,同时,因为笔者也是初学者,难免出错,请各位大牛批评指正,也欢迎大家多多交流。下节预告,我会在下一篇“多租户数据中心拥塞控制学习笔记(二)实验重现”介绍具体的实验环境搭建配置,包括mininet的安装,mininet官方镜像下实现论文要求的linux内核的重新编译等,敬请期待。



参考文献
[1] Cronkite-Ratcliff B, Bergman A, Vargaftik S, et al. Virtualized congestion control[C]//Proceedings of the 2016 conference on ACM SIGCOMM 2016 Conference. ACM, 2016: 230-243.

[2] He K, Rozner E, Agarwal K, et al. AC/DC TCP: Virtual congestion control enforcement for datacenter networks[C]//Proceedings of the 2016 conference on ACM SIGCOMM 2016 Conference. ACM, 2016: 244-257.


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/18738.html
分享到:
相关文章
条评论

登录后才可以评论

yuxinliu 发表于17-03-20
0