VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109)
上一节我们介绍了 VXLAN 的封装格式以及 VTEP。
今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 Linux 对 VXLAN 的原生支持。
VXLAN 包转发流程
VXLAN 在 VTEP 间建立隧道,通过 Layer 3 网络传输封装后的 Layer 2 数据。
下面的例子演示了数据如何在 VXLAN 上传输:
图中 Host-A 和 Host-B 位于 VNI 10 的 VXLAN,通过 VTEP-1 和 VTEP-2 之间建立的 VXLAN 隧道通信。
数据传输过程如下:
Host-A 向 Host-B 发送数据时,Host-B 的 MAC 和 IP 作为数据包的目标 MAC 和 IP,Host-A 的 MAC 作为数据包的源 MAC 和 IP,然后通过 VTEP-1 将数据发送出去。
VTEP-1 从自己维护的映射表中找到 MAC-B 对应的 VTEP-2,然后执行 VXLAN 封装,加上 VXLAN 头,UDP 头,以及外层 IP 和 MAC 头。此时的外层 IP 头,目标地址为 VTEP-2 的 IP,源地址为 VTEP-1 的 IP。同时由于下一跳是 Router-1,所以外层 MAC 头中目标地址为 Router-1 的 MAC。
数据包从 VTEP-1 发送出去后,外部网络的路由器会依据外层 IP 头进行包路由,最后到达与 VTEP-2 连接的路由器 Router-2。
Router-2 将数据包发送给 VTEP-2。VTEP-2 负责解封数据包,依次去掉外层 MAC 头,外层 IP 头,UDP 头 和 VXLAN 头。
VTEP-2 依据目标 MAC 地址将数据包发送给 Host-B。
上面的流程我们看到 VTEP 是 VXLAN 的最核心组件,负责数据的封装和解封。 隧道也是建立在 VTEP 之间的,VTEP 负责数据的传送。
Linux 对 VXLAN 的支持
VTEP 可以由专有硬件来实现,也可以使用纯软件实现。 目前比较成熟的 VTEP 软件实现包括:
带 VXLAN 内核模块的 Linux
Open vSwitch
我们先来看 Linux 如何支持 VXLAN,Open vSwitch 方式将在后面章节讨论。
实现方式:
Linux vxlan 创建一个 UDP Socket,默认在 8472 端口监听。
Linux vxlan 在 UDP socket 上接收到 vxlan 包后,解包,然后根据其中的 vxlan ID 将它转给某个 vxlan interface,然后再通过它所连接的 linux bridge 转给虚机。
Linux vxlan 在收到虚机发来的数据包后,将其封装为多播 UDP 包,从网卡发出。
到这里,相信大家对 VXLAN 的原理已经有了大致的了解。 下节我们将学习如何在 Neutron 中配置和实施 VXLAN。
转载于:https://www.cnblogs.com/CloudMan6/p/6034721.html
VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109)相关推荐
- 创建 vxlan 并部署 instance - 每天5分钟玩转 OpenStack(147)
上一节我们完成了 OVS VxLAN 的配置工作,今天创建 vxlan100_net 并部署 instance. 创建 vxlan100_net 打开菜单 Admin -> Networks,点 ...
- 每天5分钟玩转openstack跟学(一)预备知识
前言:对于openstack我是一名小白,打算跟着CloudMan的<每天5分钟玩转openstack>进行学习,有兴趣的小伙伴可以跟着我一起,相互探讨,互相进步,该系列博文基本不涉及原理 ...
- LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)
http://www.cnblogs.com/CloudMan6/p/5277927.html LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8) LVM 类型的 ...
- 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)
http://www.cnblogs.com/CloudMan6/p/5402490.html 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22) 本节首先讨论 p_ ...
- Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)
Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...
- 部署 DevStack - 每天5分钟玩转 OpenStack(17)
http://www.cnblogs.com/CloudMan6/p/5357273.html 部署 DevStack - 每天5分钟玩转 OpenStack(17) 本节按照以下步骤部署 DevSt ...
- Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)
Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
写在最前面 <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节 ...
- 学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)
作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder ...
- cloud-init 典型应用 - 每天5分钟玩转 OpenStack(174)
本节介绍几个 cloud-init 的典型应用:设置 hostanme,设置用户初始密码,安装软件. 设置 hostname cloud-init 默认会将 instance 的名字设置为 hostn ...
最新文章
- 【青少年编程】【一级】 奔跑的马
- 统计的一个小题目python实现
- tf.clip_by_value
- Qt Creator添加Qt Designer插件
- 标准 C++ I/O
- 单臂路由配置命令_如何通过单臂路由实现VLAN间通信?(配置篇)
- pimg src=http://img.blog.csdn.net/20150823142545135?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ...
- c/c++面试试题(一)
- Python 远程部署利器 Fabric2 模块
- 3年,从工程师到创始人
- 目标检测YOLO系列论文对比
- python 视频培训
- CSS内联样式的使用,实战篇
- 用ES6语法存储美国邮政编码的IndexedDB数据库
- Qt开发——图片缩放简述
- 清梦_飘云羽逸_新浪博客
- resultFul请求案例
- 《跃迁-成为高手的技术》读书笔记
- 5G NR - MAC RLC PDCP SDAP
- 基于京东micro-app微前端框架的项目实践