《重识云原生系列》专题索引:
本篇我们以下图所示的典型的“Spine-Leaf”数据中心组网为例,给大家介绍一下VXLAN的应用场景和部署方案。
图6-1 Spine-Leaf架构数据中心组网示意图
在上图所示的数据中心里,企业用户拥有多个部门(部门1和部门2),每个部门中拥有多个VM(VM1和VM3,VM2和VM4)。同部门的VM属于同一个网段,不同部门的VM属于不同的网段。用户希望同一部门VM之间、不同部门VM之间,VM与Internet之间均可相互访问。
如图6-2所示,Leaf1和Leaf2作为VXLAN网络的VTEP,两个Leaf之间搭建VXLAN隧道,并在每个Leaf上部署VXLAN二层网关,即可实现同一部门VM之间的相互通信。此时Spine只作为VXLAN报文的转发节点,不感知VXLAN隧道的存在,可以是任意的三层网络设备。
图6-2 相同子网互通
如图6-3所示,Leaf1、Leaf2和Spine作为VXLAN网络的VTEP,Leaf1和Spine之间、Leaf2和Spine之间分别搭建VXLAN隧道,并在Spine上部署VXLAN三层网关,即可实现不同部门VM之间的相互通信。
图6-3 不同子网互通(集中式网关)
细心的读者可能已经发现,在不同子网互通(集中式网关)中,同一Leaf(Leaf1)下挂的不同网段VM(VM1和VM2)之间的通信,都需要在Spine上进行绕行,这样就导致Leaf与Spine之间的链路上,存在冗余的报文,额外占用了大量的带宽。同时,Spine作为VXLAN三层网关时,所有通过三层转发的终端租户的表项都需要在该设备上生成。但是,Spine的表项规格有限,当终端租户的数量越来越多时,容易成为网络瓶颈。分布式网关的出现,很好的解决了这两个问题。
如图6-4所示,Leaf1作为VXLAN网络的VTEP,在Leaf1上部署VXLAN三层网关,即可实现同Leaf下不同部门VM之间的相互通信。此时,VM1和VM2互访时,流量只需要在Leaf1节点进行转发,不再需要经过Spine节点,从而节约了大量的带宽资源。
如图6-4所示,Leaf1和Leaf2作为VXLAN网络的VTEP,在Leaf1和Leaf2上部署VXLAN三层网关。两个VXLAN三层网关之间通过BGP动态建立VXLAN隧道,并通过BGP的remote-nexthop属性发布本网关下挂的主机路由信息给其他BGP邻居,从而实现跨Leaf节点不同部门VM之间的相互通信。
图6-4 不同子网互通(分布式网关)
Leaf作为VXLAN三层网关时,只学习其下挂终端租户的表项,而不必像集中式三层网关一样,需要学习网络中所有终端租户的表项,从而解决了集中式三层网关带来表项瓶颈问题。
随着网络的快速普及和应用的日益深入,基础网络的可靠性日益成为用户关注的焦点,如何能够保证网络传输不中断对于终端用户而言非常重要。
在VXLAN网络的子网互通中,VM与Leaf之间,Leaf与Spine之间都是通过单归方式接入的。这种组网接入方式,显然已经不能满足用户对VXLAN网络可靠性的需求。
这时,可以按照如下图所示全网状连接(Full Mesh)方式构建隧道,提升VXLAN网络的可靠性。
图6-5 Full Mesh隧道方案
通常采用堆叠(CSS)方式提升接入层的可靠性。这是因为,接入层的设备数量繁多,堆叠方式可以将多台交换机设备组合在一起,虚拟化成一台交换设备,所有配置均在这一台虚拟交换机上进行,从而简化了接入层设备的运维复杂度。此外,堆叠系统内成员交换机之间在进行冗余备份的同时,能够利用跨设备的Eth-Trunk实现设备间链路的负载分担。
图6-6 接入层的可靠性
如图6-6所示,Leaf1和Leaf2组建为堆叠系统CSS-1,Leaf3和Leaf4组建为堆叠系统CSS-2,VM1~VM4均通过双归的方式接入到各自的CSS系统中。CSS-1和CSS-2作为VXLAN网络的VTEP,两个CSS之间搭建VXLAN隧道,并在每个CSS上部署VXLAN二层网关,从而实现同一部门VM之间的相互通信。
通常采用多活网关方式提升核心层的可靠性。这是因为,核心层设备物理位置较为分散,传统的设备级备份无法满足要求,必须通过协议级备份来实现。
在多活网关组网中,通过给多台Spine设备部署相同的网关信息,将它们对外模拟成VXLAN网络中的一个虚拟VTEP,然后在所有Spine设备上配置三层网关,使得无论流量发到哪一个Spine,该设备都可以提供服务,将报文正确转发给下一跳设备。此外,多活网关中的多台Spine之间形成负载分担关系,共同进行流量转发。
图6-7 核心层的可靠性设计
如图6-7所示,Spine1、Spine2分别与接入层的堆叠系统CSS-1和CSS-2之间建立VXLAN隧道,在Spine1、Spine2上配置VXLAN三层网关功能,Spine1、Spine2上部署相同的网关MAC地址、网关IP地址以及源VTEP地址,以便对外模拟成一个虚拟的VTEP,从而实现了不同网段VM之间、VM与外网之间的互通。
VxLAN 是一种基于标准的技术,因此它不受特定供应商的限制,可以由硬件或软件支持。您可以通过 VxLAN 主机或 VxLAN 网关部署该技术,您可以将部署限制为一种方法或结合使用这两种方法。
VxLAN不需要部署在交换机上,也可以在任何主机上运行,只要它本身支持 VxLAN。比如管理程序,它可以配置为在其所有虚拟机上运行 VxLAN,运行 VTEP 功能的 vSwitch 在来自虚拟机的流量传到物理交换机之前对其进行封装。
由于 VxLAN 封装发生在主机上,因此网络基础设施的其余部分只能看到 IP 流量,基于主机部署的优势在于可以简化整个物理网络,其他可能支持 VxLAN 的主机示例包括服务器、防火墙、负载平衡器等。
当主机不支持 VxLAN 时,最好的部署方式是直接在交换机或路由器上进行部署。
当交换机执行 VTEP 功能时,它被称为 VxLAN 网关,交换机可以执行 VxLAN 封装/解封装,还可以将 VLAN ID 转换为 VNI,VxLAN 网关创建通向目标 VTEP(主机或网关)的隧道,因此主机和 IP 基础设施不知道 VxLAN 的存在。
基于网关的部署的一个好处是某些平台(例如Cisco Nexus 9000-EX)能够在硬件上实施 VxLAN封装/解封装,直接从 ASIC 而不是从软件运行 VxLAN 可以显着提高性能。
也可以将两者结合使用,混合部署是指将 VxLAN 与 VxLAN 网关后面的某些设备一起使用,并且还有一些主机运行本机 VxLAN。
CE系列交换机支持通过单机方式和控制器方式来部署VXLAN网络。这两种方式中VXLAN网络的子网互通以及VXLAN网络的可靠性的实现均与前面一致,不同点在于VXLAN的配置下发方式不同:单机方式是通过CLI手动在设备上进行配置,控制器方式是通过控制器向设备下发配置或流表,设备仅作为转发器。
下面以图6-8所示组网为例,简单介绍一下当前CE系列交换机支持的VXLAN控制器部署方式:SNC控制器方式和AC控制器方式。
图6-8 两种控制器部署方案
SNC控制器方式是指通过SNC控制器动态建立VXLAN隧道。
此方式下,CE系列交换机作为转发器,无需进行VXLAN配置。VXLAN隧道的创建以及指导报文转发的表项,均由SNC控制器通过OpenFlow协议向转发器下发。
AC控制器方式是指通过AC控制器动态建立VXLAN隧道。
此方式下,CE系列交换机作为转发器,需要预先完成部分基础配置(具体配置内容请参考产品配置指南),AC控制器通过NETCONF协议向转发器下发建立VXLAN隧道的配置,通过OpenFlow协议控制报文在隧道中的转发。
基于SDN的VXLAN基本组网:
图6-9 VXLAN组网拓扑图
接口配置:
图6-10 基于SDN的VLXAN基本组网-接口配置
协议配置:
图6-11 基于SDN的VLXAN基本组网-协议配置
1. 配置控制器和转发器建立OpenFlow通信通道:
//SNC上配置:
openflow listening-ip 5.5.5.5 //配置SDN控制器侦听地址
fp-id 1 //配置转发器ID
type huawei-default //配置转发器的设备类,其中huawei-default表示转发器是华为设备;
//ovs-default表示转发器是OVS(openvswitch)设备
version default //配置转发器的版本是default
role default //配置转发器的角色是default
openflow controller //配置控制器与转发器之间的通信通道,采用OpenFlow连
//接并进入OpenFlow视图
peer-address 1.1.1.1
//指定转发器FP1的Loopback1地址
//FP1配置
controller-ip 5.5.5.5
//指定控制器的Loopback地址,并进入Controller视图
openflow agent
//配置转发器与控制器之间的通信通道采用OpenFlow连接
//并进入OpenFlow Agent视图
transport-address 1.1.1.1
//配置OpenFlow连接的本端地址
2.配置业务接入点实现区分业务流量:
//在控制器上配置FP1
switch fp 1 //进入fp1视图下,1是fp的ID,这里假设fp id是1。
bridge-domain 10
//创建广播域BD,可以看成是一个虚拟交换机。
interface vserviceif 1:1
//创建vServiceIf接口,并进入vServiceIf接口视图,
//vServiceIF接口是一个逻辑的VXLAN接口。用于和bridge-domain关联,将流量引入到广播域。
binding interface GE0/0/2
//为vService接口绑定物理接口。
interface vserviceif 1:1.1 mode l2
//创建vServiceif接口子接口,并进入子接口视图。
//子接口作用是为了匹配带VLAN的报文,进而报文进入桥域。
encapsulation dot1q vid 10
//配置二层vServiceIf子接口的流封装类型,允许接
//口接收携带一层VLAN Tag是10的报文。
rewrite pop single
//配置二层vServiceIf子接口的流动作是pop,对接收的报文进行剥除VLAN Tag操作。
//这样可以实现不同VLAN的租户在相同VXLAN下可以互访。
3.配置VXLAN隧道转发业务流量:
//在控制器上配置FP1
bridge-domain 10
//创建VXLAN网络标识VNI并关联广播域BD,将VNI以1:1方式映射到BD,
//通过BD转发流量。此命令相当于将VXLAN隧道和bridgedomain(虚拟交换机)关联起来。
VXLAN vni 10
interface nve 1:1
//创建NVE接口,并进入NVE接口视图。
source 1.1.1.1
//配置源端VTEP的IP地址。
vni 10 head-end peer-list 3.3.3.3
//配置头端复制列表。通过头端复制列表,源端NVE接口将收到的
//BUM(Broadcast&Unknown-unicast&Multicast)报文,根据
VTEP列表进行复制并发送给属于同一个VNI的所有VTEP。
VXLAN介绍_魏言华的博客-CSDN博客_vxlan
VXLAN基本概述_曹世宏的博客的博客-CSDN博客_vxlan
两种Overlay技术:NVGRE和VXLAN - 知乎
解读VXLAN_佳的技术博客_51CTO博客
什么是 VxLAN ?它的优点有哪些? - 知乎
深度:什么是VxLAN?
关于VLAN和VXLAN的理解_octopusflying的博客-CSDN博客_vlan vxlan
VXlan 技术实现原理_轻飘风扬的博客-CSDN博客_vxlan原理
最好的vxlan介绍
VXLAN:云时代的虚拟化数据中心网络
VXlan 技术实现原理
华为HedEx文档