Overlay技术

传统的交换网络解决了二层的互通及隔离问题,这个架构发展了几十年已经相当成熟。而随着云时代的到来,却渐渐暴露出了一些难以解决的瓶颈,包括多租户环境、虚拟机迁移和VLAN数量不够等问题。

为了解决上述局限性问题,不论是网络设备厂商,还是虚拟化软件厂商,都提出了一些新的Overlay解决方案,

EVI(Ethernet Virtualization Interconnect)、TRILL(Transparent Interconnection of Lots of Links)、SPB(Shortest Path Bridging)等大二层技术,虚拟化软件厂商提出的VXLAN(Virtual eXtensible LAN)、NVGRE(Network Virtualization Using Generic Routing Encapsulation) 、 STT(A Stateless Transport Tunneling Protocol for Network Virtualization)等一系列新技术

虚拟化技术按照技术领域来划分,可以分为:网络、存储、服务器(计算)虚拟化 ,在数据中心内部,三者是相辅相成的关系。

典型的网络虚拟化技术有VLAN、VPLS、VXLAN,典型的计算虚拟化技术有时分共享技术、x86技术、广为人知的存储虚拟化技术主要有RAID。在实际应用时,这些虚拟化领域可能存在交叉,比如说vSwitch技术,其实是网卡虚拟化和计算虚拟化的结合,其在操作系统层面实现了物理网卡一虚多,并提供多张虚拟网卡供不同虚机使用。而FCOE(Fiber Channel overEthernet以太网光纤通道)技术可以将光纤通道映射到以太网,从而让服务器-SAN存储设备的光纤通道请求和数据可以通过以太网连接来传输。

随着计算虚拟化的蓬勃发展,云计算数据中心对网络提出了更高的要求,包括网络对虚拟化场景的支持、多租户多业务的承载能力以及资源的灵活快速部署,从而暴露了传统网络的一些缺陷,具体体现在如下三个方面:

一、虚拟化支持:云计算要求网络资源被集中管理,传统网络难以实现跟云平台的对接。  同时,云计算对网络具有快速部署的要求,传统网络难以实现秒级的业务开通速度。最后,云  计算的高可靠性要求当一台 服务器故障时,该服务器上的虚拟机要能自动迁移到其他服务器上, 且业务不能中断,这就要求迁移前后网络处于同一个二层域,传统的大二层数据中心会面临非  常严峻的问题:

l  业务扩展问题

业务扩展要求业务部署与网络位置无关,而基于IP子网的区域划分限制了二层网络范围。

l  网络广播问题

虚拟迁移要求迁移前后处于网络的同一个二层域,因而数据中心均采用大规模静态VLAN

trunk部署,二层网络变大后会带来网络广播域变大、广播报文增多、二层网络收敛时间变长等

一系列问题,不能很好的适应云计算和虚拟机迁移需求。

l  4K VLAN上限问题

云计算数据中心要求多租户共用一张物理网络,传统的VLAN隔离技术仅支持4094个隔离域,并不能满足大规模云计算中心的多租户需求。

l  网络虚拟化问题

云业务的部署,网络虚拟化一直没有很好的解决方案,导致用户在部署云业务时,网络配置仍是是一项复杂的工作,无法实现自上而下的自动化网络部署。

二、多业务承载:云计算数据中心特别是公有云场景中,虚拟机承载的业务是多种多样的, 网络要能适应每一种业务作出调整,并且保证不同使用者的网络是相互隔离的。传统网络的网 络隔离和安全访问控制并不简单,且会随着业务变多而愈加复杂。

