Hedera: Dynamic Flow Scheduling for Data Center Networks
摘要:
当今的数据中心为成千上万台计算机的群集提供了巨大的聚合带宽, 但是即使在最高端的交换机中,端口密度也受到限制,因此数据中心拓扑通常由多根树组成,这些树在任何给定的主机对之间都具有许多等价路径。 现有的IP多路径协议通常依赖于每流静态哈希,并且由于长期冲突而可能导致大量带宽损失。
在本文中我们介绍了Hedera,这是一种可伸缩的动态流调度系统,可自适应地调度多级交换结构以有效利用聚集的网络资源。 我们描述了使用商用交换机和未修改主机的实施方式,对于模拟的8,192个主机数据中心,Hedera提供的对等带宽为最佳的96%,比静态负载平衡方法高113%。
背景/问题:
大型组织正以几年前无法预料的速度和规模建立庞大的数据中心,以支持数万台机器,而由于许多应用程序都需要大量的群集内带宽,其他公司也渐渐开始将其计算、存储和操作转移到云计算托管提供商。
数据中心中使用的路由和转发协议是针对非常特定的部署设置而设计的。传统上,普通的企业/内联网环境使用少量的流行通信目标可以相对预测通信模式,通常主机之间只有很少的路径,辅助路径主要用于容错。与之相反,数据中心设计依靠路径多样性来实现主机的水平缩放,由于这些原因,数据中心拓扑与典型的企业网络有很大不同。
由于高端商用交换机中端口密度的限制,数据中心拓扑通常采用具有更高速度链路的多根树的形式,但随着层次结构的增加,聚合带宽逐渐降低。这些多根树在所有主机对之间都有许多路径,一个关键的挑战是沿着这些路径同时动态地转发流,以最小化/减少链路超额预订并提供可接受的聚合带宽。不幸的是,现有的网络转发协议被优化为在没有故障的情况下为每个源/目的地对选择一条路径。此类静态单路径转发可能会严重利用任何扇出的多根树。即使企业和数据中心环境中最先进的转发使用ECMP(等价多路径)来使用流散列在可用路径上静态剥离流,也不能通过流到路径的这种静态映射说明当前的网络利用率或流大小,这种情况下导致的冲突反而使交换机缓冲区不堪重负,降低了交换机的整体利用率。
解决办法:
本文介绍了Hedera,这是一种用于数据中心中多级交换拓扑的动态流调度系统,通过全面了解路由和流量需求,调度系统能够看到本地交换机无法实现的瓶颈。
Hedera从组成交换机收集流信息,计算流的无冲突路径,并指示交换机相应地重新路由流量。我们的目标是最大程度地提高网络总利用率(对等带宽),并以最小的调度程序开销或对活动流的影响来实现这个目标。
具体实现:
群集应用程序通常会在网络上成为瓶颈,而不是受到本地资源的限制,因此,改善应用程序性能可能取决于改善网络性能。大多数传统的数据中心网络拓扑都是分层树,这些树具有连接到端主机的小型廉价边缘交换机,这样的网络通过两层或三层交换机互连,以克服商用交换机可用的端口密度的限制。
随着建立包含数万台机器的大型数据中心的推动,最近的研究提倡横向扩展而非纵向扩展数据中心网络,网络将不再使用昂贵的具有更高速度和端口密度的核心路由器,而是利用任何给定源边缘交换机和目标边缘交换机之间的大量并行路径,即所谓的多根树形拓扑(如下图)。因此,我们发现自己陷入了僵局——使用多根拓扑的网络设计有可能在所有通信主机之间提供完整的二等分带宽,但没有有效的协议来转发网络内的数据或调度程序以将流量适当分配给路径利用这种高度的并行性。

