上一篇我们谈了很多大二层网络的技术和流派,但是细心的读者可能已经发现,我们谈这些方案和技术,实际上都是讲的同一个数据中心内的大二层网络技术,未考虑跨数据中心的情况。

跨数据中心情况下,那么如果要实现跨数据中心的VM动态迁移,就要保证不同数据中心的服务器也都在同一个二层域内。也就是说要构建一个覆盖所有数据中心的大二层网络。

在讨论跨数据中心的大二层网络时,我们可以从数据中心内的情况往跨数据中心的情况进行延伸。看看对于釜底抽薪派、移花接木派、瞒天过海派的技术来说,一旦要跨数据中心构建大二层网络时,又会遇到什么?该如何解决?

1 釜底抽薪派的跨数据中心互联方案

釜底抽薪派通过网络设备虚拟化来消除二层网络环路,从而实现大二层网络。比如通过CSS/iStack技术,把接入、汇聚、核心层的交换机都虚拟成单节点设备。

闲话大二层网络-1740703-1

当釜底抽薪派遇到跨数据中心的情况时,有两种方式可以实现跨数据中心的大二层网络:

1.1 跨数据中心堆叠

这种方式就是把网络设备虚拟化的范围扩大到所有数据中心,把不同数据中心里的交换机堆叠成单台交换机,这种方式就把所有数据中心都当成一体来处理。

闲话大二层网络-1740703-2

但是这种方式要求数据中心之间可以实现堆叠线缆和光纤线路的直连,所以数据中心之间距离一般不能太远,通常不超过10km。而且最重要的一点,很多企业是不具备自己铺设长距离光纤或者传输设备的条件的。所以,这种方式局限性非常大,一般很少采用。

1.2 L2 over L3

如果不具备跨数据中心堆叠的条件,那么想通过纯二层的方式实现跨数据中心的互联就不太现实了。而在一般情况下,多数据中心之间是通过三层路由互通的,那么就只能把每个数据中心内的二层网络作为大二层网络的一个局部,再把这些局部网络通过L2 over L3的方式进行互联,进而构建一个全局范围的大二层网络。

所谓L2 over L3,是指借助隧道的方式,将二层数据报文封装在三层报文中,跨越中间的三层网络,实现两地二层数据的互通。这种隧道如前面所说的,像“光纤”,将多个数据中心的二层网络贯穿在一起。

L2 over L3的技术有很多种,有传统的VPN技术VPLS/VLL以及增强版的VPLS/VLL over GRE。也有新兴的专门为数据中心二层互联开发的VPN技术,例如华为的EVN(Ethernet Virtual Network)技术、CISCO的OTV(Overlay Transport Virtualization)等等。

新兴的这些技术主要是为了解决VPLS的一些固有缺陷,例如多归属接入时无法负载分担、网络部署和配置复杂、网络资源消耗高等等。

以EVN为例:

  • EVN通过扩展BGP协议使二层网络的MAC地址学习和发布过程从数据平面转移到控制平面。这样可以使设备在管理MAC地址时像管理路由一样,使目的MAC地址相同但下一跳不同的多条EVN路由实现负载分担。
  • BGP协议支持路由反射器RR功能,所以可以在互联骨干网部署RR,所有PE设备与RR建立邻居关系,通过RR来反射EVN路由,大大减少了网络部署成本。
  • EVN数据转发不再使用MPLS隧道承载,而是使用VXLAN隧道承载。VXLAN隧道可以在PE间邻居关系建立成功后通过EVN路由的传播自动建立,大大减少了配置工作量。

闲话大二层网络-1740703-3

关于EVN的详细技术原理,后面会有专题详细介绍,本文不详述。

2 移花接木派的跨数据中心互联方案

移花接木派的思想是借用三层路由的方式来进行二层报文的转发,比如TRILL协议。而当TRILL等协议遭遇跨数据中心互联时,又会发生什么呢?

最理想的状况,当然是把所有数据中心的网络(包括互联的网络)都纳入同一个TRILL网络,这样什么麻烦都没有了。

2.1 纯二层TRILL互联

如果企业可以构建跨数据中心的二层链路,构建一个大范围的纯TRILL网络理论上是可行的。这种方案简单的说,就是没有什么数据中心内部网络、互联网络的区分,所有网络设备统一运行TRILL来转发二层数据。

简单是简单的,但是这种方案的物理条件要求似乎也太高了些,也非常不经济。想象一下,对于一个全国性的企业,多地数据中心的互联网络全部运行TRILL来转发二层数据,想想就觉得冷的不行啊。

如果是一个城域内的两个主备数据中心来说,这种方案倒是勉强可以考虑一下的。

2.2 TRILL over L3

所以,对于TRILL来说,最经济的方案,其实就和釜底抽薪派的解决方案一样,也采用L2 over L3的方式来实现互联。这种情况下,可以称之为TRILL over L3。

说到这里就基本殊途同归了,L2 over L3的技术也是前面提到过的VPLS/VLL(VPLS/VLL over GRE)、EVN和OTV这么几种。都可以用来实现TRILL网络之间的互联。

唯一需要说明的是,对于釜底抽薪派来说,它的L2 over L3封装的就是普通的二层以太网报文。而对于TRILL来说,如果要实现跨数据中心的大二层网络,那么要保证两个数据中心的TRILL网络是在同一个TRILL域,所以在L2 over L3时,需要把完整的TRILL报文(包括外层二层头)一起封装之后传输到对端。

以VPLS为例,在传输TRILL报文的时候,整个封装结构就会是这个样子:

闲话大二层网络-1740703-4

(对于TRILL来说,还有另外一种互联方式,就是在数据中心的出口处先终结掉TRILL报文,只取出用户原始二层报文再进行隧道封装和传输,但是这样的话,实际上两侧的TRILL网络是相互独立的,因而就不是大二层网络,VM也无法在两个TRILL网络之间进行迁移)

闲话大二层网络-1740703-5

3 瞒天过海派的跨数据中心互联方案

瞒天过海派面对跨数据中心的情况时,情不自禁的要乐出声来。

“哈哈哈,为了跨数据中心的大二层,你们都累死了吧?看哥哥的!”

然后……

瞒天过海派就去睡觉了!

为啥他们这么悠闲?

还记得瞒天过海派(VXLAN/NVGRE等)的核心思想不?

瞒天过海派通过把原始二层报文进行隧道协议封装后,在承载网络中透明传输,完全忽略中间网络的结构和细节,把整个承载网络虚拟成一台“巨大无比的二层交换机”, 每一台主机都是直接连在这台“巨大交换机”的一个端口上。而承载网络之内如何转发都是这台“巨大交换机”内部的事情,主机完全无需关心。

闲话大二层网络-1740703-6

所以,无论是在数据中心内的网络,还是跨数据中心的互联网络,对于瞒天过海派来说,统统是承载网络(“交换机”)的一部分,压根就不需要关心细节。

就以VXLAN为例,VTEP把VM A的原始数据报文进行VXLAN封装后(MAC in UDP),它就是一个普通的IP报文而已(源地址是本VTEP的地址,目的IP地址是VM B所在的VTEP),中间网络无论用什么技术,只要能把报文转发到目的地的VTEP就可以了。

所以说,瞒天过海派是天然可以支持跨数据中心的大二层网络的。在这种架构下,无论VM是在本数据中心内迁移,还是跨数据中心迁移,都无需变更IP地址。

最后修改:2021 年 09 月 10 日
如果觉得我的文章对你有用,请随意赞赏