(万字超详细-网络版本)VXLAN详解:概念、架构、原理、搭建过程、常用命令与实战案例

CloudJourney 2024-08-19 11:37:11 阅读 77

引言

       云计算因其在系统利用率高、人力/管理成本低、灵活性和可扩展性强等方面的优势,已成为现代企业IT建设的主流形态。在云计算环境中,虚拟化技术广泛应用于标准部署方案中。这种服务器虚拟化技术的普及极大地提升了数据中心的计算密度,同时为了实现业务的灵活变更,虚拟机(VM)需要能够在网络中自由迁移。

VXLAN 的重要性           

      随着云计算技术的发展,虚拟化技术因其降低IT成本、提高业务部署灵活性以及降低运维成本等优势,越来越受到企业的青睐。企业在选择虚拟化架构后,会将业务以虚拟机的形式部署在服务器集群中。在这种虚拟化/云计算环境中,虚拟机可以在集群内任意迁移,这意味着相同业务的虚拟机可能运行在不同的服务器上,甚至同一个虚拟机可能在不同的物理服务器上运行。

      VXLAN(Virtual eXtensible Local Area Network)作为一种重要的Overlay技术,能够解决传统数据中心面临的这些关键问题,包括虚拟机迁移范围有限、虚拟机数量受限以及网络隔离能力不足等问题。VXLAN 在数据中心的SDN(软件定义网络)场景中得到广泛应用,尤其是在网络虚拟化的环境中。

传统网络面临的问题

1. 虚拟机规模受限

服务器虚拟化后,虚拟机数量相较于物理机数量大幅增加,但接入侧的二层设备MAC地址表规格较小,无法满足快速增长的虚拟机数量。

2. 网络隔离能力有限

VLAN(虚拟局域网)标签只有12位,无法满足大型虚拟化云计算服务中租户数量远超VLAN数量的需求。传统的二层网络中的VLAN无法满足网络动态调整的需求。

3. 虚拟机迁移范围受限

在传统的二层网络中,虚拟机迁移必须发生在同一二层网络中,这限制了虚拟机迁移的范围。

VXLAN 的解决方案

      VXLAN 实质上是一种VPN(虚拟专用网络)技术,能够在任意路由可达的物理网络(Underlay网络)上叠加二层虚拟网络(Overlay网络)。它通过VXLAN网关之间的VXLAN隧道实现网络内部的互通,同时也可以与传统非VXLAN网络互通。

      VXLAN 使用MAC in UDP的封装方式,将以太网帧封装在UDP报头内,并通过IP报头在Underlay网络中传输,从而延伸二层网络。由于三层网络没有网络结构限制,VXLAN 具有大规模扩展能力,使虚拟机的热迁移不受限制。

1. 解决虚拟机规模受限问题

        VXLAN 将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC地址作为外层头进行封装。这意味着网络中除了VXLAN网络边缘设备外,其他设备无需识别虚拟机的MAC地址,从而减轻了设备的MAC地址学习压力,提高了设备性能。

2. 解决网络隔离能力有限问题

       VXLAN 引入了类似VLAN ID的用户标识(VNI),由24位组成,支持多达1600万个VXLAN段的网络隔离,满足了大规模租户的隔离需求。

3. 解决虚拟机迁移范围受限问题

       VXLAN 允许同一网段的虚拟机即使物理位置不在同一二层网络中,从逻辑上看,也如同处于同一二层域。这意味着VXLAN技术在三层网络之上构建了一个虚拟的大二层网络。

      那我们先介绍一下,Underlay以及Overlay,在网络虚拟化和VXLAN的上下文中,Underlay网络Overlay网络是两个关键概念,它们分别代表了网络架构中的物理层和逻辑层。下面是对这两个概念的详细介绍:

Underlay 网络

Underlay网络是指物理网络基础设施,它包括所有用于构建数据中心或企业网络的实际硬件设备和物理链路。Underlay网络负责提供基础的网络连接和数据传输服务,为Overlay网络提供支持。

