VXLAN基础介绍

news2024/11/29 22:45:52

VXLAN简介

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

  •  VXLAN特性在本质上属于一种VPN技术,能够在任意路由可达的网络上叠加二层虚拟网络,通过VXLAN网关实现VXLAN网络内部的互通,同时,也可以实现与传统的非VXLAN网络的互通。

  •  VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且路由网络无网络结构限制,具备大规模扩展能力。

VXLAN网络架构

VXLAN通过将原主机发出的数据包封装在UDP中,并使用物理网络的IP、MAC作为外层头进行封装,然后在IP网络上传输,到达目的地后由隧道终结点解封装并将数据发送给目标主机。

类似于传统的VLAN网络,VXLAN网络也有VXLAN网络内互访和VXLAN网络间互访。

VXLAN网络内互访

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

图1 VXLAN网络内互访

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

  • 网络标识VNI(VXLAN Network Identifier)类似于传统网络中的VLAN ID,用于区分VXLAN段,不同VXLAN段的租户不能直接进行二层通信。VNI由24比特组成,支持多达16M的租户。

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

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

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

  • 基于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所示,所有跨子网的流量都经过三层网关进行转发,实现流量的集中管理。

图2 VXLAN集中式网关部署-网络间互访

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网络时支持分布式网关。

图3 VXLAN分布式网部署网络间互访

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

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

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

与VLAN对比

VXLAN与VLAN的差别如下表所示:

表1 VXLAN网络与传统VLAN网络对比

对比项

VLAN网络

VXLAN网络

概念

虚拟局域网。

虚拟扩展局域网。

网络存在形式

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

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

可支持虚拟局域网范围

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

在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报文封装格式

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

图4 VXLAN报文封装格式

具体封装格式内容如表2所示。

表2 VXLAN报文格式说明

字段

描述

VXLAN header(VXLAN头封装)

  • VXLAN Flags:标记位,8比特,取值为00001000。

  • Group ID:用户组ID,16比特。当VXLAN Flags字段第一位取1时,该字段的值为Group ID。取0时,该字段的值为全0。

  • VNI:VXLAN网络标识,用于区分VXLAN段,由24比特组成,支持多达16M的租户,不同VNI的租户之间不能直接进行二层相互通信。

  • Reserved:保留未用,分别由8比特和8比特组成,设置为0。

Outer UDP header(外层UDP头封装)

  • DestPort:目的UDP端口号,设置为4789。

  • Source Port:源UDP端口号。对于含有IP头的以太报文,源UDP端口号根据ecmp load-balance配置的因子进行HASH计算。对于不含IP头的以太报文,源UDP端口号根据报文的源MAC和目的MAC进行HASH计算得出。

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。

VXLAN隧道建立方式

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

图5VXLAN组网示意图
 

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQl高可用集群搭建(MGR + ProxySQL + Keepalived)

前言 服务器规划(CentOS7.x) IP地址主机名部署角色192.168.x.101mysql01mysql192.168.x.102mysql02mysql192.168.x.103mysql03mysql192.168.x.104proxysql01proxysql、keepalived192.168.x.105proxysql02proxysql、keepalived 将安装包 mysql_cluster_…

这套软件测试试卷能打90分,直接入职字节吧

目录 一.填空 二、 判断题(正确的√,错误的╳)共10分,每小题1分 三、数据库部分:(共15分) 四、设计题。本题共 1 小题,满分 20分 一.填空 1、 系…

让ArcMap变得更加强大,用python执行地理处理以及编写自定义脚本工具箱

文章目录一、用python执行地理处理工具1.1 例:乘以0.00011.2 例:裁剪栅格1.3 哪里查看调用某工具的代码?二、用python批量执行地理处理工具2.1 必需的python语法知识for循环语句缩进的使用注释的使用2.2 一个批处理栅格的代码模板三、创建自定…

数组中的各种迭代API方法手写

