您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

时间:2020-04-18 09:53:05  来源:  作者:

VxLAN概念

  • VxLAN(Virtual eXtensible Local Area Network):虚拟扩展LAN网络,将VLAN技术进行了延伸。

VxLAN术语

VNI(VXLAN Network Identifier ):用于区分VXLAN段,不同VXLAN段的租户不能直接进行二层通信。一个租户可以有一个或多个VNI,VNI由24比特组成,支持多达16M的租户。

BD(Bridge Domain): 类似传统网络中采用VLAN划分广播域方法,在VXLAN网络中通过BD划分广播域。在VXLAN网络中,将VNI以1:1方式映射到广播域BD,一个BD就表示着一个广播域,同一个BD内的主机就可以进行二层互通。

VTEP(Vxlan Tunnel End Point):VXLAN Tunnel Endpoints 对VXLAN报文进行封装和解封装。VXLAN报文中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。一对VTEP地址就对应着一条VXLAN隧道。在源端封装报文后通过隧道向目的端VTEP发送封装报文,目的端VTEP对接收到的封装报文进行解封装。VTEP可以是服务器也可以是网络交换设备。

VAP(Virtual Access Point): 是VXLAN业务接入点,可以基于VLAN或报文流封装类型接入业务:

1、 基于VLAN接入业务

2、 基于报文流封装类型接入业务

NVE(Network Virtrualization Edge网络虚拟边缘节点): 是实现网络虚拟化功能的网络实体。报文经过NVE封装转换后,NVE间就可基于三层基础网络建立二层虚拟化网络。

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

VxLAN出现的原因

一项新技术的兴起和发展肯定是有原因的,为了解决当下的哪些问题?

  • 我们都知道传统VLAN最大支持4096个(在Ethernet中插入4个字节的VLAN TAG,VLAN ID只有12bit),为了扩充VLAN资源同时保障不产生大的广播域,运营商采用QinQ(802.1q in 802.1q),变向的扩充VLAN资源。而对于大型虚拟化云计算这种动辄上万甚至更多租户的场景,VLAN的隔离能力无法满足。而VxLAN进一步扩充了VLAN资源,因为8个字节的VxLAN Header,其中24bit的VLAN ID(VNI)用来标识不同的二层网络,可以标识16M约1600万个不同的二层网络(租户),有效地解决了云计算中海量租户隔离的问题。
  • 随着IDC的发展,一个物理接口可能挂上百个VM,这样大量的mac表项是小型交换机难以承受的(MAC地址学习是flood-learn方式,是消耗交换机内存的,容易导致MAC地址表溢出,新MAC无法学习到),通过VxLAN技术将这些MAC虚拟封装后就大大缩减了MAC表项(虚拟机的Ethernet Frame被VTEP封装在UDP里面,一个VTEP可以被一个物理主机上的所有虚拟机共用。从交换机的角度,交换机看到的是VTEP之间在传递UDP数据。通常一个物理主机对应一个VTEP,所以交换机的MAC地址表,只需要记录与物理主机数量相当条目就可以了,虚拟化带来的MAC地址表暴增的问题也不存在了。)。
  • 现在不少数据中心IDC(随着公有云服务的兴起),都需要提供多租户的功能(也即-不同用户之间需要保证独立地分配IP和 MAC 地址)。
  • 数据中心大量虚拟机的部署及迁移,需要保证迁移过程不中断业务(IP与MAC绑定保持不变),这就是大二层解决的问题,Vxlan就很好的实现了大二层网络的通信需求(通过overlay技术实现了在L3网络里传输L2数据,使得虚机迁移中不改变IP地址也即迁移不影响业务)。

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

数据中心中虚拟机迁移是常态工作

 
 
 

VxLAN报文

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

(MAC in UDP也即L2 over L4),二层报文用三层协议进行封装,可实现二层网络在三层范围

 
 
 

VxLAN是基于IP网络之上,它采用的是MAC in UDP技术,其实它与GRE/IPSEC等tunnel技术类似,这种封装技术对中间网络没有特殊要求,只要可以识别IP报文就可以传送。