特点与功能:

物理基础设施:Underlay网络由物理服务器、交换机、路由器和连接它们的物理链路组成。它负责实际的数据传输和网络连接。IP 路由:Underlay网络使用传统的IP路由协议(如OSPF、BGP)来管理数据包在网络中的转发和路由。这些协议帮助确定数据包的最佳路径,并在网络中进行传输。网络拓扑:Underlay网络的拓扑结构决定了物理设备如何互联。这种拓扑可能是星形、环形、网状等,取决于网络设计和需求。承载能力:Underlay网络必须具备足够的带宽和低延迟,以支持Overlay网络中流量的高效传输。它的稳定性和性能直接影响Overlay网络的表现。硬件依赖:Underlay网络的性能和容量受到物理硬件的限制。升级或更改网络配置通常需要物理设备的更换或调整。

Overlay 网络

     Overlay网络是建立在Underlay网络之上的虚拟网络层,它通过虚拟化技术创建逻辑网络,使得网络管理和配置更加灵活和可扩展。Overlay网络通常利用Underlay网络提供的基础设施来实现数据包的封装和转发。

特点与功能:

虚拟化:Overlay网络通过虚拟化技术将虚拟网络逻辑上叠加到物理网络之上。例如,VXLAN通过在Underlay网络上建立隧道,创建一个虚拟的二层网络。封装技术:Overlay网络使用封装技术将虚拟网络中的数据包封装在Underlay网络的传输协议中。VXLAN使用MAC-in-UDP的封装方式,将虚拟机的数据包封装在UDP报头中,并通过IP协议在Underlay网络中传输。灵活性:Overlay网络可以跨越不同的物理网络和地理位置,提供一致的虚拟网络体验。它支持虚拟机的迁移和动态网络调整,而不受物理网络限制。网络隔离:Overlay网络可以提供更强的网络隔离能力。例如,VXLAN通过VNI(VXLAN Network Identifier)实现多租户隔离,支持多个虚拟网络的并存。简化配置:通过Overlay网络,网络管理员可以在虚拟层中配置和管理网络,而无需对Underlay网络进行频繁的调整。这使得网络的扩展和变更变得更加简单和高效。

Underlay 和 Overlay 的关系

支持与依赖:Underlay网络为Overlay网络提供基础设施支持。Overlay网络依赖于Underlay网络的稳定性和性能来实现其虚拟化功能。透明性:从Overlay网络的角度来看,Underlay网络是透明的。Overlay网络通过封装和隧道技术将数据传输在Underlay网络中,而不需要Overlay网络的参与者了解Underlay网络的详细信息。互补性:Underlay网络和Overlay网络共同工作,提供了一个强大且灵活的网络解决方案。Underlay网络提供了物理连接和路由能力,而Overlay网络提供了虚拟化和逻辑配置能力。

      Overlay网络通过VXLAN在Underlay网络的基础上构建了一个虚拟化的逻辑网络,具有独立的转发平面和控制协议。对于连接在VXLAN隧道端点之外的设备,Underlay物理网络对其是透明的。

       Underlay网络由各种物理网络设备构成,是Overlay网络的承载基础。它提供Overlay网络所需的可达性和可靠性。Underlay网络使用独立的控制平面协议(如OSPF或eBGP)和转发平面协议(通常是IPv4),并且与Overlay网络逻辑隔离,对Overlay网络的路由信息不做感知。

VXLAN Overlay网络

VXLAN Overlay网络根据VXLAN隧道端点设备的不同形态,可以分为以下三种类型:

Network Overlay

在这种类型中,VXLAN隧道的两个端点都是物理交换机。Network Overlay进一步分为集中式网关和分布式网关两类:

集中式网关:所有VXLAN的终端设备集中在少数几个网关上。分布式网关:VXLAN的终端设备分布在多个网关上,以实现更高的灵活性和扩展性。Host Overlay

