SDN系列-基于VxLAN构建Overlay + VxLAN实验

2023/09 作者:ihunter 0 0

第1章 Overlay概述

为了应对传统网络的困境,各种构建大二层网络的Overlay技术应用而生。所谓的大二层,是指在现有IP网络之上构建一层逻辑网络,从而屏蔽虚拟机迁移带来的物理网络位置变化的影响,其核心思想是在数据平面上使用隧道技术穿越底层的三层网络。

1.1 Overlay特点

Overlay网络是构建在已有IP网络之上的虚拟网,由逻辑节点和逻辑链路组成,其对用户是透明的,即用户感知不到Overlay网络的存在。
Overlay网络具有独立的控制平面和数据平面,即转控分离。
Overlay网络让云资源池化能力可以摆脱物理网络的限制,是实现云网融合的关键。


       1.2 Overlay边缘设备

所谓Overlay边缘设备,是指连接Overlay网络与传统网络的设备。对内,将计算计算资源接入Overlay网络,进行Overlay报文封装;对外,负责Overlay网络与外部互通,进行Overlay报文解封装。

   

1)主机Overlay

Overlay边缘设备由虚拟交换机(vSwitch)承担,所有Overlay报文的封装和解封装都在虚拟交换机上进行,物理网络设备只进行传统IP报文的转发。

2)网络Overlay

Overlay边缘设备由物理交换机承担,所有Overlay报文的封装和解封装都在物理交换机上进行,物理网络设备在转发传统IP报文的同时,也进行overlay报文的封装和解封装。

3)混合Overlay

Overlay边缘设备由虚拟交换机和物理交换机工作组成。

第2章 VxLAN与Overlay的关系

在第1章中,介绍了Overlay的基础概念,Overlay是一个技术架构,而非具体的技术实现,VxLAN是一种实现Overlay架构的具体技术,VxLAN通过隧道技术在现有网络上构建一个叠加的逻辑网络。本质上将VxLAN是一种二层VPN,其封装模式为MAC in UDP。

第3章 VxLAN基础

3.1 VxLAN重要概念

1、VNI(VxLAN ID)

VxLAN通过VxLAN ID来标识(类似VLAN通过VLAN ID来标识),其长度为24比特。2的24次方个VXLAN标签数解决了VLAN标签不足的缺点。

2、VTEP(VxLAN Tunnel End Point)

在VxLAN Overlay网络中,VTEP代表Overlay边缘设备,进行Overlay报文的封装和解封装。VxLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN、基于VXLAN对数据帧进行二层转发、封装/解封装报文等。

3、VSI(Virtual Switching Instance,虚拟交换实例)

虚拟交换实例,VTEP上为一个VxLAN提供二层交换服务。VSI可以看作是VTEP上的一台基于VxLAN进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能,包括源MAC地址学习、MAC地址老化、泛洪等,VSI与VXLAN唯一对应。

4、VXLAN Tunnel

两个VTEP之间点到点的逻辑隧道。VTEP为数据帧封装VxLAN头、UDP头、IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。

5、VSI-Interface(VSI的虚拟三层接口)

类似于Vlan-Interface,用来处理跨VxLAN的流量。VSI-Interface与 VSI唯一一对应,在没有跨VxLAN流量时可以没有VSI-Interface。

3.2 VxLAN报文封装

VxLAN封装整个占50字节,其基本封装格式为MAC in UDP,即使用UDP封装二层报文,其UDP目的端口为4789;VxLAN头占8字节,包含24bits的VxLAN ID(VNI),这也是VNI支持2^24个ID的原因;外层IP头为隧道两端的VTEP设备地址。

3.3 VxLAN控制平面

伴随着越来越多的节点接入网络,越来越多的信息依赖于网络来传递,日益庞大的网络就像当今发达城市的交通系统一样不堪重负。网络的基础设施建设跟不上流量的爆炸性增 长,提高网络的使用效率自然就成了有效缓解流量日益增长和网络建设滞后之间矛盾的一种可行思路。

1、SDN控制器作为控制平面

2006年,斯坦福大学的学生提出了将网络设备的转发与控制分离。所有设备的控制平面集中到一个独立的控制器上,由控制器使用标准接口指导设备进行数据转发。这样不仅极大的简化了网络,更为网络的设计和管理提供了更多的可能性。受此思想的启发,业界进一步提出了软件定义网络(Software Defined Network,SDN)的概念。SDN控制器作为新型网络的集中式管理平台,将网络中的所有被管网络资源抽象化,同时提供北向的标准可编程接口云平台,灵活满足业务对于网络资源的各种要求。


