静态方式部署集中式网关

在静态方式部署集中式网关的场景中,控制平面的流程包括VXLAN隧道建立、MAC地址动态学习;转发平面的流程包括同子网已知单播报文转发、同子网BUM(Broadcast&Unknown-unicast&Multicast)报文转发、跨子网报文转发。

静态方式部署集中式网关,手工配置工作量大,灵活性较差,不适合大规模的组网场景,如果在VXLAN网络中采用集中式网关,推荐使用BGP EVPN方式部署集中式网关。

下面以IPv4 over IPv4为例进行详细描述,其他Underlay网络和Overlay网络组合相对于IPv4 over IPv4的实现差异如表1所示。

表1 其他Underlay网络和Overlay网络组合的实现差异

组合类别

实现差异

IPv6 over IPv4

  • 在MAC地址动态学习过程中,二层网关通过主机发送的NS(Neighbor Solicitation)报文学习主机MAC地址。

  • 在跨子网互通的场景中,三层网关的VBDIF接口需配置IPv6地址,在跨子网报文转发时,三层网关需查找IPv6路由表,找到目的IPv6地址的下一跳地址,再根据下一跳地址查找ND表,获取目的MAC等信息。

IPv4 over IPv6

VXLAN隧道的两端VTEP采用IPv6地址,且VTEP之间需要IPv6三层路由互通。

IPv6 over IPv6

  • VXLAN隧道的两端VTEP采用IPv6地址,且VTEP之间需要IPv6三层路由互通。

  • 在MAC地址动态学习过程中,二层网关通过主机发送的NS报文学习主机MAC地址。

  • 在跨子网互通的场景中,三层网关的VBDIF接口需配置IPv6地址,在跨子网报文转发时,三层网关需查找IPv6路由表,找到目的IPv6地址的下一跳地址,再根据下一跳地址查找ND表,获取目的MAC等信息。

VXLAN隧道建立

VXLAN隧道由一对VTEP IP地址确定,静态VXLAN隧道的创建完全通过手工配置本端和远端的VNI、VTEP IP地址来完成,只要VXLAN隧道的两端VTEP IP是三层路由可达的,VXLAN隧道就可以建立成功。

如图1所示,VTEP2上部署了Host1和Host3,VTEP3上部署了Host2,VTEP1上部署三层网关。

  • 为了实现Host3和Host2之间的通信,需要分别在VTEP2和VTEP3上配置二层VNI,并在配置头端复制列表时指定对端VTEP IP地址。只要VTEP2和VTEP3上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道。

  • 为了实现Host1和Host2之间的通信,需要分别在VTEP2和VTEP1、VTEP1和VTEP3上配置二层VNI,并在配置头端复制列表时指定对端VTEP IP地址。只要VTEP2和VTEP1上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道;同样的,只要VTEP1和VTEP3上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道。

MAC地址动态学习

        在VXLAN网络中,为了实现终端租户的互通,支持MAC地址动态学习,不需要网络管理员手工维护,大大减少了维护工作量。下面结合图2,详细介绍一下同子网主机互通时,MAC地址动态学习的过程。

图2 MAC地址动态学习

  1. Host3发送源MAC为MAC3、目的MAC为全F、源IP为IP3、目的IP为IP2的ARP请求报文,请求Host2的MAC地址。

  2. VTEP2收到该ARP请求后,根据报文接入的端口和携带的VLAN信息判断该请求报文需进入VXLAN隧道,并确定报文所对应的VNI(20)。同时VTEP2学习到了Host3的MAC地址、BD ID(二层广播域标识)和报文入接口的对应关系,并在本地MAC表中生成Host3的MAC表项,其出接口为Port1。

  3. VTEP2对该ARP请求报文进行VXLAN封装,如图3所示,封装的VNI是绑定当前BD的VNI,封装的外层源IP地址为VTEP2的VTEP IP地址,外层目的IP地址为VTEP3的VTEP IP地址,外层源MAC地址为VTEP2的MAC地址,外层目的MAC地址为去往目的IP的网络下一跳的MAC地址。封装后的报文根据外层MAC和IP信息在IP网络中传输,送达VTEP3。

    图3 VXLAN报文

  1. VTEP3收到报文后进行解封装,得到Host3发送的原始ARP请求报文,同时VTEP3学习到Host3的MAC地址、BD ID和VTEP2上VTEP IP地址的对应关系,并在本地的MAC表中生成Host3的MAC表项,其出接口需根据下一跳(即VTEP2的VTEP IP地址)进行迭代,最终迭代结果是指向VTEP2的VXLAN隧道。

  2. VTEP3在对应的二层域内广播ARP请求。Host2收到ARP请求后,比较报文中的目的IP是否为本机的IP地址,如果是,则将Host3的MAC地址保存到本地的MAC表中,并进行ARP应答。

