闲话大二层网络(4)—跨数据中心的大二层网络怎么实现?
上一篇我们谈了很多大二层网络的技术和流派,但是细心的读者可能已经发现,我们谈这些方案和技术,实际上都是讲的同一个数据中心内的大二层网络技术,未考虑跨数据中心的情况。
跨数据中心情况下,那么如果要实现跨数据中心的VM动态迁移,就要保证不同数据中心的服务器也都在同一个二层域内。也就是说要构建一个覆盖所有数据中心的大二层网络。
在讨论跨数据中心的大二层网络时,我们可以从数据中心内的情况往跨数据中心的情况进行延伸。看看对于釜底抽薪派、移花接木派、瞒天过海派的技术来说,一旦要跨数据中心构建大二层网络时,又会遇到什么?该如何解决?
1 釜底抽薪派的跨数据中心互联方案
釜底抽薪派通过网络设备虚拟化来消除二层网络环路,从而实现大二层网络。比如通过CSS/iStack技术,把接入、汇聚、核心层的交换机都虚拟成单节点设备。
当釜底抽薪派遇到跨数据中心的情况时,有两种方式可以实现跨数据中心的大二层网络:
1.1 跨数据中心堆叠
这种方式就是把网络设备虚拟化的范围扩大到所有数据中心,把不同数据中心里的交换机堆叠成单台交换机,这种方式就把所有数据中心都当成一体来处理。
但是这种方式要求数据中心之间可以实现堆叠线缆和光纤线路的直连,所以数据中心之间距离一般不能太远,通常不超过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路由的传播自动建立,大大减少了配置工作量。
关于EVN的详细技术原理,后面会有专题详细介绍,本文不详述。
2 移花接木派的跨数据中心互联方案
移花接木派的思想是借用三层路由的方式来进行二层报文的转发,比如TRILL协议。而当TRILL等协议遭遇跨数据中心互联时,又会发生什么呢?
最理想的状况,当然是把所有数据中心的网络(包括互联的网络)都纳入同一个TRILL网络,这样什么麻烦都没有了。
2.1 纯二层TRILL互联
如果企业可以构建跨数据中心的二层链路,构建一个大范围的纯TRILL网络理论上是可行的。这种方案简单的说,就是没有什么数据中心内部网络、互联网络的区分,所有网络设备统一运行TRILL来转发二层数据。