五分钟!简单了解VXLAN技术

VXLAN 通信过程
对于处于同一个VXLAN的两台虚拟终端,其通信过程可以概括为如下的步骤:
1. 发送方向接收方发送数据帧,帧中包含了发送方和接收方的虚拟mac地址 。
2. 发送方连接的VTEP节点收到了数据帧,通过查找发送方所在的VXLAN以及接收方所连接的VTEP节点,将该报文添加VXLAN首部、外部UDP首部、外部IP首部后,发送给目的VTEP节点 。
3. 报文经过物理网络传输到达目的VTEP节点 。
4. 目的VTEP节点接收到报文后,拆除报文的外部IP首部和外部UDP首部,检查报文的VNI以及内部数据帧的目的MAC地址,确认接收方与本VTEP节点相连后,拆除VXLAN首部,将内部数据帧交付给接收方 。
5. 接收方收到数据帧,传输完成 。
 
VXLAN网络模型

五分钟!简单了解VXLAN技术

文章插图
 
从图中可以发现,VXLAN网络中出现了以下传统数据中心网络中没有的新元素:
VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)
VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,VXLAN报文的相关处理均在这上面进行 。总之,它是VXLAN网络中绝对的主角 。
VTEP既可以是独立的网络设备(比如华为的CE系列交换机),也可以是虚拟机所在的服务器 。那它究竟是如何发挥作用的呢?答案稍候揭晓 。
VNI(VXLAN Network Identifier,VXLAN 网络标识符)
前文提到,以太网数据帧中VLAN只占了12比特的空间,这使得VLAN的隔离能力在数据中心网络中力不从心 。而VNI的出现,就是专门解决这个问题的 。
VNI是一种类似于VLAN ID的用户标示,一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信 。VXLAN报文封装时,给VNI分配了足够的空间使其可以支持海量租户的隔离 。详细的实现,我们将在后文中介绍 。
 
VXLAN隧道
“隧道”是一个逻辑上的概念,它并不新鲜,比如大家熟悉的GRE 。说白了就是将原始报文“变身”下,加以“包装”,好让它可以在承载网络(比如IP网络)上传输 。
 
从主机的角度看,就好像原始报文的起点和终点之间,有一条直通的链路一样 。而这个看起来直通的链路,就是“隧道” 。顾名思义,“VXLAN隧道”便是用来传输经过VXLAN封装的报文的,它是建立在两个VTEP之间的一条虚拟通道 。
 
RFC7348中规定的VXLAN内部的载荷报文必须是以太网报文,这就限制了VXLAN协议的使用范围 。为了让VXLAN能够更广泛的支持其他协议报文的Overlay传输,RFC草案正在探索VXLAN Generic Protocol Encapsulation (GPE)即VXLAN通用协议封装 。
 
五分钟!简单了解VXLAN技术

文章插图
 
GPE封装使用了原FRC7348中规定的一些保留位 。
• Version(Ver):指示VXLAN GPE协议版本 。初始值为0 。
• Next Protocol Bit (P bit): 如果P位为1,则Next Protocol域有效 。
• BUM Traffic Bit (B bit): 如果B位为1,则表示VXLAN内部的封装报文为BUM报文 。
• OAM Flag Bit (O bit): 如果O位为1,则表示VXLAN内部的封装报文为OAM报文 。
• Next Protocol: 8位 。表示VXLAN内部的封装报文的协议格式 。
BUM(Broadcast, Unknown-unicast, Multicast)即广播、未知单播、组播流量 。根据对泛洪流量的复制方式不同可分为单播路由方式(头端复制)和组播路由方式(核心复制)两种 。
在头端复制方式下,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP 。远端VTEP收到VXLAN报文后,解封装报文,将原始数据在本地站点的VXLAN内泛洪 。
为避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道 。
 
VXLAN三层网关
 
VXLAN三层网关提供了VXLAN的三层转发功能,通过将VXLAN关联VSI虚接口(VXLAN虚接口)的方式实现,在VSI虚接口指定IP地址作为VXLAN内所有虚拟机的网关 。
 
VXLAN三层网关的主要功能:
• 实现VXLAN内虚拟机与非VXLAN网络的互访
• 完成跨VXLAN的虚拟机互访
VXLAN三层网关根据其部署方式不同,有集中式和分布式两种 。
集中式网关,即网关都集中在Spine设备 。所有跨VXLAN的流量,VXLAN与非VXLAN的互访流量都需要经过Spine 。集中式网关的优点是流量均会经过Spine设备,能比较容易实现流量控制、自动引流等功能 。缺点是Spine设备压力过大,不利于大规模部署 。


推荐阅读