在这种类型中,VXLAN隧道的两个端点都是虚拟交换机。此时,物理交换机(如Spine和Leaf)仅负责IP报文的高速转发,不参与VXLAN的具体处理。Hybrid Overlay

在Hybrid Overlay中,VXLAN隧道的端点既可以是虚拟交换机,也可以是物理交换机。这种类型结合了Network Overlay和Host Overlay的特点,提供更大的灵活性和适应性。

Overlay协议的发展

       为了满足云数据中心中多租户隔离和虚拟机迁移的需求,各大厂商一直在寻找性能最优且应用灵活的Overlay协议。VXLAN(虚拟扩展局域网),如RFC 7348中所述,是一种有效的解决方案。

       早期的VXLAN部署方式较为静态,需要手动创建VXLAN隧道,配置工作量大。此外,VXLAN本身没有控制平面,其VTEP(VXLAN Tunnel End Point)发现和主机信息收集通过数据平面的流量泛洪实现,这在数据中心网络中产生了大量泛洪流量。

       为了解决这些问题,VXLAN与EVPN(Ethernet Virtual Private Network,以太网虚拟私有网络)相结合,实现在VXLAN隧道的自动创建、VTEP的自动发现以及主机信息的相互通告。这种结合优化了网络的性能和管理效率。

       此外,为了进一步简化控制与部署,引入了SDN(软件定义网络)控制器。控制器通过NETCONF协议管理设备,实现Overlay网络的自动创建,并与云平台协同,支持业务和网络的自动化部署。

 VXLAN 基本概念

NVE (Network Virtualization Edge) 

      NVE是实现网络虚拟化功能的网络设备,可以是硬件交换机或虚拟交换机。它在三层网络上构建二层虚拟网络并运行VXLAN。图中的SW1和SW2都是NVE设备。

VTEP (VXLAN Tunnel Endpoints) 

     VTEP是VXLAN隧道端点,位于NVE中,负责VXLAN报文的封装和解封装。VXLAN报文的外层IP头部包含源VTEP的IP地址和目的VTEP的IP地址。

VNI (VXLAN Network Identifier) 

     - L2 VNI:类似于VLAN ID,用于标识二层广播域,不同广播域的虚拟机无法直接进行二层通信。

- L3 VNI:用于标识VPN实例,支持跨子网转发。一个租户可以有一个或多个VNI,VNI长度为24位,支持多达1600万个租户。

BD (Bridge Domain) 

    BD在VXLAN中类似于传统网络中的VLAN,用于划分广播域。每个BD与VNI以1:1方式映射,同一BD内的终端可以进行二层通信。

业务接入VXLAN网络 

- 二层子接口方式:例如,在SW1创建二层子接口关联广播域BD10,该子接口下的流量会被注入到BD10。

- VLAN绑定方式:例如,在SW2将VLAN10与广播域BD10关联,所有VLAN10的流量会被注入到BD10。

二层(L2)网关 

用于实现VXLAN网络内部的二层流量转发,以及不同子网终端的通信。

三层(L3)网关 

     VBDIF (Virtual Bridge Device Interface) 用于处理VXLAN网络内终端的跨子网通信和对外部网络的访问。

     类似于传统网络中的VLANIF,VBDIF在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。它允许不同网段用户通过VXLAN网络通信,及VXLAN与非VXLAN网络之间的互通,也支持二层网络接入三层网络。

 网关类型

集中式网关 

L3网关部署在一台设备上,所有跨子网的流量都通过该设备转发,实现集中管理。

- 优点:简化了网关的部署和管理。

- 缺点:可能存在转发路径非最优和ARP表项规格瓶颈的问题。

分布式网关 

在这种模式下,VTEP设备同时充当L2和L3网关。非网关节点对VXLAN隧道不感知,仅转发VXLAN报文。

- 优点:解决了集中式网关的ARP表项瓶颈问题,支持大规模网络扩展。

