论文标题:PortLand:A Scalable Fault-Tolerant Layer 2 Data Center Network Fabric
会议:sigcom 09
Ref:Radhika Niranjan Mysore, Andreas Pamboris, Nathan Farrington, Nelson Huang, Pardis Miri,
Sivasankar Radhakrishnan, Vikram Subramanya, and Amin Vahdat . PortLand: A Scalable Fault-Tolerant Layer 2 Data Center Network Fabric:sigcomm, 2009.
文章简要介绍
随着Data Center的规模的扩大,数据中心的网络可以被当作一个独立的网络来看待,一些原本出现在Internet上的问题在数据中心的网络中也逐渐显现。本文主要针对的是随着Data Center 的规模扩大对于Data Center Network造成的一些问题。本文在链路层上提出并实现了一种支持大规模,容错性能好的路由,转发协议,能够较好的支持即插即用的大规模的Data Center Network:PortLand。本文也把Portland和TRILL,SEATTLE进行了比较
Routing,forwarding,addressing
文章内容
本文首先对Data Center Network 的一些基本要求进行了分析。
1、 VM在数据中心中进行迁移的过程中要保持原来的TCP的链接,即是要求在发生虚拟机迁移的时候虚拟机的IP地址不能发生变化。
2、 管理员在部署之前不需要进行任何的交换机的配置。(这个我不知道在说什么啊)。
3、 只要存在物理的路径,整个Data Center 中的虚拟机之间应该能够进行正常的通信。
4、 在整个网络中不应该出现转发回路。
5、 由于规模大,机器故障等错误会比较平常,所以错误检测必须高效率。并且这种检测不应该影响到网络中的unicast和multicast。
为了解决上述问题,本文中提出的PortLand是一组路由和转发,寻址协议的集合
这些协议都假设Data Center Network都是如multi-rooted的属性结构的(fat-tree)。这里面设计了PMAC使得端主机能很好的确认自己在网络拓扑中的位置。下面是文中对于相关实现的总结,对于具体协议的实现在需要的时候可以再深入的阅读论文。这里也就不再赘述了。
注:本文中的PMAC就是在DATA Center Network中在转发中使用PMAC地址做为转发的依据,这样一来就相当于在网络中所有虚拟机的mac地址是可以更改的.网络在Layer2上的转发由于PMAC地址的引入,以及fabric manager的一些工作使得VM在更改了物理机位置之后一样可保持原来的TCP等链接。由于是Layer2的网络,所以迁移可以不改变IP地址,PMAC的使用使得迁移之后一样可以得到原来的包,具体侧路3.3节。DLP是switch通过与他链接的host的种类,level来判断自己的位置,这个貌似挺扯的啊,不过还是有个算法在里面,我没有认真的看啊。关于Fault Tolerant Routing的内容没有看啊。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
论文笔记
Title: PortLand: A Scalable Fault-Tolerant Layer 2 Data Center Network Fabric
Author: Radhika Niranjan Myscore etc.
Publication: Proceeding of ACM SigComm2009
Abstract:
本文考虑了可扩展、易管理、容错并且高效的数据中心网络架构的需求。趋于多核心处理器、终端主机虚拟化,可扩展的趋势满足指向了未来单站点与成百万的虚拟终端结点的数据中心。存在于2层与3层网络协议面临着一些组合的限制,如缺少可扩展性,管理困难,通讯不灵活,或缺少了虚拟主机迁移的支持。在某些程度上,当试图去支持任意拓扑时这些限制可能源于以太网IP风格协议。我们观察到数据中心网络常常管理为,用已知的基准拓扑和增长模型的单逻辑站点架构。根据此观察,我们设计并实现Portland,这种数据中心环境中可扩展容错的2层路由与转发协议。通过我们的实现和评估,显示Portland具有支持“即插即用”大规模数据中心网络的有力。
1. Introduction
对于迁移应用、计算和存储到散布于整个Internet数据中心中,这具有上升的趋势。运行在成百上千服务器上万兆级的数据中心已可以承载这些应用。
在未来,一定比例的Internet通讯主要发生在数据中心网络内。它们是高度工程化,具有大量共同的设计元素。并且,运行于数据中心网络的路由、转发和管理协议是为局域网设计的,随着规模的增加这也被证明是不充分的。
考虑未来需求的一些场景:
R1: 任意的虚拟机可以迁移到任意的物理主机,迁移的虚拟机不必修改他们的IP地址,不然就可能切断已存在的TCP链接和应用级的状态
R2: 在部署前,管理员不必去配置任何的交换机。
R3: 在数据中心的任意终端主机必须能够与其他终端主机,可沿任意可用的物理路径进行有效的通讯。
R4: 不应该存在转发循环。
R5: 在这种规模下错误将非常普遍,所以错误探测应该迅速而有效。存在的单播与组播会话不应该受影响。
根据以上需求与现行的网络协议进行映射。
R1,R2 需要2层(数据链接层)架构(3层需要配置交换机,透明的VM迁移也不可能在3层)。
R3在2层的话,需要MAC地址转发表,此转发表需要成百上千甚至上百万3的转发条目,在现在的硬件条件下不实现。
R4 不管在2层还是3层都难以避免,因为转发成环在路由收敛过程都有可能发生。当然,2层上可以用Spanning Tree(低效)或引入额外的包头带上TTL值(不兼容)的方法来解决
R5 需要高效的路由协议传播拓扑结构到网络中的各个点。存在的2层和3层路由协议,如ISIS和OSPF, 都是基于广播的,每一个交换机的更新消息会发送到所有的交换机,在效率方面,要用以上协议进行广播,我们将很可能需要配置路由区域,与R2冲突。
因此,这种统一的、的大型网络架构假设是不可能实现的。利用以太兼容的协议,SEATTLE[10]在即插即用方面做出了巨大的进步。然而SEATTLE也存在缺点,其交换状态的状态随着主机的增长而增长,转发成环现象仍存在,并且路由仍需要全体到全体的广播,违反了R3,R4,R5。
本文中,作者提出了Portland,一种以太网兼容的路由、转发和地址解析协议,以满足以上R1-R5的需求。利用多根树和物理上的冗余互联,Portland采用了一种轻量级的协议使得交换机能够发现它们在拓扑中自己的位置。进一步的是,Portland为所有的终端主机分配了内部虚MAC(Pseudo MAC:PMAC)地址来编码它们在拓扑中的位置。PMAC地址使得交换机工作是高效的,并不存在转发环路。
作者已完全实现Portland,提供了本地容错来支持ARP,网络层多播及广播,对交换机的软硬件需求很低,作者希望Portland使得数据中心迁移更加灵活、高效和容错,应用程序可以灵活的映射到不同的主机上,使得DCN网络被认为是一个整体架构。
2. Background
2.1 数据中心网络Data Center Network
拓扑
转发
终端主机虚拟化
2.2 Fat Tree Network胖树网络
作者采用Fat Tree Network拓扑来设计二层可扩展,可容错的数据中心网络。其实它就是传统数据中心的多根树拓扑的一种实例。
作者将胖树拓扑分为三层:边界层,汇聚层与核心层。整体上分为K个Pod,每一个pod可在k2/4台主机中进行无阻塞的操作。无阻塞的操作需要仔细计划数据包可行的路径,在给定的源与目标之间,我们假设在k2/4可用的路径中使用ECMP式的哈希流来达到要求。当前的技术并没有完全理想的一种,讨论流调度已超出本文的范围。
2.3 Related Work
当前,针对数据中心已有许多网络结构方案。
(1) 文献[6,14]建议DCN采用基于胖树[18]拓扑。
(2) DCell [15] 提出了一种特殊的拓扑。虽然不是严格的多根树,但存在着隐式的层级关系。
(3) SmartBridge [25] 在learning bridge[23] 基础上进行了扩展,超过Spanning tree协议,并维护了局域网上无环的属性。但SmartBridge仍存在可扩展差的问题。
(4) MOOSE[27] 仍建议采用层级的以太网地址和重写包头来解决以太网扩展限制。
(5) RBridge与TRILL[24], 它是IETF标准,来解决一些以太网中路由问题。RBridge在交换机中运行2层路由协议。
(6) CMU以太网[22]提出维持所有主机信息的一个分布式的目录
(7) FCP(Failure Carrying Packets),包中存放源与目的之间所有的错误链路信息,基于这些包使得路由器能够计算新的转发路径。FCP还具有可扩展和可容错的能力。
(8) 为了减少大规模网络下路由状态与通讯包头,文献[8,9,10]利用DHT(分布式哈希表)来实现扁平标签上的转发。
3. Design
Portland的目标是实现数据中心网络环境中可扩展的路由,转发和编址。
3.1 Fabric Manager
Portland采用一种逻辑上集中的“架构管理者”,来维护关于像拓扑等网络配置等信息的软状态,用来进行ARP解析,容错和组播。它可以是一个冗余互联的主机或单独运行在一个分享的控制网络中。
3.2 Positional Pseudo MAC Addresses
在我们的设计中进行有效的转发、路由和VM的迁移都是基于层级的PMAC地址。Portland为每个终端主机分配一个PMAC地址,PMAC地址是终端主机在拓扑中位置的一种编码。终端主机通过ARP请求来获得目标主机的PMAC地址。所有包的转发处理也基于PMAC 地址,出口交换机进行PMAC到AMAC(真实MAC地址)包头的重写。
在每个pod中,每个边界交换机学习到一个唯一的pod号和一个唯一的位置号,并采用位置发现协议(Location Discovery Protocol)来分配这些值。为所有直联的主机和边界交换分配一个48位的PMAC地址,PMAC地址格式为
16 |
8 |
8 |
16 |
Pod id |
Position id |
Port id |
Vm id |
PMAC与AMAC的映射过程是这样的
(1) 主机具有IP,MAC属性。
(2) 接入交换机发现一个从未登记过的源AMAC地址,就产生一个如图中的IP-AMAC-PMAC的映射表项。并创建一个PMAC地址,并向Fabric Manager通报这一表项。
(3) Fabric Manager登记并用此来进行响应ARP请求。
本质上,将主机的位置与身份信息进行分离[20],在形式上对主机透明,是与现有的交换机是兼容的。并使用连接流映射表来支持PMAC与AMAC的转换,OpenFlow[4]是支持这两种操作的[2]。
3.3 Proxy-based ARP基于代理的ARP
(1) 源主机发送IP到PMAC的请求。
(2) 接入交换机将这一请求转向Fabric Manager, Fabric Manager查IP-PMAC映射表,如果查到请转向(3),如果没有就进行广播。
(3) Fabric Manager将PMAC返回给此接入交换机。
(4) 接入交换机响应ARP请求,将PMAC地址交给源主机。
(5) 显示了源主机向目的主机进行通信,1号核心交换机进行转发数据包的过程。
文中还提到了VM迁移到另一台主机后的处理情况。
3.4 Distributed Location Discovery 分布式地址发现协议
(1)分布式地址发现协议是用来自动获得PMAC的前提。
(2)交换机及Fabric Manager间交换的是 地址发现协议 LDP
(3)只在相邻的交换机间进行交换。
(4)LDP包含以下表项:
Switch identifier(switch_id) |
交换机的全局唯一标识,一般采用所有本地端口的最低的mac地址 |
Pod Number(pod) |
Pod号 |
Position(pos) |
在每个pod中唯一,分给每个交换的位置id号 |
Tree level(level) |
范围[0,2],表示层次关系,分别表示边界、汇聚和核心交换机 |
Up/down(dir) |
1bit,表示交换机的某一端口是上行或下行 |
交换机启动时,除了switch_id与端口号,其他值均没有赋值。
(6)level值的获取
边界交换机学习到它一部分端口直接与主机相联,故level=0
同理,汇聚交换机学习到它的一部分端口与边边界交换相关,故level=1
同理,核心交换机level=2
(7) pos值的获取
交换机在[0,k/2-1](k是端口数)中随机取一个值,并向所有汇聚交换机(其上行端口)进行发送,当有一半(>=k/4+1)的汇聚交换机承认这个值,那么可获得该值,否则在可选的值除去该值,重新尝试。
(8)pod值的获取
只由pos=0的交换机去请求,向Fabric Manager请求以获得一个唯一的pod号,除核心交换外,其直联的交换机的pod号相同。
3.5 转发成环的解决
证明无环路
3.6 Fault Tolerant Routing 容错路由
文章讨论了利用单播与多播进行错误探测与反应。
3.7 Discussion
4. Implementation
4.1 测试床
• 20 OpenFlow NetFPGA switches
• TCAM + SRAM for flow entries
• Software MAC rewriting
• 3 tiered fat-tree
• 16 end hosts
•
5. Evaluation
6. Conclusion
本项工作的目标是在一定程序上使得整个数据中心网络当成一个即插即用的架构。现代的数据中心可能含有10万台主机,采用虚拟主机复用导致上百万的唯一地址的终端主机。效率,容错,灵活性和管理性都是重要关注点。本文中,我们展示出Portland,一种以太网兼容的并为数据中心布置所定制的路由、转发和地址解析协议。我们希望通过Portland,数据中心网络能变得更灵活、有效和高容错。
7. 文章的优点与缺点
优点:
1. 采用层级的Fat tree拓扑,最重要是采用PMAC代替AMAC实现ID与Location分离,2. 采用OpenFlow协议编程根据层次化的PMAC地址进行路由与转发的实现。
3. 无需配置,采用LDP协议,进行PMAC地址的自动实现,实现了即插即用可扩展的能力。
4. 采用地址解析协议进行IP->PMAC地址的解析。
5. 容错能力较强,在不引入额外包头的情况下,可以保证转发无环。
6.支持广播。
缺点:
1. Fabric Manager作为ARP请求、错误探测等实现的核心,若通信堵塞或单点故障,会导致整个数据中心灾难性的故障。
2. 需要对使用NetFPGA硬件扩展上,使用OpenFlow进行编程,具有特殊性,不具有一般和通用性。
3. Fabric Manager是一台服务器,文章并没有交待交换机与Fabric Manager进行通信时的凭据,即交换机如何知晓Fabric Manager的存在?(广播?如果不在一个网内怎么办)
4. 胖树拓扑结构在容错、负载均衡上虽具有一定的合理性,但存在着大量的冗余链路,在交换机的端口资源宝贵的今天,造成大量重复投资。
5. 在多播及通信量极大情况下,拥塞问题并没有考虑。
6. 文中没有给出Fabric Manager的实现及评测。
7. 主机的IP地址是如何配置的?DHCP?
8. VM的迁移及测量还不是太明了