VXLAN理解
本文章是基于H3C VXLAN配置手册的一些理解和心得体会。
本人计算机专业出身,从事软件开发,目前转入云网络相关工作,所以重新开始学习网络知识。VXLAN是第一个要学习的任务,顾作为总结性的输出,目的是帮助个人理解和帮助后来人理解,如果有不对的地方也希望大神指点。
VXLAN概念
VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)是基于 IP 网络、采用“MAC in UDP”封装形式的二层 VPN 技术PS:理解VXLAN网络之前首先要理解二三层转发的基本原理。(MAC地址学习,路由选择等)
因为通过定义可以看出,VXLAN技术是VPN技术的一种。所以了解VXLAN首先应该理解什么是VPN技术,VPN技术又包括L2VPN和L3VPN。
VPN定义虚拟专用网络。
VXLAN目的就是要在三层网络上构建一个虚拟的二层网络。
VXLAN的优点
云计算出现后对网络要求得不到满足有如下三方面:
虚拟机规模受网络设备表项规格的限制
网络隔离能力有限
虚拟机迁移范围受限
VXLAN出现解决上述三点不足:
VXLAN将管理员规划的同一区域内的VM发出的原始报文封装成新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。
VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,有效得解决了云计算中海量租户隔离的问题。
VXLAN将VM发出的原始报文进行封装后通过VXLAN隧道进行传输,隧道两端的VM不需感知传输网络的物理架构。(可以理解为在同一个二层网路下,对于MAC地址变更等不会有影响)
VXLAN模型
充分理解模式是理解VXLAN技术的核心VXLAN 技术将已有的三层物理网络作为 Underlay 网络,在其上构建出虚拟的二层网络,即 Overlay 网络。
Overlay和Underlay可以理解为是一组概念,简单理解就是Underlay是实际的物理网络,而Overlay是逻辑网络。
对于用户来说不感知物理网络的组网形式,只知道Overlay的逻辑网络环境。
Overlay网络是有逻辑节点与逻辑链路组成。
根据图中的内容理解图中组成VXLAN网络的基本元素。
VM(Virtual Machine,虚拟机):在一台服务器上可以创建多台虚拟机,不同的虚拟机可以属于不同的 VXLAN。
VTEP(VXLAN Tunnel End Point,VXLAN 隧道端点):VXLAN 的边缘设备。
边缘设备是与核心设备相对的概念,指数据中心网络中与服务器直接相连的交换机设备。
VTEP具体的设备形态暂时不需要考虑,我们只需要关系它具有哪些功能即可。
VXLAN 隧道:两个 VTEP 之间的点到点逻辑隧道。
隧道概念:隧道技术是一种封装技术,即一种网络协议将其他网络协议的数据报文封装在自己的报文中,然后在网络中传输。封装后的数据报文在网络中传输的路径,成为隧道。虚拟点对点连接。
核心设备:IP核心网络中的设备。
核心设备不参与VXLAN处理,仅需 要根据封装后报文的目的IP地址对报文进行三层转发
通过图中可以看出核心设备并不做VXLAN的封装与解封装,所以核心设备只做了路由转发功能。
VSI(Virtual Switch Instance,虚拟交换实例):VTEP 上为一个 VXLAN 提供二层交换服务的 虚拟交换实例。
VSI在VXLAN网络中很重要的概念。VTEP的配置源头就来自VSI
VXLAN ID 和VSI 是一对一的关系,所以每增加一个VXLAN ID的二层网络都要有唯一的VSI实例与之对应。
虚拟交换机:VSI可以看成是能够实现交换机功能的软件程序,MAC地址学习、MAC地址老化、泛洪等。
从图中可以看出每个VSI实例分别配置在了多个需要交互的VTEP上。
AC(Attachment Circuit,接入电路)
VTEP 连接本地站点的物理电路或虚拟电路。在 VTEP 上,与 VSI 关联的三层接口称为 AC
三层接口能够配置IP地址,二层接口不能配置IP地址。
接入电路可以理解为与VM与VTEP间连接的接口。
通过模型理解VXLAN网络
根据模型不难看出,物理网络虽然是跨了三层网络,但是VTEP之下的VM之间互相认为彼此是二层可达的,也就是说他们之间是通过二层MAC地址相互通信的。
每个VXLAN ID构成了一个隔离的二层网络。因此可以认为图中VXLAN ID 10和VXLAN ID 20是相互隔离的。
如果他们是二层MAC地址相互通信,那么必然涉及到MAC地址的学习功能,所以VSI需要实现MAC地址学习功能。
相同的VXLAN ID 的VM之间都会维护一张MAC-IP的ARP信息表。这也是MAC地址学习的结果。
思考问题:如果同一个VXLANID网络下的VM都要走VTEP之间的网络进行MAC地址学习,必然会带来网络流量带宽的占用,由于VTEP之间是三层网络。而且MAC学习是一个需要经常执行的操作。如何解决呢?ARP抑制机制(后边介绍到)
VXLAN报文格式
标记位:“I”位为 1 时,表示 VXLAN 头中的 VXLAN ID 有效;为 0,表示 VXLAN ID 无效。
其他位保留未用,设置为 0。
VXLAN ID:用来标识一个 VXLAN 网络,长度为 24 比特。
VXLAN运行机制
识别接收到的报文所属的 VXLAN,以便将报文的源 MAC 地址学习到 VXLAN 对应的 VSI,并在该 VSI 内转发该报文。
对于从 VXLAN 隧道上接收到的 VXLAN 报文, VTEP 根据报文中携带的 VXLAN ID 判断该报文所属的 VXLAN。(找到对应的VSI)
学习虚拟机的 MAC 地址。
根据学习到的 MAC 地址表项转发报文
VXLAN运行机制理解
个人理解MAC地址学习包括两部分
VSI需要记录AC接口与MAC地址的绑定关系(本地MAC地址学习)
VSI需要记录tunnel与MAC地址的绑定关系(远端MAC地址学习)
想像一下VSI是一个交换机,交换机有两个Interface接口一个连接本地站点的网络(Interface1),一个连接远端站点网络(Interface2)。其中本地站点即一个VM(MAC地址)与Interface1接口有个对应关系,记录MAC地址与Interface1的绑定,通过学习得来。(谁发送到这个接口数据,VSI将数据解出来查看MAC地址,那源MAC就对应这个接口啦)
同样对于远端MAC地址:
静态配置。
动态学习:三层数据包进来的Interface有VXLAN ID,对应一个VSI,拆掉UDP信息,找到二层网络帧中的源MAC地址,此时MAC与入口的Interface2就建立了绑定关系。
Interface2叫做隧道接口,因为是从VXLAN隧道对接的。
VM 也需要通过ARP广播报文知道自己需要的IP地址所对应的MAC地址,否者不知道向哪里发送。
ARP泛洪抑制
ARP抑制简单立即就是为了方式VM发送的ARP广播报文在网络中频繁的发送,而采取的一种机制
原理:就是在VM发送ARP广播之后,VSI先判断是否记录了这个MAC地址与IP地址的关系,如果记录了这个关系表,VSI会做ARP代答。即不会再网络中发送ARP报文,让对端VM回答ARP响应。只有在VSI中没有记录MAC地址与IP地址的关系时,才会发送ARP报文,然后双方的VSI再次进行MAC学习记录记录IP与MAC的关系。
泛洪抑制的原理就是将泛洪后的MAC地址表项记录下来。因为Overlay上都是可以看做是一个二层网络,A、B网络会通过ARP进行MAC地址与IP地址的关系记录,此时,如果VTEP上记录了其他虚拟机的MAC的话,(记录其他虚拟机MAC地址信息的表叫做ARP泛洪抑制表项),就不会广播到整个三层网络减少核心网流量,代理应答这个MAC地址请求。
图中7,8操作就是泛洪抑制后的结果,而之前的就是泛洪的过程。
转发泛洪流量
1.上文中提到的VSI将ARP报文在网络中转发的机制叫做转发泛洪流量。2.VTEP节点只会接受泛洪流量包,并且转发给本地站点,而不会转发给其他VTEP,目的为了防止网络报文的回环。
发表回复