博客
订阅:https://songxwn.com/atom.xml
简介
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),RFC7348
是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,(还有NVGRE、STT等技术)
是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。
VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,
将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,
接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上,可以方便地进行二层通信。
已经是事实上的网络虚拟化标准,公有云(阿里云、华为云、AWS等)的VPC大多数都是用VXLAN来作为数据转发层面。
不止在虚拟化环境,还有园区网络、运营商网络也开始使用。(灵活的二层接入、二层VPN隧道)
VXLAN已经成为当前构建数据中心的主流技术,是因为它能很好地满足数据中心里虚拟机动态迁移和多租户等需求。
VXLAN有什么作用?
为什么需要VXLAN呢?这和数据中心服务器侧的虚拟化趋势紧密相关,
一方面服务器虚拟化后出现了虚拟机动态迁移,
要求提供一个无障碍接入的网络;另一方面,数据中心规模越发庞大,租户数量激增,
需要网络提供隔离海量租户的能力。采用VXLAN可以满足上述两个关键需求。
虚拟机动态迁移,要求提供一个无障碍接入的网络
什么是服务器虚拟化技术?
传统的数据中心物理服务器利用率太低,平均只有10%~15%,浪费了大量的电力能源和机房资源,所以出现了服务器虚拟化技术。如图1-2所示,服务器虚拟化技术是把一台物理服务器虚拟化成多台逻辑服务器,这种逻辑服务器被称为虚拟机(VM)。每个VM都可以独立运行,有自己的操作系统、APP,当然也有自己独立的MAC地址和IP地址,它们通过服务器内部的虚拟交换机(vSwitch)与外部实体网络连接。
图1-2 服务器虚拟化示意
通过服务器虚拟化,可以有效地提高服务器的利用率,降低能源消耗,降低数据中心的运营成本,所以虚拟化技术目前得到了广泛的应用。图1-3 传统的二三层网络架构限制了虚拟机的动态迁移范围
什么是虚拟机动态迁移?
所谓虚拟机动态迁移,就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程。该过程对于最终用户来说是无感知的,从而使得管理员能够在不影响用户正常使用的情况下,灵活调配服务器资源,或者对物理服务器进行维修和升级。
在服务器虚拟化后,虚拟机动态迁移变得常态化,为了保证迁移时业务不中断,就要求在虚拟机迁移时,不仅虚拟机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例如TCP会话状态),所以虚拟机的动态迁移只能在同一个二层域中进行,而不能跨二层域迁移。
如图1-3所示,传统的二三层网络架构限制了虚拟机的动态迁移范围,迁移只能在一个较小的局部范围内进行,应用受到了极大的限制。
为了打破这种限制,实现虚拟机的大范围甚至跨地域的动态迁移,就要求把VM迁移可能涉及的所有服务器都纳入同一个二层网络域,这样才能实现VM的大范围无障碍迁移。
VXLAN如何满足虚拟机动态迁移时对网络的要求?
众所周知,同一台二层交换机可以实现下挂服务器之间的二层通信,而且服务器从该二层交换机的一个端口迁移到另一个端口时,IP地址是可以保持不变的。这样就可以满足虚拟机动态迁移的需求了。VXLAN的设计理念和目标正是由此而来的。
从上一个小节我们可以知道,VXLAN本质上是一种隧道技术,当源和目的之间有通信需求时,便在数据中心IP网络之上创建一条虚拟的隧道,透明转发用户数据。而数据中心内相互通信的需求众多,这种隧道的建立方式几乎是全互联形态才能满足通信需求。
VXLAN可以提供一套方法论,在数据中心IP网络基础上,构建一张全互联的二层隧道虚拟网络,保证任意两点之间都能通过VXLAN隧道来通信,并忽略底层网络的结构和细节。从服务器的角度看,VXLAN为它们将整个数据中心基础网络虚拟成了一台巨大的“二层交换机”,所有服务器都连接在这台虚拟二层交换机上。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,服务器完全无需关心。
图1-4 VXLAN将整个数据中心基础网络虚拟成了一台巨大的“二层交换机”
基于这种“二层交换机”的模型,就很容易理解为什么VXLAN可以实现VM动态迁移了:将虚拟机从“二层交换机”的一个端口换到另一个端口,完全无需变更IP地址。
说明:使用这种理念的技术协议,除了VXLAN外,还有NVGRE、STT等,本文仅对VXLAN进行说明。
数据中心租户数量激增,要求提供一个可隔离海量租户的网络
众所周知,在传统的VLAN网络中,标准定义所支持的可用VLAN数量只有4000个左右。服务器虚拟化后,一台物理服务器中承载了多台虚拟机,每个虚拟机都有独立的IP地址和MAC地址,相当于接入数据中心的服务器成倍扩大了。另外,公有云或其它大型虚拟化云数据中心动辄需容纳上万甚至更多租户,VLAN的能力显然已经力不从心。
VXLAN如何来解决上述问题呢?VXLAN在VXLAN帧头中引入了类似VLAN ID的网络标识,称为VXLAN网络标识VNI(VXLAN Network ID),由24比特组成,理论上可支持多达16M的VXLAN段,从而满足了大规模不同网络之间的标识、隔离需求。下文我们会介绍VNI的详细作用。
VXLAN与VLAN之间有何不同
VLAN作为传统的网络隔离技术,在标准定义中VLAN的数量只有4000个左右,无法满足大型数据中心的租户间隔离需求。另外,VLAN的二层范围一般较小且固定,无法支持虚拟机大范围的动态迁移。图1-5 VXLAN报文格式(以外层IP头为IPv4格式为例)
VXLAN完美地弥补了VLAN的上述不足,一方面通过VXLAN中的24比特VNI字段(如图1-5所示),提供多达16M租户的标识能力,远大于VLAN的4000;另一方面,VXLAN本质上在两台交换机之间构建了一条穿越数据中心基础IP网络的虚拟隧道,将数据中心网络虚拟成一个巨型“二层交换机”,满足虚拟机大范围动态迁移的需求。
虽然从名字上看,VXLAN是VLAN的一种扩展协议,但VXLAN构建虚拟隧道的本领已经与VLAN迥然不同了。
下面就让我们来看下,VXLAN报文到底长啥样。
图1-5 VXLAN报文格式(以外层IP头为IPv4格式为例)
如上图所示,VTEP对VM发送的原始以太帧(Original L2 Frame)进行了以下“包装”:
- VXLAN Header
- UDP Header
- Outer IP Header
- Outer MAC Header