三、资源灵活性:传统网络基于IP子网进行划分,而云计算要求业务资源任意部署,业务、资源与物理位置无关,这就要求整个云计算数据中心必须为大二层网络。同时,不同租户可能 会使用相同的网络资源(如IP、subnet、gateway  ip),云计算要求租户之间的二层网络和三层网络均是相互隔离的。

       随着计算虚拟化发展,DC内大量部署的虚拟机提供云服务。部署虚拟机需要在网络中无限制地迁移,虚拟机数量和增长速度也远超物理服务器,给网络带来了新的挑战。

       虚拟机迁移的网络属性要求,当其从一个物理机上迁移到另一个物理机上,虚拟机需要不间断业务,因而需要其IP地址、MAC地址、网关IP、网关MAC等参数均保持不变,因而要求迁移前后所处的网络是同一个二层网络,且要求网络本身具备多路径多链路的冗余和可靠性。因而在云计算技术落地早期,大二层数据中心应用非常广泛。但二层网络均需要配置传统的网络生成树(STP,Spaning Tree Protocol)技术用以防止网络二层环路,但STP不仅部署繁琐,且协议复杂,随着二层网络规模的扩大,STP的收敛时间会变长,因而STP限制了虚拟化的网络扩展性。而基于各厂家私有的IRF/vPC等设备级的(网络N:1)虚拟化技术,虽然可以简化拓扑、具备高可靠性,但是对于网络有强制的拓扑形状,在网络的规模和灵活性上有所欠缺,亦不适合大型云计算数据中心。

       在大二层网络环境下,数据流均需要通过明确的网络寻址以保证准确到达目的地,因此网 络设备的二层地址表项大小(即MAC地址表),成为决定了云计算环境下虚拟机的规模上限。特别是对于低成本的接入设备而言,因其表项一般规格较小,限制了整个云计算数据中心的虚 拟机数量,但如果其地址表项设计为与核心或网关设备在同一档次,则会提升网络建设成本。 虽然核心或网关设备的MAC与ARP规格会随着虚拟机增长也面临挑战,但对于此层次设备能力而言,大规格是不可避免的业务支撑要求。减小接入设备规格压力的做法可以是分离网关能力, 如采用多个网关来分担虚机的终结和承载,但如此也会带来成本的巨幅上升。

       在公有云多租户场景下,要求租户与租户之前是完全隔离的,从网络层面上来看,租户与 租户必然使用的是同一张物理网络,因而我们会用到网络虚拟化技术来隔离物理网络,抽象出 不同的、相互隔离的逻辑网络供不同租户使用。当前的主流网络隔离/网络虚拟化技术为VLAN, 在大规模虚拟化环境部署会有两大限制:一是VLAN数量在标准定义中只有12个比特单位,即 可用的数量为4K,这样的数量级对于公有云或大型虚拟化云计算应用而言微不足道,其网络隔离与分离要求轻而易举会突破4K;二是VLAN技术当前为静态配置型技术,这样使得整个数据 中心的网络几乎为所有VLAN被允许通过(核心设备更是如此),导致任何一个VLAN的未知目的广播数据会在整网泛滥,无节制消耗网络交换能力与带宽。

       网络虚拟化在网络诞生之初就已存在,可以构建出虚拟的网络链路或网络节点的技术,无论是二层的、大二层的、三层的,还是多虚一、一虚多,都属于网络虚拟化技术。包括VLAN、STP、IRF等技术。

       网络虚拟化分为数据平面、控制平面、管理平面(CLI、NETCONF等),这样的结构具有可扩展性好、灵活性和安全性高、逻辑分区清晰的优点。

网络虚拟化从来不是单独发展的,而是和服务器虚拟化、存储虚拟化并列发展的,为解决计算虚拟化面临的挑战,发展出了多种新的网络虚拟化技术,网络虚拟化进入高速发展期。

云计算要求网络虚拟化能够以较低成本提供一个拥有充足隔离能力的透明大二层网络,为满足计算虚拟化对网络的要求,网络虚拟化也发展了各种各样的新技术,然而这些技术在大型云计算数据中心场景下均存在各种各样的不足之处:

l  STP:部署繁琐,无法构建跨三层的二层网络,规模有限;

l  IRF:简化网络拓扑,强制要求拓扑,只能用于数据中心内部;