js的数组上有很多实用的方法,不论是在遍历数组上,还是在操作数组内元素上,它有许多不同的遍历数组的方法,同时它还有着可以直接操作数组中间元素的方法。 接下来,我来带大家手写数组里的 遍历方法 。 Array.forEach(…

Elasticsearch在Linux中的单节点部署和集群部署

目录一、Elasticsearch简介二、Linux单节点部署1、软件下载解压2、创建用户3、修改配置文件4、切换到刚刚创建的用户启动软件5、测试三、Linux集群配置1、拷贝文件2、修改配置文件3、分别修改文件所有者4、启动三个软件5、测试四、问题总结1、在elasticsearch启动时如果报错内存…

【黑盒模糊测试】路由器固件漏洞挖掘实战--AFL++ qemu_mode

前言 很久之前就想写AFL++的qemu_mode了,只是模糊测试专题的文章有些过于耗费时间,加上工作原因导致一直搁置。最近需要出差会用到黑盒模糊测试,所以就当做复习一遍,我记得Fuzzing 101也有一个qemu_mode的练习,有空的话下一篇文章更新吧~ 编写不易,如果能够帮助到你,希望…

金三银四软件测试面试如何拿捏面试官?【接口测试篇】

九、接口测试 9.1 接口测试怎么测 (jmeter版本) 首先开发会给我们一个接口文档,我们根据开发给的接口文档,进行测试点的分析,主要是考虑正常场景与异常场景,正常场景,条件的组合,…

前端vue实现获取七天时间和星期几功能

前端vue实现获取七天时间和星期几功能 功能展示代码 <div v-for"(item,index) in same_week" :class"[same_dayitem.date? activ :,dis]" click"select(item)" :keyindex><span>{{item.name}}</span><span>{{item.…

[技术经理]01 程序员最优的成长之路是什么?

00前言 谈起程序员的职业规划&#xff0c;针对大部分的职场人士&#xff0c;最优的成长之路应该是走技术管理路线&#xff0c;而不是走技术专家路线。 01关键的一步 中国自古就有“学而优则仕”的传统&#xff0c;发展到今天&#xff0c;在我们的现代企业里面&#xff0c;尤…

【JavaEE初阶】第一节.多线程(进阶篇 ) 常见的锁策略、CAS及它的ABA问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、常见的锁策略 1.1 乐观锁 vs 悲观锁 1.2 普通的互斥锁 vs 读写锁 1.3 重量级锁 vs 轻量级锁 1.4 自旋锁 vs 挂起等待锁 1.5 公平…

Mac - Spotlight(聚焦)

文章目录一、Mac 中 Spotlight 的使用1、调用/打开 Spotlight2、执行搜索3、Spotlight 设置二、Mac 上的 Spotlight 开发1、关于 Spotlight2、使用 NSMetadataQuery 搜索示例三、mds 和 fsevents四、命令行访问 Spotlight五、Core Spotlight Framework六、Spotlight 插件相关资…

拼多多订单查询

下载地址webcrawl最新版本下载、安装、运行教程使用场景场景一我有很多个拼多多的买家号&#xff0c;想通过一个订单编号&#xff0c;查询该订单的各种信息&#xff0c;如订单状态&#xff0c;收件信息&#xff0c;物流信息&#xff0c;售后信息&#xff0c;联系商家场景二有很…

unix高级编程-fork和execve

fork和vfork vfork是老的实现方法又很多问题 vfork #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <signal.h> #include <errno.h> #include <sys/stat.…

AQS-ReentrantLock

一、AQS 在 Lock 中&#xff0c;用到了一个同步队列 AQS&#xff0c;全称 AbstractQueuedSynchronizer&#xff0c;它是一个同步工具&#xff0c;也是 Lock 用来实现线程同步的核心组件。 1.AQS 的两种功能 独占和共享。 独占锁&#xff1a;每次只能有一个线程持有锁&#x…

Git 分支操作

1&#xff1a;什么是分支几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug修改、开发新的功能&#xff0c;以免影响开发主线。 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作…

2023“Java基础-中级-高级”面试集结,已奉上我的膝盖

Java基础&#xff08;对象线程字符接口变量异常方法&#xff09; 面向对象和面向过程的区别&#xff1f; Java 语言有哪些特点&#xff1f; 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 C的区别&#xff1f; 什么是 Java 程序的主类&…

GLOG如何控制输出的小数点位数

1 问题 在小白的蹩脚翻译演绎型博文《GLOG从入门到入门》中&#xff0c;有位热心读者提问说&#xff1a;在保存日志时&#xff0c;浮点型变量的小数位数如何设置&#xff1f; 首先感谢这位“嘻嘻哈哈的地球人”赏光阅读了小白这不太通顺的博客文章&#xff0c;并提出了一个很…

红旗语音助手HMI设计流程之调研篇

红旗智能语音助手是基于红旗4.0智能化平台打造的场景设计研究成果。本篇文章&#xff0c;将会以红旗语音助手为例&#xff0c;带领小伙伴们了解一下HMI设计中的调研工作。在项目中&#xff0c;我们需要要通过多模态的调研手段&#xff0c;去分辨用户的哪些需求是真需求&#xf…

【C++】string类的基本使用

层楼终究误少年&#xff0c;自由早晚乱余生。你我山前没相见&#xff0c;山后别相逢… 文章目录一、编码&#xff08;ascll、unicode字符集、常用的utf-8编码规则、GBK&#xff09;1.详谈各种编码规则2.汉字在不同的编码规则中所占字节数二、string类的基本使用1.string类的本质…

Hive---Hive语法(一)

Hive语法&#xff08;一&#xff09; 文章目录Hive语法&#xff08;一&#xff09;Hive数据类型基本数据类型&#xff08;与SQL类似&#xff09;集合数据类型Hive数据结构数据库操作创建库使用库删除库表操作创建表指定分隔符默认分隔符&#xff08;可省略 row format&#xff…