VXLAN

定义

RFC7348定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。

VXLAN基础

网络架构

VXLAN网络内互访

通过VXLAN技术可以实现在已有三层网络上构建虚拟二层网络,实现主机之间的二层互通。VXLAN网络内互访如图1所示。

VXLAN网络内互访中涉及的概念如下:

网络标识VNI(VXLAN Network Identifier)

类似于传统网络中的VLAN ID,用于区分VXLAN段,不同VXLAN段的租户不能直接进行二层通信。一个租户可以有一个或多个VNI,VNI由24比特组成,支持多达16M的租户。

广播域BD(Bridge Domain)

类似传统网络中采用VLAN划分广播域方法,在VXLAN网络中通过BD划分广播域。

在VXLAN网络中,将VNI以1:1方式映射到广播域BD,一个BD就表示着一个广播域,同一个BD内的主机就可以进行二层互通。

VXLAN隧道端点VTEP(VXLAN Tunnel Endpoints)

VTEP可以对VXLAN报文进行封装和解封装。

VXLAN报文中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。一对VTEP地址就对应着一条VXLAN隧道。在源端封装报文后通过隧道向目的端VTEP发送封装报文,目的端VTEP对接收到的封装报文进行解封装。

虚拟接入点VAP(Virtual Access Point)

VXLAN业务接入点,可以基于VLAN或报文流封装类型(相关介绍参考VXLAN接入方式)

接入业务:

基于VLAN接入业务:在VTEP上建立VLAN与BD的一对一或多对一的映射。这样,当VTEP收到业务侧报文后,根据VLAN与BD的映射关系,实现报文在BD内进行转发。

基于报文流封装类型接入业务:在VTEP连接下行业务的物理接口上创建二层子接口,并配置不同的流封装类型,使得不同的接口接入不同的数据报文。同时,将二层子接口与BD进行一一映射。这样业务侧报文到达VTEP后,即会进入指定的二层子接口。即根据二层子接口与BD的映射关系,实现报文在BD内进行转发。

网络虚拟边缘NVE(Network Virtualization Edge)

NVE是实现网络虚拟化功能的网络实体。报文经过NVE封装转换后,NVE间就可基于三层基础网络建立二层虚拟化网络。

二层网关

类似传统网络的二层接入设备,在VXLAN网络中通过二层网关解决租户接入VXLAN虚拟网络,也可用于同一VXLAN虚拟网络的子网通信。

VXLAN网络间互访(集中式网关)

不同BD之间的主机不能直接进行二层通信,需要通过VXLAN三层网关实现主机间的三层通信。

集中式网关是指将三层网关集中部署在一台设备上,如图2所示,所有跨子网的流量都经过三层网关进行转发,实现流量的集中管理。

VXLAN网络间互访中涉及的概念如下:

三层网关

类似传统网络中不同VLAN的用户间不能直接进行二层互访,不同VNI之间的VXLAN及VXLAN和非VXLAN之间也不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,引入了VXLAN三层网关的概念。

三层网关用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。

VBDIF接口

类似于传统网络中采用VLANIF解决不同广播域互通的方法,在VXLAN中引入了VBDIF的概念。

VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。通过VBDIF接口配置IP地址可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信,也可实现二层网络接入三层网络。

VXLAN网络间互访(分布式网关)

分布式网关是指将VXLAN二层网关和三层网关部署在同一台设备上,如图3所示,VTEP设备既作为VXLAN网络中的二层网关设备,与主机对接,用于解决终端租户接入VXLAN虚拟网络的问题。同时也作为VXLAN网络中的三层网关设备,实现跨子网的终端租户通信,以及外部网络的访问。仅BGP EVPN方式部署VXLAN网络时支持分布式网关。

VXLAN分布式网关具有如下特点:

同一个VTEP节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活。

VTEP节点只需要学习自身连接服务器的ARP表项,而不必像集中式三层网关一样,需要学习所有服务器的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强。

与VLAN对比

上面介绍VXLAN相关概念时与传统网络中的VLAN进行了对比,下面总结VXLAN与VLAN的差别。

对比项

VLAN网络

VXLAN网络

概念

虚拟局域网。

虚拟扩展局域网。

网络存在形式

将一个物理的LAN在逻辑上划分成多个广播域,并且将网络范围限制在一个较小的地域范围内。

在已有的任意路由可达的网络上叠加的二层虚拟网络,不受地域范围限制,具备大规模扩展能力。

可支持虚拟局域网范围

VLAN作为当前主流的网络隔离技术,在标准定义中只有12比特,因此可用的VLAN数量仅4096个。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力无法满足。

VXLAN作为新型的网络隔离技术,在RFC 7348定义中有24比特,支持多达16M(约1600万)租户隔离,有效地解决了云计算中海量租户隔离的问题。

网络划分方式

