1. 为什么需要Vxlan

普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3。L2结构里面,所有的服务器都在一个大的局域网里面,TOR透明L2,不同交换机上的服务器互通靠MAC地址,通信隔离和广播隔离靠的vlan,网关在内网核心上。而L3结构这是从TOR级别上就开始用协议进行互联,网关在TOR上,不同交换机之间的互通靠IP地址。

在云计算IDC里,要求服务器做到虚拟化,原来这个服务器挂在TOR A上,我可以随意把它迁移到TOR B上,而不需要改变IP地址,这个有点就是L2网路的特长,因为我这个虚拟服务器和外界(网关之外)通信还靠L3,但是我网关内部互访是走L2的,这个在L3里是无法做到的。因为L3里每个IP都是唯一的,地址也是固定位置的,除非你整网段物理搬迁。因此如何在L3网络里传输L2数据呢,这就是overlay技术。

因此VXLAN(Virtual eXtensible LAN可扩展虚拟局域网)诞生了,基于IP网络之上,采用的是MAC in UDP技术,本来OSI7层模型里就是一层叠一层的,这种和GRE/IPSEC等tunnel技术是不是很像,这种封装技术对中间网络没有特殊要求,只要你能识别IP报文即可进行传送。

好了,解释清楚了,那么现在总结为何需要Vxlan:

虚拟机规模受到网络规格的限制,大L2网络里,报文通过查询MAC地址转发,MAC表容量限制了虚拟机的数量。

网络隔离的限制,普通的vlan和VPN配置无法满足动态网络调整的需求,同时配置复杂

虚拟器搬迁受到限制,虚拟机启动后假如在业务不中断基础上将该虚拟机迁移到另外一台物理机上去,需要保持虚拟机的IP地址和MAC地址等参数保持不变,这就要求业务网络是一个二层的网络。

2. Vxlan报文格式

Outer UDP端口使用4798,但可以修改

Outer IP头封装:源IP为发送报文的虚拟机所属的VTEP的IP地址,目的IP为目的虚拟机所属的VTEP IP地址。

Outer的目的IP地址可以是单播和组播地址,单播的情况下,目的IP为VTEP(Vxlan Tunnel End Point)的IP地址,在多播的情况下引入VXLAN的管理层,利用VNI和IP多播组的映射来确定VTEP。

当目的IP为接收端的VTEP的IP时,假如不知道这个IP地址,则需要执行ARP请求来获取,步骤如下:

1.  目标IP被替换成与源虚拟机具有相同VNI的多播组IP地址;

2. 所有VTEP端都接收该多播报文,VTEP查找所在主机上的全部虚拟机来匹配源虚拟机的Inner 目的MAC。

3. 目标VTEP的虚拟机会回应该多播包,从而获得目标VTEP的IP地址。

4. 发送端VTEP添加VNI-VTEP-虚拟机MAC的映射关系到自己的VXLAN表中,以避免再次组播学习。

Outer 以太封装:SA为发送报文的虚拟机所属的VTEP MAC地址,DA为目的虚拟机所属的VTEP上路由表中下一跳MAC地址。

3. VXLAN网络结构

NVE(Network Virtrualization Edge网络虚拟边缘节点)是实现网络虚拟化的功能实体,VM里的报文经过NVE封装后,NVE之间就可以在基于L3的网络基础上建立起L2虚拟网络。网络设备实体以及服务器实体上的VSwitch都可以作为NVE。

VTEP为VXLAN隧道的端点,封装在NVE中,用于VXLAN报文的封装和解封装。VTEP与物理网络相连,分配的地址为物理网络IP地址。VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。

VNI(VXLAN Network Identifier):VXLAN网络标识VNI类似VLAN ID,用于区分VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。一个VNI表示一个租户,即使多个终端用户属于同一个VNI,也表示一个租户。VNI由24比特组成,支持多达16M((2^24-1)/1024^2)的租户。

VAP(Virtual Access Point):虚拟接入点VAP统一为二层子接口,用于接入数据报文。为二层子接口配置不同的流封装,可实现不同的数据报文接入不同的二层子接口。

Vxlan网关

VM之间的通信模式主要有3种:同VNI下的不同VM(分布在同一实体和不同实体两种),不同VNI下的跨网访问,VXLAN和非VXLAN之间的访问。

VXLAN网关分为:

二层网关:位于同一网段的终端用户通信,L2网关收到用户报文后,根据报文中包含的目的MAC类型,报文转发流程分为:

1. MAC地址为BUM(broadcast&unknown-unicast&multicast)地址,按照 BUM报文转发流程进行处理

2. MAC地址为已知单播地址,按照已知单播报文转发流程进行处理

三层网关:用于非同一网段的终端用户通信或VXLAN和非VXLAN用户间的通信。

VXLAN二层网关:

L2网关主要解决的就是同一VNI下的VM之间的互访。

VXLAN 三层网关:

L3网关解决的就是不同VNI以及VXLAN和非VXLAN之间的互访。L3网关分为集中式网关和分布式网关,这2者的主要区别就在于L3网关是在leaf上还是在spine上。

如上图所示,集中式L3 GW在spine上,而分布式则是L2,L3 GW都在leaf上。当网络规模较大时,需采用分布式网关,因集中式spine的ARP表项瓶颈,并且子网流量转发绕远。分布式网关时,VTEP在leaf上。spine节点不感知VXLAN隧道。

需要注意的是当VM1和VM2在同一子网,但是挂在不同leaf上时,他们的三层网关需要配置相同的网关IP地址和MAC地址,当租户的VM位置移动时,不需要更改网关任何配置。

BUM报文转发流程

