一、为什么需要VXLAN,传统的VLAN技术无法解决什么问题?
1. 因为现在虚拟化技术的发展,在数据中心里服务器都模拟成虚拟机,这样就可以方便的在物理服务器上移动、新增、删除服务器。
这样数据中心就会有成千上万的VM,而且VM一般都会需要分割成组,
或者数据中心租用给很多的用户,而每个用户所租用的VM也需要划分成组,这样的二层隔离,目前大多通过VLAN技术实现的。
但是VLAN技术有一个缺陷就是VLAN头预留的长度太短只有12位,最多只能支持4096个,是无法满足日益增长的VLAN占用需求的。
VXLAN的报文头内有24位,可以支持2的24次方的VNI个数。(VXLAN中通过VNI来标识,相当于VLAN ID)
2.虚拟机要求能够移动,也就是在用户不感知的情况下,从这个服务器迁移到另外一台服务器,还可能直接迁移到异地的数据中心(可      以自行google一下vMotion技术)。
传统的VLAN无法解决这个问题,因为如果要用户不感知虚拟机迁移,那么VM的IP地址不能改变,传统的VLAN无法解决VM迁移不改    变IP地址,因为不同VLAN的IP地址段不同。
但VNI相同的VXLAN内,IP地址在一个网段内,只是使用了不同的IP地址。

二、VXLAN实现机制

如上图,VM1与VM3可以是异地的两个VM,但使用VXLAN它们之间可以进行二层传输,尽管实际上中间跨越了千山万水,但VM1只觉得与VM3之间近在咫尺只有一台交换机。
VM发送的数据帧通过VTEP(Virtual Tunnel End Point)封装/解封装,在原始的数据帧上添加了VXLAN头、外层UDP、外层IP头、外层以太头,如下图:

封装说明:
1.外层目的MAC填的是下一跳的MAC,通常是下一跳路由器的MAC
2.外层目的IP是目的VTEP的IP,源IP地址是本地VTEP的地址。
3.外层UDP的目的端口是一个VXLAN特定的端口。
假设VTEP1与VTEP2之间为初始状态,且两端地址如下:

1.配置好VXLAN后,管理员为每个VNI分配一个组播地址,每个VETP都加入到相应的组播转发树中。(具体可以参考PIM-SM的组播转   发树建立)
2.VM1需要发送目的地址为VM2的192.168.0.101的报文,首先发送一个ARP查询报文。
3.VTEP1收到该ARP查询报文,因为ARP查询的目的地址为全F,封装成组播报文发送到组播组中。
4.VNI内其它VTEP收到该组播报文,解封装后学习了VM1的MAC地址与VTEP1地址的映射关系。
5.VTEP2将解封装后的ARP查询报文广播到本地的VNI内所有端口,VM2收到该ARP查询报文,学习192.168.0.100与VM1的MAC的关     系,并回复一个单播的ARP应答。
6.VTEP2收到ARP应答,封装成发送给VTEP1的单播报文,发送给VTEP1,VTEP1进而学到VNI 864 -- VTEP2 -- MAC2的映射关系,      VM1也学到了192.168.0.101 -- MAC2的映射关系。
参考资料:
《软件定义网络: OpenFlow 和 VxLAN》
《Arista Networks VXLAN White Paper》

以下是我个人对VXLAN的粗浅了解加上文档的总结,请高手多多指教:)

转载于:https://www.cnblogs.com/chenting1900/p/4149710.html

VXLAN简明学习笔记(原创)相关推荐

  1. Java学习笔记(原创)

    Java学习笔记(原创) 2011-12-01 16:37:00|  分类: Java|举报|字号 订阅 下载LOFTER客户端 基本知识 一. Java基础 1. java语言的特点: ①简单:没有 ...

  2. 秋枫学习笔记-原创文章整理

    点击蓝字关注,提升学习效率 先祝大家圣诞快乐,感谢大家一直以来的支持,这里对原创文章进行整理,方便大家挑选感兴趣的内容阅读. 公众号:秋枫学习笔记 知乎:夏未眠,https://www.zhihu.c ...

  3. Python爬虫框架Scrapy学习笔记原创

    字号 scrapy [TOC] 开始 scrapy安装 首先手动安装windows版本的Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twis ...

  4. 批处理脚本学习笔记——程序猿版

    批处理脚本学习笔记 原创作品.同意转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/taotaoyouarebaby/ar ...

  5. UML时序图(Sequence Diagram)学习笔记

    UML时序图(Sequence Diagram)学习笔记 原创 SuperMan-zhang 最后发布于2018-07-04 14:37:25 阅读数 94844 收藏 发布于2018-07-04 1 ...

  6. 批处理脚本学习笔记——程序员版

    批处理脚本学习笔记 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/taotaoyouarebaby/ar ...

  7. [原创]java WEB学习笔记02:javaWeb开发的目录结构

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)...

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  10. [原创]java WEB学习笔记18:java EE 中的MVC 设计模式(理论)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

最新文章

  1. ssm查询一条数据并显示_高亮显示查询数据,其实很简单
  2. [转]SQL注入攻防入门详解
  3. Tcl与Design Compiler (三)——DC综合的流程
  4. IO-6(PrintStream/PrintWriter)
  5. “约见”面试官系列之常见面试题第三十三篇之事件委托(建议收藏)
  6. Kali学习笔记5:被动信息收集工具集
  7. 给网页添加跟随你鼠标移动的线条动画
  8. 寻访x86处理器“实模式”和“保护模式”的前世今生
  9. Zookeeper-watcher机制源码分析(一)
  10. 声卡性能测试软件,RightMark Audio Analyzer音频声卡测试软件
  11. js 字串转换HTML,js转化html字符
  12. 员工管理系统————员工添加模块
  13. java node对比_服务端I/O性能:Node、PHP、Java、Go的对比
  14. 【解读】主板·主板型号·命名规则√
  15. 简洁好用的jquery 焦点图插件:Basic jQuery Slider
  16. 大华摄像头使用外网进行访问管理
  17. NeoVim/SpaceVim初体验
  18. vant-Weapp实现省市区三级联动顶部弹出列表
  19. 分布式搜索引擎ElasticSearch(二)---ElasticSearch进阶使用教程
  20. 【OpenCV入门到精通之五】视频固定位置叠加图片或者另一个视频

热门文章

  1. Solr进阶之Solr综合文本相似度的多因素权重排序实现
  2. a标签的CSS伪类,点击后变色
  3. python-常用模块-time、datetime模块
  4. 由于Web服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面(http error 404.2、iis、0x800704ec)...
  5. CRM WEB UI 01 BOL向导创建的搜索
  6. flash cs4中3D特性之PerspectiveProjection属性设置
  7. 基于Ajax的模糊查询输入控件(补充)
  8. SourceTree下载与安装 ---记录一下,如果忘记了再拿来看看
  9. centos 7 redis-4.0.11 主从
  10. 查询英语单词 - 有道官方(一)