通过VLAN ID划分广播域,同一个广播域之间的主机能进行二层互通。

通过BD划分广播域,同一个BD内的主机可以进行二层互通。

封装方式

在报文中添加VLAN Tag。

原始报文在封装过程中先被添加一个VXLAN帧头,再被封装在UDP报头中,最后使用承载网络的IP、MAC地址作为外层头进行封装。(具体封装格式请参见报文封装格式)

网络间互通方式

VLAN间互访通过VLANIF接口实现,VLANIF接口是一种三层的逻辑接口,可以实现VLAN间的三层互通。

VXLAN间互访以及VXLAN和非VXLAN之间的通信通过VBDIF接口实现。VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。

受益

限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。

位置无关性:业务可在任意位置灵活部署,缓解了服务器虚拟化后相关的网络扩展问题。网络部署灵活性:在传统网络架构上叠加新的网络,部署方便,同时避免了大二层的广播风暴,可扩展性极强。适合云业务:支持千万级别租户隔离,支持云业务的大规模部署。技术优势:采用MAC in UDP封装方式,无需关注主机的MAC地址,降低了大二层网络对MAC地址规格的需求。

VXLAN接入方式

在VXLAN网络中,将VNI以1:1方式映射到广播域BD。当报文到达VTEP后,VTEP只要能够识别出报文所属的BD,就能够选择正确的VXLAN隧道进行转发。VTEP有两种方式识别报文所属的VXLAN。

基于VLAN识别报文所属的VXLAN

基于网络规划,在VTEP上建立VLAN与BD的一对一或多对一的映射。这样,当VTEP收到业务侧报文后,根据VLAN与BD以及BD与VNI的对应关系即能够选择相应的VXLAN隧道进行转发。

如图1所示,VLAN 10与VLAN 20同属于BD 10,VTEP上存在BD 10与VLAN 10和VLAN 20的对应关系,同时BD 10对应的VXLAN的VNI为1000。这样当VTEP接收到PC_1或PC_2的报文时,就能够选择正确的VXLAN隧道进行转发。

基于报文流封装类型识别报文所属的VXLAN

报文的流封装类型可概括地分为携带指定VLAN Tag与不携带VLAN Tag两种。基于此,在VTEP连接下行业务的物理接口上创建二层子接口,并配置二层子接口对报文的不同处理方式,同时将二层子接口与BD进行一一映射。这样业务侧报文到达VTEP后,即会进入指定的二层子接口。VTEP即能够根据二层子接口与BD的映射关系,以及BD与VNI的映射关系,选择正确的VXLAN隧道进行报文转发。

如表1所示,不同流封装类型的二层子接口对报文的缺省处理方式分为四种。

流封装类型

允许进入VXLAN隧道的报文类型

对VXLAN报文进行封装处理

对VXLAN报文进行解封装处理

dot1q

只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。

进行VXLAN封装时,会剥离原始报文的VLAN Tag。

进行VXLAN解封装后,会根据子接口上dot1q终结配置的vid为报文添加VLAN Tag,再转发。

untag

只允许不携带VLAN Tag的报文进入VXLAN隧道。

进行VXLAN封装时,不对原始报文做处理,即不添加任何VLAN Tag。

进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。

default

允许所有报文进入VXLAN隧道,不论报文是否携带VLAN Tag。

进行VXLAN封装时,不对原始报文做处理,包括添加、替换或剥离。

进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。

default

允许所有报文进入VXLAN隧道,不论报文是否携带VLAN Tag。

进行VXLAN封装时,不对原始报文做处理,包括添加、替换或剥离。

进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。

图2

所示,VTEP基于物理接口

GE0/0/1

有两个子接口,不同的流封装类型与不同的BD进行绑定。PC_1与PC_2分别属于VLAN 10和VLAN 30,二层交换机上行连接VTEP的接口上配置的接口类型是Trunk,允许通过的VLAN为10和30,PVID为VLAN 30。当PC_1发出的报文经过该接口时,由于接口的缺省VID与报文的VID不同,直接透传该报文到VTEP;当PC_2发出的报文经过该接口时,由于报文的VID与接口的缺省VID相同,剥离VID=30的Tag。因此,PC_1与PC_2发出的报文到达VTEP的

GE0/0/1

接口时,一个是携带VLAN 10的,一个是不携带VLAN Tag的。为了区分两种报文,就必须要在

GE0/0/1

上分别创建dot1q和untag类型的二层子接口:

创建二层子接口GE0/0/1.1流封装类型为dot1q,允许携带指定VLAN Tag为10的报文进入VXLAN隧道。

创建二层子接口GE0/0/1.2流封装类型为untag,允许不携带VLAN Tag的报文进入VXLAN隧道。

当PC_1或PC_2的报文到达VTEP时,根据报文的Tag情况选择进入不同的二层子接口,之后,VTEP根据子接口与BD,以及BD与VNI的映射关系,即能够选择正确的VXLAN隧道进行报文转发。