如上图所示,SDN控制器负责指导网络设备如何去转发报文,这种场景下,其业务流量转发不再依据由路由协议生成的转发表,而是由SDN控制器通过OpenFlow协议下发到网络设备的流表(Flow Table),从而指导报文转发。

构建新型网络的新锐派,正是采用了这种SDN控制器集中控制的方式实现了VxLAN网络的控制平面。

2、EVPN作为控制平面

基于SDN控制器的方式固然能轻松实现控制平面功能,然而这种方式的革新对传统网络的冲击是巨大的,SDN控制器使原来处于领导地位的很多传统网络设备厂商,可能很容易在传统网络向新型网络转型的过程中,被其他小厂商拉回到起跑线上。于是,为了保住自己的先发优势,以传统网络设备厂商为代表的顽固派主导推出了各种松散控制的方式。

这些松散控制的方式均是对传统路由交换协议进行的扩展,在协议报文中增加携带主机的寻址信息,利用现成的协议交互框架,实现信息在全网的同步。这种方式构建的 VxLAN网络的控制平面和传统网络的控制平面并无本质区别,都是依赖设备之间的协议交互形成转发表项。

目前应用较为广泛的松散控制模式采用MP-BGP协议的扩展,即EVPN (Ethernet Virtual Private Network,以太虚拟专用网络)。EVPN为了构建基于VxLAN的Overlay虚拟网络,新增了BGP EVPN协议族,并扩展了5种协议消息。利用BGP本身的协议交互架构,设备之间可以很方便地建立EVPN邻居,自动创建VxLAN隧道以及互相同步寻址信息。

关于EVPN的相关知识,后续会有专题文章介绍,各位读者可持续关注。

3、手动模式构建VxLAN网络

在新建大规模云数据中心时,往往会在开局就使用一些SDN控制配合上层应用,如云平台,来实现业务的快速部署,然而推到重建往往没那么容易,因此可采用手动方式在数据中心构建VxLAN Overlay大二层网络作为过度手段。

本文实验环节也是以手动方式为大家展现VxLAN的工作原理。

第4章 VxLAN运行机制

VXLAN 运行机制可以概括为4部分,如下:

1、发现远端 VTEP,在 VTEP 之间建立 VxLAN 隧道,并将 VxLAN 隧道与 VxLAN 关联

为了将 VxLAN 报文传递到远端 VTEP,需要 VxLAN 隧道,并将 VxLAN 隧道与 VxLAN 关联。

1)创建VxLAN隧道

手工方式:手工配置VxLAN Tunnel 接口,并指定隧道的源和目的 IP 地址分别为本端和远端 VTEP 的 IP 地址

自动方式:通过 EVPN或者SDN控制器发现远端 VTEP 后,自动在本端和远端 VTEP之间建立 VxLAN 隧道。

2)关联VxLAN隧道和VxLAN

手工方式:手工将 VxLAN 隧道与 VxLAN 关联

自动方式:通过 EVPN 或 SDN 控制器自动关联 VxLAN 隧道与 VxLAN

2、识别接收到的报文所属的 VxLAN,以便将报文的源 MAC 地址学习到 VXLAN 对应的VSI,并在该 VSI 内转发该报文

1)本地站点内接收到数据帧的识别

VTEP 采用如下几种方式在数据帧和 VxLAN 之间建立关联。

将以太网服务实例与 VSI 关联:以太网服务实例定义了一系列匹配规则,如匹配指定 VLAN 的报文、匹配接口接收到的所有报文等。从二层以太网接口上接收到的、与规则匹配的数据 帧均属于指定的 VSI/VxLAN(后续实验以该方式演示)

将 VLAN 与 VxLAN 关联:VTEP 接收到的该 VLAN 的数据帧均属于指定的 VxLAN

2)VxLAN 隧道上接收报文的识别

对于从 VxLAN 隧道上接收到的 VxLAN 报文,VTEP 根据报文VxLAN头中携带的 VxLAN ID 判断该报文所属 的 VxLAN

3、学习虚拟机的 MAC 地址

MAC 地址学习分为本地 MAC 地址学习和远端 MAC 地址学习两部分

1)本地MAC地址学习

是指 VTEP 对本地站点内虚拟机 MAC 地址的学习。本地 MAC 地址的学习方式有如下几种:

静态配置:手工指定本地 MAC 地址所属的 VSI(VxLAN),及其对应的以太网服务实例(即 AC)
通过报文中的源 MAC 地址动态学习:VTEP 接收到本地虚拟机发送的数据帧后,判断该数据帧所属的 VSI,并将数据帧中的源 MAC 地址(本地虚拟机的 MAC 地址)添加到该 VSI 的 MAC 地址表中,该 MAC 地址对应的接口为接收到数据帧的接口。

2)远端MAC地址学习

是指 VTEP 对远端站点内虚拟机 MAC 地址的学习。远端 MAC 地址的学习方式有如下几种:

静态配置:手工指定远端 MAC 地址所属的 VSI(VxLAN),及其对应的 VxLAN 隧道接口。
通过报文中的源 MAC 地址动态学习:VTEP 从 VxLAN 隧道上接收到远端 VTEP 发送的 VxLAN 报文后,根据 VxLAN ID 判断报文所属的 VxLAN,对报文进行解封装,还原二层数据帧,并将数据帧中的源 MAC 地址(远端虚拟机的 MAC 地址)添加到所属 VxLAN 对应 VSI 的 MAC 地址表中,该 MAC 地址对应的接口为 VXLAN 隧道接口。
通过 EVPN 学习:在 VTEP 上运行 EVPN,通过 EVPN 将本地 MAC 地址及其所属的 VxLAN 信息通告给远端 VTEP。远端 VTEP 接收到该信息后,在 VxLAN 对应 VSI 的 MAC 地址表中添加 MAC 地址表项。
通过 OpenFlow下发:OpenFlow控制器(SDN控制器)以流表的形式向 VTEP设备下发远端 MAC地址表项。
通过 OVSDB 下发:SDN控制器通过 OVSDB 协议向 VTEP 设备下发远端 MAC 地址表项。

3)MAC表项优先级

通过不同方式学习到的远端 MAC 地址优先级由高到低依次为:

静态配置、OpenFlow 下发、OVSDB 下发的 MAC 地址优先级相同,且优先级最高。
通过 EVPN 学习的 MAC 地址优先级次之。
动态学习的 MAC 地址优先级最低

第5章 VxLAN流量转发

完成本地和远端 MAC 地址学习后,VTEP 便可将原始数据帧在 VxLAN 内进行转发了。

5.1 转发单播流量

5.1.1 站点内流量转发

对于站点内流量,VTEP 判断出报文所属的 VSI后,根据目的 MAC 地址查找该 VSI 的 MAC 地址表, 从相应的本地接口转发给目的 VM。


VM 1 发送以太网帧到 VM 4 时,VTEP 1 从接口 Interface A 收到该以太网帧后,判断该数据帧属于 VSI A(VxLAN 10),查找 VSI A 的 MAC 地址表,得到 MAC 4 的出接口为 Interface B,所在 VLAN 为 VLAN 10,则将以太网帧从接口 Interface B 的 VLAN 10 内发送给 VM 4。

5.1.2 站点间流量转发

站点间流量的转发有两种场景,一是,同VNI的站点间流量转发,类似于传统网络同一VLAN内主机的通信;二是,跨VNI的站点间流量转发,类似于传统网络跨VLAN通信。

1、同VNI单播流量转发


如上图所示,以 VM 1 发送以太网帧给 VM 7 为例,站点间单播流量的转发过程为:

1.VM 1 发送以太网数据帧给 VM 7,数据帧的源 MAC 地址为 MAC 1,目的 MAC 为 MAC 7, VLAN ID 为 2。

2.VTEP 1 从接口 Interface A(所在 VLAN 为 VLAN 2)收到该数据帧后,判断该数据帧属于 VSI A(VXLAN 10),查找 VSI A 的 MAC 地址表,得到 MAC 7 的出端口为 Tunnel1。

3.VTEP 1 为数据帧封装 VXLAN 头、UDP 头和 IP 头后,将封装好的报文通过 VXLAN 隧道 Tunnel1、经由 P 设备发送给 VTEP 2。

4.VTEP 2 接收到报文后,根据报文中的 VXLAN ID 判断该报文属于 VXLAN 10,并剥离 VXLAN 头、UDP 头和 IP 头,还原出原始的数据帧。

5.VTEP 2 查找与 VXLAN 10 对应的 VSI A 的 MAC 地址表,得到 MAC 7 的出端口为 Interface A (所在 VLAN 为 VLAN 20)。

6.VTEP 2 从接口 Interface A 的 VLAN 20 内将数据帧发送给 VM 7

2、跨VNI单播流量转发

