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

目录

第1章 Overlay概述

1.1 传统网络困境

1.2 Overlay应用而生

1.3 Overlay特点

1.4 Overlay边缘设备

1.5 Overlay网络类型

第2章 VxLAN与Overlay的关系

第3章 VxLAN基础

3.1 VxLAN重要概念

3.2 VxLAN报文封装

3.3 VxLAN控制平面

第4章 VxLAN运行机制

第5章 VxLAN流量转发

5.1 转发单播流量

5.1.1 站点内流量转发

5.1.2 站点间流量转发

5.2 转发泛洪流量

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

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

第6章 VxLAN L2 Gateway 

第7章 VxLAN L3 Gateway

7.1 VxLAN L3网关功能

7.2 VxLAN L3网关分类

第7章 VxLAN实验(基于HCL)

7.1 集中式VxLAN网关

7.2 分布式VxLAN网关


说明:本文主要介绍通过VxLAN构建Overlay大二层网络,需要一定的网络基础方能准确理解,你也可以先阅读本文实验部分,直观的感受VxLAN的作用,然后再返回来阅读原理部分,这样实验结合原理有助于你理解知识点


第1章 Overlay概述

1.1 传统网络困境

为了最大程度地节约成本,越来越多的企业选择了将业务放在虚拟机上,以便充分地利用资源,并实现资源的按需分配和弹性扩容。人们的需求使应用对网络、存储、计算资源的需求越来越大,这样的需求最终促使云计算成为了近年来IT界最火热的话题之一。而云计算的核心思想就是将所有资源,包括计算资源(服务器)、网络资源、存储资源等,虚拟化为一片云,让用户不再需要关心实际物理资源是如何部署的。而这其中,传统网络也必须转型为新型的云网络才能满足需求,这就是所谓的云网融合。

传统网络在转型为支持大规模计算虚拟化的云网络时会有什么样的问题呢?

1、传统网络难以对接云平台

用户在云平台申请计算资源(虚拟机)后,要求配套的网络资源同样被快速部署,如此才能保证所申请的计算资源能对外提供服务,而传统的网络架构中网络资源(各种网络设备)无法集中管理和控制,导致网络资源分散,无法满足云计算业务快速部署的要求。

2、虚拟机迁移受网络架构限制

在云数据中心,虚拟机迁移(虚拟机从一个硬件服务器迁移到另外一个硬件服务器)是常见的一种现象,为了满足在云网络中海量虚拟机迁移前后业务不中断的需要,要求虚拟机迁移前后的IP不能变化,继而要求网络必须是二层结构。随着网络规模的不断扩大,传统的二层网络技术(STP等),在链路使用率、收敛时间等方面都不能满足需要,已经不再适合组建大规模的二层网络。

3、虚拟机规模受网络设备规格限制

虚拟机数量在云数据中是非常多的,尤其在公有云场景下虚拟机数量和其庞大,如此繁多的虚拟机数量产生了数量众多的MAC地址,这就给网络设备构建MAC地址表造成了很大的压力。当虚拟机数量超过网络设备MAC表容量的时候,就会造成网络通信故障。

4、VLAN的局限

随着云业务的运营,租户数量剧增。传统交换网络用VLAN来隔离用户和虚拟机,但理论上只支持最多4094个标签的VLAN,已无法满足需求。 

1.2 Overlay应用而生

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

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第1张图片

1.3 Overlay特点

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

1.4 Overlay边缘设备

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

1.5 Overlay网络类型

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第2张图片

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对数据帧进行二层转发、封装/解封装报文等。

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第3张图片

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设备地址。

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第4张图片

VxLAN报文举例:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第5张图片

3.3 VxLAN控制平面

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

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

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

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第6张图片

如上图所示,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 地址优先级由高到低依次为:

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

第5章 VxLAN流量转发

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

5.1 转发单播流量

5.1.1 站点内流量转发

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

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第7张图片

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单播流量转发

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第8张图片

如上图所示,以 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、集中式网关和分布式网关的内容,在后文中会说明。

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第9张图片

注:图中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 单播路由方式(头端复制)

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第10张图片

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

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

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

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第11张图片

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

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