VTEP对VM发送的原始以太帧进行“封装”,从上至下封装如下所示:

  • 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地址

  • 当目的IP为接收端的VTEP的IP时,假如不知道这个IP地址,则需要执行ARP请求来获取,步骤如下:

1.目标IP被替换成与源虚拟机具有相同VNI的多播组IP地址;

2. 所有VTEP端都接收该多播报文,VTEP查找所在主机上的全部虚拟机来匹配源虚拟机的Inner 目的MAC。

3. 目标VTEP的虚拟机会回应该多播包,从而获得目标VTEP的IP地址。

4. 发送端VTEP添加VNI-VTEP-虚拟机MAC的映射关系到自己的VXLAN表中,以避免再次组播学习。

VxLAN的部署

  • VxLAN存在underlay及overlay的概念,它是在原有的网络架构上再overlay新增了一层网络(不影响原有网络)。因为是架构在IP层之上两站点只需要IP可达,就可以建立VxLAN隧道(部署VxLAN)。

对于CE系列交换机而言,BD与VNI是1:1的映射关系,这种映射关系是通过在VTEP上配置命令行建立起来的。配置如下:

#

bridge-domain 20 //表示创建一个“大二层广播域”BD,其编号为20

vxlan vni 2000 //表示在BD 20下指定与之关联的VNI为2000

#

VTEP会根据以上配置生成BD与VNI的映射关系表,该映射表可以通过命令行查看,如下所示:

<HUAWEI> display vxlan vni

Number of vxlan vni : 1

VNI BD-ID State

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

5000 10 up

有了映射表后,进入VTEP的报文就可以根据自己所属的BD来确定报文封装时该添加哪个VNI。那么,报文根据什么来确定自己属于哪个BD呢?

  • 报文根据什么去确定自己属于哪个BD呢?

二层子接口或者物理接口根据配置来检查哪些报文需要进入VXLAN隧道,同时对检查通过的报文做怎样的处理。

华为的交换机为例:

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

