叠加网络(overlay)之VxLAN

题记:这篇是吹牛Bi~的


叠加网络

一说到SDN,现在谁说不知道的/或者没听说过的估计不好意思说搞网络的了,毕竟已经火了不少年了,但是现在很多代理商的工程师还是有很多都搞不清楚什么是SDN,什么是NFV,NV又是什么鬼?什么是overlay网络?什么是控制器等等…笔者自身也没有一个感性的认识,但是作为一个初学者在这里只是想记录下道听途说的内容以及所想。

服务器虚拟化我们接触的应该更多,先从它聊起吧。

得益于vmware,一台物理服务器和我们的电脑一样,现在可以虚拟成多台虚拟机,同时工作。优点可想而知:弹性伸缩/按需调用/节省资源、成本…

由于这些虚拟机深度模拟成多台物理机,自然有虚拟网卡、虚拟磁盘、虚拟cpu等等。众所周知随着云计算的迅速发展,这种虚拟化成的虚拟机便成了一种变相的产品如vps等,当然还有vLB/vWAF/vFW等等,这种将业务所需要的基础设施(包含计算/网络/存储)按需交付或提供给用户,都属于IaaS(Infrastructure as a Service)这种服务模式,用户在购买了这种虚拟的基础设施之后,自己组建自己业务所需要的环境。

需求
但是随着云计算业务的推广,这种服务模式给底层网络带来的需求和挑战也越来越多,比如需要满足虚拟机跨数组中心的迁移, 且IP地址、MAC和网关(保证流量的对称性)保证不变。这就要求虚拟机所在的物理网络需要二层打通,要求大二层或者是二层、物理层的DCI网络,并且还要保证实时性/高可用性等。当虚拟机的迁移十分频繁,面对更加灵活的底层网络需求,这就提出了一个思想,即对底层网络资源池化,在应用上实现对网络资源的合理编排。

NV(network virtualization):它的定义是将物理网络的功能用软件在虚拟环境下模拟实现的做法,可以看出如果实现网络虚拟化,基于软件来对不同的软件和硬件网络资源进行整合,并进行合理的资源编排、按需调度,就可以满足云对底层网络的需求。

单单从技术来说,而现在在云的环境下,需要一种技术可以起到承载虚拟网络的作用,即解耦物理网络和逻辑网络,这也引出了一个叠加网络的概念。

叠加值得是对现有的IP网络(三层)进行叠加,承载的物理网络称为underlay网络,而靠近业务侧的虚拟网络就是overlay网络。overlay网络实现的具体技术或模式是L2 over L3 tunnel技术:如VXLAN/NVGRE,而VXLAN现已几乎成为各个设备厂家实现的标准。包括huawei、cisco等。而这些都属于NVo3,就是基于三层实现的网络虚拟化

VxLAN(virtual extensible local area network,虚拟可扩展局域网)是一种(MAC in UDP)隧道技术,传统的vlan也是实现NV的一种,可以将一个物理网络划分为多个虚拟网络,各个虚拟网络相互之间隔离,每个虚拟网络就可以看做是一个租户的网络,但是由于在12bit的vlan ID根本无法满足现在多租户数量上的需求,所以衍生出了这种扩展版本的VLAN即VXLAN

叠加网络基本特点
建立在物理网络上的逻辑网络。该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的。
具有独立的控制和转发平面,对于连接在Overlay边缘设备之外的终端系统来说,物理网络是透明的。

实现
Overlay网络实现有三种,网络/硬件overlay、主机/软件overlay、混合overlay。

其判定的依据是:服务器接入交换机是使用硬件还是软件,硬件就是各个主流设备厂家生产的支持VxLAN隧道的交换机。软件常指OVS(openvswitch)

如图:红色带箭头的就是overlay隧道
在网络Overlay方案和混合Overlay方案中,都需要有物理交换机设备支持VXLAN协议栈,并能与虚拟交换机构建的VTEP互通。由于在实际组网环境中,服务器种类很多,高吞吐高性能要求的业务一般都采用单独物理服务器甚至小机的硬件环境,而非虚拟化的x86服务器,这就没法使用vSwitch来接入VXLAN网络,只能让支持VXLAN的物理交换机来接入了

具体可以参考Overlay网络与物理网络的关系

这种实现叠加网络的做法是SDN的一种实现方式
众所周知,SDN的三个特点:集中控制,开放接口和网络虚拟化

而基于叠加网络实现的SDN特点就是:

  • 解耦:让物理网络和虚拟网络解耦和,将物理网络看做成网络功能池,和服务器虚拟化一样,使网络按需交付
  • 独立:其本身仅仅要求IP可达即可,在部署时无需对现有网络进行修改,但是需要保证有VxLAN网关,Overlay网络对现有网络兼容度好,这是一个非常大的优点
  • 控制:基于物理网络的叠加网络可以被统一控制,网络资源和计算、存储资源统一被调度和按需交付

VxLAN

下面,通过Overlay虚拟化网络+pSwitch GW来看看VXLAN具体的应用

VXLAN网络组成

VXLAN 术语 描述
NVE (Network Virtualization Edge) 实现网络虚拟化功能的网络实体。
VAP (Virtual Access Point) 统一为二层子接口,用于接入数据报文。为二层子接口配置不同的流封装,可实现不同的数据报文接入不同的二层子接口。
VTEP (VXLAN Tunnel Endpoints) 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)的租户。

