摘要:本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作原理,包含:为什么须要VXLAN?VXLAN与VLAN之间有啥不同?什么是VTEP?什么是VNI?VXLAN报文是如何封装的?VXLAN隧道是如何建设的?VXLAN的具体配置命令请参见CloudEngine交换机的产品文档。
什么是VXLAN
VXLAN(Virtual eXtensible Local Area Network,虚构扩大局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)规范技术之一,是对传统VLAN协定的一种扩大。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。
如图1-1所示,VXLAN实质上是一种隧道技术,在源网络设备与目标网络设备之间的IP网络上,建设一条逻辑隧道,将用户侧报文通过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连贯到了一个虚构的二层交换机的不同端口上(可把蓝色虚框示意的数据中心VXLAN网络看成一个二层虚构交换机),能够不便地通信。
图1-1 VXLAN是一种隧道技术
VXLAN曾经成为以后构建数据中心的支流技术,是因为它能很好地满足数据中心里虚拟机动静迁徙和多租户等需要。
为什么须要VXLAN
为什么须要VXLAN呢?这和数据中心服务器侧的虚拟化趋势严密相干,一方面服务器虚拟化后呈现了虚拟机动静迁徙,要求提供一个无障碍接入的网络;另一方面,数据中心规模越发宏大,租户数量激增,须要网络提供隔离海量租户的能力。采纳VXLAN能够满足上述两个要害需要。
虚拟机动静迁徙,要求提供一个无障碍接入的网络
什么是服务器虚拟化技术?
传统的数据中心物理服务器利用率太低,均匀只有10%~15%,节约了大量的电力能源和机房资源,所以呈现了服务器虚拟化技术。如图1-2所示,服务器虚拟化技术是把一台物理服务器虚拟化成多台逻辑服务器,这种逻辑服务器被称为虚拟机(VM)。每个VM都能够独立运行,有本人的操作系统、APP,当然也有本人独立的MAC地址和IP地址,它们通过服务器外部的虚构交换机(vSwitch)与内部实体网络连接。
图1-2 服务器虚拟化示意
通过服务器虚拟化,能够无效地进步服务器的利用率,升高能源消耗,升高数据中心的经营老本,所以虚拟化技术目前失去了宽泛的利用。
什么是虚拟机动静迁徙?
所谓虚拟机动静迁徙,就是在保障虚拟机上服务失常运行的同时,将一个虚拟机零碎从一个物理服务器挪动到另一个物理服务器的过程。该过程对于最终用户来说是无感知的,从而使得管理员可能在不影响用户失常应用的状况下,灵便调配服务器资源,或者对物理服务器进行培修和降级。
在服务器虚拟化后,虚拟机动静迁徙变得常态化,为了保障迁徙时业务不中断,就要求在虚拟机迁徙时,不仅虚拟机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例如TCP会话状态),所以虚拟机的动静迁徙只能在同一个二层域中进行,而不能跨二层域迁徙。
如图1-3所示,传统的二三层网络架构限度了虚拟机的动静迁徙范畴,迁徙只能在一个较小的部分范畴内进行,利用受到了极大的限度。
图1-3 传统的二三层网络架构限度了虚拟机的动静迁徙范畴
为了突破这种限度,实现虚拟机的大范畴甚至跨地区的动静迁徙,就要求把VM迁徙可能波及的所有服务器都纳入同一个二层网络域,这样能力实现VM的大范畴无障碍迁徙。
VXLAN如何满足虚拟机动静迁徙时对网络的要求?
家喻户晓,同一台二层交换机能够实现下挂服务器之间的二层通信,而且服务器从该二层交换机的一个端口迁徙到另一个端口时,IP地址是能够放弃不变的。这样就能够满足虚拟机动静迁徙的需要了。VXLAN的设计理念和指标正是由此而来的。
从上一个大节咱们能够晓得,VXLAN实质上是一种隧道技术,当源和目标之间有通信需要时,便在数据中心IP网络之上创立一条虚构的隧道,通明转发用户数据。而数据中心内互相通信的需要泛滥,这种隧道的建设形式简直是全互联状态能力满足通信需要。
VXLAN能够提供一套方法论,在数据中心IP网络根底上,构建一张全互联的二层隧道虚构网络,保障任意两点之间都能通过VXLAN隧道来通信,并疏忽底层网络的构造和细节。从服务器的角度看,VXLAN为它们将整个数据中心根底网络虚构成了一台微小的“二层交换机”,所有服务器都连贯在这台虚构二层交换机上。而根底网络之内如何转发都是这台“微小交换机”外部的事件,服务器齐全无需关怀。
图1-4 VXLAN将整个数据中心根底网络虚构成了一台微小的“二层交换机”
数据中心租户数量激增,要求提供一个可隔离海量租户的网络
家喻户晓,在传统的VLAN网络中,规范定义所反对的可用VLAN数量只有4000个左右。服务器虚拟化后,一台物理服务器中承载了多台虚拟机,每个虚拟机都有独立的IP地址和MAC地址,相当于接入数据中心的服务器成倍扩充了。另外,私有云或其它大型虚拟化云数据中心动辄需包容上万甚至更多租户,VLAN的能力显然曾经力不从心。
VXLAN如何来解决上述问题呢?VXLAN在VXLAN帧头中引入了相似VLAN ID的网络标识,称为VXLAN网络标识VNI(VXLAN Network ID),由24比特组成,实践上可反对多达16M的VXLAN段,从而满足了大规模不同网络之间的标识、隔离需要。下文咱们会介绍VNI的具体作用。
VXLAN与VLAN之间有何不同
VLAN作为传统的网络隔离技术,在规范定义中VLAN的数量只有4000个左右,无奈满足大型数据中心的租户间隔离需要。另外,VLAN的二层范畴个别较小且固定,无奈反对虚拟机大范畴的动静迁徙。
VXLAN完满地补救了VLAN的上述有余,一方面通过VXLAN中的24比特VNI字段(如图1-5所示),提供多达16M租户的标识能力,远大于VLAN的4000;另一方面,VXLAN实质上在两台交换机之间构建了一条穿梭数据中心根底IP网络的虚构隧道,将数据中心网络虚构成一个巨型“二层交换机”,满足虚拟机大范畴动静迁徙的需要。
尽管从名字上看,VXLAN是VLAN的一种扩大协定,但VXLAN构建虚构隧道的本事曾经与VLAN大同小异了。
上面就让咱们来看下,VXLAN报文到底长啥样。
图1-5 VXLAN报文格式(以外层IP头为IPv4格局为例)
如上图所示,VTEP对VM发送的原始以太帧(Original L2 Frame)进行了以下“包装”:
- VXLAN Header
减少VXLAN头(8字节),其中蕴含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还蕴含VXLAN Flags(8比特,取值为00001000)和两个保留字段(别离为24比特和8比特)。
- UDP Header
VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目标端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。
- Outer IP Header
封装外层IP头。其中,源IP地址(Outer Src. IP)为源VM所属VTEP的IP地址,目标IP地址(Outer Dst. IP)为目标VM所属VTEP的IP地址。
- Outer MAC Header
封装外层以太头。其中,源MAC地址(Src. MAC Addr.)为源VM所属VTEP的MAC地址,目标MAC地址(Dst. MAC Addr.)为达到目标VTEP的门路中下一跳设施的MAC地址。
VXLAN隧道是如何建设的
本节将为您介绍VXLAN隧道的建设过程,并在这个过程中更好地了解VXLAN的工作原理。
什么是VXLAN中的VTEP和VNI
上面让咱们来进一步理解VXLAN的网络模型以及一些常见的概念。如图1-6所示,两台服务器之间通过VXLAN网络进行通信。
图1-6 VXLAN网络模型示意
从上图中能够发现,VXLAN在两台TOR交换机之间建设了一条隧道,将服务器收回的原始数据帧加以“包装”,好让原始报文能够在承载网络(比方IP网络)上传输。当达到目标服务器所连贯的TOR交换机后,来到VXLAN隧道,并将原始数据帧复原进去,持续转发给目标服务器。
另外,VXLAN网络中呈现了一些传统数据中心网络中没有的新元素,如VTEP、VNI等,它们的作用是什么呢?上面将向您介绍这几个新元素。
什么是VXLAN VTEP
如图1-6所示,VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)是VXLAN网络的边缘设施,是VXLAN隧道的终点和起点,VXLAN对用户原始数据帧的封装和解封装均在VTEP上进行。
VTEP是VXLAN网络中相对的配角,VTEP既能够是一**立的网络设备(比方华为的CloudEngine系列交换机),也能够是在服务器中的虚构交换机。源服务器收回的原始数据帧,在VTEP上被封装成VXLAN格局的报文,并在IP网络中传递到另外一个VTEP上,并通过解封转还原出原始的数据帧,最初转发给目标服务器。
VTEP在VXLAN隧道的建设和转发过程中的具体工作,能够参见下文的VXLAN隧道是如何建设的
什么是VXLAN VNI
前文提到,以太网数据帧中VLAN只占了12比特的空间,这使得VLAN的隔离能力在数据中心网络中力不从心。而VNI的呈现,就是专门解决这个问题的。
如[图1-6所示,VNI(VXLAN Network Identifier,VXLAN 网络标识符),VNI是一种相似于VLAN ID的用户标识,一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能间接进行二层通信。如图1-5所示,VXLAN报文封装时,给VNI调配了24比特的长度空间,使其能够反对海量租户的隔离。
VNI在VXLAN隧道的建设和转发过程中的具体工作,能够参见下文的VXLAN隧道是如何建设的
另外,在分布式网关部署场景下,VNI还可分为二层VNI和三层VNI,它们的作用不同:
- 二层VNI是一般的VNI,以1:1形式映射到播送域BD,实现VXLAN报文同子网的转发(详情可参见下文的什么是“同一大二层域”)。
- 三层VNI和VPN实例进行关联,用于VXLAN报文跨子网的转发(三层VNI的工作详情将在另外一篇EVPN相干的文档中开展形容)。
哪些VTEP之间须要建设VXLAN隧道
一条VXLAN隧道是由两个VTEP来确定建设的。数据中心网络中存在很多个VTEP,如图1-7所示,那么哪些VTEP间须要建设VXLAN隧道呢?
图1-7 建设VXLAN隧道示意图(1)
如前所述,通过VXLAN隧道,“二层域”能够冲破物理上的界线,实现大二层网络中VM之间的通信。所以,连贯在不同VTEP上的VM之间如果有“大二层”互通的需要,这两个VTEP之间就须要建设VXLAN隧道。换言之,同一大二层域内的VTEP之间都须要建设VXLAN隧道。
例如,假如图1-7中VTEP_1连贯的VM、VTEP_2连贯的VM以及VTEP_3连贯的VM之间须要“大二层”互通,那VTEP_1、VTEP_2和VTEP_3之间就须要两两建设VXLAN隧道,如图1-8所示。
图1-8 建设VXLAN隧道示意图(2)
什么是“同一大二层域”
上文提到的“同一大二层域”,就相似于传统网络中VLAN(虚构局域网)的概念,只不过在VXLAN网络中,它有另外一个名字,叫做Bridge-Domain,简称BD。
咱们晓得,不同的VLAN是通过VLAN ID来进行辨别的,那不同的BD是如何进行辨别的呢?其实后面曾经提到了,就是通过VNI来辨别的。对于CloudEngine系列交换机而言,BD与VNI是1:1的映射关系,这种映射关系是通过在VTEP设施上配置命令行建设起来的,配置样例如下:
bridge-domain 10 //示意创立一个“大二层播送域”BD,其编号为10 vxlan vni 5000 //示意在BD 10下,指定与之关联的VNI为5000#
VTEP设施会依据以上配置生成BD与VNI的映射关系表,该映射表能够通过命令行查看,如下所示:
<HUAWEI> display vxlan vniNumber of vxlan vni : 1 VNI BD-ID State --------------------------------------- 5000 10 up
有了映射表后,进入VTEP的报文就能够依据本人所属的BD来确定报文在进行VXLAN封装时,该增加哪个VNI标识。那么,报文依据什么来确定本人属于哪个BD呢?
如何确定报文属于哪个BD
这里要先廓清下,VTEP只是交换机承当的一个角色而已,只是交换机性能的一部分。也就是说,并非所有进入到交换机的报文都会走VXLAN隧道(也可能报文就是走一般的二三层转发流程)。所以,咱们在答复“如何确定报文属于哪个BD”之前,必须先要答复“哪些报文要进入VXLAN隧道”。
哪些报文要进入VXLAN隧道?
答复这个问题之前,无妨先让咱们回忆一下VLAN技术中,交换机对于接管和发送的报文是如何进行解决的。报文要进入交换机进行下一步解决,首先得先过接口这一关,能够说接口掌控着对报文的“生杀大权”。传统网络中定义了三种不同类型的接口:Access、Trunk、Hybrid。这三种类型的接口尽管利用场景不同,但它们的最终目标是一样的:一是依据配置来查看哪些报文是容许通过的;二是判断对查看通过的报文做怎么的解决。
其实在VXLAN网络中,VTEP上的接口也承当着相似的工作,只不过在CloudEngine系列交换机中,这里的接口不是物理接口,而是一个叫做“二层子接口”的逻辑接口。相似的,二层子接口次要做两件事:一是依据配置来查看哪些报文须要进入VXLAN隧道;二是判断对查看通过的报文做怎么的解决。在二层子接口上,能够依据须要定义不同的流封装类型(相似于传统网络中不同的接口类型)。CloudEngine系列交换机目前反对的流封装类型有dot1q、untag、qinq和default四种类型:
- dot1q:对于带有一层VLAN Tag的报文,该类型接口只接管与指定VLAN Tag匹配的报文;对于带有两层VLAN Tag的报文,该类型接口只接管外层VLAN Tag与指定VLAN Tag匹配的报文。
- untag:该类型接口只接管不带VLAN Tag的报文。
- qinq:该类型接口只接管带有指定两层VLAN Tag的报文。
- default:容许接口接管所有报文,不辨别报文中是否带VLAN Tag。不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag解决,包含增加、替换或剥离。
除二层子接口外,还能够将VLAN作为业务接入点。将VLAN绑定到播送域BD后,退出该VLAN的接口即为VXLAN业务接入点,进入接口的报文由VXLAN隧道解决。
将二层子接口退出BD
当初咱们再来答复“如何确定报文属于哪个BD”就非常简单了。其实,只有将二层子接口退出指定的BD,而后依据二层子接口上的配置,设施就能够确定报文属于哪个BD啦!
比方图1-9所示的组网,一台虚拟化服务器中有两个不同VLAN的虚拟机VM1(VLAN 10)和VM2(VLAN 20),它们与其余虚拟机通信时须要接入VXLAN网络。此时咱们能够别离在VTEP的物理接口10GE 1/0/1上,别离针对VM1和VM2封装不同的二层子接口,并将其别离退出不同的BD。这样后续VM1和VM2的流量将会进入不同的VXLAN隧道持续转发。
在这个举例中,vSwitch的上行口配置成Trunk模式,且PVID为20。这样vSwitch发给VTEP的报文中,既有带tag的VM1流量,又有untag的VM2流量,此时在VTEP的接入口上创立两个二层子接口,别离配置为dot1q和untag的封装类型。
图1-9 将二层子接口退出BD
上面就基于上图,联合CloudEngine交换机上的配置举例进行阐明。
在CloudEngine交换机的接入物理接口10GE 1/0/1上,别离创立二层子接口10GE 1/0/1.1和10GE 1/0/1.2,并别离配置其流封装类型为dot1q和untag。
interface 10GE1/0/1.1 mode l2 //创立二层子接口10GE1/0/1.1 encapsulation dot1q vid 10 //只容许携带VLAN Tag 10的报文进入VXLAN隧道 bridge-domain 10 //指定报文进入的是BD 10#interface 10GE1/0/1.2 mode l2 //创立二层子接口10GE1/0/1.2 encapsulation untag //只容许不携带VLAN Tag的报文进入VXLAN隧道 bridge-domain 20 //指定报文进入的是BD 20#
VXLAN隧道是怎么建设的
当初,咱们能够来看下VXLAN隧道是怎么建设起来的。一般而言,隧道的建设不外乎手工形式和主动形式两种。
手工形式建设VXLAN隧道
这种形式须要用户手动指定VXLAN隧道的源IP为本端VTEP的IP、目标IP为对端VTEP的IP,也就是人为地在本端VTEP和对端VTEP之间建设动态VXLAN隧道。
对于CloudEngine系列交换机,以上配置是在NVE(Network Virtualization Edge)接口下实现的,配置举例如下:
interface Nve1 //创立逻辑接口NVE 1 source 1.1.1.1 //配置源VTEP的IP地址(举荐应用Loopback接口的IP地址) vni 5000 head-end peer-list 2.2.2.2 vni 5000 head-end peer-list 2.2.2.3#
其中,vni 5000 head-end peer-list 2.2.2.2和vni 5000 head-end peer-list 2.2.2.3的配置,示意属于VNI 5000的对端VTEP有两个,IP地址别离为2.2.2.2和2.2.2.3。依据这两条配置,VTEP上会生成如下所示的一张表:
<HUAWEI> display vxlan vni 5000 verbose BD ID : 10 State : up NVE : 288 Source Address : 1.1.1.1 Source IPv6 Address : - UDP Port : 4789 BUM Mode : head-end Group Address : - Peer List : 2.2.2.2 2.2.2.3 IPv6 Peer List : -
依据上表中的Peer List,本端VTEP就能够晓得属于同一BD(或同一VNI)的对端VTEP都有哪些,这也就决定了同一大二层播送域的范畴。当VTEP收到BUM(Broadcast&Unknown-unicast&Multicast,播送&未知单播&组播)报文时,会将报文复制并发送给Peer List中所列的所有对端VTEP(这就好比播送报文在VLAN内播送)。因而,这张表也被称为“头端复制列表”。当VTEP收到已知单播报文时,会依据VTEP上的MAC表来确定报文要从哪条VXLAN隧道走。而此时Peer List中所列的对端,则充当了MAC表中“出接口”的角色。
在前面的报文转发流程中,你将会看到头端复制列表是如何在VXLAN网络中领导报文进行转发的。
主动形式建设VXLAN隧道
主动形式下VXLAN隧道的建设须要借助于EVPN(Ethernet VPN)协定,这部分内容请参见《什么是EVPN》。
如何确定报文要进哪条隧道?
属于同一BD的VXLAN隧道可能不止一条,比方上文的头端复制列表中,同一个源端VTEP(1.1.1.1)对应了两个对端VTEP(2.2.2.2和2.2.2.3)。那就带来了另一个问题,报文到底应该走哪一条隧道呢?
咱们晓得,根本的二三层转发中,二层转发依赖的是MAC表,如果没有对应的MAC条目,则主机发送ARP播送报文申请对端的MAC地址;三层转发依赖的是FIB表。在VXLAN中,其实也是同样的情理。在下一大节中,将介绍VXLAN网络中报文的转发流程,置信看完上面的内容,对于“如何确定报文要进哪条隧道”的纳闷也就迎刃而解了。
本文分享自华为云社区《华为VXLAN技术介绍:什么是VXLAN-001》,原文作者:The one
点击关注,第一工夫理解华为云陈腐技术~