l  EVB:包括VEB、VEPA等部分,只能解决虚拟机网络接入的问题;

l  802.1Qbh:需要专门芯片支持,厂商限制严重,也只能解决接入层;

l  Trill:引入了L2 ISIS作为寻址协议,在内外层Ethernet报头之间引入了TRILL报头,使用NickName作为转发标识,用于报文在TRILL网络中的寻址转发,MAC in MAC,落地情况一般,收敛慢,缺乏运维经验;

l  SPB:同样使用L2 ISIS作为寻址协议,MAC in MAC,负载均衡需要预配置,缺乏运维经验。

故而我们需要一种新的网络虚拟化技术,这种技术既能满足云计算的要求,也能基于已有网络进行改造,这就是近年来已经得到广泛落地的Overlay技术了。

 

Overlay在网络技术领域,是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。

Overlay网络具有以下特点:

l  Overlay网络是指建立在已有网络上的虚拟网,逻辑节点和逻辑链路构成了Overlay网络。

l  Overlay网络是具有独立的控制和转发平面,对于连接在Overlay边缘设备之外的终端系统来说,物理网络是透明的。

l  Overlay网络的出现是为了实现已有网络所不能提供的功能和服务。

l  Overlay网络是物理网络向云和虚拟化的深度延伸,使云资源池化能力可以摆脱物理网络的重重限制,是实现云网融合的关键。

 

相较于传统网络,Overlay技术将网络分为了控制平面、数据平面和管理平面,将网络设备分为了Overlay边缘设备和Underlay设备

Overlay边缘设备处于整个Overlay网络的边界,对内负责Overlay网络接入服务器,将服务器发送的报文封装Overlay,进入Overlay网络;对外负责Overlay网络与外网互通,将Overlay 报文解封装,还原成原始报文发送给外网设备。

Underlay设备为Overlay网络中的传统设备,报文转发过程中,Underlay设备不会解开Overlay封装,故而Underlay设备可以不支持Overlay封装,其作用仅仅是使用传统路由协议让Overlay隧道的源目地址互相可达。

Overlay控制平面为Overlay网络抽象出来的逻辑平面,用以控制整个网络的转发,实际使用中一般用OpenFlow、EVPN等协议加上SDN控制器作为Overlay网络的控制平面。控制平面主要有三个作用:

l  服务发现:通过ARP/DHCP等报文自动发现网络中服务器或虚机的IP及其所处的位置, 并能在其位置发生变化时及时更新位置信息;

l  地址通告和映射:将服务器或虚机的IP及其所处的位置通告给Overlay设备,并告知Overlay设备如何将服务器和虚机映射进Overlay网络;

l  隧道管理:按需自动创建、拆除Overlay隧道。

Overlay数据平面由网络设备组成。作为承载数据报文实际转发的网络,Overlay数据平面将Overlay边缘设备封装的Overlay报文发往另一台Overlay边缘设备,如何转发、发往何地则需要控制平面指导下发表项。

 

下面我们来看看Overlay技术如何应对计算虚拟化带来的挑战:

对于虚机迁移范围受到网络架构限制的问题而言,Overlay把二层报文封装在IP报文之上, 因此,只要网络支持IP路由可达就可以部署Overlay网络,而IP路由网络本身已经非常成熟,且 在网络结构上没有特殊要求。而且路由网络本身具备良好的扩展能力,很强的故障自愈能力和  负载均衡能力。采用Overlay技术后,企业不用改变现有网络架构即可用于支撑新的云计算业务, 极方便用户部署。

对于虚机规模受网络规格限制的问题而言,在Overlay网络中,虚拟机数据封装在IP数据包中后,对网络只表现为封装后的网络参数,即隧道端点的地址,因此,对于承载网络(特别是接入交换机),MAC地址规格需求极大降低,最低规格也就是几十个(每个端口一台物理服务器的隧道端点MAC)。当然,对于核心/网关处的设备表项(MAC/ARP)要求依然极高,当前的解决方案仍然是采用分散方式,通过多个核心/网关设备来分散表项的处理压力。

