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网络中出现了以下传统数据中心网络中没有的新元素:
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通用协议封装。
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设备压力过大,不利于大规模部署。
在分布式VXLAN 三层网关方案中,每台VTEP设备都可以作为VXLAN IP网关,对本地站点的流量进行三层转发。分布式三层网关可以很好地解决流量集中而导致Spine设备压力过大的问题,在组网上也可以做到灵活扩展。在分布式网关组网中,Spine设备一般不是VTEP,仅为Underlay网络的一部分,承担普通IP报文的转发功能。
VXLAN由于其简单的数据平面,良好的兼容性,已经成为了当下SDN Overlay技术的最好选择,但VXLAN未来还有很长的路要走。
比如探索VXLAN GPE封装是一个方向,解决VXLAN隧道的QoS也是一个方向。而控制平面要做的更多,如何更好的实现按需定制,如何实现智能流量调整,如何更好的兼容异构设备等等。相信未来会给我们一个更好的答案。