文章目录
VXLAN简介
定义
RFC7348定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network)。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。
目的
作为云计算的核心技术之一,服务器虚拟化凭借其大幅降低IT成本、提高业务部署灵活性、降低运维成本等优势已经得到越来越多的认可和部署。
图1 服务器虚拟化示意图
如图1所示,一台服务器可虚拟多台虚拟机,而一台虚拟机相当于一台主机。主机的数量发生了数量级的变化,这也为虚拟网络带来了如下问题:
- 虚拟机规模受网络规格限制
在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而MAC地址表的容量限制了虚拟机的数量。 - 网络隔离能力限制
当前主流的网络隔离技术是VLAN,在大规模的虚拟化网络中部署存在如下限制 :
由于IEEE 802.1Q中定义的VLAN Tag域只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量租户或租户群的需求;传统二层网络中的VLAN无法满足网络动态调整的需求。 - 虚拟机迁移范围受网络架构限制
虚拟机启动后,可能由于服务器资源等问题(如CPU过高,内存不够等),需要将虚拟机迁移到新的服务器上。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址保持不变,这就要求业务网络是一个二层网络,且要求网络本身具备多路径的冗余备份和可靠性。
针对大二层网络,VXLAN的提出很好地解决了上述问题:
- 针对虚拟机规模受网络规格限制
VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC地址作为外层头进行封装,对网络只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求。 - 针对网络隔离能力限制
VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,从而满足了大量的用户标识。 - 针对虚拟机迁移范围受网络架构限制
VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且路由网络无网络结构限制,具备大规模扩展能力、故障自愈能力、负载均衡能力。通过路由网络,虚拟机迁移不受网络架构限制
受益
随着数据中心在物理网络基础设施上实施服务器虚拟化的快速发展,作为NVO3技术之一的VXLAN:
- 通过24比特的VNI可以支持多达16M的VXLAN段的网络隔离,对用户进行隔离和标识不再受到限制,可满足海量租户。
- 除VXLAN网络边缘设备,网络中的其他设备不需要识别虚拟机的MAC地址,减轻了设备的MAC地址学习压力,提升了设备性能。
- 通过采用MAC in UDP封装来延伸二层网络,实现了物理网络和虚拟网络解耦,租户可以规划自己的虚拟网络,不需要考虑物理网络IP地址和广播域的限制,大大降低了网络管理的难度。
VXLAN部署方案
目前,设备支持通过单机方式和控制器方式来部署VXLAN网络。
- 单机方式:传统网络部署方式,按照网络规划登录到每台设备上进行配置。云计算数据中心中,此方式无法协同云平台实现网络的自动化部署。
- 控制器方式:在大二层网络中,为了方便控制与部署引入了控制器。控制器是统一的网络控制平台,实现网络资源统一协调及管理,协同云平台实现业务和网络的自动化部署。
AC-DCN控制器方式
AC-DCN控制器方式是指通过AC-DCN控制器(Agile Controller-DCN)来动态建立VXLAN隧道。此时,AC-DCN控制器通过NETCONF协议控制设备VXLAN隧道的建立。
如图1所示,AC-DCN控制器可直接管理用户虚拟网络也可直接通过Neutron获得用户虚拟网络的信息。控制器根据用户虚拟网络信息,进行动态计算生成网络相关配置信息,并自动映射到物理网络。
图1 基于AC-DCN控制器+VXLAN解决方案网络框架示意图
基于AC-DCN控制器+VXLAN解决方案网络框架介绍如 表1 所示。
表1 基于AC-DCN控制器+VXLAN解决方案网络框架介绍
框架名称 | 说明 |
---|---|
云平台 | 实现对网络资源、计算资源和存储资源的按需调度,提供业务管理、运维界面。Neutron为云平台的组件,用于提供网络服务。 |
网络控制器 | 完成网络建模和网络实例化。AC-DCN控制器通过RESTful接口,接收来自云平台网络模型配置信息,并转化为相应的配置命令,并通过NETCONF协议与网络设备对接建立的通道,将命令下发到基础网络层的网络设备。 |
基础网络 | 物理网络和虚拟网络统一规划。•支持基于硬件的VXLAN网关提高业务性能。•支持对传统VLAN网络的兼容。 |
AC-DCN控制器与设备之间通信通道的建立与维护
通过云平台,控制器可及时感知终端租户的状态,获得用户虚拟网络的信息。如 图2 所示,终端租户上线后,通过云平台,控制器根据获得的用户虚拟网络信息进行动态计算,生成网络相关配置信息,并自动映射到物理网络。
图2 设备和AC-DCN控制器通道建立和维护示意图
如 图2 所示,网络管理员需要先通过CLI或ZTP在设备上预先配置NETCONF并完成VXLAN的必要配置(如创建NVE接口、配置VTEP的IP地址等)。完成配置后,AC-DCN控制器可通过NETCONF自动管理设备。
VXLAN基础
VXLAN基本概念
VXLAN是NVO3中的一种网络虚拟化技术,通过将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC作为outer-header进行封装,然后在IP网络上传输,到达目的地后由隧道终结点解封装并将数据发送给目标虚拟机。
NVO3(Network Virtualization Over Layer 3),基于三层 IP overlay网络构建虚拟网络技术统称为NVO3,目前比较有代表性的有∶ VXLAN、NVGRE、STT。
图1 VXLAN结构示意图
VXLAN基本概念
Underlay网络和Overlay网络
VXLAN技术将已有的物理网络作为Underlay网络,在其上构建出虚拟的二层或三层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户报文在不同站点间传递。对于租户来说,Underlay网络是透明的,只能感知到Overlay网络。
NVE(Network Virtualization Edge)
网络虚拟边缘节点NVE,实现网络虚拟化功能的网络实体。报文经过NVE封装转换后,NVE间就可基于三层基础网络建立二层虚拟化网络。
主要用于本地VTEP地址管理,VXLAN隧道管理,头端复制列表管理;
说明: 设备和服务器上的虚拟交换机VSwitch都可以作为NVE。
按照NVE部署位置的不同,可以分为以下三种模式:
- 硬件模式:所有的NVE都部署在支持NVE的设备上,所有的VXLAN报文封装与解封装都在设备上进行。
- 软件模式:所有的NVE都部署在vSwitch上,所有的VXLAN报文封装与解封装都在vSwitch上进行。
- 混合模式:部分NVE部署在vSwitch上,部分NVE部署在支持NVE的设备上,在vSwitch和设备上都有可能会进行VXLAN报文封装与解封装。
VTEP(VXLAN Tunnel Endpoints)
VTEP是VXLAN隧道端点,封装在NVE中,用于VXLAN报文的封装和解封装。
VTEP与物理网络相连,分配有物理网络的IP地址,该地址与虚拟网络无关。
VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道,VTEP间的这条VXLAN隧道将被两个NVE间的所有VNI所公用。
VNI(VXLAN Network Identifier)
VXLAN网络标识VNI类似VLAN ID,用于区分VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。
一个VNI表示一个租户,即使多个终端用户属于同一个VNI,也表示一个租户。VNI由24比特组成,支持多达16M的租户。
在分布式网关部署场景下,VNI分为二层VNI和三层VNI:
- 二层VNI是普通的VNI,以1:1方式映射到广播域BD,实现VXLAN报文同子网的转发;
- 三层VNI和VPN实例进行关联,用于VXLAN报文跨子网的转发。
BD(Bridge Domain)
BD是VXLAN网络中转发数据报文的二层广播域。
在VXLAN网络中,将VNI以1:1方式映射到广播域BD,BD成为VXLAN网络转发数据报文的实体。
VBDIF接口
基于BD创建的三层逻辑接口。通过VBDIF接口配置IP地址可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信,也可实现二层网络接入三层网络。
VAP(Virtual Access Point):详见于VXLAN接入业务模型
虚拟接入点VAP,即VXLAN业务接入点,可以是二层子接口或VLAN:
- 当接入节点是二层子接口时,通过在二层子接口上配置流封装类型实现不同的接口接入不同的数据报文,将二层子接口关联广播域BD后,可实现数据报文通过BD转发。
- 当业务接入点是VLAN时,需要将VLAN绑定到广播域BD,也可以实现数据报文通过BD转发。
网关(Gateway)
和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。
- 二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。
- 三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。
VXLAN的简化理解—两次虚拟化
- 第一次虚拟化∶利用隧道技术将边缘设备互连透传二层报文;整网抽象理解成一台端口数目扩展的超大LAN switch。
- 第二次虚拟化利用VN将这台超大的交换机虚拟出多个二层的广播域,和VLAN本质是一样的,VNI类比VLANID.并通过定义VXLAN header中的VNI字段,将子网范围由4K扩展至 16M。
VXLAN接入业务模型
接入业务模型一
- L2-Subif (二层子接口)∶用于用户接入,子接口上可以配置一层tag接入或者不配置tag接入;
- BD(Bridge-Domain)∶标识一个二层广播域,BD和VNI11映射。所有广播域功能基于BD支持,如MAc学习二层直表广播复制等;
- NVE(NetworkVitualization Edge)∶主要用于本地VTEP地址管理,VXLAN隧道管理,头端复制例表管理;
- VXLAN隧道∶VXLAN隧道用于VXLAN报文的转发,用本地VTEP地址+远端VTEP地址标识;
- BDIF∶ BD域的三层路由接口,用于二层流量进入三层进行路由转发;
接入业务模型二
全局VLAN接入模型∶主要应用在L2VPN服务场景,VLAN绑定bd,提供将传统port+vlan接口接入VXLAN网络的能力; 二层子接口绑定BD。
报文流封装类型
当业务接入点是二层子接口时,通过在二层子接口上配置不同的流封装类型以实现不同的接口接入不同的数据报文,将二层子接口关联广播域BD(Bridge-Domain)后,可实现数据报文通过BD转发,如下所示。
报文流封装类型
流封装类型 | 说明 |
---|
dot1q
对于带有一层VLAN Tag的报文,该类型接口只接收与指定VLAN Tag匹配的报文;对于带有两层VLAN Tag的报文,该类型接口只接收外层VLAN Tag与指定VLAN Tag匹配的报文。
- 该类型接口在对原始报文进行VXLAN封装时,会剥离最外层的VLAN Tag;
- 在解封装VXLAN报文时,会添加指定的VLAN Tag后再转发。
对于CE12800E(安装FD-X系列单板),设备Dot1q二层子接口的VLAN ID值可以为一个范围段,该情况下,接口会对报文进行透传,不会剥离VLAN。
配置流封装类型为dot1q时,存在如下限制:
- 二层子接口封装的vid,不能与对应二层主接口允许通过的VLAN相同,也不能与MUX VLAN中的VLAN相同。
- 二层子接口和三层子接口封装的VLAN ID不能相同。
- 同一主接口下的Dot1q的二层子接口VLAN ID不能重叠。
untag
该类型接口只接收不带VLAN Tag的报文。
- 该类型接口在对原始报文进行VXLAN封装时,不会为其添加任何VLAN Tag;
- 对于CE12800,在解封装VXLAN报文时,如果其内层报文带有VLAN Tag,则将其VLAN Tag剥离(对于QinQ报文,只剥离其外层VLAN Tag)后再转发。
- 对于CE12800E,在解封装VXLAN报文时,不会对内层报文进行任何VLAN Tag处理。
配置流封装类型为untag时,存在如下限制:
- 请确保该二层子接口对应的物理接口上没有任何配置,且对应的物理接口已退出默认VLAN。
- 仅支持为二层物理接口(包括Eth-Trunk接口)创建untag类型二层子接口。
- 一个主接口下仅允许创建一个untag类型的二层子接口。
qinq
该类型接口只接收带有指定两层VLAN Tag的报文。
- 该类型接口在对原始报文进行VXLAN封装时,如果配置的二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则将报文的所有VLAN Tag全部剥离,如果不配置二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则将报文的VLAN Tag全部保留;
- 在解封装VXLAN报文时,如果配置的二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则添加指定的两层VLAN Tag后再转发,如果不配置二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则保持报文的VLAN Tag不变直接转发。
当有流封装类型为Default类型、Dot1q透传(配置了rewrite no-action命令)类型或QinQ透传(没有配置rewrite pop double命令)类型的二层子接口绑定BD后,该BD不支持配置IGMP Snooping、不支持配置DHCP Snooping、不支持创建VBDIF,不支持配置ARP广播报文抑制。
说明:
设备上绑定同一个BD的QinQ接口的流动作类型要一致。同一VXLAN组网中,不同设备上相同BD的QinQ接口的流动作类型也要一致。
QinQ二层子接口上配置VLAN段后,不支持再配置rewrite pop double命令;反之,设备上配置了rewrite pop double命令后,也不支持在QinQ二层子接口上配置VLAN段。
QinQ二层子接口上封装的外层VLAN不能和对应二层主接口配置的缺省VLAN以及允许通过的VLAN相同。
default
允许接口接收所有报文,不区分报文中是否带VLAN Tag。
不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag处理,包括添加、替换或剥离。
配置流封装类型为default时,存在如下限制:
- 必须确保对应的主接口没有加入VLAN。
- 仅支持为二层物理接口(包括Eth-Trunk接口)创建default类型二层子接口。
- 一个主接口下仅允许创建一个default类型的二层子接口,创建后不允许再创建其他类型二层子接口。
对于带有两层VLAN Tag的报文,Dot1q和QinQ类型的接口匹配规则是优先匹配QinQ类型的接口,例如:Dot1q接口配置的VLAN Tag的VLAN ID是10,QinQ接口配置的外层VLAN Tag的VLAN ID是10,内层VLAN Tag的VLAN ID是20,如果报文的外层VLAN Tag是10,内层VLAN Tag是20,则匹配QinQ接口;如果报文的外层VLAN Tag是10,内层VLAN Tag是20之外的值,则匹配Dot1q接口。
VXLAN报文格式
图一 VXLNA报文封装流程
VXLAN是MAC in UDP的网络虚拟化技术,所以其报文封装是在原始以太报文之前添加了一个UDP封装及VXLAN头封装。具体报文格式如 图2 所示。
图2 VXLAN报文格式
字段 | 描述 |
---|
VXLAN header
- VXLAN Flags:8比特,取值为00001000。
- VNI:VXLAN网络标识,24比特,用于区分VXLAN段。
- Reserved:24比特和8比特,必须设置为0。
Outer UDP header
- DestPort:目的UDP端口号是4789。
- Source Port:源端口号是内层报文通过哈希算法计算后的值。
Outer IP header
- IP SA:源IP地址是VXLAN隧道本端VTEP的IP地址。
- IP DA:目的IP地址是VXLAN隧道远端VTEP的IP地址。
- 如果Underlay网络为IPv4网络,VTEP IP为IPv4类型;如果Underlay网络为IPv6网络,VTEP IP为IPv6类型
Outer Ethernet header
- MAC DA:在发送报文的虚拟机所属VTEP上根据目的VTEP地址查找路由表,路由表中下一跳IP地址对应的MAC地址。
- MAC SA:发送报文的虚拟机所属VTEP的MAC地址。
- 802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。
- Ethernet Type:以太报文类型。
Underlay网络和Overlay网络的组合
建立VXLAN隧道的基础网络称为Underlay网络,VXLAN隧道所承载的业务网络称为Overlay网络,因此在VXLAN场景中存在以下几种Underlay网络和Overlay网络的组合:
类别 | 解释 | 示例 |
---|---|---|
IPv4 over IPv4 | Overlay网络和Underlay网络均为IPv4网络。 | 在图1中,Server IP和VTEP IP均为IPv4地址。 |
IPv6 over IPv4 | Overlay网络为IPv6网络,Underlay网络为IPv4网络。 | 在图1中,Server IP为IPv6地址,VTEP IP地址为IPv4地址。 |
IPv4 over IPv6 | Overlay网络为IPv4网络,Underlay网络为IPv6网络。 | 在图1中,Server IP为IPv4地址,VTEP IP地址为IPv6地址。 |
IPv6 over IPv6 | Overlay网络和Underlay网络均为IPv6网络。 | 在图1中,Server IP和VTEP IP均为IPv6地址 |
图1 Underlay网络和Overlay网络的组合示意图
VXLAN的实现原理在上述几种Underlay网络和Overlay网络的组合中是类似的
VXLNA网关划分
和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。
VXLAN网关分为:
- 二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。
- 三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。
根据三层网关部署方式的不同,VXLAN三层网关又可以分为集中式网关和分布式网关。
集中式网关部署
集中式网关是指将三层网关集中部署在一台设备上,如 图1 所示,所有跨子网的流量都经过三层网关进行转发,实现流量的集中管理。
图1 VXLAN集中式网关组网图
部署集中式网关的优点和缺点如下:
优点:
- 对跨子网流量进行集中管理,网关的部署和管理比较简单。
缺点:
- 转发路径不是最优:同一二层网关下跨子网的数据中心三层流量都需要经过集中三层网关转发。
- ARP表项规格瓶颈:由于采用集中三层网关,通过三层网关转发的终端租户的ARP表项都需要在三层网关上生成,而三层网关上的ARP表项规格有限,这不利于数据中心网络的扩展。
分布式网关部署
产生原因:
通过部署分布式网关可以解决集中式网关部署的缺点。VXLAN分布式网关是指在典型的“Spine-Leaf”组网结构下,将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关,Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。如图2所示,Server1和Server2不在同一个网段,但是都连接到一个Leaf节点。Server1和Server2通信时,流量只需要在Leaf1节点进行转发,不再需要经过Spine节点。
图2 VXLAN分布式网关示意图
Spine节点:关注于高速IP转发,强调的是设备的高速转发能力。
Leaf节点:
- 作为VXLAN网络中的二层网关设备,与物理服务器或VM对接,用于解决终端租户接入VXLAN虚拟网络的问题。
- 作为VXLAN网络中的三层网关设备,进行VXLAN报文封装/解封装,实现跨子网的终端租户通信,以及外部网络的访问。
VXLAN分布式网关具有如下特点:
- 同一个Leaf节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活。
- Leaf节点只需要学习自身连接服务器的ARP表项,而不必像集中三层网关一样,需要学习所有服务器的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强。
VXLAN报文转发流程
VXLAN转发模型之相同网段VM互访(1)
VXLAN转发模型之相同网段VM互访(2)
VXLAN - BUM 报文转发流程
VXLAN转发模型之不同网段VM互访(1)
VXLAN转发模型之不同网段VM互访(2)
VXLAN转发模型之不同网段VM互访(3)
云DC中VXLAN 相关概念及应用
VXLNA 基于Sping-Leaf组网架构
VXLAN 三种OverLay组网方案
- 软件方案∶ 不改造现有物理设备,与具体厂商硬件设备解耦,无需配置物理网络,实现大规模逻辑二层网络的自动创建。
- 硬件方案 :新建物理网络,通过VXLAN Overlay网络,实现自动化业务发放。·
- 混合方案∶ 通过SDN实现对虚拟网络及物理网络(交换机、防火墙及F5)的配置管理和自动化业务发放。
VXLAN OverLay的分布式和集中式
网管部署对比
转发路径优化对比
防火墙流量过滤对比
集中网关高可靠
大规模公有云