由于此时Host2已经学习到了Host3的MAC地址,所以ARP应答报文为单播报文,后续的ARP应答报文发送过程与上述过程类似,这里不再赘述。Host3和Host2互相学习到对方的MAC地址之后,双方将采用单播通信。

在跨子网主机互通时,只需在主机和三层网关之间进行MAC地址动态学习,与上述过程相同。

同子网已知单播报文转发

同子网已知单播报文转发只在VXLAN二层网关之间进行,三层网关无需感知。报文转发流程如图4所示。

图4 同子网已知单播报文转发示意图

  1. VTEP2收到来自Host3的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,并在该二层广播域内查找出接口和封装信息。
  2. VTEP2根据查找到的封装信息对数据报文进行VXLAN封装,然后根据查找到的出接口进行报文转发。
  3. VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层的二层报文。
  4. VTEP3根据内层二层报文的目的MAC,从本地MAC表找到对应的出接口和封装信息,对报文进行VLAN Tag的相应处理,转发给对应的主机Host2。

Host2向Host3发送报文的过程类似,这里不再赘述。

同子网BUM报文转发

同子网BUM报文转发只在VXLAN二层网关之间进行,三层网关无需感知。同子网BUM报文转发采用头端复制方式。

头端复制是指,当BUM报文进入VXLAN隧道时,接入端VTEP根据头端复制列表进行报文的VXLAN封装,并将报文发送给头端复制列表中的所有出端口VTEP。BUM报文出VXLAN隧道时,出口端VTEP对报文解封装。BUM报文采用头端复制的转发流程如图5所示。

图5 同子网BUM报文采用头端复制转发示意图

  1. VTEP1收到来自终端A的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。
  2. VTEP1根据对应的二层广播域获取对应VNI的头端复制列表,依据获取的列表进行报文复制,并进行VXLAN封装。然后将封装后的报文从出接口转发出去。
  3. VTEP2/VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文。
  4. VTEP2/VTEP3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:VTEP2/VTEP3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,对报文进行VLAN Tag的相应处理,转发给对应的终端B/C。
跨子网报文转发

跨子网报文转发需要通过三层网关实现。在集中式网关场景中,跨子网报文转发的流程如图6所示。

图6 跨子网报文转发示意图

  1. VTEP2收到来自Host1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。
  2. VTEP2根据查找到的出接口和封装信息进行VXLAN封装,向VTEP1转发报文。
  3. VTEP1收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址MAC3,判断需要进行三层转发。
  4. VTEP1剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。
  5. VTEP1重新封装VXLAN报文,向VTEP3转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址MAC4。
  6. VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。
  7. VTEP3根据查找到的出接口和封装信息,对报文进行VLAN Tag的相应处理,转发给对应的Host2。

Host2向Host1发送报文的过程类似,这里不再赘述。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qml 项目依赖

文章目录 出现的问题最终对比下一步 把 apptestQml3_6.exe 放到一个单独目录下,执行 windeployqt.exe ./apptestQml3_6.exe但是出了很多问题,根本运行不起来。 但是在release目录下执行下,程序能跑起来。 根据错误提示,进行添加。…

vue3+vite+ts配置多个代理并解决报404问题

之前配置接口代理总是报404,明明接口地址是对的但还是报是因数写法不对;用了vue2中的写法 pathRewrite改为rewrite 根路径下创建env文件根据自己需要名命 .env.development文件内容 # just a flag ENVdevelopment# static前缀 VITE_APP_PUBLIC_PREFIX"" # 基础模块…

php 支持mssqlserver

系统不支持:sqlsrv 需要一下几个环节 1.准备检测php版本 查看 VC 版本 查看操作系统位数:X86(32位) 和X64 2.下载php的sqlserver库 extensionphp_sqlsrv_74_nts_x64.dll extensionphp_pdo_sqlsrv_74_nts_x64.dll extensionphp_sqlsrv_74_nts_x64 extensionphp_…

基于Vue的高校课程考勤成绩管理系统SpringBoot+nodejs+python

设计目标: 课程管理系统开发的目的是管理全校开设课程的基本信息,安排各班级的课程以及上课时间和教室。系统的使用对象包括教务,学生、教师、管理员等。通过对日常课程管理工作的分析,可以将课程管理系统的功能分为下面几个方面&#xff1a…

C++ //练习10.3 用accumulate求一个vector<int>中的元素之和。