第6章 VxLAN L2 Gateway 

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

  1. 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网关的功能如下:

  1. 实现跨VNI网络互通,即不同VxLAN之间的互访互通
  2. 实现VxLAN网络与外部网络的互访互通

7.2 VxLAN L3网关分类

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

1、独立的VxLAN网关

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第12张图片

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。

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第13张图片

上图中,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地址。

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第14张图片

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

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

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

第7章 VxLAN实验(基于HCL)

7.1 集中式VxLAN网关

1、网络拓扑

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第15张图片

 2、组网需求

  •  Spine、Leaf1和Leaf2组成VxLAN网络,Spine为VxLAN L3 Gateway,SW连接传统网络,
  • 需求1:实现VM1和VM2之间的同VNI互访
  • 需求2:实现VM1和VM3之间的跨VNI互访
  • 需求3:实现VM1-2和Server之间、VM3和Server之间的互访(VxLAN与外部网络互通)

3、网络配置 

1)underlay网络配置

Spine、Leaf 1、Leaf 2之间通过ospf搭建底层underlay;spine上配置去往传统网络的默认路由,并引入ospf;外部网络SW配置前往VxLAN网络的默认路由。

///  具体配置省略,读者朋友自行查询相关手册解决  ///

2)实现需求1:VM1和VM2之间的同VNI互访

在Leaf 1和Leaf 2之间建立VxLAN隧道tunnel 13,用来传输VM1和VM2之间VxLAN流量,此时由于VM1和VM属于同一VxLAN,因此流量无需上Spine

# 配置Leaf 1

# 开启l2
[leaf1]l2 enable
# 配置VxLAN实例和VxLAN 2
[leaf1] vsi 1
[leaf1-vsi-1] vxlan 2
[leaf1-vsi-1-vxlan-2] quit
# 在Leaf1和Leaf2之间创建VxLAN隧道Tunnel 13
[leaf1] interface tunnel 13 mode vxlan
[leaf1-Tunnel13] source 1.1.1.1
[leaf1-Tunnel13] destination 3.3.3.3
[leaf1-Tunnel13] quit
# 关联VxLAN隧道和VxLAN
[leaf1] vsi 1
[leaf1-vsi-1] vxlan 2
[leaf1-vsi-1-vxlan-2] tunnel 13
[leaf1-vsi-1-vxlan-2] quit
# 在接入VM1的接口GE1/0/3 上创建以太网服务实例2,该实例用来匹配VLAN 2 的数据帧。
[leaf1] interface GigabitEthernet 1/0/1
[leaf1-GigabitEthernet1/0/3] port access vlan 2
[leaf1-GigabitEthernet1/0/3] service-instance 2
[leaf1-GigabitEthernet1/0/3-srv2] encapsulation s-vid 2

# 配置Leaf 2

# 开启l2
[leaf2]l2 enable
# 配置VxLAN实例和VxLAN 2
[leaf2] vsi 1
[leaf2-vsi-1] vxlan 2
[leaf2-vsi-1-vxlan-2] quit
# 在Leaf2和Leaf1之间创建VxLAN隧道Tunnel 13
[leaf2] interface tunnel 13 mode vxlan
[leaf2-Tunnel13] source 3.3.3.3
[leaf2-Tunnel13] destination 1.1.1.1
[leaf2-Tunnel13] quit
# 关联VxLAN隧道和VxLAN
[leaf2] vsi 1
[leaf2-vsi-1] vxlan 2
[leaf2-vsi-1-vxlan-2] tunnel 13
[leaf2-vsi-1-vxlan-2] quit
# 在接入VM2的接口GE1/0/3 上创建以太网服务实例2,该实例用来匹配VLAN 2 的数据帧。
[leaf2] interface GigabitEthernet 1/0/1
[leaf2-GigabitEthernet1/0/3] port access vlan 2
[leaf2-GigabitEthernet1/0/3] service-instance 2
[leaf2-GigabitEthernet1/0/3-srv2] encapsulation s-vid 2

# 验证配置 

查看VxLAN Tunnel 13状态:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第16张图片

 查看VSI信息:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第17张图片

在Leaf 1上查看MAC地址表:

验证VM1和VM2的连通性:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第18张图片

# VxLAN报文分析

Leaf 1下行接口GE1/0/3报文:

Leaf 1上行接口GE1/0/1报文:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第19张图片

3)实现需求2: VM1和VM3之间跨VNI互访

  • VM1通过VLAN 2接入VNI 2,VM3通过VLAN 3接入VNI 3   
  • 在Leaf 1和Spine之间创建VxLAN Tunnel 12                       
  • 在Leaf 2和Spine之间创建VxLAN Tunnel 23                       
  • VM1和VM3的网关均配置在Spine设备上                              

# 配置Leaf 1:在Leaf 1和Spine之间创建VxLAN Tunnel 12

# 开启l2
[leaf1]l2 enable
# 配置VxLAN实例和VxLAN 2
[leaf1] vsi 1
[leaf1-vsi-1] vxlan 2
[leaf1-vsi-1-vxlan-2] quit
# 在Leaf1和spine之间创建VxLAN隧道Tunnel 12
[leaf1] interface tunnel 12 mode vxlan
[leaf1-Tunnel12] source 1.1.1.1
[leaf1-Tunnel12] destination 2.2.2.2
[leaf1-Tunnel12] quit
# 关联VxLAN隧道和VxLAN
[leaf1] vsi 1
[leaf1-vsi-1] vxlan 2
[leaf1-vsi-1-vxlan-2] tunnel 12
[leaf1-vsi-1-vxlan-2] quit
# 在接入VM1的接口GE1/0/3 上创建以太网服务实例2,该实例用来匹配VLAN 2 的数据帧。
[leaf1] interface twenty-fivegige 1/0/1
[leaf1-GigabitEthernet1/0/3] port access vlan 2
[leaf1-GigabitEthernet1/0/3] service-instance 2
[leaf1-GigabitEthernet1/0/3-srv2] encapsulation s-vid 2

# 配置Spine:在spine上分别于Leaf 1和Leaf 2创建VxLAN Tunnel 12和VxLAN Tunnel 23

## 配置Spine与Leaf 1之间的VxLAN 隧道Tunnel 12

# 开启l2
[spine]l2 enable
# 配置VxLAN实例和VxLAN 2
[spine] vsi 1
[spine-vsi-1] vxlan 2
[spine-vsi-1-vxlan-2] quit
# 在spine和spine之间创建VxLAN隧道Tunnel 12
[spine] interface tunnel 12 mode vxlan
[spine-Tunnel 12] source 2.2.2.2
[spine-Tunnel 12] destination 1.1.1.1
[spine-Tunnel 12] quit
# 关联VxLAN隧道和VxLAN
[spine] vsi 1
[spine-vsi-1] vxlan 2
[spine-vsi-1-vxlan-2] tunnel 12
[spine-vsi-1-vxlan-2] quit
# 创建 VSI 虚接口 VSI-interface2,并为其配置 IP 地址,该 IP 地址作为 VxLAN 2 内虚拟机的网关地址。
[spine] interface vsi-interface 2
[spine-Vsi-interface2] ip address 192.168.2.254 255.255.255.0
[spine-Vsi-interface2] quit

## 【配置Spine与Leaf 2之间的VxLAN隧道Tunnel 23】

# 开启l2
[spine]l2 enable
# 配置VxLAN实例和VxLAN 3
[spine] vsi 2
[spine-vsi-2] vxlan 3
[spine-vsi-2-vxlan-3] quit
# 在spine和spine之间创建VxLAN隧道Tunnel 23
[spine] interface tunnel 12 mode vxlan
[spine-Tunnel 23] source 2.2.2.2
[spine-Tunnel 23] destination 3.3.3.3
[spine-Tunnel 23] quit
# 关联VxLAN隧道和VxLAN
[spine] vsi 2
[spine-vsi-2] vxlan 3
[spine-vsi-2-vxlan-3] tunnel 23
[spine-vsi-2-vxlan-3] quit
# 创建 VSI 虚接口 VSI-interface3,并为其配置 IP 地址,该 IP 地址作为 VxLAN 3 内虚拟机的网关地址。
[spine] interface vsi-interface 3
[spine-Vsi-interface3] ip address 172.16.2.254 255.255.255.0
[spine-Vsi-interface3] quit

