一、 云计算和虚拟化
在信息技术飞速发展的今天,新技术新理念层出不穷,而在IT界近几年最热的一个词无疑是“云计算”。那么什么是云计算呢?云计算的核心是计算虚拟化,从用户的角度来看,云计算是将计算资源,包括服务器、网络、存储,虚拟化为一片云,使得用户不需要关心资源是如何部署的,同时实现资源的按需分配和灵活扩容。云计算在某种程度上可以理解为一种租用服务的延伸。以前用户租用运营商的物理服务器,现在租用虚拟机、软件平台甚至是应用程序。
虚拟化技术又分为“多虚一”和“一虚多”两类。
早期的分布式计算是典型的多虚一,使用分布在不同地理位置的多台性能一般的服务器的剩余计算资源共同完成一个庞大的计算任务。当前应用广泛的互联网搜索业务,其后台就是通过多虚一技术完成的。还有我们熟悉的高可用性集群、负载均衡集群等集群技术,也是多虚一的代表,如图1所示。
图1:虚拟化之多虚一
一虚多技术很好理解,就是将一台物理服务器虚拟化成多台虚拟机。典型的技术实现方式如图2所示,厂商提供的虚拟化软件能够在底层操作系统之上部署一层Hypervisor层,Hypervisor可以看做是一套精简版的操作系统,用于直接调用底层硬件资源再分配给上层的虚拟操作系统。一虚多带来的好处也显而易见,即能够充分利用服务器的硬件资源,减少硬件成本和管理成本。一虚多技术因为其更加贴近普通用户的应用模式,且得到许多知名厂家的大力推广,目前的使用场景也十分广泛。
图2:虚拟化之一虚多
虚拟机的产生使得资源的调配更加灵活。虚拟机以文件的形式存在于物理服务器上,可以通过简单的拷贝文件的动作完成虚拟机位置的迁移,而不必移动物理服务器。典型的虚拟机迁移的应用场景例如:当物理服务器需要关机维护时,可以先将虚拟操作系统关机,然后将该虚拟机对应的文件拷贝到另外一台物理服务器上继续运行。但虚拟机文件通常非常大,这个拷贝的过程可能会长达数个小时。为了减少业务中断,一种称为VMotion的资源管理技术就产生了。管理员可以通过软件的一键操作实现虚拟机的迁移,VMotion的实现方式如图3所示:两台物理服务器使用共享存储来保存虚拟机文件,虚拟机迁移的实质是在两台物理服务器之间传递当前的服务状态信息而非文件拷贝,且同步过程中原虚拟机可以继续提供服务。当状态同步完成后,原物理服务器上的虚拟机会关闭,而新服务器上的虚拟机激活。使用VMotion能够将业务中断时间缩短到秒级。
图3:虚拟机迁移
二、 数据中心多站点
部署数据中心多站点的作用主要有两点,一是扩容,二是灾备。“云”的主要理念之一便是规模不受限制。随着服务器规模的不断增加,建设数据中心多站点成为扩容的必由之路。传统的多站点之间通过运营商网络三层互联(也称为前端网络),同时通过传输技术连接存储网络(也称为后端网络)实现站点间存储数据复制。站点间的前端网络有三种连接方式,如图4所示,分别是裸光纤、MPLS以及普通的IP互联。
图4:多站点互联
三、 跨站点二层网络
虚拟化技术的应用对数据中心网络提出了许多新的需求,体现在多站点环境中便是要求站点间除了传统的前端网络和后端网络之外,还需要存在二层网络互联。其主要原因有以下几点:
(1)虚拟机迁移后,如果位于不同的三层网络中,则必须修改服务器的IP地址。但很多服务器应用并不允许随意修改IP地址。那么最直接的解决方案便是使得服务器VMotion之后仍然位于同一个二层网络中,即站点间存在二层网络互联。
(2)集群技术通常要求成员服务器之间通过二层网络互联,当集群规模扩展或考虑到高可靠性,可能将集群的成员服务器跨站点部署,这样就要求站点间存在二层网络互联。
(3)在数据中心扩容和搬迁过程中,给定时间内可能只能将一部分成员服务器搬迁至新数据中心,要求在过渡期内服务器不能修改IP地址,或者要求和老数据中心的成员服务器组成跨站点集群,即站点间必须存在二层网络互联。
四、 传统的跨站点二层互联方案
第二节介绍了站点间的三种连接方式。采用何种技术构建跨站点的二层网络实际上主要取决于站点间的连接方式。对应不同的站点间连接方式,传统的跨站点二层互联方案主要有三种,如表1所示:
站点间互联方式 | 跨站点二层互联方案 |
裸光纤 | RPR或RRPP |
MPLS | MPLS VPLS |
IP | MPLS VPLS Over GRE |
表1:跨站点二层互联方案
站点间互联方式为裸光纤时,以站点为单位,为了避免星形拓扑中的中心站点单点故障,通常将站点连成环形,同时采用某种二层防环路技术。STP(Spanning Tree Protocol,生成树协议)由于其收敛时间长、部署和维护复杂,通常不被考虑。而裸光纤组成的环网中使用最多也最成熟的是RPR(Resilient Packet Ring,弹性分组环)或者RRPP(Rapid Ring Protection Protocol,快速环网保护协议)技术。
RPR利用光纤一收一发的特性,在环形拓扑中形成两个单向的环(双环结构),如图5所示。根据拓扑计算的结果,节点选择将数据沿某个单向环发送。数据封装采用“MAC in MAC”的封装方式,内层MAC为数据帧本身的MAC,外层MAC封装环上的目的站点设备的MAC。沿途设备对数据帧只做过环处理,根据自身维护的拓扑将数据转发到环上的下一个节点。数据帧到达目的站点后,节点根据目的MAC识别出该由自己处理,于是将数据剥离下环,不会继续沿环转发从而避免环路。当故障发生时,流量可在故障节点上自环,由原始环绕行到另一个环上继续传输。这种保护模式称为Wrapping模式,业务收敛时间最短,但流量绕行带宽浪费;也可以由流量上环的节点重新计算拓扑后直接选择切换到另一个环传输,这种保护模式称为Steering模式,业务收敛时间稍长,但不会浪费带宽。
图5:RPR工作示意图
RPR作为一种标准协议,主要的优点有收敛速度可达毫秒级别、新节点即插即用,扩容十分方便、带宽利用率高等等。但由于它对报文做了一定的改动用于识别环路信息,需要专用的硬件支持,例如使用专用的RPR单板,所以部署成本较高。
RRPP技术则是一种纯软件实现的私有技术,单环结构,如图6所示。它的基本原理是在某个环上的所有节点中配置一个主节点,再将主节点接入环中的两个接口配置为一个主端口和一个辅端口。为了阻断环路,整个环网链路畅通时,主节点的辅端口逻辑上处于阻塞状态,只能处理协议的控制报文,不能收发数据报文。主端口定期发送消息至辅端口用于检测整个环的物理链路是否连通,若发现故障或收到由环上的其他节点上报的故障,则解除辅端口的阻塞状态,完成拓扑收敛。
图6:RRPP工作示意图
RRPP无需额外硬件支持,部署成本比RPR低。但其缺点也十分明显,单环结构中存在阻断链路,带宽利用不充分。
RPR和RRPP这两种技术只有在环网中才使用,目前除运营商城域网之外,使用场景不多。
2. MPLS VPLS
当站点间为MPLS网络时,站点间的二层网络可以利用MPLS L2 VPN技术构建,MPLS L2 VPN包括VLL(Virtual Leased Line,虚拟租用线路)和VPLS(Virtual Private LAN Service,虚拟专用局域网服务)两种。VLL只支持构建点到点的二层VPN网络,但它支持多种接入方式(如PPP、ATM);而VPLS虽然仅支持以太接入,但可以构建点到多点的二层VPN网络。所谓多站点很多情况下都多于两个站点,存在点到多点的互通需求,这种情况下更适合使用VPLS技术。
VPLS技术完全依托于MPLS网络,其拓扑和BGP MPLS VPN(后面简称L3 VPN)的拓扑没有区别,如图7所示。
图7:VPLS拓扑
无论是L2 VPN还是L3 VPN,站点内私网数据要穿越公网,必然要使用一种隧道技术。VPLS和L3 VPN一样,都是使用LDP(Label Distribution Protocol,标签分发协议)分发公网标签,通过各站点PE设备之间的MPLS隧道传递私网数据,沿途的P设备仅通过MPLS公网标签进行转发。
为了实现VPN的理念,还需要满足以下三个要求:
(1)需要在控制层面建立符合用户需求的转发表项,即同一个VPN的PE之间彼此拥有能够指导去往对方站点的转发表项,而不同VPN的PE之间则没有能够指导去往对方站点的转发表项。
(2)针对同一个PE下存在多个VPN的情况,PE设备上需要实现不同VPN的转发表项的独立和隔离,以支持不同VPN中的地址重叠。
(3)需要在转发数据时携带某种提前协商好的TAG用于PE区分站点内不同VPN中的地址重叠。
对于上述第二和第三个要求,VPLS和L3 VPN的实现原理基本一致。二层通信依靠MAC地址表,L3 VPN使用VRF(VPN路由转发实例)的思想隔离VPN的路由表,而VPLS则是利用此思想实现MAC地址表的隔离。VPLS的PE设备在传输数据至对方站点时,仍旧是利用MPLS标签可嵌套的特性,通过嵌套在内部的私网标签区分不同VPN中的地址重叠(MAC地址理论上是全球较少的,但VPLS仍然在功能上支持不同VPN中的MAC地址重叠)。
值得注意的是,VPLS和L3 VPN在私网标签分发和建立转发表项方面有较大区别。L3 VPN通过MP-BGP在传递私网路由的同时分配私网路由对应的私网标签,而VPLS的私网标签分配在PE学习MAC地址之前就已经完成。VPLS使用扩展的LDP(也称为Martini方式)或者扩展的BGP(也称为Kompella方式)作为信令协议分发私网标签。两种方式都需要在PE上通过手工配置的方式指定需要与自己交换私网标签的邻居地址,即属于同一个VPN的其他站点的PE地址。
VPLS在交换私网标签之前需要协商一系列参数,只有协商通过才能完成标签交换。协商过程中的一项重要工作是,两端PE需要通过信令协议中携带的某种标识识别彼此属于同一个VPN,即需要互相交换私网标签。Martini方式下使用手工配置的VSI(Virtual Switch Instance,虚拟交换实例)ID标识属于同一个VPN;Kompella方式下沿用L3 VPN中使用RT(Route Target)控制私网路由学习的思想,使用手工配置的RT标识属于同一个VPN。不论是VSI-ID还是RT,都必须通过配置确保整网的一致性。
本端PE随机产生一个私网标签作为入标签记录在本地,并携带在信令消息中向对端发送。对端收到后,判断消息中携带的相关参数是否与自身一致,协商通过后记录收到的私网标签为出标签。对端PE也采用同样的方式向本端分发私网标签,邻居双方都完成私网标签协商和交换后,就形成了一个入/出标签和VPN实例的映射关系,并且在彼此之间建立了一个双向的PW(Pseudo Wire,虚链路)。此后,所有的数据传输,包括ARP报文的交互都需要封装私网标签和公网标签,经由MPLS隧道传输。图8为Martini方式下私网标签交换示意图。
图8:VPLS私网标签交换
VPLS仍然采用传统的MAC地址学习方式建立MAC地址表,指导二层转发。服务器首次通信前需要交互ARP报文,PE通过ARP广播请求和单播响应完成首次的MAC地址学习。与传统的MAC地址学习所不同的是,PE的MAC地址学习分为两个方向:PE私网侧的MAC地址学习与普通MAC地址学习过程一致;而公网的MAC地址学习需要识别封装在ARP报文外的私网标签,根据私网标签和VPN标识的映射获知该MAC地址表项应该学习到哪个VPN对应的独立MAC地址表中,同时将该MAC地址表项的出接口记录为收到数据帧的PW虚接口。MAC地址学习的过程如图9所示。
图9:MAC地址学习
完成MAC地址学习后,便可以水到渠成地根据MAC地址表传输数据。PE从本站点内的CE收到一个报文后,根据报文中携带的VLAN TAG和接收到的端口,结合PE自身配置识别出流量来自哪个VPN,继而查找该VPN对应的MAC地址表。如果表项中的出接口为PW虚拟接口,则完成封装后从对应的公网接口转发出去。对端PE收到数据后,根据私网标签识别出流量来自哪个VPN,继而查找该VPN对应的MAC地址表并从对应的私网接口转发出去。
以站点为单位,VPLS使用水平分割的原则确保站点间的公网拓扑无环,即PE从PW侧收到的数据不能从其他PW再转发出去。由于使用了水平分割,就要求所有站点的PE设备之间实现全连接,但是可以使用分层VPLS的技术减少全连接的数量降低拓扑维护难度。
VPLS技术主要的局限性在于要求站点间必须是MPLS网络。此外,它的配置较为复杂,维护工作量较大。尤其是当采用扩展的LDP作为信令协议时,存在配置上N平方问题,每次扩容新站点都要同时在已有的所有站点PE上新增配置LDP邻居。
3. MPLS VPLS Over GRE
当站点间网络仅为普通IP网络时,无法直接使用VPLS技术。传统的解决方案是使用VPLS Over GRE。该方案与普通的VPLS方案的主要区别在于数据封装时,私网MPLS标签外部不再是公网MPLS标签,取而代之的是一个GRE头部。公网P设备根据GRE隧道封装的目的地址透明传输数据到目的站点的PE,目的站点PE解封装GRE头中的协议标识,获知内部封装的是MPLS标签,继而通过识别MPLS私网标签,根据标签与VPN的映射关系完成后继的处理。
五、 跨站点二层互联新方案——EVI
EVI( Ethernet Virtualization Interconnect,以太网虚拟化互联)是H3C推出的私有技术。它是一种先进的“MAC in IP”技术,对站点间的互联方式没有严格的要求,只要核心网络支持IP即可。EVI主要定位在用于站点间网络是普通IP网的情况下建立跨站点二层网络。它部署灵活,运维简单,具备很好应用前景。关于EVI技术的实现原理,我们将在下一期内容中共同讨论和学习。