vxlan 分布式网关数据包转发过程_Vxlan基础
一、为什么需要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地址等参数保持不变,这就要求业务网络是一个二层的网络。
二、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请求来获取,步骤如下:
- 目标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地址。
补充:VTEP的作用?
用于对VXLAN报文进行封装/解封装,包括ARP请求报文和正常的VXLAN数据报文,在一段封装报文
后通过隧道向另一端VTEP发送封装报文,另一端VTEP接收到封装的报文解封装后根据封装的MAC地址
进行装法。VTEP可由支持VXLAN的硬件设备或软件来实现。
从封装的结构上来看,VXLAN提供了将二层网络overlay在三层网络上的能力,VXLAN Header中的VNI有
24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,比VLAN有更好的扩展性。
三、Vxlan的数据和控制平面
1 、数据平面---隧道机制
已经知道,VTEP为虚拟机的数据包加上了层包头,这些新的报头之有在数据到达目的VTEP后才会被去掉。
中间路径的网络设备只会根据外层包头内的目的地址进行数据转发,对于转发路径上的网络来说,一个Vxlan数据包跟一个普通IP包相比,出了个头大一点外没有区别。
由于VXLAN的数据包在整个转发过程中保持了内部数据的完整,因此VXLAN的数据平面是一个基于隧道的数据平面。
2、控制平面----改进的二层协议
VXLAN不会在虚拟机之间维持一个长连接,所以VXLAN需要一个控制平面来记录对端地址可达情况。控制平面的表为(VNI,内层MAC,外层vtep_ip)。Vxlan学习地址的时候仍然保存着二层协议的特征,节点之间不会周期性的交换各自的路由表,对于不认识的MAC地址,VXLAN依靠组播来获取路径信息(如果有SDN Controller,可以向SDN单播获取)。
另一方面,VXLAN还有自学习的功能,当VTEP收到一个UDP数据报后,会检查自己是否收到过这个虚拟机的数据,如果没有,VTEP就会记录源vni/源外层ip/源内层mac对应关系,避免组播学习。
四、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下的服务器的网关是如何配置的就明白了。
vxlan 分布式网关数据包转发过程_Vxlan基础相关推荐
- 网络数据包转发过程详解
本片文章详解了两台终端跨网段通信时数据包转发的过程,包含第一次转发数据包ARP工作的过程以及详细配置,下面是本次实验的拓扑图,在华为ENSP模拟器上实现. 简单介绍一下实验环境,在本次实验中包含两个区 ...
- 路由器的工作原理,形成,转发数据包的过程
一.路由器的工作原理 二.路由表的形成 三.静态路由和默认路由 四.路由器转发数据包的封装过程 五.静态路由和默认路由的配置 概述: 在只有一个网段的网络中,包可以很容易地从源主机到达目标主机,但是如 ...
- VXLAN中EVPN技术详解(二)——EVPN与VXLAN分布式网关
今天继续给大家介绍VXLAN技术,本文主要内容是EVPN技术的主要应用--VXLAN分布式网关.本文从VXLAN分布式网关实现的角度,对EVPN的实现进行了详细的讲解. 阅读本文,您需要有一定的VXL ...
- 思科新版EI CCIE 企业网软定义中的VxLAN分布式网关两种部署方式
思科新版EI CCIE 企业网软定义中的VxLAN分布式网关两种部署方式VXLAN集中式网关部署的不足:第一,同一二层网关下跨子网的数据中心三层流量都需要经过集中三层网关转发.第二,由于采用了集中三层 ...
- 路由个数据包转发简介
第一章: 网络的核心是路由器, 路由器的作用就是将各个网络彼此连接起来.因此,路由器需要负责不同网络之间的数据包传送.网际通信的效率取决于路由器的性能,即取决于路由器是否能以最有效的方式转发数据包. ...
- 5G网络学习(四)——5G网络中数据包转发模型(未完待续)
3GPP TS 29.244介绍了控制层面和用户层面节点之间的接口 主要介绍了数据包转发模型及其内部一系列操作. 目录 1.定义缩写 2数据包转发模型 2.1数据包检测规则(PDR) 2.2使用报告的 ...
- linux net.ipv4.ip_forward 数据包转发
出于安全考虑,Linux系统默认是禁止数据包转发的.所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包.这通常 ...
- SRTP参数及数据包处理过程
http://www.rosoo.net/a/201606/17449.html 原链接 目录 1. 相关参数介绍... 1 1.1 SRTP. 1 1.1.1 ...
- echo “1“ > /proc/sys/net/ipv4/ip_forward(数据包转发)
出于安全考虑,Linux系统默认是禁止数据包转发的.所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据 ...
最新文章
- 数学学渣必备!拍照上传,分步求解,微软解题神器拯救你
- 刚刚,2021中国最好学科排名发布:北大、清华、人大中国顶尖学科居前三
- 双活方案_MySQL业务双活的初步设计方案
- RDKit | 基于机器学习的化合物活性预测模型
- SpringBoot 实战定时任务 Scheduled
- 谈谈IT界8大恐怖预言!
- 【剑指offer】矩形覆盖
- 亚马逊记AWS(Amazon Web Services)自由EC2应用
- 深解微服务架构:从过去,到未来
- CentOS7 开机自启动脚本 chkconfig方式
- OpenShift 4 之集群是如何通过Cluster Version Operator升级的?
- centos 5.8 mysql_linux centos5.8装yum安装mysql
- HTML5页面实现文件下载
- 酷狗缓存文件kgtemp解密
- UWB室内定位系统,你知道几分
- sass-------sass的基本介绍、node.js的sass工具
- FFmpeg入门详解之43:FFmpeg解封装的原理与实战
- 玩转微信 | 炫酷的聊天满屏掉爱心系列,赶紧收藏
- SQLite的下载与配置
- Protege-OWL API中文版