跨VNI的流量需要经过VxLAN L3 Gateway来转发,这里采用集中式网关的模式进行说明。有关VxLAN L3 Gateway、集中式网关和分布式网关的内容,在后文中会说明。


注:图中Spine和Leaf设备相当于VTEP,另,本场景与传统网络下跨VLAN进行三层转发的原理很相似,建议读者配合传统跨VLAN三层转发的原理进行理解。

如上图所示,VM 1和VM 3属于VNI 10,其网关VSI-Interface 10的IP为IP G10,MAC为MAC G10;VM2和VM4属于VNI 20,网关VSI-Interface 20的IP为IP G20,MAC为MAC G20。

网关VSI-Interface 10和网关VSI-Interface 20均在Spine设备上。接下来以VM1和VM4的通信为例介绍跨VNI流量的转发。

1)VM 1先将报文发送给网关

报文的源MAC是VM 1的MAC,目的MAC是网关VSI-Interface 10的MAC,源IP是VM 1的IP,目的IP是VM 4的IP。

2)Leaf A收到VM 1发来的报文,VxLAN封装后发送给网关Spine C

Leaf A识别此报文属于VxLAN 10,查找目的MAC G10的表项,对报文进行VxLAN封装后从Tunnel 2发送出去。其中,VxLAN头中的VNI为10;外层源IP地址为Leaf A的 IP,外层目的IP地址为Spine C的IP。

3)Spine C收到Leaf A发来的报文

第1步:Spine C收到Leaf A发来的报文,发现外层目的IP是自己,于是对报文进行VxLAN解封装。

第2步:解完封装后,Spine C发现原始二层报文的目的MAC为本机VSI-interface 10的MAC,目的IP是IP 4,于是根据路由表查找IP 4的下一跳,发现一下跳为Leaf B,出接口为VSI-Interface 20。

第3步:再查询ARP表项,并将原始二层报文的源MAC修改为出接口VSI-interface 20的MAC,将目的MAC修改为VM 4的MAC。

第4步:报文到达VSI-interface 20接口时,识别到需要进入VxLAN 20隧道,所以根据MAC表对报文进行封装。这里封装的VxLAN头中的 VNI为20,外层源IP地址为Spine C的IP地址,外层目的IP地址为 Leaf B的IP地址。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输, 直至到达Leaf B

4)Leaf B收到Spine C发来的报文

Leaf B解封装,得到原始二层报文。在VxLAN 20内找到目的MAC为MAC 4的表项,并将报文从对 应的接口和VLAN中发送出去。最终VM 4收到了来自VM 1的报文。

5.2 转发泛洪流量

VTEP 从本地站点接收到泛洪流量(组播、广播和未知单播流量)后,首先会复制泛洪流量,然后将其转发给除接收接口外的 所有本地接口和 VxLAN 隧道。为了避免环路,VTEP 从 VxLAN 隧道上接收到报文后,不会再将其泛洪到其他的 VXLAN 隧道,只会转发给所有本地接口。

根据复制方式的不同,流量泛洪方式分为单播路由方式(头端复制)、组播路由方式(核心复制)

5.2.1 单播路由方式(头端复制)


如上图所示,VTEP 负责复制报文,然后采用单播方式将复制后的报文通过本地接口发送给本地站点, 并通过 VxLAN 隧道发送给同一 VxLAN 内的所有远端 VTEP。

5.2.2 组播路由方式(核心复制)

数据中心网络中需要通过 IP 核心网络进行二层互联的站点较多时,采用组播路由方式可以节省泛洪流量对核心网络带宽资源的占用。


如上图所示,在组播路由方式下,同一个 VxLAN 内的所有 VTEP 都加入同一个组播组,利用组播路由协议(PIM等)在 IP 核心网上为该组播组建立组播转发表项。VTEP 接收到泛洪流量后,不 仅在本地站点内泛洪,还会为其封装组播目的 IP 地址,封装后的报文根据已建立的组播转发表项转发到远端 VTEP。

此种方式下,需要IP网络中的所有设备都支持组播协议。

第6章 VxLAN L2 Gateway

在介绍VxLAN L2 网关之前,先来看看VxLAN网络二层访问需求:

VxLAN和VLAN之间的二层互访需求,仅仅完成VxLAN和VLAN的转换

而实现上面这个需求,则需要借助VxLAN L2 Gateway来实现,Leaf作为二层接入设备,通过VLAN-VxLAN映射表将服务器/虚拟机发送的VLAN报文映射进VxLAN网络,该映射可以是VxLAN:VLAN=1:1或VxLAN:VLAN=1:N。