# 配置Leaf 2:在Leaf 2和Spine之间创建VxLAN Tunnel 23  

# 开启l2
[leaf2]l2 enable
# 配置VxLAN实例和VxLAN 3
[leaf2] vsi 2
[leaf2-vsi-2] vxlan 3
[leaf2-vsi-2-vxlan-3] quit
# 在leaf2和spine之间创建VxLAN隧道Tunnel 23
[leaf2] interface tunnel 12 mode vxlan
[leaf2-Tunnel 23] source 3.3.3.3
[leaf2-Tunnel 23] destination 2.2.2.2
[leaf2-Tunnel 23] quit
# 关联VxLAN隧道和VxLAN
[leaf2] vsi 2
[leaf2-vsi-2] vxlan 3
[leaf2-vsi-2-vxlan-3] tunnel 23
[leaf2-vsi-2-vxlan-3] quit
# 在接入VM1的接口GE1/0/3 上创建以太网服务实例2,该实例用来匹配VLAN 3 的数据帧。
[leaf2] interface twenty-fivegige 1/0/1
[leaf2-GigabitEthernet1/0/3] port access vlan 2
[leaf2-GigabitEthernet1/0/3] service-instance 2
[leaf2-GigabitEthernet1/0/3-srv2] encapsulation s-vid 2

 # 验证配置

在Spine上查看VxLAN Tunnel:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第20张图片

在Spine上查看VSI信息:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第21张图片

在Spine上查看VM1和VM3的ARP表项:

# 连通性测试

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第22张图片

# VxLAN报文分析

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第23张图片

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第24张图片

4)实现需求3:VxLAN网络与外部传统网络之间的互访

在上一节的基础上,增加如下配置:

  • Spine配置前往外部网络的默认路由,并引入OSPF

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第25张图片

  • 外部SW配置前往VxLAN网络的默认路由

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第26张图片

 连通性验证:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第27张图片

VxLAN报文分析:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第28张图片

7.2 分布式VxLAN网关

1、实验拓扑

如下拓扑所示,Leaf 1和Leaf 2作为VTEP设备,负责将虚拟机接入VxLAN网络;Spine作为Border设备连接非VxLAN网络,Border也叫边界网关,是VxLAN和外部传统网络的边界设备

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第29张图片

 地址规划表:

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第30张图片

2、组网需求

  • 需求1:VM 1 和 VM 2 / VM 3互通(VxLAN网络内部不同站点间跨VNI互访)
  • 需求2:VM 2 和 VM 3 互通(VxLAN网络内部同一站点间跨VNI互访)
  • 需求3:VM 1、VM 2、VM 3 和 Server互通(VxLAN与非VxLAN互访)

3、配置步骤

在分布式 VxLAN L3 网关组网中,所有的分布式 VxLAN L3 网关上都需要创建 VSI-Interface,并为不同VxLAN L3 网关上的相同 VSI-Interface配置相同的 IP 地址,作为 VxLAN 内虚拟机的网关地址。

边界网关(Border/Spine)上也需要创建 VSI-Interface,并配置 IP 地址。在实际组网中,为避免大量ARP泛洪流量造成带宽浪费,在分布式 VxLAN L3 网关上还需要开启ARP抑制功能,以下两种ARP抑制手段二选一:

  • ARP代答
  • ARP代理

1)基础网络配置

# 在 VM 1、VM 2、VM 3上分别指定网关地址为 10.0.0.254、20.0.0.254、30.0.0.254,具体配置过程略。

# 配置各接口的 IP 地址和子网掩码;在 IP 核心网络内配置 OSPF 协议,确保交换机之间路由可达,具体配置过程略。

# 配置 Spine 发布 10.0.0.0/24、20.0.0.0/24、30.0.0.0/24网段的路由;配置Spine前往Server(40.0.0.1)的静态路由,并引入OSPF,具体配置过程略。

# 配置SW前往VxLAN网络的默认路由,具体配置略。

2)配置实现需求1和需求2