对于网络隔离/分离能力限制的问题而言,传统网络的VLAN只能支持数量4K以内的限制, 在Overlay技术中扩展了隔离标识的位数,可以支持高达16M的用户,极大扩展了隔离数量。

同时,Overlay网络还具有以下优势及特点:

l  较低成本的构建跨越三层的大二层,通过隧道实现跨三层的二层互联。

l  感知虚拟机:接入交换机/隧道端点交换机与虚拟机直连或通过TOR交换机间接感知到虚拟机。

l  充足的网络或虚拟子网标识数量。

l  租户隔离:虚机的MAC藏在帧内部,不同逻辑2层网络或子网之间是隔离的,在不同的租户内,实现IP MAC地址复用。

l  经过隧道封装,减轻物理交换机的MAC地址表压力,只需要学习隧道端点IP MAC地址信息。

l  对虚拟机透明:虚拟机感知不到隧道封装。

l  可实现细粒度的负载均衡。

 

根据Overlay边缘设备的不同,Overlay网络分为三大类型:

网络Overlay:由物理的网络设备作为Overlay边缘设备,一般是物理路由器或物理交换机。在网络Overlay中,服务器和虚拟机无需支持Overlay,Overlay封装及解封装由物理网络设备负责;

主机Overlay:由虚拟设备作为Overlay边缘设备,一般是NFV设备或虚拟交换机。在主机Overlay中,Overlay边缘设备存在于服务器中,Overlay的范围得以延伸到了服务器内部,因而可以更好地感知到虚机的状态变化,包括虚机开关机、流量大小等。主机Overlay适用于服务器全虚拟化的场景,不能介入非虚拟化的物理服务器;

混合Overlay:即以上两种Overlay类型的组合,Overlay边缘设备既可以是物理网络设备,也可以是虚拟设备。同时,处于物理网络设备下的服务器/虚拟机也能与处于虚拟设备下的虚拟机互通。混合Overlay较为灵活,支持接入各种形态的服务器,因而实际应用中最为广泛。

 

Overlay技术仅是一个技术框架,在这个技术框架下涌现出了众多的Overlay协议,其中较为广泛的有VXLAN、NVGRE和STT。

VxLAN对比其他两种技术,有如下优势:

l  L2-4层链路HASH(GRE有不足);

l  对传输层无修改(STT修改TCP);

l  Cisco已经广泛商用,Open vSwitch源码已经支持并在开源系统广泛使用。

VXLAN技术可与传统网络设备完美兼容,支持不改变L2~L4层报文结构,并得到了主流商用芯片的支持,是当前市场认可度最高的Overlay技术。

 

VXLAN全称为虚拟可扩展局域网(Virtual Extensible Lan),是Overlay技术的一种,通过隧道机制在现有网络上构建一个叠加的网络从而绕过现有VLAN标签的限制。隧道的源目设备 为Overlay边缘设备。

下面我们将从VXLAN的基本概念和报文结构入手,详细介绍VXLAN转发平面和控制平面的组成和原理。

 

VNI:VXLAN网络标识符

l   建立在物理IP网络之上的覆盖网

  • 使用UDP封装完整的内层以太报文
  • 共50字节的封装报文头

l   24比特长度的VNI

  • 最大支持超过1600万个虚拟网络

l   可跨越物理三层网络

l   利用ECMP(等价多路径负载均衡)

  • 对不同数据流使用不同的UDP源端口

VTEP:VXLAN Tunnel End Point 虚拟扩展本地网络隧道终结节点

l  VTEP(VXLAN Tunnel End Point)隧道端点

  • 有自己的IP,对报文进行VXLAN封装/解封装;
  • 上行方向将虚拟机(服务器)产生的数据封装到UDP包头内发送出去,下行方向将收到的VXLAN报文解封装后发给虚拟机(服务器);
  • VTEP之间建立了两点之间的隧道(VTEP可以为软件、硬件服务器或者网路设备、隧道是无状态的)。