为了解决这些问题,我们介绍了Hedera的体系结构,该系统利用数据中心拓扑中的路径分集来为各种流量模式提供近乎理想的对等带宽。
为了利用数据中心拓扑中的多条路径,当前的最新技术是使用等价多路径转发(ECMP)。
启用ECMP的交换机配置有给定子网的几种可能的转发路径,当具有多个候选路径的数据包到达时,将在对应于该数据包标头中所选字段的哈希值的哈希值上以路径数为模的转发数据,从而将负载分配给跨多个路径的每个子网。这样,流的所有数据包都采用相同的路径,并维持其到达顺序。密切相关的方法是有效负载平衡(VLB),该方法通过从随机选择的中间“核心”中释放来自网格中源交换机的单个数据包,从本质上保证了网格网络中等价的负载平衡,交换机最终将这些数据包转发到其目标交换机。 VLB实现在每个流而不是每个数据包的基础上执行随机转发,以保留数据包的顺序。请注意,每流VLB实际上等效于ECMP。 ECMP的一个关键限制是,两个或多个大的长寿命流可以在其哈希上碰撞并最终在同一输出端口上,从而产生了可避免的瓶颈。
如下图所示,我们考虑一个示例通信模式。
多根1Gbps网络拓扑中的主机子集。
我们确定了哈希引起的两种冲突。首先,由于哈希冲突,TCP流A和B在交换机Agg0本地进行了干扰,并受出站到Core0的1Gbps容量的限制。其次,由于受到下游干扰,Agg1和Agg2独立转发数据包,并且无法预见流C和D的Core2冲突。
在此示例中,所有四个TCP流本可以通过改进的转发达到1Gbps的容量。流A可以转发到Core1,流D可以转发到Core3,但是由于这些冲突,所有四个流均以500Mbps的速度瓶颈,两等分带宽损失为50%。由于ECMP和基于流的VLB的性能本质上取决于流大小和每个主机的流数,在网络中的主机同时执行彼此之间的全通信或仅使用几个RTT的单个流进行全通信的情况下,基于哈希的转发效果很好,非均匀的通信模式,特别是涉及大数据块传输的通信模式,需要更加谨慎地安排流量以避免网络瓶颈。
于是改进办法就是引入Hedera中的中央调度程序去动态调控,中央调度程序可能会复制以实现故障转移和可伸缩性,它会根据当前网络范围内通信需求的定期更新动态地控制边缘交换机和聚合交换机的转发表。调度程序旨在将流分配给无冲突的路径,更具体地说,它试图不将多个流放在不能满足其组合自然带宽需求的链路上。在此模型中,只要流持续存在一段时间并且其带宽需求超过定义的限制,我们就会使用本篇论文中所述的一种调度算法为它分配一条路径,根据此选择的路径,调度程序会将流条目插入到该流的源容器的边缘和聚合开关,这些条目在新选择的路径上重定向流,流终止后,流条目将在超时后过期。
Hedera对ECMP进行了补充,为导致ECMP问题的通信模式补充了默认的ECMP行为。
Hedera: Dynamic Flow Scheduling for Data Center Networks的更多相关文章
- Data Center手册(4):设计
基础架构 拓扑图 Switching Path L3 routing at aggregation layer L2 switching at access layer L3 switch融合了三种功 ...
- Data Center手册(1):架构
如图是数据中心的一个基本架构 最上层是Internet Edge,也叫Edge Router,也叫Border Router,它提供数据中心与Internet的连接. 连接多个网络供应商来提供冗余可靠 ...
- Data Center手册(2): 安全性
有个安全性有下面几种概念: Threat:威胁 Vulnerability: 安全隐患 Attack: 攻击 有关Threat 常见的威胁有下面几种 DoS(Denial of Service拒绝服务 ...
- Codeforces Round #296 (Div. 1) C. Data Center Drama 欧拉回路
Codeforces Round #296 (Div. 1)C. Data Center Drama Time Limit: 2 Sec Memory Limit: 256 MBSubmit: xx ...
- 论文阅读 Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks
6 Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks link:https://arxiv.org/ab ...
- Codeforces Gym 100513D D. Data Center 前缀和 排序
D. Data Center Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560/proble ...
- Docker Data Center系列(一)- 快速搭建云原生架构的实践环境
本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...
- Docker Data Center系列(二)- UCP安装指南
本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 Linux内核版 ...
- Docker Data Center系列(四)- 离线安装UCP和DTR
本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 离线安装UCP 1.1 可用版本 Version ...
随机推荐
- vue : 无法加载文件 C:\Users\lihongjie\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 htt ps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + vue init webpack vue_p
以管理员方式打开powershell 运行命令:set-ExecutionPolicy RemoteSigned 出现: 执行策略更改执行策略可帮助你防止执行不信任的脚本.更改执行策略可能会产生安全风 ...
- CSS(下)
目录 CSS(下) CSS属性相关 宽和高 字体属性 背景属性 边框 border-radius display属性 CSS盒子模型 margin外边距 padding内填充 浮动(float) 限制 ...
- 数据结构之单链表的实现-java
一.单链表基本概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元(一般是非连续存储单元)存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素data + 指针next ...
- Codeforces 1194E. Count The Rectangles
传送门 看到 $n<=5000$,直接暴力枚举左右两条竖线 然后考虑怎么计算高度在某个范围内,左端点小于等于某个值,右端点大于等于某个值的横线数量 直接用权值树状数组维护当前高度在某个区间内的横 ...
- java中的重写总结
这个理解了就挺容易的~~ 我就直接贴个程序啦 ,程序里有说明!! 父类: package ParentAndSon; public class Parent extends Object {//4:以 ...
- js注册实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C# 面向对象8 值类型和引用类型
值类型和引用类型 概念 示意图: 1.值类型,在栈中开辟一块空间,存储 2.引用类型,在堆中开辟一块空间,存储数据,然在栈中开辟一块空间存储堆中的数据的地址
- JavaScript制作九九乘法表
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- python之requests示例
一) import requests def download(url, num_tries=, user_agent='wswp', proxies=None): ''' 下载指定url并返回网页内 ...
- LeetCode——等差数列划分
题目: 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9 以下数列 ...