服务器虚拟化 - 从感性上认识VXLAN(三)

任何技术的产生,都有其特定的时代背景与实际需求。自从云计算这个概念提出来以后,云计算凭借其系统利用率高,人力、管理成本低,灵活性和可扩展性强的方面已经表现出了优势。所以,越来越多的企业开始部署云桌面,云服务器了。而要部署云服务,就必须大量地部署虚拟机。简单来理解,云计算的基本技术模式就是虚拟化。

而服务器虚拟化的广泛部署,又极大增加了数据中心的计算密度。由于虚拟机是要基于物理设备上运行的,有时候虚拟机需要从一台物理设备迁移到另一台物理设备。虚拟机的迁移必须要满足这迁移前和迁移后的物理服务器在同一个网段,也就是同一个二层网络中。所以,为了让虚拟机能够在网络中不受限迁移,二层网络也必须做得足够大。但是有网络基础的人都知道,二层网络大了,不仅MAC地址的数量空前增加,而且二层环路带来的风险也会变大。于是,这又为数据中心网络带来了新的挑战:一个二层网络,必须支持上千台服务器和网络交换机稳定高效的运行。

Trill技术,只是一个基本的二层网络的基本技术,但是要解决MAC地址空间巨大、传统VLAN隔离能力有限的问题,VXLAN技术才应运而生。那么,VXLAN到底是什么东西?VXLAN和传统VLAN有什么联系和区别?VXLAN和SDN之间又有什么关系?我们在剩下的章节里面慢慢地说。

本文核心知识点

VXLAN的概念和封装格式;

VTEP、EV.P.N的概念;

集中式网关VXLAN和分布式网关VXLAN的规划设计

三、EV.P,N的概念

最初的VXLAN方案( RFC7348)中没有定义控制平面,是手工配置VXLAN隧道,然后通过流量泛洪的方式进行主机地址的学习。这种方式实现上较为简单,但是会导致网络中存在很多泛洪流量、网络扩展起来困难。

为了解决上述问题, VXLAN引入了EV.P.N( Ethernet V.P.N)作为VXLAN的控制平面。

EV.P.N参考了BGP/MPLS IP V.P.N的机制,通过扩展BGP协议新定义了几种BGP EV.P.N路

由,通过在网络中发布路由来实现VTEP的自动发现、主机地址学习。

采用EV.P.N作为控制平面具有以下一些优势:

•可实现VTEP自动发现、 VXLAN隧道自动建立,从而降低网络部署、扩展的难度。•EV.P.N可以同时发布二层MAC和三层路由信息。•可以减少网络中泛洪流量

3.1

EV.P.N的原理

EV.P.N是在BGP协议基础上扩展来的,传统的BGP使用UPdate报文在对等体之间交换路由信息,一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由防在NLRI字段中。为了让BGP能够提供对多种网络写的支持,发展出MP-BGP,MP-BGP在NLRI上做了新的扩展。扩展后的NLRI增加了地址族的描述,也就是address-family来指定是IPv6还是V.P.Nv4等。

类似的,EV.P.N在L2V.P.N地址族下定义了E.V.P.N地址族,并新增了E.V.P.N NLRI。通过在E.V.P.N对等体之间发布这些路由,就可以实现VXLAN隧道的自动建立和主机地址的学习。

EV.P.N NLRI定义的几种BGP E.V.P.N路由:

Type-2路由,MAC/IP路由,用于通告主机MAC地址、主机ARP和主机路由信息;

Type-3路由,Inclusive Multicast路由,用于VTEP的自动发现和VXLAN隧道的动态建立;

Type-5路由,IP Prefix路由,用于通告引入外部路由,也可以通告主机路由信息。

两台主机keepalived配置虚拟ip_虚拟 ac服务器

两台主机keepalived配置虚拟ip_IP_02

3.2

E.V.P.N建立VXLAN隧道

A、两个虚拟机VM在同子网内互通(建立隧道)

VXLAN隧道由一对VTEP确定,在同子网互通场景下,因为只需要在同一个二层广播域( BD)内互通,所以只要两端VTEP的IP地址路由可达, VXLAN隧道就可以建立。通过E***动态建立VXLAN隧道,就是在两端VTEP之间建立BGP E***对等体,然后对等体之间通过交互Type3路由来互相传递VNI和VTEP IP地址信息,从而实现动态建立VXLAN隧道。

建立隧道的流程如下:

1. 首先在两端设备Leaf1和Leaf2之间建立BGP E***对等体,并完成VTEP、 VNI、EV.P.N实例等必要的配置。

2. Leaf1和Leaf2会生成Type3类型的E***路由并发送给对端。该路由携带的主要信息包括:本端VTEP IP地址、 VNI, EV.P.N实例的RD、出方向RT、入方向RT。

3. Leaf1和Leaf2接收到对端发来的EV.P.N路由后,首先检查该路由携带的出方向RT是否与本端E.V.P.N实例的入方向RT相同,如果是相同的,接收该路由,否则丢弃。

在接收该路由后,检查其携带的对端VTEP IP地址和本端VTEP IP地址是否三层路由可达,如果是,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续广播、组播、未知单播报文的转发。

两台主机keepalived配置虚拟ip_子网_03

B、两个虚拟机VM在不同网段之间建立隧道

在这个场景下,隧道的建立与同子网互通的不同。在通过BGP E***方式建立VXLAN隧道的过程中,网关Leaf之间需要发布下属主机或网段的IP路由,否则网关Leaf之间就无法学习到对方的路由,从而没法进行三层转发。

如果是集中式网关,即网关都位于中间的设备VTEP-GW下(如下图所示),则VTEP-1和VTEP-2只需要和VTEP-GW建立VXLAN隧道即可,过程同上一个步骤,只不过需要建立两个隧道:

两台主机keepalived配置虚拟ip_服务器_04

如果是分布式网关,就是说业务网关都被分布到VTEP-1和VTEP-2上了,这个时候建立隧道的过程就相对复杂一些了,先看图,VNI5000的网关在VTEP-1上,VNI6000的网关在VTEP-2上:

两台主机keepalived配置虚拟ip_服务器_05

VTEP-1通过VM-1上线时的ARP报文,可以学习到Host1的ARP表项。同时,还可以根据Host1所属的BD域,获取相应的二层VNI信息、 L3***实例及L3***实例关联的三层VNI信息。

两台主机keepalived配置虚拟ip_虚拟 ac服务器_06

VTEP-1会获取到VM-1的IP+MAC+VM-1的二层VNI,还有VM-1的绑定BD的子接口绑定了相关VRF的三层VNI,然后VTEP-1上就可以根据这些信息生成Type-2路由了

两台主机keepalived配置虚拟ip_IP_07

3.3

VXLAN网络的可靠性

A、接入层的可靠性(Leaf)

在大二层网络中,接入层设备称为Leaf设备。对于接入层设备,通常采用堆叠或M-LAG方式提升服务器接入的可靠性。服务器采用“双归接入”的方式接入到VXLAN网络中,以同时实现负载均衡和链路冗余。

两台主机keepalived配置虚拟ip_虚拟 ac服务器_08

B、核心层的可靠性

核心层设备也叫Spine设备,可以对Spine设备做堆叠,但是堆叠的扩展性稍差。如果只有两台Spine,且做了堆叠,如果堆叠裂开,那就是单点故障了。一般情况下,只有两台Spine设备,会对Spine进行独立部署,即“多活网关”的方式提升Spine的可靠性:

在多活网关组网中,通过给多台Spine设备部署相同的网关信息,将它们对外模拟成VXLAN网络中的一个虚拟VTEP,然后在所有Spine设备上配置三层网关,使得无论流量发到哪一个Spine,该设备都可以提供服务,将报文正确转发给下一跳设备。此外,多活网关中的多台Spine之间形成负载分担关系,共同进行流量转发。

3.4

AC-DCN

华为CE系列交换机支持通过单机方式和控制器方式来部署VXLAN网络。单机方式是通过CLI手动在设备上进行配置,控制器方式是通过控制器向设备下发配置或流表,设备仅作为转发器,这就是SDN的典型。

两台主机keepalived配置虚拟ip_服务器_09

AC-DCN控制器方式是指通过AC-DCN控制器( Agile Controller)来动态建立VXLAN隧道。此时, AC-DCN控制器通过NETCONF协议控制设备VXLAN隧道的建立。如ACDCN控制器可直接管理用户虚拟网络也可直接通过Neutron获得用户虚拟网络的信息。控制器根据用户虚拟网络信息,进行动态计算生成网络相关配置信息,并自动映射到物理网络。

两台主机keepalived配置虚拟ip_IP_10

当前在部署VXLAN网络的时候,一般都会选择1—3台服务器作为AC-DCN控制器。