C Primer(第5版) 练习 10.3 练习10.3 用accumulate求一个vector中的元素之和。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /*******************************************************************…

DataGrip2023配置连接Mssqlserver、Mysql、Oracle若干问题解决方案

1、Mssqlserver连接 本人连的是Sql2008,默认添加时,地址、端口、实例、账号、密码后,测试连接出现错误。 Use SSL:不要勾选 VM option:填写,"-Djdk.tls.disabledAlgorithmsSSLv3, RC4, DES, MD5withR…

(Linux学习二)文件管理基础操作命令笔记

Linux目录结构: bin 二进制文件 boot 启动目录 home 普通用户 root 超管 tmp 临时文件 run 临时运行数据 var 日志 usr 应用程序、文件 etc 配置文件 dev 文件系统 一、基础操作 在 Linux 终端中,你可以使用以下命令来清屏: clear 命令&am…

HW高水位问题及解决办法

一、问题描述及分析 应用业务反馈应用响应缓慢。登录数据库检查,发现数据库响应慢,有大量enq:HW–contention等待事件。结合awr报告和ash报告,发现整体等待时间消耗在推高水位线征用上,如下awr top事件:Ash消耗也是en…

数据恢复软件有哪些?分享10款好用的数据恢复软件

在数字化时代,数据的安全性和可恢复性变得至关重要。由于各种原因,如设备故障、误删、病毒攻击等,我们可能会面临数据丢失的风险。为了应对这种情况,市场上涌现出许多数据恢复软件。下面给大家分享10个好用的数据恢复软件&#xf…

[golang] 25 图片操作

用 “github.com/fogleman/gg” 可以画线, 框 用 “github.com/disintegration/imaging” 可以变换颜色 一 渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (str…

C语言数据结构基础-单链表

1.链表概念 在前面的学习中,我们知道了线性表,其中逻辑结构与物理结构都连续的叫顺序表,那么: 链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 2.链表组…

线性稳压器电路,用于各种电视机、收录机、电子仪器、设备的稳压电源上,内置短路保护电路,热保护电路——78MXX

78MXX系列是用于各种电视机、收录机、电子仪器、设备的稳压电源电路。包括78M05、78M06、 78M08、 78M09、 78M10、 78M12、 78M15。 主要特点: ● 极限输出电流: 0.5A ● 固定输出电压: 5V、6V、8V、9V、10V、 12V、 15V ● 内置短路保护电路 ● 内置热保护电路 …

云原生精品资料合集(附下载)

云计算是产业数字化转型的关键基础设施,以基础设施资源为中心的云搬迁时代接近尾声,以应用价值为中心的云原生时代已经到,所以IT人员学习云原生正当时!最近跟各位大神征集了云原生的教程,行业报告和最佳实践,总有一款适…

python web框架fastapi模板渲染--Jinja2使用技巧总结

文章目录 1.jinja2模板1.1、jinja2 的变量1.1.1 列表类型数据渲染1.1.2 字典类型数据渲染 2. jinja2 的过滤器3. jinja2 的控制结构3.1、分支控制3.2、循环控制 1.jinja2模板 要了解jinja2,那么需要先理解模板的概念。模板在Python的web开发中⼴泛使⽤,…

Unity 常用操作

2D素材网站 https://craftpix.net/ https://itch.io/game-assets/tag-2d/tag-backgrounds 3D素材资源网址 https://www.mixamo.com/#/ 场景常用操作: 快捷键:QWER Q:Q键或鼠标中键,可以拉动场景。 W:选中物体后&…

【QT+QGIS跨平台编译】之五十六:【QGIS_CORE跨平台编译】—【qgsmeshcalclexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

基于springboot实现在线考试系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现在线考试系统演示 摘要 时代在变化,科技技术以无法预测的速度在达到新的高度,并且被应用于社会生活的各个领域,随着生活的加快,也使很多潜在的点逐渐突显出来,社会对于人才的要总是非常迫切的&…

18.HTTPS和身份验证

平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我。 跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~ …

关于电脑一天24小时多少度电电脑的一天用电量计算

随着这几年物价的上涨,一些地区的电价越来越高,而我们经常需要使用电脑,那么一台电脑一天24小时用多少度电呢? 如何计算电脑一天的用电量? 让我们跟随小编来了解更多吧。 1、功耗、主机箱功耗 现在的计算机中&#xf…

【python基础学习03课_python的列表】

列表 一、列表的定义 列表 -- 一种将多个数据组合在一起的容器(数据结构)标识符:[]关键字:list tips: 变量的名称可以自定义,但是不要与文件名、关键字、后面要学到的类、方法等等重复 1、打印空列表 列表是一个…