虚拟化技术在数据中心是个时髦词儿,有横向虚拟化、纵向虚拟化、一虚多虚拟化、NVO3虚拟化等等。今天重点跟大家聊聊横向虚拟化,以华为CloudEngine 12800系列为例,让朋友们了解一下此技术的由来和发展史,深入浅出地介绍下各种横向虚拟化技术的特点、以及各种场景下的选择策略。
横向虚拟化集群由来
在数据中心网络发展初期,没有专门的数据中心交换机,那咋办?先拿园区交换机顶着,使用最传统的VRRP+STP,凑合着用吧,就是下面这张经典的园区网络。
这个网络模型,透着浓浓的经典、可靠的园区味道。可时间久了,问题就来了:
◆流量越来越大,STP阻断导致链路利用率低;
◆非最短路径转发,树根存在带宽瓶颈,转发时延大;
◆VRRP单活网关,备节点设备闲置;
◆STP网络规模受限,收敛性能较差;
◆管理节点多,逻辑拓扑复杂,维护麻烦。
这些问题带来横向虚拟化的诉求,框式交换机集群率先登场。
堆叠
典型的框式交换机堆叠,有CISCO的VSS(Virtual Switch System)、华为的CSS(Cluster Switch System)、H3C的IRF(Intelligent Resilient Framework)。VSS、CSS、IRF在本质上都是堆叠,只是穿了不同的马甲而已,当然各厂家也发展出一些差异,这是后话。
堆叠技术,本质上就是合并,管理平面、控制平面、转发平面的全面合并。堆叠系统的主控板,管理两台物理设备的所有线卡和网板,变成一个逻辑的大交换机。
但需要注意,堆叠目的不仅仅是为了变大,从网络角度看一下逻辑拓扑,一下变得“高富帅”!
“高富帅”的主要表现:
◆几乎两倍交换能力的超级节点;
◆二三层转发流量完全负载分担,充分利用所有链路;
◆逻辑单节点,业务支持全面,网络方案设计简单;
◆通过部署跨框link-agg,支持物理节点的故障保护;
◆网元二合一,有利于网络管理和维护。
还有零零碎碎的好处也不少:
◆最短路径转发,时延低;
◆相对传统STP,可以组建更大的二层网络;
◆link-agg的收敛性能,网络故障收敛块。
在堆叠系统中,堆叠链路的带宽相对于业务端口,带宽总是不够的。这就要求转发的业务流量尽量避免经过堆叠链路,这就是所谓的流量本地优先转发。
如上图所示,华为数据中心交换机堆叠系统,对三层ECMP、链路捆绑支持本地优先。本地优先转发节省了堆叠链路带宽,同时也达到减少转发时延的目的。
除了上述通用的堆叠技术,华为CloudEngine 12800系列数据中心高端交换机,还针对堆叠的可靠性,做了重大的体质性的优化。
堆叠的优化
可靠性优化(转控分离的堆叠)
转控分离的堆叠,也称为带外堆叠,这个优化主要目的是高可靠性。
业界大部分框式交换机的堆叠,堆叠成员间的控制通道和转发通道都使用一个通道。华为的CloudEngine 12800系列数据中心交换机***性的开发了转控分离的堆叠系统。这里的“转”指的是业务数据转发通道;“控”指的是控制消息(也称为“信令”)通道。
传统的框式堆叠系统,业务数据通道和控制消息通道都使用相同的物理通道,即堆叠链路。如下图所示:
这种堆叠系统,控制消息和数据混合在一起运行,如果堆叠通道的数据通信量大,则可能导致控制消息受到冲击而丢失,进而影响控制面的可靠性。严格来说,这种设计没有满足“数据、控制、管理平面分离”的设计要求。此外,堆叠系统的建立,依赖线卡的启动,导致软件复杂度的提高,以及影响堆叠的启动速度。
转控分离的堆叠系统,采用如下所示架构:
该硬件堆叠架构带来一系列可靠性的提升:
◆控制消息通道和业务数据通道物理隔离,保证业务数据不影响控制消息;
◆三重的双主故障防护,包括堆叠管理链路(4路)、堆叠转发链路(至少2路)、业务端口/管理端口DAD;
◆堆叠系统建立,不再依赖线卡的启动,无软件时序依赖,简化软件实现,而简单意味着可靠;
◆堆叠系统建立,不再等待线卡/网板的启动,缩短堆叠系统建立时间;
◆控制消息通道路径短,故障点少,时延低。
堆叠改良的局限性
堆叠系统带来了前述系列的好处,但慢慢的,令人不爽的问题也逐渐暴露出来,这是由堆叠原理本质决定的。
如上图所示,两台交换机通过管理平面、控制平面、数据平面的紧耦合,形成逻辑上的一台交换机。这导致了如下三个风险或者问题。
◆整系统级可靠性风险
对于普通的故障,堆叠系统可通过链路切换、主备板切换、 框切换等完成故障保护。但是由于整个系统的两台物理switch在软件(管理平面、控制平面)是紧耦合的,这就增大软件故障从一台switch扩散到另一台Switch的可能性。一旦出现这种类型的故障,将导致整个堆叠系统的故障,影响堆叠系统接入的所有业务。
◆版本升级的业务中断时间长
由于堆叠本身承担了业务保护功能,因此当堆叠系统升级时,不能像VRRP的成员节点升级时由另外一个节点进行流量保护,中断时间比较长。
对此,各厂商开发出了两框RoundRobin和ISSU的升级方式,这些升级方式缩短了升级时的业务中断时间,但并不解决下面所说的升级风险,甚至因为技术复杂度、软件工程复杂度的提升,放大了升级风险。
◆整系统升级风险
设备软件版本升级,即使采用最传统、简单的升级方式,也是一个带风险的网络操作。设备升级失败将导致该设备所带业务失效,这种情况下,要采用包括回退在内的一切手段尽快恢复业务。
堆叠系统由于成员交换机间的紧耦合,只能是两台设备一起升级,升级失败将导致堆叠系统下所有业务网络中断。而堆叠系统,在接入层往往承担服务器双归保护接入的角色、或者在汇聚承担高可靠性网关的角色,这意味着升级失败很可能导致整个业务的瘫痪。
Link-agg虚拟化(M-LAG)
横向虚拟化,从需求角度是为了满足接入层、汇聚层的二层跨设备冗余、汇聚层L3网关的跨设备冗余。那是否还有其他技术,支持横向虚拟化,又没有堆叠的哪些问题?
答案当然是有,华为CloudEngine系列数据中心交换机的M-LAG(Multichassis Link Aggregation Group)就支持这样的虚拟化技术。该技术只在两台设备的link-agg层面实现二层虚拟化,两台成员设备的管理和控制平面是独立的。
注:维基百科称此技术为MC-LAG(Multi-Chassis Link Aggregation Group),CISCO称之为vPC(Virtual Port-Channel)。下文都采用维基百科的术语,即简写为MC-LAG。
MC-LAG,支持的跨设备链路捆绑组网,支持Dual-Active的L3GW。在接入侧,从对端设备视角、服务器视角看,MC-LAG与堆叠类似。
但是,从三层网络角度看,MC-LAG的两个成员节点拥有自己独立的IP地址,两个节点有自己独立的管理和控制平面。从架构角度看,MC-LAG的两个成员设备仅存在数据面的耦合,以及协议面的轻量级耦合:
MC-LAG的架构,决定了此技术方案不存在堆叠难解决的三个问题:
那么,说了MC-LAG的这么多好处,是不是就没有缺点了?当然不是,寸有所长,尺有所短。***一节比较堆叠与MC-LAG的优缺点,以及场景选择建议。
堆叠和MC-LAG的对比和选择建议
根据上面的对比表格,堆叠和MC-LAG各有优缺点。总的来说,对于网络设计/维护人员,堆叠胜在管理维护简单,MC-LAG胜在可靠性和低升级风险。
在数据中心网络方案设计时,需要权衡考虑,有如下策略可以选择:
◆策略一:汇聚层优先考虑可靠性、升级方便性,选择M-LAG;接入层因为设备量大,优先考虑业务部署和维护方便性,选择堆叠。
◆策略二:优先考虑可靠性、升级低风险,汇聚和接入都使用M-LAG。
◆策略三:优先考虑业务部署和维护方便性,汇聚和接入都使用堆叠。