本文分享自天翼云开发者社区《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. Python:pygame游戏编程之旅五(游戏界面文字处理详解)

    再简单的游戏界面中均涉及文字处理,本节主要解读一下pygame模块中对文字及字体的处理方式. 同样,以实例进行讲解,先看看代码: #!/usr/bin/env python # -*- coding: ...

  2. TOML 1.0格式语法

    github: https://github.com/BurntSushi/toml TOML 旨在成为一个语义显著而易于阅读的最低限度的配置文件格式.TOML 被设计地能够无歧义地转化为哈希表.TO ...

  3. xtrabackup脚本

    xtrabackup是MySQL的一种物理备份工具,相对于mysqldump,备份和还原速度更快 , 我写了一份可以进行备份 + 还原的脚本 #!bin/bash all_bak_path=" ...

  4. git 推送代码到多个 远端仓库

    业务场景 在开发代码时,有时希望将代码推送到两个远端仓库. 实现方法 git remote add origin giturl1 git remote add backup giturl2 git p ...

  5. QEMU CVE-2021-3947 和 CVE-2021-3929 漏洞利用分析

    QEMU CVE-2021-3947 和 CVE-2021-3929 漏洞利用分析 ‍ CVE-2021-3947 信息泄露漏洞 漏洞分析 漏洞点是 nvme_changed_nslist stati ...

  6. Java线程命名问题解决

    前言 网上冲浪时刷到线程池的文章,想想看自己好像还没在实际场景中设置过线程名称,小小研究一下. 研究过程 默认命名 创建的线程都会有自己的名字,如果不设置,程序会给线程默认的名字,如Thread-0 ...

  7. Vue3 面试题 (2023-09-26更新)

    Vue3 对比 Vue2 做了那些改进? 1. 响应式系统 vue2 中使用的 Object.defineProperty 实现的响应式,劫持整个对象,递归遍历所有属性,给每个属性添加 getter ...

  8. Dapr-2: 世界是分布式的

    第 2 章 世界是分布的 只需要问任何达人:现代的.分布式的系统已经到来,单体应用已经过时. 但是,不仅是达人,渐进的 IT 领袖,企业架构师,以及精明的开发者,在探寻和评估现代分布式应用的时候,也在 ...

  9. zz 云原生时代,Java的危与机

    https://icyfenix.cn/tricks/2020/java-crisis/qcon.html 另一方面,在微服务的背景下,提倡服务围绕业务能力而非技术来构建应用,不再追求实现上的一致,一 ...

  10. library initialization failed - unable to allocate file descriptor table - out of memoryAborte

    问题描述: 使用Docker run container 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功. 此例的服务是用 java -jar 来启动一个服务. 使用 d ...