《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第三章云存储第1节——分布式云存储总述
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.5节——EIGRP协议
- 第四章云网络4.3.6节——IS-IS协议
- 第四章云网络4.3.7节——BGP协议
- 第四章云网络4.3.7.2节——BGP协议概述
- 第四章云网络4.3.7.3节——BGP协议实现原理
- 第四章云网络4.3.7.4节——高级特性
- 第四章云网络4.3.7.5节——实操
- 第四章云网络4.3.7.6节——MP-BGP协议
- 第四章云网络4.3.8节——策略路由
- 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
- 第四章云网络4.3.10节——VXLAN技术
- 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
- 第四章云网络4.3.10.3节——VXLAN隧道机制
- 第四章云网络4.3.10.4节——VXLAN报文转发过程
- 第四章云网络4.3.10.5节——VXlan组网架构
- 第四章云网络4.3.10.6节——VXLAN应用部署方案
- 第四章云网络4.4节——Spine-Leaf网络架构
- 第四章云网络4.5节——大二层网络
- 第四章云网络4.6节——Underlay 和 Overlay概念
- 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
- 第四章云网络4.7.2节——virtio网络半虚拟化简介
- 第四章云网络4.7.3节——Vhost-net方案
- 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
- 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
- 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
- 第四章云网络4.7.8节——SR-IOV方案
- 第四章云网络4.7.9节——NFV
- 第四章云网络4.8.1节——SDN总述
- 第四章云网络4.8.2.1节——OpenFlow概述
- 第四章云网络4.8.2.2节——OpenFlow协议详解
- 第四章云网络4.8.2.3节——OpenFlow运行机制
- 第四章云网络4.8.3.1节——Open vSwitch简介
- 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
- 第四章云网络4.8.4节——OpenStack与SDN的集成
- 第四章云网络4.8.5节——OpenDayLight
- 第四章云网络4.8.6节——Dragonflow
1 VXLAN是什么
1.1 概念
VXLAN (Virtual eXtensible LAN,可扩展虚拟局域网络) 是一种Internet 标准重叠网络虚拟化技术,它提供了一种在 IP(第 3 层)网络上封装以太网(第 2 层)帧的方法,这一概念通常被称为“隧道”。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。
VXLAN技术将已有的三层网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像工作在一个局域网中。
虽然 VXLAN 只是众多虚拟网络或隧道技术中的一种,但它比其他技术更好地解决了数据中心网络中的几个扩展挑战。由于这些优势,用于云计算的现代数据中心网络架构通常将基于稳健路由协议(例如BGP)的“scale-out”IP (L3) leaf-spine Underlay与基于 VXLAN 的Overlay相结合,如下图所示。
NVO3是基于三层IP overlay网络构建虚拟网络的技术的统称,VXLAN只是NVO3技术之一。除此之外,比较有代表性的还有NVGRE、STT。
1.2 诞生背景
1.2.1传统数据中心网络所面临的挑战
数据中心的基本概念及特点:
- 数据中心(Data Center)是一套完整、复杂的集合系统,它不仅包括计算机系统和其它与之配套的设备(例如通信和存储系统),还包含数据通信系统、环境控制设备、监控设备以及各种安全装置。
- 数据中心通常是指在一个物理空间内实现信息集中处理、存储、传输、交换、管理的场所。
- 服务器、网络设备、存储设备等通常都是数据中心的关键设备。
- 设备运行所需要的环境因素,如供电系统、制冷系统、机柜系统、消防系统、监控系统等通常都被认为是关键物理基础设施。
- 互联网数据中心(Internet Data Center,IDC)是互联网中数据存储和处理的中心,是互联网中数据交互最为集中的地方。
- 数据中心的四大焦点:可靠、灵活、绿色、高效。
传统数据中心网络结构:
- 传统网络模型在很长一段时间内,支撑了各种类型的数据中心。
- 按照功能模块划分,传统数据中心可分为核心区、外网服务器区、内网服务器区、互联网服务器区、数据中心管理区、数据交换&测试服务器区、数据存储功能区、数据容灾功能区等。
- 在服务器区,再根据不同的应用类型划分不同的层次,例如,数据库层、应用服务器层、WEB服务器层等。
- 传统数据中心的网络结构是按照经典的三层架构(接入、汇聚、核心)进行部署的。
计算节点低延迟需求:
- 流量 需要经过多层交换机转发。
- 大量虚拟机相互访问需求。
- 东西向流量延迟较大。
- 同一物理服务器部署大量虚拟机,造成流量并发量大增。
- 数据流量模型也从传统的南北向流量转变为东西向流量。
- 网络中存在大量多对一、多对多的东西向流量。
- 对接入层和汇聚层设备的处理能力提出了更高的要求。
1.2.2 虚拟化应用大量应用
- 传统的数据中心内,服务器主要用于对外提供服务,不同业务区域之间可通过划分为不同的安全分区或VLAN进行隔离。
- 一个分区通常集中了该业务所需的计算、网络及存储资源,不同的分区之间或者禁止互访,或者经由三层网络进行互访,**数据中心的网络流量大部分集中于南北向。**在这种设计下,不同分区间计算资源无法共享,资源利用率低下的问题越来越突出。
- 通过虚拟化技术、云计算管理技术等,将各个分区间的资源进行池化,实现数据中心资源的有效利用。
- 随着这些新技术的兴起和应用,新的业务需求如虚拟机迁移、数据同步、数据备份、协同计算等在数据中心内开始实现部署,数据中心内部东西向流量开始大幅度增加。
- 虚拟机动态迁移技术在实际应用中很常见,比如需要对一台服务器进行升级和维护时,可以通过VM迁移技术将这台服务器上的VM先迁移到另一台服务器上,其间所提供的服务不中断,然后等服务器升级和维护结束后再将VM迁移回来即可。
- 虚拟机动态迁移技术还可以充分利用计算资源,比如某公司的网购平台在某段时间内在某片区域提供促销活动,其间业务量大大增加,这样可以将其他业务量小的区域内的VM动态迁移过来,这样不会中断其他区域服务的情况下,集中利用资源,活动结束后再将VM调整回原先的区域。
1.2.3 传统三层架构下虚拟机动态迁移带来的问题
- 虚拟机动态迁移,就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程。
- 该过程对于最终用户来说是无感知的,从而使得管理员能够在不影响用户正常使用的情况下,灵活调配服务器资源,或者对物理服务器进行维修和升级。
- 一旦服务器跨二层网络迁移,就需要变更IP地址,那么原来这台服务器所承载的业务就会中断,而且牵一发动全身,其他相关的服务器也要变更相应的配置,影响巨大。
- 虚拟机迁移范围受限,由于服务器资源等问题(如CPU过高,内存不够等),虚拟机迁移已经成为了一个常态性业务。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求虚拟机迁移必须发生在一个二层网络中。而传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。
1.2.4 当前的一些解决方案:拓扑简化思想
- 为了打破这种跨三层网络限制,实现虚拟机的大范围甚至跨地域的动态迁移,就要求把VM迁移可能涉及的所有服务器都纳入到同一个二层网络中,这样才能实现VM大范围的无障碍迁移。
- 在汇聚核心层部署CSS,在接入层部署istack,可实现简化拓扑结构的目的。
- 设备无需使能STP等二层环路保护机制,更有效地提高了链路资源利用率。
- 但设备性能问题并没有得到根本解决。
- 该解决方案比较适于在一个数据中心内部进行VM迁移操作。
该解决方案存在的问题:
- MAC地址数量陡增,接入设备压力较大。在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发。服务器虚拟化后,VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是VM网卡MAC地址数量的空前增加。而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。
- 多租户隔离环境中设备VLAN资源紧张。VLAN作为当前主流的网络隔离技术,在标准定义中只有12比特,因此可用的VLAN数量仅4096个。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力无法满足。
- 二层网络范围过大,影响网络通信效率。
- 传统解决方案适用于DC内部大二层互联应用。
- STP或CSS+iStack传统二层技术不适合构建大规模二层网络。
1.3 VXLAN提供的解决方案
1.3.1 多数据中心大二层互联-VXLAN
- 早期的虚拟机管理及迁移依附于物理网络,因此数据中心内部东西向流量主要是二层流量。
- 为扩大二层物理网络的规模,提高链路利用率,出现了TRILL、SPB等大二层网络技术。
- 随着虚拟化数据中心规模的不断扩大,以及云化管理的不断深入,物理网络的种种限制越来越不能满足虚拟化的要求,由此提出了VXLAN、NVGRE等Overlay技术。
- 在Overlay方案中,物理网络的东西向流量类型逐渐由二层向三层转变,通过增加封装,将网络拓扑由物理二层变为逻辑二层,同时提供了逻辑二层的划分管理,更好地满足了多租户的需求。
- VXLAN、NVGRE等Overlay技术都是通过将MAC封装在IP之上,实现对物理网络的屏蔽,解决了物理网络VLAN数量限制、接入交换机MAC表资源有限等问题,同时通过提供统一的逻辑网络管理工具,更方便地实现了虚拟机在进行迁移时网络策略跟随的问题,大大降低了虚拟化对网络的依赖,成为了目前网络虚拟化的主要发展方向。
1.3.2 VXLAN方案的优势
1. 针对虚拟机规模受设备表项规格限制
VXLAN将管理员规划的同一区域内的VM发出的原始报文封装成新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求。
VTEP会将VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的其他设备只表现为封装后的参数。也就是说,网络中的其他设备看不到VM发送的原始报文。
如果服务器作为VTEP,那从服务器发送到接入设备的报文便是经过封装后的报文,这样,接入设备就不需要学习VM的MAC地址了,它只需要根据外层封装的报文头负责基本的三层转发就可以了。因此,虚拟机规模就不会受网络设备表项规格的限制了。
当然,如果网络设备作为VTEP,它还是需要学习VM的MAC地址。但是,从对报文进行封装的角度来说,网络设备的性能还是要比服务器强很多。
2. 针对网络隔离能力限制
VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,有效得解决了云计算中海量租户隔离的问题。
一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。VTEP在对报文进行VXLAN封装时,给VNI分配了24比特的空间,这就意味着VXLAN网络理论上支持多达16M(即:224-1)的租户隔离。相比VLAN,VNI的隔离能力得到了巨大的提升,有效得解决了云计算中海量租户隔离的问题。
3.针对虚拟机迁移范围受限
VXLAN将VM发出的原始报文进行封装后通过VXLAN隧道进行传输,隧道两端的VM不需感知传输网络的物理架构。这样,对于具有同一网段IP地址的VM而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。即VXLAN技术在三层网络之上,构建出了一个虚拟的大二层网络,只要虚拟机路由可达,就可以将其规划到同一个大二层网络中。这就解决了虚拟机迁移范围受限问题。
为了保证业务不中断,VM的迁移就必须发生在同一个二层域内。现在,再回头看下VXLAN网络模型,你是不是惊奇地发现,有了VTEP的封装机制和VXLAN隧道后,所谓的 “二层域”就可以轻而易举的突破物理上的界限?也就是说,在IP网络中, “明”里传输的是跨越三层网络的UDP报文,“暗”里却已经悄悄将源VM的原始报文送达目的VM。就好像在三层的网络之上,构建出了一个虚拟的二层网络,而且只要IP网络路由可达,这个虚拟的二层网络想做多大就做多大。
1.3.3 VXLAN应对网络和业务维护自动化需求
业务快速创新、自动发放需求.
云数据中心的网络解决方案:
- VXLAN技术主要解决多租户环境下的二层互联问题。
- VXLAN通过隧道技术在不改变三层网络拓扑的前提下构建跨数据中心的逻辑二层网络拓扑。
- VXLAN技术有效解决了vlan数量的限制问题。
- VXLAN技术对二层网络做了优化不会造成广播风暴等问题。
- SDN技术主要是简化网络的部署、运维、调整等。
随着网络技术的发展,云计算凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新趋势。而服务器虚拟化作为云计算的核心技术之一,得到了越来越多的应用。
服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为了实现业务的灵活变更,虚拟机VM(VirtualMachine)需要能够在网络中不受限迁移,这给传统的“二层+三层”数据中心网络带来了新的挑战。
1.4 VXLAN基础概念
VXLAN(Virtual eXtensible Local Area Network)是VLAN扩展方案草案,采用MAC in UDP(User Datagram Protocol)(端口4789)封装方式,是NVo3(Network Virtualization over Layer3)中的一种网络虚拟化技术。
NVO3(Network Virtualization Over Layer 3),基于三层IP overlay网络构建虚拟网络技术统称为NVO3,目前比较有代表性的有:VXLAN、NVGRE、STT。
运行NVO3的设备叫做NVE(Network Virtualization Edge),它位于overlay网络的边界,实现二、三层的虚拟化功能;
- VXLAN网络中的NVE以VTEP进行标识,VTEP(VXLAN TunnelEndPoint,VXLAN隧道端点);
- 每一个NVE至少有一个VTEP,VTEP使用NVE的IP地址表示;口两个VTEP可以确定一条VXLAN隧道
1.4.1 VTEP概念
- VXLAN网络中的NVE以VTEP进行标识,VTEP(VXLAN Tunnel EndPoint,VXLAN隧道端点);
- 每一个NVE至少有一个VTEP,VTEP使用NVE的IP地址表示;
- 两个VTEP可以确定一条VXLAN隧道,VTEP间的这条VXLAN隧道捋被两个NVE间的所有VNI所公用;
- VTEP既可以是一台独立的网络设备(比如华为的CE系列交换机),也可以是虚拟机所在的服务器
1.4.2 VNI概念
- VNI(VXLAN Network Identifier,VXLAN网络标识。24位)是一种类似于VLANID的用户标示,一个VNI代表了一个租户,属于不同VNl的虚拟机之间不能直接进行二层通信。VXLAN报文封装时,给VNl分配了足够的空间使其可以支持海量租户的隔离
- 标识VXLAN网络中的二层域
- 两个VTEP可以确定一条VXLAN隧道,VTEP间的这条VXLAN隧道捋被两个NVE间的所有VI所公用。
1.4.3 Bridge-Domain桥接域
在VXLAN(Virtual eXtensible Local Area Network)网络中,将虚拟广播域VN(Virtual Network)对应的VNI(VXLAN Network Identifier)以1:1方式映射到广播域BD,BD成为VXLAN网络的实体,通过BD转发流量。
1.4.4 VXLAN的网关
和VLAN类似,不同VNI之间的主机,以及VXLAN网络和非VXLAN网络中的主机不能直接相互通信。为了满足这些通信需求,VXLAN引入了VXLAN网关的概念。VXLAN网关分为二层网关和三层网关,VXLAN二层网关用于终端接入VXLAN网络,也可用于同一VXLAN网络的子网通信;VXLAN三层网关用于VXLAN网络中跨子网通信以及访问外部网络。
根据三层网关部署方式的不同,VXLAN三层网关又可以分为集中式网关和分布式网关。
1.4.4.1 VXLAN集中式网关
集中式网关是指将三层网关集中部署在一台设备上,如下图所示,所有跨子网的流量都经过这个三层网关转发,实现流量的集中管理。
VXLAN集中式网关组网图
部署集中式网关的优点和缺点如下:
- 优点:对跨子网流量进行集中管理,网关的部署和管理比较简单。
- 缺点:
- 转发路径不是最优:同一二层网关下跨子网的三层流量都需要经过集中三层网关绕行转发(如图中蓝色虚线所示)。
- ARP表项规格瓶颈:由于采用集中三层网关,通过三层网关转发的终端的ARP表项都需要在三层网关上生成,而三层网关上的ARP表项规格有限,限制了网络的扩展。
1.4.4.2 VXLAN分布式网关
通过部署分布式网关可以解决集中式网关部署的缺点。VXLAN分布式网关是指在典型的“Spine-Leaf”组网结构下,将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关(同时也是VXLAN二层网关),Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。如下图所示,Server1和Server2不在同一个网段,但是都连接到同一个Leaf节点。Server1和Server2通信时,流量只需要在该Leaf节点上转发,不再需要经过Spine节点。
部署分布式网关时:
- Spine节点:关注于高速IP转发,强调的是设备的高速转发能力。
- Leaf节点:
- 作为VXLAN网络中的二层网关设备,与物理服务器或VM对接,用于解决终端租户接入VXLAN虚拟网络的问题。
- 作为VXLAN网络中的三层网关设备,进行VXLAN报文封装/解封装,实现跨子网的终端租户通信,以及外部网络的访问。
VXLAN分布式网关示意图
VXLAN分布式网关具有如下特点:
- 同一个Leaf节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活。
- Leaf节点只需要学习自身连接服务器的ARP表项,而不必像集中三层网关一样,需要学习所有服务器的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强。
1.4.5 扩展——NVO3典型技术实现
NVO3标准术语:
业界其他技术实现-NVO3技术背景:
- VXLAN/NVGRE/STT是NVO3三种典型技术,总体是通过MAC In IP技术来构建Over在IP网络之上的二层网络,使同一个租户的VM彼此可以二层通信、跨三层物理网络进行迁移。相比传统L2 VPN等Overlay技术,NVO3的CE侧是虚拟或物理Host,而不是网络Site,另外Host具有移动性。目前,一般是IT厂商主导,通过服务器内Hypervisor来构建Overlay网络。
- NVGRE主要支持者是Microsoft。与VXLAN不同的是,NVGRE没有采用标准传输协议(TCP/IP),而是借助通用路由封装协议(GRE)。NVGRE使用GRE头部的低24bit位作为租户网络标识符。
- VXLAN(Virtual Extensible LAN)虚拟可扩展局域网,是一种Overlay的网络技术,使用MAC in UDP的方法进行封装。后文会详细介绍VXLAN技术。
- STT(Stateless Transport Tunneling)是一种MAC Over Ip的协议,和VXLAN、NVGRE类似,都是把二层的帧封装在一个Ip报文的payload中,在Ip报文的payload中,除了虚拟网络的二层包以外,还要把构造的一个TCP头和一个STT头加在最前面。
1.5 Linux 对 VXLAN 的支持
VTEP 可以由专有硬件来实现,也可以使用纯软件实现。目前比较成熟的 VTEP 软件实现包括:
- 带 VXLAN 内核模块的 Linux
- Open vSwitch
我们先来看 Linux 如何支持 VXLAN,Open vSwitch 方式将在后面章节讨论。实现方式:
- Linux vxlan 创建一个 UDP Socket,默认在 8472 端口监听。
- Linux vxlan 在 UDP socket 上接收到 vxlan 包后,解包,然后根据其中的 vxlan ID 将它转给某个 vxlan interface,然后再通过它所连接的 linux bridge 转给虚机。
- Linux vxlan 在收到虚机发来的数据包后,将其封装为多播 UDP 包,从网卡发出。
参考链接
VXLAN概念介绍 - 固定接入 - 通信人家园 - Powered by C114
最好的vxlan介绍_查里王的博客-CSDN博客_最好的vxlan介绍
VXLAN介绍_魏言华的博客-CSDN博客_vxlan
VXLAN基本概述_曹世宏的博客的博客-CSDN博客_vxlan
两种Overlay技术:NVGRE和VXLAN - 知乎
VXLAN:云时代的虚拟化数据中心网络