# 配置Leaf 1 

  • 启动L2VPN;配置VxLAN 10、VxLAN 20、VxLAN 30、VSI-Interface 10、VSI-Interface 20、VSI-Interface 30、VxLAN隧道Tunnel 2,并将Tunnel 2分别与VxLAN 10、VxLAN 20、VxLAN 30关联。配置如下:
#
 l2 enable                   //使能L2VPN功能
#
vsi vsi10
 gateway vsi-interface 10       //绑定VSI 10网关
 vxlan 10
  tunnel 2                      //绑定VxLAN和VxLAN隧道
#
vsi vsi20
 gateway vsi-interface 20       //绑定VSI 20网关
 vxlan 20 
  tunnel 2                      //绑定VxLAN和VxLAN隧道
#
vsi vsi30
 gateway vsi-interface 30       //绑定VSI 30网关
 vxlan 30 
  tunnel 2                      //绑定VxLAN和VxLAN隧道
#
interface Vsi-interface10
 ip address 10.0.0.254 255.255.255.0
 mac-address 0010-0010-0010
 local-proxy-arp enable         //开启ARP本地代理功能
 distributed-gateway local      //指定该 VSI-interface 为分布式本地网关接口
#
interface Vsi-interface20
 ip address 20.0.0.254 255.255.255.0
 mac-address 0020-0020-0020
 local-proxy-arp enable         //开启ARP本地代理功能
 distributed-gateway local      //指定该 VSI-interface 为分布式本地网关接口
#
interface Vsi-interface30
 ip address 30.0.0.254 255.255.255.0
 mac-address 0030-0030-0030
 local-proxy-arp enable         //开启ARP本地代理功能
 distributed-gateway local      //指定该 VSI-interface 为分布式本地网关接口
#
interface Tunnel2 mode vxlan    //建立和Leaf 2之间的VxLAN隧道Tunnel 2
 source 1.1.1.1
 destination 3.3.3.3
#
  • 开启分布式网关的动态 ARP 表项同步功能
[Leaf1] arp distributed-gateway dynamic-entry synchronize
  • 配置Leaf 1下行口GE1/0/9服务实例,将VM1的流量映射进VxLAN 10
#
interface GigabitEthernet1/0/9
 port link-mode bridge
 port access vlan 10
 combo enable fiber
 #
 service-instance 10            //配置以太网服务实例service-instance 10,用来匹配VLAN 10的数据
  encapsulation s-vid 10            
  xconnect vsi vsi10            //将以太网服务实例与VSI实例关联
#

# 配置Leaf 2

  • 启动L2VPN;配置VxLAN 10、VxLAN 20、VxLAN 30、VSI-Interface 10、VSI-Interface 20、VSI-Interface 30、VxLAN隧道Tunnel 2,并将Tunnel 2分别与VxLAN 10、VxLAN 20、VxLAN 30关联。配置如下:
#
 l2 enable                   //使能L2VPN功能
#
vsi vsi10
 gateway vsi-interface 10       //绑定VSI 10网关
 vxlan 10
  tunnel 2                      //绑定VxLAN和VxLAN隧道
#
vsi vsi20
 gateway vsi-interface 20       //绑定VSI 20网关
 vxlan 20 
  tunnel 2                      //绑定VxLAN和VxLAN隧道
#
vsi vsi30
 gateway vsi-interface 30       //绑定VSI 30网关
 vxlan 30 
  tunnel 2                      //绑定VxLAN和VxLAN隧道
#
interface Vsi-interface10
 ip address 10.0.0.254 255.255.255.0
 mac-address 0010-0010-0010
 local-proxy-arp enable         //开启ARP本地代理功能
 distributed-gateway local      //指定该 VSI-interface 为分布式本地网关接口
#
interface Vsi-interface20
 ip address 20.0.0.254 255.255.255.0
 mac-address 0020-0020-0020
 local-proxy-arp enable         //开启ARP本地代理功能
 distributed-gateway local      //指定该 VSI-interface 为分布式本地网关接口
#
interface Vsi-interface30
 ip address 30.0.0.254 255.255.255.0
 mac-address 0030-0030-0030
 local-proxy-arp enable         //开启ARP本地代理功能
 distributed-gateway local      //指定该 VSI-interface 为分布式本地网关接口
