今天给大家介绍VXLAN技术。本文主要介绍了VXLAN的数据包封装与转发格式、VXLAN的BUM数据包处理和VXLAN子接口封装模式对VXLAN的影响。

一、VXLAN数据封装与转发

VXLAN之所以能够实现大二层网络的构建,是因为可以借助VXLAN隧道,实现完成数据帧的跨IP网络传输。我们把这个在底层的IP网络叫做Underlay网络,把上层的大二层网络叫做Overlay网络。VNE设备在收到属于VXLAN的数据包时,会把完整的数据帧加上VXLAN头部,再加上完整的数据链路层、网络层和传输层(UDP)头部,然后借此实现在Underlay网络的VXLAN数据包传输。
VXLAN数据包格式如下:

VXLAN数据包抓包如下:

二、VXLAN的BUM包处理

在二层网络通信中,对于一些报文,交换机在通常情况下需要做洪范处理,这样的报文成为BUM报文。所谓BUM,即Broadcast——组播报文、Unknown——转发表上查不到端口的报文,以及Multicast——组播报文。
当网络中配置了VXLAN时,对上述报文时怎样处理的呢?
在通常情况下,VXLAN对上述需要洪范广播的报文进行的是头端复制的处理方式。即先查找该报文所对应的BD域,进而查找该BD域所关联的VXLAN隧道,再查找该报文所对应的VNI Peer,之后将该报文复制成多份,发送给每一个关联的VNI Peer。
在有了VXLAN的头端复制行为后,类似于ARP Request报文就可以在VXLAN网络中正常转发了,也因此VXLAN实现了大二层网络的互通。

三、VXLAN子接口封装模式

在CE交换设备中,VXLAN的子接口一共可以设置四种模式的VXLAN封装模式,它们是default、qinq、untaged以及dot1q。
下表中将重点介绍default、untaged以及dot1q的对报文处理方式:

类型 允许进入VXLAN隧道的报文类型 报文进行封装前的处理 收到VXLAN报文并解封装后的处理
dot1q 只允许携带指定VLAN tag的报文进入VXLAN隧道 进行VXLAN封装前,先剥掉原始报文的VLAN tag 进行VXLAN封装后,如果报文中含有VLAN tag,则将该VLAN Tag替换成接口指定的VLAN Tag再转发;如果报文中没有VLAN Tag,则添加指定的VLAN Tag后再转发
untaged 只允许不带VLAN Tag的报文进入VXLAN隧道 进行VXLAN封装前,不对原始报文做处理,即不添加任何VLAN Tag 进行VXLAN解封装后,若内层报文带有VXLAN Tag,则先将VXLAN Tag剥离掉,再转发。若内层原始报文不带VXLAN Tag,则直接转发
defalut 允许所有报文进入VXLAN隧道,不论报文是否携带VXLAN Tag 进行VXLAN封装前,不对原始报文做任何处理 进行VXLAN封装后,不对原始报文做任何处理

在子接口上述配置中,若想要将一个子接口配置为default,则不允许配置其他类型的子接口。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/119333750

VXLAN详解(二)相关推荐

  1. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  2. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  3. PopUpWindow使用详解(二)——进阶及答疑

    相关文章: 1.<PopUpWindow使用详解(一)--基本使用> 2.<PopUpWindow使用详解(二)--进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...

  4. Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  5. linux 进程间通信 dbus-glib【实例】详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  6. linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  7. Android Gradle 自定义Task详解二:进阶

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78523958 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  8. Android Loader 异步加载详解二:探寻Loader内部机制

    Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/7025991 ...

  9. EXT核心API详解(二)-Array/Date/Function/Number/String

    EXT核心API详解(二)-Array/Date/Function/Number/String Array类 indexOf( Object o )  Number object是否在数组中,找不到返 ...

  10. OS--进程间通信详解(二)

    OS–进程间通信详解(二) 文章目录 OS--进程间通信详解(二) 一.进程间通信 1.互斥量 Futexes Pthreads中的互斥量 2.管程 3.消息传递 消息传递系统的设计要点 用消息传递解 ...

最新文章

  1. spring_在Spring中使用多个动态缓存
  2. 二叉树求深度的递归的详细分析
  3. tableau使用需要收费吗_使用苹果手机时,这些需要注意的点,你都知道吗?
  4. vue.js 前端开发常见问题
  5. EF Core中高效批量删除、更新数据的Zack.EFCore.Batch发布三个新特性
  6. C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!
  7. sqlmap源码阅读系列检查是否满足依赖
  8. Django的缓存(1)
  9. Visio图片转为eps格式
  10. Storm Player 字幕加载
  11. Python源码剖析-深度探索动态语言核心技术
  12. 百度apollo自动驾驶modules\planning\tasks\optimizers\path_time_heuristic\PathTimeHeuristicOptimizer类代码详解
  13. How to manually generate ssl certificate for own site in Linux
  14. 努比亚android11,努比亚Play开测Android11 填写基本信息即可
  15. 如何用数据分析的概念制作简单Excel报表?
  16. PaddleHub创意之艺术风格迁移
  17. 12G大显存,七彩虹在CES发布多款RTX 3060显卡和游戏整机新品
  18. C++ swap用法
  19. Android应用设置系统情景模式
  20. 【合集】Jerry Wang 2018~2021 四年期间的 SAP 技术文章合集

热门文章

  1. 杨强教授领衔撰写,国内首本联邦学习实战的权威著作
  2. Netty内存池泄漏问题
  3. HTML5移动开发即学即用(双色)
  4. 电子工业出版社PPT图书优秀作者上海书城讲座
  5. 3.3 Spark概述
  6. 如果希望同时导入m中的所有成员_Python3.7知其然知其所以然-第十九章 模块导入...
  7. react 引入轮播插件_如何在react中引入swiper滑动插件
  8. start-dfs.sh\stop-dfs.sh启动失败
  9. java 焦点转移_将焦点移至键Enter上的下一个控件
  10. Vue router路由懒加载