- 缺点:相对复杂,配置和实现较为复杂。

 VXLAN在数据中心的应用

     在数据中心中,常采用Spine-Leaf架构结合VXLAN。推荐使用分布式网关,其中Spine节点负责路由转发但不处理VXLAN,Leaf节点负责资源接入和VXLAN的封装与解封装。整个数据中心的业务流量由VXLAN承载。

VXLAN 隧道的建立

VXLAN隧道由一对VTEP(VXLAN Tunnel Endpoints)定义。报文在VTEP设备上封装后,通过VXLAN隧道在三层网络中进行传输。只要VXLAN隧道两端的VTEP在三层网络中是可达的,VXLAN隧道就可以成功建立。

VXLAN隧道的创建方式分为两种:

静态隧道:通过手动配置本端和远端的VNI、VTEP IP地址以及头端复制列表(head-end peer-list)来建立隧道。动态隧道:通过BGP EVPN协议动态建立VXLAN隧道。VTEP之间建立BGP EVPN对等体,并利用BGP EVPN路由交换VNI和VTEP IP地址信息,实现VXLAN隧道的自动创建。

静态VXLAN隧道

静态VXLAN隧道的建立完全依赖于手动配置。只要VXLAN隧道两端的VTEP IP地址在三层路由中可达,就可以成功建立VXLAN隧道。

VXLAN MAC地址表项

VXLAN在Overlay网络中实现二层转发,依赖于MAC地址表项来进行单播数据帧的转发。VTEP设备会将数据帧的源MAC地址添加到对应BD的MAC地址表中,并记录出接口。这个表项用于指导发往本VTEP连接终端的数据帧的转发。

MAC地址动态学习

在VXLAN网络中,为了转发来自远端VTEP设备的数据帧,需要首先学习到远端设备的MAC地址。这一过程与传统MAC地址表形成过程类似,主要依靠主机之间的报文交互,通常通过ARP报文来建立MAC地址表项。

例子:PC1与PC2的通信过程

ARP请求

PC1向PC2发送ARP请求广播帧,询问PC2的MAC地址。SW1收到该ARP请求广播帧,判断流量所属的BD ID、VXLAN隧道和VNI,学习PC1的MAC地址,将其与BD ID和接收接口绑定。SW1将ARP请求帧封装为VXLAN报文,并按头端复制列表转发。SW2解封装VXLAN报文,学习PC1的MAC地址,并将ARP请求广播到本地广播域,PC2收到并学习PC1的ARP信息。PC2发送单播的ARP响应,SW2将其封装为VXLAN报文,发送到远端VTEP(SW1)。SW1解封装VXLAN报文,记录PC2的MAC地址到MAC地址表,并将数据帧转发给PC1。结果

PC1和PC2相互学习到对方的ARP信息,SW1和SW2也学习到相应的MAC地址信息。

跨子网单播报文转发

当PC1希望与PC2通信,并发现对端不在同一子网时,报文将发送给网关进行转发。

报文封装

PC1发送的数据帧的目的MAC地址为网关MAC(00AB-09FF-1111)。SW1收到该帧后,通过L2查表发现出接口为远端VTEP(L3网关),将报文封装为VXLAN报文(VNI=1000)后发送到SW3。L3转发

SW3解封装VXLAN报文后,发现目的MAC为自身接口VBDIF10的MAC地址,执行L3查表转发。SW3查找路由表,找到目的IP(192.168.2.1)与接口VBDIF20匹配,查找ARP表项确定目的MAC,并从MAC地址表确定出接口。SW3将报文封装为VXLAN报文,并发送到远端VTEP(2.2.2.2)。最终转发

SW2收到报文后解封装VXLAN,发现目的MAC地址不在本地接口中,执行L2查表,根据MAC地址表将报文从本地接口转发出去。

练习实战-1

同子网互访

实验要求:

两个两台交换机配置VXLAN隧道,实现相同网段两台PC之间的互访。

 

实际的拓扑图如下:

配置如下:

配置基础IP地址:,完成基本链路通信

PC1:

PC2:

SW01:

<code>以下是SW01的交换机配置

Please configure the login password (8-16)

Enter Password:

Confirm Password:

Info: Save the password now. Please wait for a moment.

Info: The max number of VTY users is 5, the number of current VTY users online is 0, and total number of terminal users online is 1.

The current login time is 2024-07-28 12:21:27.

<HUAWEI>sys

Enter system view, return user view with return command.

[~HUAWEI]sysname SW01 //修改设备的主机名

[*HUAWEI]commit

[~SW01]

[~SW01]int loopback 1 //添加loopback接口

[*SW01-LoopBack1]ip address 1.1.1.1 32 配置loopback接口IP地址,后续充当VTEP的地址

[*SW01-LoopBack1]quit

[*SW01]int GE 1/0/1

[*SW01-GE1/0/1]undo portswitch //取消二层口,配置三层IP地址

[*SW01-GE1/0/1]ip address 10.0.0.1 30

[*SW01-GE1/0/1]quit

[*SW01]ip route-static 2.2.2.2 32 10.0.0.2 //打通跟SW02looback地址的通信

[*SW01]commit

SW02:同理

以下是SW02的配置:

Please press "Enter" to start command line

eNSP Lite can only be used for practice.------

This device is an emulator and does not reflect a physical device model.

Some functions and commands may not supported.

Please read the feature list carefully before using.

----------------------------------------------

User interface con0 is available

Please configure the login password (8-16)

Enter Password:

Confirm Password:

Info: Save the password now. Please wait for a moment.

Info: The max number of VTY users is 5, the number of current VTY users online is 0, and total number of terminal users online is 1.

The current login time is 2024-07-28 12:26:41.

<HUAWEI>sys

Enter system view, return user view with return command.

[~HUAWEI]sysname SW02

[*HUAWEI]commit

[~SW02]int loopback 1

[*SW02-LoopBack1]ip address 2.2.2.2 32

[*SW02-LoopBack1]quit

[*SW02]int GE 1/0/1

[*SW02-GE1/0/1]undo portswitch

[*SW02-GE1/0/1]ip address 10.0.0.2 30

[*SW02-GE1/0/1]quit

[*SW02]ip route-static 1.1.1.1 32 10.0.0.1

[*SW02]commit

测试批次能否正常通信:

 建立静态VXLAN隧道:

SW01

<code>[~SW01]bridge-domain 1 //创建bd

[*SW01-bd1]vxlan vn

[*SW01-bd1]vxlan vni ?

INTEGER<1-16777215> Value of VXLAN network identifier

[*SW01-bd1]vxlan vni 1 //在BD中绑定VNI

[*SW01-bd1]quit

[*SW01]int Nve ? //创建NVE接口

<1-1> Nve interface number

[*SW01]int Nve 1

Info: Ensure that the IP addresses and MAC addresses of the NVE interfaces on Devices are the same, as they are dual-active gateways using M-LAG.

[*SW01-Nve1]source ?

X.X.X.X IP address

X:X::X:X IPv6 address

[*SW01-Nve1]source 1.1.1.1 //配置VETP的IP地址

[*SW01-Nve1]vni 1 ?

flood-vtep Flood vtep IP address

head-end Head end mode

mcast-group Mcast group mode

reserved Reserved

<cr>

[*SW01-Nve1]vni 1 head-end peer-list 2.2.2.2 //跟SW02配对,本端NVE将根据此列表复制并转发报文

[*SW01-Nve1]commit 确定提交配置

情况验证:

SW02:配置同理

<code>[~SW02]bridge-domain 1

[*SW02-bd1]vxlan vni 1

[*SW02-bd1]quit

[*SW02]int Nve 1

Info: Ensure that the IP addresses and MAC addresses of the NVE interfaces on Devices are the same, as they are dual-active gateways using M-LAG.

[*SW02-Nve1]sou

[*SW02-Nve1]source 2.2.2.2

[*SW02-Nve1]vni 1 head-end peer-list 1.1.1.1

[*SW02-Nve1]commit

[~SW02-Nve1]

配置业务接入:

SW01配置PC1接入静态VXLAN隧道:

<code>[~SW01]int GE 1/0/2.1 mode l2

[*SW01-GE1/0/2.1]commit

[~SW01-GE1/0/2.1]encapsulation untag

Warning: To prevent unpredictable results, ensure that a main interface is not configured before you configure the untag or default mode for its sub-interface.

[*SW01-GE1/0/2.1]bridge-domain 1

[*SW01-GE1/0/2.1]commit

SW02配置PC2接入静态VXLAN隧道:

[~SW02] int GE 1/0/2.1 mode l2

[*SW02-GE1/0/2.1]encapsulation untag //封装的方式为untag,如果想加VLAN可以通过dot1q vid xx

Warning: To prevent unpredictable results, ensure that a main interface is not configured before you configure the untag or default mode for its sub-interface.

[*SW02-GE1/0/2.1]bridge-domain 1 //绑定BD

[*SW02-GE1/0/2.1]commit

结果验证:

 效果呈现。

练习实战-2 

配置案例:不同子网互访 (集中式网关) 

 

这次不详细讲解了,附加配置如下:

SW01配置如下:

<code>[~SW03]display current-configuration

#

interface GE1/0/1

undo portswitch

ip address 10.0.0.1 255.255.255.252

#

interface GE1/0/2

#

interface GE1/0/2.1 mode l2

encapsulation untag

bridge-domain 100

#

interface GE1/0/3

#

interface LoopBack1

ip address 1.1.1.1 255.255.255.255

#

interface Nve1

source 1.1.1.1

vni 100 head-end peer-list 3.3.3.3

#

interface NULL0

#

ip route-static 3.3.3.3 255.255.255.255 10.0.0.2

 SW02配置如下:

[~SW04]display current-configuration

#

bridge-domain 200

vxlan vni 200

#

aaa

authentication-scheme default

authentication-mode local

authorization-scheme default

authorization-mode local

accounting-scheme default

accounting-mode none

local-aaa-user password policy administrator

domain default

authentication-scheme default

accounting-scheme default

domain default_admin

authentication-scheme default

accounting-scheme default

#

license

#

interface MEth0/0/0

ip binding vpn-instance _management_vpn_

#

interface GE1/0/1

undo portswitch

ip address 20.0.0.2 255.255.255.252

#

interface GE1/0/2

#

interface GE1/0/2.1 mode l2

encapsulation untag

bridge-domain 200

#

interface GE1/0/3

interface LoopBack1

ip address 2.2.2.2 255.255.255.255

#

interface Nve1

source 2.2.2.2

vni 200 head-end peer-list 3.3.3.3

#

interface NULL0

#

ip route-static 3.3.3.3 255.255.255.255 20.0.0.1

#

SW03配置如下:

[~SW05]display current-configuration

!Software Version V100R022C00

#

bridge-domain 100

vxlan vni 100

#

bridge-domain 200

vxlan vni 200

#

interface Vbdif100

ip address 192.168.1.254 255.255.255.0

#

interface Vbdif200

ip address 192.168.2.254 255.255.255.0

#

interface MEth0/0/0

ip binding vpn-instance _management_vpn_

#

interface GE1/0/1

undo portswitch

ip address 10.0.0.2 255.255.255.252

#

interface GE1/0/2

undo portswitch

ip address 20.0.0.1 255.255.255.252

#

interface GE1/0/3

#

interface LoopBack1

ip address 3.3.3.3 255.255.255.255

#

interface Nve1

source 3.3.3.3

vni 100 head-end peer-list 1.1.1.1

vni 200 head-end peer-list 2.2.2.2

#

interface NULL0

#

ip route-static 1.1.1.1 255.255.255.255 10.0.0.1

ip route-static 2.2.2.2 255.255.255.255 20.0.0.2

#

效果呈现:

参考资料,华为VXLAN资料,制作不易,希望宝子们点赞+关注,超过200个赞,写一篇BGP-EVPN+VXLAN的配置 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。