本文分享自天翼云开发者社区《VXLAN 网络中报文转发过程》,作者:刘****林

以同网段的 VM 间互通简单介绍 VXLAN 网络中的报文转发过程。

1.VM1 发送目的地址为 VM2 的报文。

2.VTEP1 收到该报文后进行 VXLAN 封装,封装的外层目的 IP 为 VTEP2。封装后的报文,根据外层 MAC 和 IP 信息,在 IP 网络中进行传输,直至到达对端VTEP2。

3.VTEP2 收到报文后,对报文进行解封装,得到 VM1 发送的原始报文,然后将其转发至VM2。

二层 MAC 学习及 BUM 报文转发

1.二层MAC学习

在 VXLAN 网络中,同子网虚拟机的互通是通过查找 MAC表进行转发。如下图所示,VM1 给 VM2 发送报文时,经过 VTEP1 转发,VTEP1 上需要学习到 VM2 的 MAC 地址。

最初的 VXLAN 标准并没有定义控制平面,VTEP 之间无法传递学习到的主机 MAC 地址。但是 VXLAN 有着与传统以太网非常相似的 MAC 学习机制,当 VTEP接收到VXLAN 报文后,会记录源 VTEP 的 IP、虚拟机 MAC 和 VNI 到本地 MAC表中,这样当 VTEP 接收到目的 MAC 为此虚拟机的 MAC 时,就可以进行 VXLAN 封装并转发。

以 VTEP2 学习到 VM1 的 MAC 过程为例:

1.VM1 发送目的地址为 VM2 的报文。

2.VTEP1 接收到报文后,进行 VXLAN 封装,并将其转发至 VTEP2。同时,VTEP1可以学习到 VM1 的 MAC 地址、VNI、入接口。

3.VTEP2 接收到报文后,对报文进行解封装。同时,VTEP2 可以学习到 VM1 的MAC 地址、VNI、入接口(为 VTEP1)。

经过上述流程,VTEP1 和 VTEP2 可以学习到 VM1 的 MAC 地址。VTEP1 和 VTEP2学习到 VM2 的 MAC 地址过程与之类似。

1.BUM 报文转发

前面描述的报文转发过程都是已知单播报文转发,如果 VTEP 收到一个未知地址的BUM 报文(广播、组播、未知单播)如何处理呢。与传统以太网 BUM 报文转发类似,VTEP 会通过泛洪的方式转发流量。

以上图中 VM1 想向 VM2 发送报文为例,因为 VM1 不知道VM2 的 MAC 地址,所以会发送 ARP 广播报文请求 VM2 的 MAC 地址。

1.VM1 发送 ARP 广播请求,请求 VM2 的 MAC地址。

2.VTEP1 收到 ARP 请求后,因为是广播报文,VTEP1 会在该 VNI 内查找所有的隧道列表,依据获取的隧道列表进行报文封装后,向所有隧道发送报文,从而将报文转发至同子网的 VTEP2 和 VTEP3。

3.VTEP2 和 VTEP3 接收到报文后,进行解封装,得到 VM1 发送的原始 ARP报文,然后转发至 VM2 和 VM3。

4.VM2 和 VM3 接收到 ARP 请求后,比较报文中的目的 IP 地址是否为本机的IP地址。VM3 发现目的IP不是本机IP,故将报文丢弃;VM2 发现目的IP是本机IP,则对 ARP 请求做出应答。

由于此时 VM2 上已经学习到了 VM1 的 MAC 地址,所以 ARP 应答报文为已知单播报文,转发流程与前文描述的一致,此处不在赘述。

5.VM1 收到 VM2 的 ARP 应答后,就可以学习到VM2的MAC 地址。后续的转发流程同已知单播转发流程一致。

VXLAN 网络中报文转发过程的更多相关文章

  1. 用寄快递模拟数据在网络中的传送过程,发送一个ip数据报到接受这个ip数据报经历的过程

    发送一个ip数据报到接受这个ip数据报经历的过程 好比寄一个快递的过程 这个包裹一共有三层, 这个包裹的最里面是数据,数据 第二层写着目的ip地址和源ip地址,即收件人和发件人的姓名 第三层也就是最外 ...

  2. OSI7层封包解包动态图-数据在网络中的传输过程.gif

  3. H3C 多路径网络中环路产生过程(3)

  4. H3C 多路径网络中环路产生过程(2)

  5. H3C 多路径网络中环路产生过程(1)

  6. H3C 单路径网络中环路产生过程(3)

  7. H3C 单路径网络中环路产生过程(2)

  8. H3C 单路径网络中环路产生过程(1)

  9. 一文带你读懂什么是vxlan网络

    一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...

  10. VXLAN学习之路-结合VRF在Linux中实践VXLAN网络

    一.概述 近期在在搞网络安全HCIE.CISP的认证的事,顺便将VXLAN技术再次系统的学习一下,学习过程中看到云原生实验室里的一篇文章,就是关于VXLAN在Linux系统中的实践,感觉文章写得很好, ...

随机推荐

  1. 鸿蒙NEXT开发案例:二维码的生成与识别

    [引言] 在本篇文章中,我们将探讨如何在鸿蒙NEXT平台上实现二维码的生成与识别功能.通过使用ArkUI组件库和相关的媒体库,我们将创建一个简单的应用程序,用户可以生成二维码并扫描识别. [环境准备] ...

  2. PC自动化之pywinauto

    官方文档: https://pywinauto.readthedocs.io/en/latest/contents.html [安装] pip install pywinauto [使用] from ...

  3. stylus图床

  4. vue3 封装api接口

    新建axiosj.ts import axios from 'axios'; import { showMessage } from "./status"; // 引入状态码文件 ...

  5. 借助AI助手快速解析LlamaIndex的Workflow设计与Java迁移

    在前面的讨论中,我们通过AI助手快速浏览并分析了LlamaIndex的核心源码及其可视化部分.在上次的工作中,我们已基本完成了使用Java版本实现的可视化部分,尽管在工作流(workflow)的分析上 ...

  6. .Net知识技能大全

    .Net知识技能大全 更多请见https://www.dotnetshare.com C#常见运算符 一元运算符(+.-.!.~.++.--) 算术运算符(*./.%.+. – ) 移位运算符(< ...

  7. cmd操作license服务

    配置客户机的时候,有时候需要自启动相关服务,例如ArcGIS License Manager. 关于启动服务,参考了别人的意见.点击打开链接 最终用了net start 服务名和net sop 服务名 ...

  8. 【矩阵压缩】codeforces 1980 E. Permutation of Rows and Columns

    题目链接 https://codeforces.com/problemset/problem/1980/E 题意 共输入\(T\)组测试用例,每组测试用例第一行输入两个整数\(n, m\),分别代表输 ...

  9. Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at [com.github.adrielcafe:AndroidAudioConverter:0.0.8] AndroidManifest.xml:11:18-50 value=(@string/app_name)

    关于安卓编译错误Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at ...

  10. docker-安装Oracle11g

    获取镜像 在线   docker pull oracleinanutshell/oracle-xe-11g 离线 tar包下载:链接: https://pan.baidu.com/s/1bRp6mSq ...