default类型允许所有报文进入VXLAN隧道,dot1q和untag类型的只允许某一类报文进入。

 
 
 
  1. 经过同一物理接口的报文既有带VLAN Tag的,又有不带VLAN Tag的,并且他们各自要进入不同的VXLAN隧道,则可以在该物理接口上同时创建dot1q和untag类型的二层子接口。
  2. default类型(应用于均需要走同一条VXLAN隧道的场景,下挂的VM全部属于同一BD)的子接口允许所有报文进入VXLAN隧道,dot1q和untag类型的子接口只允许某一类报文进入。也即意味着前者不可与后者在同一子接口。(不然报文到了接口之后如何判断要进入哪个二层子接口
  • VxLAN隧道的建立:分手动和自动建立

对于CE系列交换机,以上配置是在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的对端VTEP有两个,IP地址分别为2.2.2.2和2.2.2.3

<HUAWEI> display vxlan vni 5000 verbose

BD ID : 10

State : up

NVE : 288

Source : 1.1.1.1

UDP Port : 4789

BUM Mode : head-end

Group Address : -

Peer List : 2.2.2.2 2.2.2.3 //同一大二层广播域的范围,属于同一个BD 10域的范围。

//当VTEP收到BUM(Broadcast&Unknown-unicast&Multicast,广播&未知单播&组播)报文时,会将报文复制并发送给Peer List中所列的所有对端VTEP(这就好比广播报文在VLAN内广播)。

//这张表也被称为“头端复制列表”。当VTEP收到已知单播报文时,会根据VTEP上的MAC表来确定报文要从哪条VXLAN隧道走。而此时Peer List中所列的对端,则充当了MAC表中“出接口”的角色。

  • 子网VM互通

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

IP_A、IP_B与IP_C属于同一子网需要互通。

 
 
 

1、同子网VM互通组网图

ARP请求报文转发流程

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

ARP广播去获取对端MAC信息

 
 
 

ARP应答报文转发流程

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

arp应答

 
 
 

2、不同子网互通(借助三层网关,网关不在一个设备还得进行路由)

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

这里三层网关在一台设备上。

 
 
 

不同子网VM互通报文转发流程:

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

封装外层MAC及外层IP包头

 
 
 

1、VM_A先将数据报文发送给网关。报文的源MAC为MAC_A,目的MAC为网关BDIF 10的MAC_10,源IP地址为IP_A,目的IP为IP_B。

2、VTEP_1收到数据报文后,识别此报文所属的VNI(VNI 5000),并根据MAC表项对报文进行封装。可以看到,这里封装的外层源IP地址为本地VTEP的IP地址(IP_1),外层目的IP地址为对端VTEP的IP地址(IP_3);外层源MAC地址为本地VTEP的MAC地址(MAC_1),而外层目的MAC地址为去往目的IP的网络中下一跳设备的MAC地址。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。

3、报文进入VTEP_3,VTEP_3对报文进行解封装,得到VM_A发送的原始报文。

4、VTEP_3发现该报文的目的MAC为本机BDIF 10接口的MAC,而目的IP地址为IP_B(10.1.20.1),所以会根据路由表查找到IP_B的下一跳。

5、发现下一跳为10.1.20.10,出接口为BDIF 20。此时VTEP_3查询ARP表项,并将原始报文的源MAC修改为BDIF 20接口的MAC(MAC_20),将目的MAC修改为VM_B的MAC(MAC_B)。

6、报文到BDIF 20接口时,识别到需要进入VXLAN隧道(VNI 6000),所以根据MAC表对报文进行封装。这里封装的外层源IP地址为本地VTEP的IP地址(IP_3),外层目的IP地址为对端VTEP的IP地址(IP_2);外层源MAC地址为本地VTEP的MAC地址(MAC_3),而外层目的MAC地址为去往目的IP的网络中下一跳设备的MAC地址。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。

7、报文到达VTEP_2后,VTEP_2对报文进行解封装,得到内层的数据报文,并将其发送给VM_B。

同理VM_B回应VM_A的流程与上述过程类似。

VXLAN网络与非VXLAN网络之间的互通,当然也得借助于三层网关(SVI接口)。实现与上图的不同之处在于:报文在VXLAN网络侧会进行封装,而在非VXLAN网络侧不需要进行封装。报文从VXLAN侧进入网关并解封装后,就按照普通的单播报文发送方式进行转发。

常见的组网方式:

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

用户希望同一部门VM之间、不同部门VM之间,VM与Internet之间均可相互访问。

 
 
 
  • 相同子网互通

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

此时Spine只作为VXLAN报文的转发节点,不感知VXLAN隧道的存在,可以是任意的三层网络设备。

 
 
 
  • 不同子网的互通,分集中式与分布式

集中式:

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

Leaf1、2通过与Spine建立VxLAN隧道实现不同BD的互通。

 
 
 

 

分布式:转发不经过Spine,缩减Spine的转发压力(在Leaf下挂大量VM的情况下建议使用分布式转发)

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

Leaf1和Leaf2作为VXLAN网络的VTEP,均部署VXLAN三层网关。三层网关之间跑比如BGP动态协议来建立VxLAN隧道

 
 
 

Leaf1和Leaf2作为VXLAN网络的VTEP,在Leaf1和Leaf2上部署VXLAN三层网关。两个VXLAN三层网关之间通过BGP动态建立VXLAN隧道,并通过BGP的remote-nexthop属性发布本网关下挂的主机路由信息给其他BGP邻居,从而实现跨Leaf节点不同部门VM之间的相互通信。

Leaf作为VXLAN三层网关时,只学习其下挂终端租户的表项,而不必像集中式三层网关一样,需要学习网络中所有终端租户的表项,从而解决了集中式三层网关带来表项瓶颈问题。

VxLAN组网的冗余可靠性组网拓扑

整体组网可靠性拓扑如下:

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

确保不出现单点故障,链路冗余,设备冗余。

 
 
 

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

核心层:通过分别与Spine建立双隧道,保障上行的隧道的冗余性

 
 
 

 

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)