VXLAN封装整个占50字节,其基本封装格式为L2oUDP,即使用UDP封装二层报文。其UDP目的端口号为4789,而源端口号可按流进行分配,因此在Underlay网络中可以根据五元组来hash,从而实现VXLAN报文的流量负载。

VXLAN封装头占8个字节,其中标志位占8bits,第五个bit的I标志位必须设置成1,其他7位均为保留位。VNI占24bits,这也是VXLAN支持2^24个ID的原因。其他32bits为保留字段。

 

在VXLAN头的外部还有外层UDP头和外层IP头,这两层封装与普通的UDP报文无异。外层IP头的源目IP为隧道两端的VTEP设备地址。如果Hypervisor承担了VTEP工作则为服务器网卡地址,如果VTEP为接入交换机,则IP地址为出端口上的 IP地址或者三层接口地址、loopback 地址。

最外面一层为MAC头,外层二层MAC头为报文在Underlay网络中做二、三层转发的MAC地址,根据Underlay网络实际转发下一跳确定,与传统网络转发行为无异。

 

上图为一个VXLAN报文头的抓包示例,对比上文的VXLAN报文结构图,可以发现VXLAN 报文的外层与普通UDP报文无异,不同之处在于UDP内部增加了一个VXLAN头,VXLAN头包含了VNI(VXLAN Network Identifier),VXLAN头内部则是一个TCP报文,这个TCP报文同样有MAC头和IP头。

外层MAC头+外层IP头+外层UDP头+VXLAN头实际上均为Overlay边缘设备封装或解封装,图中真正的原始二层报文--TCP报文在转发过程中并未被修改,被修改的仅仅是外层MAC头。VXLAN协议利用这种类似GRE的封装,完成了二层报文在三层网络中传输的壮举。

 

为了适应云计算对网络的要求,我们将云计算数据中心的网络简化为Spine+Leaf两层架构, Spine(VXLAN IP GW)支持VXLAN报文的封装与解封装,并且能够根据内层报文的IP头进行三层转发,Leaf(VXLAN GW)同样支持VXLAN报文的封装与解封装,并且能根据内层报文的MAC头进行二层转发。

Leaf一般作为接入设备下挂服务器或虚拟机,Spine一般作为核心设备与外网互通,并负责VXLAN报文的三层转发。

当Leaf1下的虚机需要跨网段访问Leaf4下的某一台虚机时,该报文会发送至Leaf1,并且由Leaf1将原始报文封装成VXLAN报文,如果是二层互访,则该报文会直接通过VXLAN隧道发送至Leaf4,并由Leaf4解封装VXLAN后将原始报文发送给目的虚机;如果是三层互访,该

VXLAN报文会通过VXLAN隧道上送至Spine,由Spine拆开VXLAN封装,拿到原始报文后,查询控制平面,将该报文封装VXLAN,通过VXLAN隧道送至目的Leaf4。

 

与传统网络一样,VXLAN网络也面临着二三层报文如何转发的问题。同时,因为VXLAN 网络是架构在传统网络的基础之上,VXLAN报文如何通过Overlay边缘设备与传统网络互通也同样是个问题。

在云计算数据中心中,上述问题由Spine(VXLAN三层网关)和Leaf(VXLAN二层网关)

解决。 

对于VXLAN和VLAN如何互通的问题:

l  Leaf作为二层接入设备,通过VLAN-VXLAN映射表将服务器/虚拟机发送的VLAN报文映射进某一个VXLAN网络,该映射可以是VXLAN:VLAN = 1: 1,或VXLAN:VLAN= 1:N;

l  Spine作为三层网关设备,拆开VXLAN封装后获得原始IP报文,再通过查询控制平面来决定该报文是三层转发至VXLAN内部还是外网传统设备。

对于VXLAN和VXLAN之间如何互通的问题:

l  Leaf作为二层接入设备,负责VXLAN二层转发,二层报文在Leaf之间直接通过VXLAN隧道互通;

l  Spine作为三层网关设备,负责VXLAN三层转发,三层报文及与外网互通的报文需要Spine来处理。

根据Spine所承担功能的不同,数据中心VXLAN网络又分为VXLAN集中式网关组网模型和VXLAN分布式网关组网模型。

对于VXLAN集中式网关而言,其功能与上文所述一致,由Leaf进行二层VXLAN报文的处理,Spine进行三层VXLAN报文的处理。此时网关的功能实际上是由Spine上的VSI-Interface接口承担。

 该模型简洁明了,与传统网络的接入-核心组网模型类似,也是SDN数据中心早期落地较多的一种模型。

但随着数据中心规模的扩大和业务的深入,这种模型也暴露出了一定的缺点:数据中心内部的三层转发流量均需要经过Spine处理,存在多次封装及流量路径非最优等问题。因而在此基础上我们引入了VXLAN网络分布式网关组网模型。

 

VXLAN分布式网关组网模型的设备角色和组网连线均与集中式网关一致,不同之处在于Spine的网关功能下沉至Leaf,即Leaf同时具备了二层报文和三层报文的处理能力。从设备配置角度来说,原集中式网关在Spine上的VSI-Interface接口会在每台Leaf上均生成一个,而VSI-

Interface接口上会配置本网段的网关IP地址。此时,只要是数据中心内部的流量,均可以在同一台Leaf内部或Leaf与Leaf之间直接建立VXLAN隧道进行转发,无需经由Spine处理。

对于数据中心内部与外网之间互通的流量,会由Leaf通过VXLAN隧道发送至Spine,Spine 将VXLAN解封装并发送给外网设备,此时Spine仍旧具有三层转发的能力,但该VSI-Interface仅仅作为与外网互通的三层接口,我们把与外部网络进行连接的Overlay边缘设备称之为Border。

如前文所述,网络虚拟化分为数据平面、控制平面和管理平面,在VXLAN协议中,数据平面主要由Spine和Leaf等VTEP设备承担,VTEP设备之间互相建立了VXLAN隧道,由VTEP设 备负责封装/解封装VXLAN,由VXLAN隧道承载实际报文转发。VTEP设备为虚拟机数据包分装了层层包头,这些新包头只会在报文到目的VTEP时才会解封装,中间路径网络设备只会根据 外层包头的目的地址进行转发,对于转发路径上的网络设备,一个VXLAN报文就是一个普通IP 报文。

在VTEP设备上封装/解封装VXLAN后,需要根据外层MAC表进行Underlay转发。以上图为例,VM1 IP为20.0.0.1,下挂在Leaf-A(VTEP IP 10.0.0.1)上,VM2 IP为20.0.0.2,下挂在Leaf-B(VTEP IP 30.0.0.1)上。当VM1访问VM2时,原始报文的源MAC为MAC A,目的MAC 为MAC B,源IP为20.0.0.1,目的IP为20.0.0.2。当该报文上送至LEAF-A后,LEAF-A给该原始报文加上VXLAN封装, 该封装的外层源IP为本地VTEP IP 10.0.0.1,外层目的IP为远端VTEP IP 30.0.0.1,外层源MAC为Underlay出接口MAC,外层目的MAC为Underlay下一跳MAC。

VXLAN网络的控制平面主要用于指导报文转发。原始报文进入到Overlay边缘设备后, Overlay边缘设备应该如何处理,应该加上怎样的VXLAN封装,送至哪一台网络设备等等问题均由控制平面解决。

目前常见的控制平面分为三大类:

l  自学习模式:利用泛洪/广播机制来实现VXLAN网络的建立;

l  基于SDN Controller的集中式模式: SDN Controller作为控制平面,通过下发OpenFlow流表指导VTEP设备的转发;

l  路由协议扩展模式:通过扩展ISIS(类EVI)、BGP(EVPN)协议来实现VXLAN网络的建立。