当BUM报文进入VXLAN隧道时,接入端VTEP采用头端复制方式(接口收到BUM报文后本地VTEP通过控制平面获取同一VNI的VTEP列表,将收到的BUM报文根据VTEP列表进行复制并发送给属于同一VNI的所有VTEP))进行报文的VXLAN封装,BUM出VXLAN隧道时,出口端VTEP对报文解封装,

综述:VXLAN网络结构定义完了,这里用通俗易懂的话解释一遍:在一台实体服务器上可以虚拟出一个交换机来,这个交换机就是VSwitch,而这个VSwitch下挂的不再是实体服务器,而是一个个VM,一个VM其实就是一个租户租用的服务器,不同租户之间肯定是不能互访的,要不然租户数据的安全性如何保障,这个隔离就是靠的VNI这个ID,其实这个你可以向下VLAN是如何隔离的,目的就是为了隔离租户。我一个租户有2个VM的话,那么我这2个之间应该可以互访吧。所以说基于VNI定义的租户,而非基于VM。内部的结构说清楚了再来说上行如何访问,在一个L2交换机你要跨网访问必然要经过网关,这个网关的IP地址就是VTEP IP,在网络上有个概念叫arp-proxy,一般用途是为了保护内部私有网络,外界的所有应答都有网关来代替回答(可以理解为门卫)。在这里外界只需要你的VTEP IP即可,对端报文到达VTEP这个网关后自己在内部走L2进行转发。因此VXLAN报文中的目的IP就是对端的网关(VTEP IP),而源地址自然也是自己的网关(VTEP IP)。而对于不同leaf上的同一VNI的VM来说,他们的VTEP IP肯定要配置相同,想下同一vlan下的服务器的网关是如何配置的就明白了。

bum报文_Vxlan学习笔记——原理相关推荐

  1. bum报文_VXLAN 简介

    为什么要VXLAN? ● 虚拟机规模受网络规格限制 在大二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而MAC地址表的容量限制了虚拟机的数量. ● 网络隔离能力限制 当前主流的网络隔离技 ...

  2. 数字签名和报文摘要学习笔记

    数字签名:用于对发送的报文进行签名. 认证发送方: 发送方不可抵赖: 接收方不可编造. 主要使用公开密钥加密系统实现,如RSA:发送者通过私钥加密,接收方通过公秘解密. 报文摘要:用于对发送的报文生成 ...

  3. notepad格式化报文_HTTP学习笔记

    1.MIME 媒体类型 因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对 象都打上了名为MIME类型(MIME type)的数据格式标签.最初设计MIME (Multipurp ...

  4. altium designer 学习笔记 原理图库(schematic library)设计与使用

    一,原理图库介绍 二,软件操作 1, 点击panels按键调出 sch library面板 2.画元件 放置引脚 在此面板可以添加所画的原理图库文件 点小眼睛可以隐藏引脚标号 Designator  ...

  5. HDS相关(一)之 HTTP Dynamic Streaming 学习笔记[原理篇]

    一.什么是HTTP Dynamic Streaming 使用传统的HTTP协议进行在线播放叫做"渐进下载",所有的视频内容从头到尾必须从服务器传输到客户端,用户只能在传输完的视频长 ...

  6. 分水岭算法java,OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法...

    1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...

  7. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  8. word2vec需要去标点吗_word2vec学习笔记(应用篇)(金庸武侠)

    写在前面 本来是想写"实战篇"的,感觉实验语料库不大,就算是一个"应用篇"吧.选取了中文语料,主要简单介绍jieba分词的使用,以及Gemsim模块中Word2 ...

  9. Kaldi单音素GMM学习笔记

    建议在csdn资源页中免费下载该学习笔记的PDF版进行阅读:)点击进入下载页面 Kaldi单音素GMM学习笔记 目录 Kaldi单音素GMM学习笔记 原理 脚本 程序 gmm-init-mono co ...

最新文章

  1. 云计算机参考架构,云参考架构.PDF
  2. DELETE大批量数据的性能优化
  3. 1-4-14:计算邮资
  4. NYOJ-zb的生日(dfs)
  5. 函数计算如何粘合云服务,提供端到端解决方案
  6. 18岁智商低的表现_孩子反应慢并不是智商低,三个原因很关键,第一个跟父母有关...
  7. 原生JS实现图片懒加载之一:Element.getBoundingClientRect()
  8. protel 99se 层次原理图的切换
  9. bootstrap视频教程 jsp_家政服务系统(JAVA,SSM,BOOTSTRAP,JSP,AJAX,MYSQL)+手把手系列视频教程...
  10. html 树 excel,用Excel实现简易树状关系
  11. 谈读《三国志》之话说关羽——【istrangeboy精品史评】
  12. 大众碰到点评的一个字体反爬,落地技术也是绝了
  13. 如何在计算机桌面上增添word,word在电脑桌面的图标不见了怎么办
  14. python爬虫-Handler处理器的基本使用
  15. mavenmaven项目配置maven私服,从私服下载jar
  16. IOS开发 阅读器类APP可用开源框架介绍(2)
  17. C语言实现人机五子棋
  18. 容器技术发展现状与展望
  19. 游戏mysql数据库编写_网络游戏_数据库插入
  20. 2017VR创新创业大赛:500万奖金创VR赛事最高纪录

热门文章

  1. ElementUI 按需引入坑爹的点记录
  2. BZOJ3437:小P的牧场(斜率优化DP)
  3. Windows下Hadoop eclipse开发平台搭建
  4. CentOS 7下配置IP地址
  5. 改用MyAnalyzer的KMeans聚类算法
  6. 中兴助印尼Smartfren测试大规模MIMO技术
  7. IO中同步、异步与阻塞、非阻塞的区别
  8. with(nolock)解释
  9. .NET MVC 遇到的小问题
  10. 用c语言实现艺术清屏