#
interface Tunnel2 mode vxlan    //建立和Leaf 2之间的VxLAN隧道Tunnel 2
 source 3.3.3.3
 destination 1.1.1.1
#
  • 开启分布式网关的动态 ARP 表项同步功能
[Leaf2] arp distributed-gateway dynamic-entry synchronize
  • 配置Leaf 1下行口GE1/0/9关联服务实例,将VM2的流量映射进VxLAN 20;配置Leaf 1下行口GE1/0/8关联服务实例,将VM3的流量映射进VxLAN10;
#
interface GigabitEthernet1/0/9
 port link-mode bridge
 port access vlan 20
 combo enable fiber
 #
 service-instance 20
  encapsulation s-vid 20
  xconnect vsi vsi20
#
interface GigabitEthernet1/0/8
 port link-mode bridge
 port access vlan 10
 combo enable fiber
 #
 service-instance 10
  encapsulation s-vid 10
  xconnect vsi vsi10

3)配置实现需求3 

在第2步的基础上,增加下面配置:

# 配置Leaf 1

#
interface Tunnel1 mode vxlan    //建立和Spine之间的VxLAN隧道Tunnel 1
 source 1.1.1.1
 destination 4.4.4.4
# 配置策略路由,指定IPv4 报文如果未找到匹配的路由表项,则设置报文的下一跳为Spine。
acl advanced 3000
 rule 0 permit ip
 quit
policy-based-route vxlan10 permit node 5
 if-match acl 3000
 apply next-hop 10.0.0.253
 quit
# 在 VSI 虚接口VSI-interface10 上应用策略路由。
interface vsi-interface 1
 ip policy-based-route vxlan10
 quit

# 配置Leaf 2

#
interface Tunnel1 mode vxlan    //建立和Spine之间的VxLAN隧道Tunnel 1
 source 3.3.3.3
 destination 4.4.4.4
# 配置策略路由,指定IPv4 报文如果未找到匹配的路由表项,则设置报文的下一跳为Spine。
acl advanced 3000
 rule 0 permit ip
 quit
policy-based-route vxlan20 permit node 5
 if-match acl 3000
 apply next-hop 20.0.0.253
 quit
policy-based-route vxlan30 permit node 5
 if-match acl 3000
 apply next-hop 30.0.0.253
 quit
# 在 VSI 虚接口VSI-interface20 上应用策略路由。
interface vsi-interface 20
 ip policy-based-route vxlan20
 quit
# 在 VSI 虚接口VSI-interface30 上应用策略路由。
interface vsi-interface 30
 ip policy-based-route vxlan30
 quit

# 配置Spine

#
 l2 enable                   //使能L2VPN功能
#
vsi vsi10
 gateway vsi-interface 10       //绑定VSI 10网关
 vxlan 10
  tunnel 1                      //绑定VxLAN和VxLAN隧道
#
vsi vsi20
 gateway vsi-interface 20       //绑定VSI 20网关
 vxlan 20 
  tunnel 3                      //绑定VxLAN和VxLAN隧道
#
vsi vsi30
 gateway vsi-interface 30       //绑定VSI 30网关
 vxlan 30 
  tunnel 3                      //绑定VxLAN和VxLAN隧道
#
interface Vsi-interface10
 ip address 10.0.0.253 255.255.255.0
#
interface Vsi-interface20
 ip address 20.0.0.253 255.255.255.0
#
interface Vsi-interface30
 ip address 30.0.0.253 255.255.255.0
#
interface Tunnel1 mode vxlan    //建立和Leaf 1之间的VxLAN隧道Tunnel 1
 source 4.4.4.4
 destination 1.1.1.1
#
#
interface Tunnel3 mode vxlan    //建立和Leaf 2之间的VxLAN隧道Tunnel 3
 source 4.4.4.4
 destination 3.3.3.3
#
  •  查看Tunnel信息

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第31张图片

  • 查看VSI信息

SDN系列-基于VxLAN构建Overlay + VxLAN实验_第32张图片

最后,可在博主主页下载VxLAN实验工程文件。

你可能感兴趣的:(网络技术,网络)