VTEP设备(Overlay边缘设备)封装时需要哪些信息呢?其实VXLAN报文额外增加的封装头均是必须信息,这样VTEP设备才能将VXLAN报文正确封装和发送。其中VXLAN头、UDP头和外层源目IP头信息为控制平面提供,外层源目MAC和外层VLAN标签由转发平面自行封装。

VXLAN的控制平面之一为自学习控制平面,其将拥有同一个VXLAN ID的VTEP设备加入同一个IP组播组,当虚机发送ARP请求时,本地VTEP设备会将ARP报文进行VXLAN封装,并在组播组内广播,当拥有同一个VXLAN的远端VTEP设备收到该VXLAN报文后,解封装获得原始ARP报文,并生成远端虚机的MAC表项。该ARP报文会在远端VTEP设备本地广播,从而到达目的虚机。

与传统网络一样,远端虚机收到ARP Request报文后会进行回应,ARP Reply报文进入远端VTEP设备,远端VTEP设备查看MAC表,封装VXLAN报文后单播发送给本地VTEP设备。本地VTEP设备解封装VXLAN后,学习远端虚机的MAC地址,并将ARP Reply报文发送给本地虚机。

第二种VXLAN的控制平面为基于Controller的控制平面,该方式由SDN控制器作为控制平面,与所有VTEP设备建立OpenFlow连接,通过SDN控制器给所有VTEP设备下发配置和

OpenFLow流表,从而指导VTEP设备转发。

假设VM1处于LEAF-A下,VM2处于LEAF-C下,当VM1请求VM2的ARP时,首先由VM1发送ARP Request至LEAF-A,LEAF-A通过OpenFlow的Packet-In消息将ARP Request发送至

SDN控制器,SDN控制器收到该报文后,搜索本地记录的全网ARP信息,构造ARP Reply报文, 并通过OpenFlow Packet-Out消息回应给LEAF-A,LEAF-A收到SDN控制器回复的ARP Reply, 再发送给VM1,这样VM1就学到了VM2的ARP。此时VM1构造报文访问VM2,该报文同样会经 由VTEP设备上的OpenFlow连接发送至SDN控制器,由SDN控制器给LEAF-A下发OpenFlow流表,指导该访问报文如何封装及转发,LEAF-A收到SDN控制器下发的OpenFlow流表后,依照 流表封装VXLAN并发送至LEAF-C,LEAF-C上同样需要查找OpenFlow流表转发至VM2。

值得注意的是,SDN控制器上需要预先知道全网虚机的ARP及其下挂在哪台LEAF的哪个接口上,这样才能指导报文转发。目前SDN控制器一般通过ARP/DHCP报文来感知虚机的存在, 当请求的ARP在控制器上不存在时,控制器会在对应的VXLAN内广播ARP请求,将报文复制并 从每个VXLAN隧道和下行口发送一份。当组网环境有云平台时,一般由云平台在创建虚机时就 将虚机ARP通知给SDN控制器,虚机开机后发送ARP从而让SDN控制器感知到虚机位置。虚机 迁移场景下,迁移完毕后虚机同样会主动发送ARP消息,刷新其在控制器上的位置信息。

第三种VXLAN控制平面为基于路由协议扩展的控制平面,目前应用最为广泛的为基于MP- BGP的EVPN协议,EVPN协议具有以下特点:

l  隧道建立和VXLAN关联:利用EVPN的BGP RR实现邻居发现 ,自动发现VXLAN网络中的VTEP,并在有相同VXLAN id各VTEP之间自动创建VXLAN隧道,自动关联

VXLAN隧道和VXLAN;

l  地址同步:利用EVPN的MP-BGP路由协议完成MAC地址同步、主机路由同步两个功能;

l  标准化:控制面使用EVPN,属于标准协议:RFC 7348 +draft-sd-l2vnp-evpn- Overlay,RFC7209:Requirements for Ethernet VPN,RFC7432:BGP MPLS- Based Ethernet VPN。