采用交换机堆叠(华三称为IRF)技术保证接入的冗余性

 
 
 

随着SDN(软件定义网络)及NFV(网络功能虚拟化)技术的成熟,我们的VxLAN部署可以进行控制器方式来部署,比如华为的SNC控制器方式和AC控制器方式:

网络工程师你真的理解VxLAN技术吗?(原来二层网络可以这么玩)
 
 
 
  • SNC控制器方式可通过SNC控制器动态建立VXLAN隧道。无需进行VXLAN配置。VXLAN隧道的创建以及指导报文转发的表项,均由SNC控制器通过OpenFlow协议向转发器下发。
  • 转发器(交换机)需预先完成部分基础配置,AC控制器通过NETCONF(南向接口)协议向转发器下发建立VXLAN隧道的配置,通过OpenFlow协议控制报文在隧道中的转发。

以上是关于VxLAN技术的全部内容,作为网络工程师应该多了解网络前沿技术(比如VxLAN、vBRAS、SD-WAN、Segment-routing等)。不积跬步无以至千里,大家一起努力。

特别申明:本文根据互联网相关VxLAN文章整理而来。

对网络前沿技术感兴趣的可加关注或者评论区留言讨论。



Tags:VxLAN   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
采用VXLAN实现不同站点主机跨三层网络实现二层互通:PCA和PCB分别模拟两个不同站点的主机; PCA和PCB处在不同VLAN,但处于同一个VXLAN; 通过配置VXLAN实现PCA和PCB之间跨三层的二...【详细内容】
2021-11-05  Tags: VxLAN  点击:(49)  评论:(0)  加入收藏
前段时间刚部署好了eNSP,紧接着又看了VXLAN的文档,现在我们大概已经知道VXLAN隧道的建立方式分为手工创建和自动创建,放在华为设备上,配置方式可以分为静态方式和EVPN的方式。那...【详细内容】
2021-07-06  Tags: VxLAN  点击:(111)  评论:(0)  加入收藏
组网需求企业在不同的数据中心中都拥有自己的VM,服务器1上的VM1属于VLAN 30,服务器2上的VM1属于VLAN 20,服务器1和服务器2位于相同网段。现需要配置通过VXLAN实现相同网段用户...【详细内容】
2020-12-23  Tags: VxLAN  点击:(435)  评论:(0)  加入收藏
1.两张图区分VLAN与VXLAN的功能实现区别1.1 VLANVLAN的 物理与逻辑关系如上图所示,VLAN的实现是通过二层trunk接口互联,通过802.1Q标签区分不同VLAN二层接口,形成逻辑上的两台...【详细内容】
2020-10-29  Tags: VxLAN  点击:(1134)  评论:(0)  加入收藏
VxLAN概念 VxLAN(Virtual eXtensible Local Area Network):虚拟扩展LAN网络,将VLAN技术进行了延伸。VxLAN术语VNI(VXLAN Network Identifier ):用于区分VXLAN段,不同VXLAN段的租户...【详细内容】
2020-04-18  Tags: VxLAN  点击:(96)  评论:(0)  加入收藏
VXLAN 通信过程对于处于同一个VXLAN的两台虚拟终端,其通信过程可以概括为如下的步骤:1. 发送方向接收方发送数据帧,帧中包含了发送方和接收方的虚拟MAC地址。2. 发送方连接的VT...【详细内容】
2020-04-16  Tags: VxLAN  点击:(87)  评论:(0)  加入收藏
VXLAN概述作为云计算核心技术之一的“服务器虚拟化”已经被数据中心普遍应用。随着企业业务的发展,虚拟机数量的快速增长和虚拟机迁移已成为一个常态性业务。由此也给传统网...【详细内容】
2019-07-30  Tags: VxLAN  点击:(263)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(4)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条