图2 基于报文流封装类型识别报文所属的VXLAN

VXLAN隧道建立方式

VXLAN隧道由一对VTEP IP地址确定,报文在VTEP设备进行封装之后在VXLAN隧道中依靠路由进行传输。在进行VXLAN隧道的配置之后,只要VXLAN隧道的两端VTEP IP是三层路由可达的,VXLAN隧道就可以建立成功。

图1 VXLAN组网示意图

根据VXLAN隧道的创建方式将VXLAN隧道分为以下两种:

静态隧道:通过用户手工配置本端和远端的VNI、VTEP IP地址和头端复制列表来完成。静态配置隧道的方式仅支持VXLAN集中式网关场景。具体过程请参见静态方式部署集中式网关。

动态隧道:通过BGP EVPN方式动态建立VXLAN隧道。在两端VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态建立的VXLAN隧道。通过BGP EVPN动态建立隧道的方式既支持VXLAN集中式网关场景,同时也支持VXLAN分布式网关场景。具体过程请依据网关的部署方式参见BGP EVPN方式部署集中式网关、BGP EVPN方式部署分布式网关。

大二层网络

为了实现业务的灵活变更,虚拟机动态迁移已经成为了一个常态性的业务。虚拟机动态迁移是指在保证虚拟机正常运行的同时,将虚拟机从一个物理服务器移动到另一个物理服务器的过程,该过程对于最终用户来说是无感知的,使得管理员在不影响用户正常使用的情况下灵活调配服务器资源或者对物理服务器进行维修和升级。虚拟机动态迁移的关键是要保证在迁移时,虚拟机上的业务不会中断,这就要求虚拟机的IP地址、MAC地址等参数保持不变,所以虚拟机的迁移只能在同一个二层域内进行,而不能跨二层域迁移,如图1所示。

图1 传统网络中虚拟机迁移

传统数据中心网络架构中二层网络部分为了提高可靠性,采用冗余设备和冗余链路,在虚拟机迁移过程中会不可避免地产生物理环路。

为了避免物理环路过程中产生的广播风暴,需要采用STP等破环协议进行破环,阻塞冗余链路。由于STP性能的限制,采用STP协议进行破环的二层网络通常不超过50个网络节点,导致虚拟机动态迁移只能在一个较小的局部范围内进行,应用受到极大限制。

为了实现虚拟机的大范围甚至跨地域的动态迁移,就要求将虚拟机动态迁移可能涉及的服务器都纳入同一个二层网络,形成一个更大范围的二层网络,这样才能实现虚拟机的大范围无障碍的迁移,这种二层网络称为大二层网络。

常见的实现大二层网络技术有:

网络设备虚拟化技术。

TRILL技术。

VXLAN技术。

EVN技术。

然而,通过网络设备虚拟化技术、TRILL、EVN技术构建物理上的大二层网络,可以将虚拟机迁移的范围扩大。但是,构建物理上的大二层,难免需要对原来的网络做较大的改动,并且大二层网络的范围依然会受到种种条件的限制,然而VXLAN技术能够很好地解决上述问题。

如图2所示,在大二层网络中虚拟机动态迁移可以实现大范围无障碍的迁移。

图2 大二层网络中虚拟机迁移 ![报文封装格式

原始报文在封装过程中先被添加一个VXLAN帧头,再被封装在UDP报头中,并使用承载网络的IP、MAC地址作为外层头进行封装。

字段

描述

VXLAN header(VXLAN头封装)

VXLAN Flags:标记位,16比特。Group ID:用户组ID,16比特。当VXLAN Flags字段第一位取1时,该字段的值为Group ID。取0时,该字段的值为全0。VNI:VXLAN网络标识,用于区分VXLAN段,由24比特组成,支持多达16M的租户。一个租户可以有一个或多个VNI,不同VNI的租户之间不能直接进行二层相互通信。Reserved:保留未用,由8比特组成,设置为0。

Outer UDP header(外层UDP头封装)

DestPort:目的UDP端口号,设置为4789。Source Port:源UDP端口号,根据内层以太报文头通过哈希算法计算后的值。

Outer IP header(外层IP头封装)

IP SA:源IP地址,VXLAN隧道源端VTEP的IP地址。IP DA:目的IP地址,VXLAN隧道目的端VTEP的IP地址。

Outer Ethernet header(外层Ethernet头封装)

MAC DA:目的MAC地址,为到达目的VTEP的路径上,下一跳设备的MAC地址。MAC SA:源MAC地址,发送报文的源端VTEP的MAC地址。802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。Ethernet Type:以太报文类型,IP协议报文中该字段取值为0x0800。

展开阅读全文

页面更新:2024-05-09

标签:目的   报文   租户   网关   隧道   虚拟机   接口   方式   地址   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top