由于vxlan将数据中心基础网络分为了underlay和overlay,在overlay可以看做是一个二层的网络,且vxlan和vlan类似。下面就根据传统vlan网络流量模型看看vxlan的流量模型:

vlan网络流量模型一般有三种:相同vlan之间,不同vlan之间,vlan和ip网络之间。而vxlan网络也有三种,相同的VNI之间,不同的VNI之间,vxlan和非vxlan网络如vlan网络之间

  • 相同vlan之间的流量通过二层交换机解决,转发规则就是进交换机access口打上对应的vlan标签,出交换机access口去掉对应的vlan标签,通过trunk口不对标签操作(但是当trunk口的PVID为vlan标签会去掉vlan标签)vxlan网络中也是类似的模型,为了保证标签对用户透明和保证用户的二层帧进入vxlan隧道会进行封装和解封装,引入了vxlan L2网关的概念。
  • 在不同vlan网络之间互访,在传统网络中需要经过vlan间路由或者单臂路由等方式完成,原理就是需要经过路由来去除vlan的二层信息。且vlan网络和ip网络之间通信需要借助三层交换机和路由设备完成,而在vxlan网络中不同的VNI之间、vxlan网络和非vxlan网络之间的通信是通过vxlan的L3网关完成

VXLAN的三层网关部署
L3网关分为集中式网关和分布式网关,这2者的主要区别就在于L3网关部署在是在leaf上还是在spine上。在典型的“Spine-Leaf”组网结构下,VXLAN的集中式网关指的是将Leaf节点作为L2网关,Spine节点作为L3网关,VXLAN分布式网关是指将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关,Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。

集中式网关部署特点:

  • 网关的部署较为简单,但是转发路径不是最优:同一二层网关下跨子网的数据中心三层流量都需要经过集中三层网关转发。
  • ARP表项规格瓶颈:由于采用集中三层网关,通过三层网关转发的终端租户的ARP表项都需要在三层网关上生成,而三层网关上的ARP表项规格有限,这不利于数据中心网络的扩展。


分布式网关部署特点:

  • 同一个Leaf节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活。
  • Leaf节点只需要学习自身连接服务器的ARP表项,而不必像集中三层网关一样,需要学习所有服务器的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强

数据平面

VXLAN报文结构

VXLAN header字段

VXLAN header字段 描述
VNI VXLAN网络标识,24比特,用于区分VXLAN
VXLAN Flags 8比特,取值为00001000
Reserved 预留给厂家,华为都是0

Outer UDP header

Outer UDP header字段 描述
Source Port 源端口号是内层以太报文头通过哈希算法计算后的值,用于实现ECMP
DestPort 目的UDP端口号是4789。

Outer IP header

Outer IP header字段 描述
IP SA 源IP地址是VXLAN隧道本端VTEP的IP地址。
IP DA 目的IP地址是VXLAN隧道远端VTEP的IP地址。

Outer Ethernet header

Outer Ethernet header字段 描述
MAC DA 在发送报文的虚拟机所属VTEP上根据目的VTEP地址查找路由表,路由表中下一跳IP地址对应的MAC地址。
MAC SA 发送报文的虚拟机所属VTEP的MAC地址。
802.1Q Tag 可选字段,该字段为报文中携带的VLAN Tag。
Ethernet Type 以太报文类型,IP协议报文该字段取值为0x0800。

VxLAN需要IP组播的支持(包括TOR交换机),但是这大大降低了部署的灵活性,所以华为给出了基于单播的头复制功能,会维护一个VTEP list,将报文复制并发送给VTEP

控制平面

  • 静态方式
    VXLAN隧道由一对VTEP IP地址确定,静态VXLAN隧道的创建完全通过手工配置本端和远端的VNI、VTEP IP地址和头端复制列表来完成,只要VXLAN隧道的两端三层路由可达,隧道就会Up。
  • 动态方式
    • MP-BGP方式: MP-BGP(Multi-protocol Extensions for Border Gateway Protocol)协议主要用于VXLAN分布式网关场景,以实现VXLAN隧道的动态建立和管理,以及主机路由的学习。当运行MP-BGP协议时,分布式网关跨子网互通需要Leaf节点先学习用户侧主机的ARP,然后生成主机路由,并通过BGP协议向其他BGP邻居发布,BGP邻居根据收到的BGP协议报文中的remote-nexthop路径属性中VTEP IP地址并结合本地VTEP IP地址动态创建VXLAN隧道。
    • BGP EVPN 方式:BGP EVPN协议在BGP协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息),被称为EVPN NLRI。这个有点我不是很理解,但是这是标准的方案
  • SDN:控制器(NETCONF Manager)使用NETCONF协议对设备(NETCONF Agent)进行管理,由控制器维护VxLAN隧道

MTU问题

由于VXLAN对原始报文增加了外层隧道,隧道的长度在IPV4场景下是50字节,因此在进行VXLAN通信环境构建中,需要考虑把VXLAN路径上的路由器和交换机的最大MTU进行相应调整。

坚持原创技术分享,您的支持将鼓励我继续创作!