EVPN 控制平面方案具有以下特点:

l  Spine设备实现EVPN的BGP RR角色,Leaf设备实现EVPN的RR Client角色;

l  EVPN邻居协商、隧道建立、路由更新都在BGP连接中传输;

l  EVPN通过扩展路由类型完成MAC地址发布和回收;

l  EVPN通过扩展路由类型报文完成主机路由地址发布和回收。

 

VXLAN是基于IP网络、采用“MAC in UDP”封装形式的二层VPN技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。VXLAN主要应用于数据中心网络。下面我们来看看VXLAN在交换机上的基本配置步骤:

第一步:创建VSI和VXLAN

l  在系统视图下使能交换机的L2VPN功能,配置命令为:l2vpn enable

l  在系统视图下创建VSI实例,并进入VSI视图,配置命令为:vsi vsi-name

l  在VSI视图下创建VXLAN,并进入VXLAN视图,配置命令为:vxlan vxlan-id

 

 第二步:创建VXLAN隧道

l  在系统视图下配置VXLAN隧道的全局源地址,配置命令为:tunnel global source- address ip-address

l  在系统视图下创建VXLAN模式的Tunnel接口,配置命令为:interface tunnel tunnel- number mode vxlan

l  在Tunnel接口视图下配置VXLAN隧道源IP地址,配置命令为:source { ipv4-address

| interface-type interface-number }

l  在Tunnel接口视图下配置VXLAN隧道目的IP地址,配置命令为:destination ipv4- address

第三步:关联VXLAN与VXLAN隧道

l  在系统视图下进入VSI实例视图,配置命令为:vsi vsi-name

l  在VSI视图下进入VXLAN视图,配置命令为:vxlan vxlan-id

l  在VXLAN视图下配置VXLAN与VXLAN隧道关联,配置命令为:tunnel tunnel-number

第四步:配置AC与VSI关联

l  在系统视图下进入二层以太网接口视图或二层聚合接口视图,配置命令为:interface

interface-type interface-number

l  在接口视图下创建以太网服务实例,并进入以太网服务实例视图,配置命令为:

service-instance instance-id

l  在以太网服务实例视图下配置以太网服务实例的报文匹配规则,配置命令为:

encapsulation{default|untagged|s-vid vlan-id }

l  在以太网服务实例视图下将以太网服务实例与VSI关联,配置命令为:xconnect vsi vsi-name [ access-mode { ethernet | vlan } ]

第五步:配置集中式VXLAN IP网关

l  在系统视图下创建VSI虚接口,并进入VSI虚接口视图,配置命令为:interface vsi interface-number

l  在VSI虚接口视图下创建以太网服务实例,配置VSI虚接口的IP地址,配置命令为:ip address ip-address { mask | mask-length } [ sub ]

l  在系统视图下进入VXLAN所在VSI视图,配置命令为:vsi vsi-name

l  在VSI视图下为VSI指定网关接口,配置命令为:gateway vsi-interface vsi-interface- id

需要注意,一个VXLAN可以关联多条VXLAN隧道。一条VXLAN隧道可以关联多个VXLAN, 这些VXLAN共用该VXLAN隧道,VTEP根据VXLAN报文中的VXLAN ID来识别隧道传递的报文所属的VXLAN。

第六步:配置分布式VXLAN IP网关

l  在系统视图下创建VSI虚接口,并进入VSI虚接口视图,配置命令为:interface vsi

interface-number

l  在VSI虚接口视图下配置VSI虚接口为分布式网关接口,配置命令为:distributed- gateway local

l  在系统视图下进入VXLAN所在VSI视图,配置命令为:vsi vsi-name

l  在VSI视图下为VSI指定网关接口,配置命令为:gateway vsi-interface vsi-interface- id

 

posted @ 2021-03-30 10:29  星火撩原  阅读(1503)  评论(0编辑  收藏  举报