第7章 VxLAN L3 Gateway

在介绍VxLAN L3 网关之前,先来看看VxLAN网络三层访问需求:

1.VxLAN与传统网络之间的三层互访需求
2.VxLAN和VxLAN之间的互访需求,这个是解决VxLAN网络内部不同租户之间的问题

属于同一VxLAN的虚拟机处于同一逻辑二层网络,彼此可以进行二层互通,不同VxLAN的虚拟机之间二层隔离。Spine作为三层网关设备,拆开VxLAN封装后获得原始IP报文,再通过查询控制平面来决定该报文是三层转发至VxLAN内部还是外部传统网络。

7.1 VxLAN L3网关功能

VxLAN 可以为分散的物理站点提供二层互联。如果要为 VxLAN 站点内的虚拟机提供三层业务,则 需要在网络中部署 VxLAN L3 网关,以便站点内的虚拟机通过 VxLAN L3 网关与外界网络或其他 VxLAN 网络内的虚拟机进行三层通信。因此L3网关的功能如下:

实现跨VNI网络互通,即不同VxLAN之间的互访互通

实现VxLAN网络与外部网络的互访互通

7.2 VxLAN L3网关分类

VxLAN L3 网关既可以部署在独立的物理设备上,也可以部署在 VTEP 设备上。VxLAN L3 网关部署在 VTEP 设备上时,又分为集中式 VxLAN L3 网关和分布式 VxLAN L3 网关两种方式。

1、独立的VxLAN网关


VxLAN L3 网关部署在独立的物理设备上时,VxLAN L3 网关作为物理站点接入 VTEP, VxLAN 网络对于网关设备透明(网关设备感受不到VxLAN网络的存在)。

虚拟机通过 VxLAN L3 网关进行三层通信时,虚拟机将三层报文封装成二层数据帧发送给 VxLAN L3 网关。VTEP 对该数据帧进行 VxLAN 封装,并在 IP 核心网络上将其转发给远端 VTEP(连接 VxLAN L3 网关的 VTEP)。

远端 VTEP 对 VxLAN 报文进行解封装,并将原始的二层数据帧转发给 VxLAN L3 网关。VxLAN L3 网关去掉链路层封装后, 对报文进行三层转发。

2、集中式VxLAN网关

集中式 VxLAN L3 网关进行二层 VxLAN 业务终结的同时,还对内层封装的 IP 报文进行三层转发处理,如下图所示所有跨 VxLAN的流量、VxLAN与非VxLAN的互访流量都需要经过 Spine C。


上图中,VM1和VM2互访、VM1和VM4互访都需要经过L3网关Spine C,此时网关功能实际由Spine C设备上的vsi-interface虚接口承担。该模型与传统的二层网络架构(核心-接入)类似,简单明了。

3、分布式VxLAN网关

采用集中式 VxLAN L3 网关方案时,不同 VxLAN 之间的流量以及 VxLAN 访问外界网络的流量全 部由集中式 VxLAN L3 网关处理,网关压力较大,并加剧了网络带宽资源的消耗。

在分布式VxLAN三层网关方案中,每台VTEP设备都可以作为 VxLAN L3 网关,对本地站点的流量进行三层转发。分布式三层网关可以很好地解决流量集中而导致Spine设备压力过大的问题,在组网上也可以做到灵活扩展。

更直白的讲,分布式网关使得VxLAN之间的流量无需上Spine设备进行VxLAN封装/解封装操作,从只有访问非VxLAN网络时才需要Spine设备参与VxLAN封装/解封装,这就大大降低了Spine设备的压力。

分布式VxLAN L3 网关连接IPv4 站点网络时,所有网关上都需要为相同VSI-Interface配置相同的MAC地址。


在分布式网关组网中,Spine设备一般不是VTEP,仅为Underlay网络的一部分,承担普通IP报文的转发功能。Spine也可作为VTEP实现和非VxLAN网络的互通。

所有分布式VxLAN L3网关上都需要创建VSI-Interface虚接口
不同分布式VxLAN L3网关上相同VSI-Interface虚接口配置相同的网关IP地址

此时,数据中心内部流量(东西向流量)均可在同一台Leaf内部或Leaf与Leaf之间直接建立VxLAN隧道进行转发,VxLAN流量无需经过Spine处理。


赞(0) 更多分享

上篇: SDN 实现的方式
下篇: H3C UIS超融合一体机 部件更换配置指导