VXLAN技术
什么是VXLAN
为了满足数据中心规模的扩大,以及云化数据中心虚拟机迁移业务不中断的场景,还有二层VLAN数不够用的情况
引入了VXLAN(Virtual eXtensible Lan)可扩展虚拟局域网技术
基于IP网络,采用Mac in UDP封装的二层VPN技术
VXLAN技术优势
- 在云计算场景中支持大量的租户,最多可支持2的24次方(16777216)个VXLAN,解决传统VLAN资源不够用问题
- 虚拟机迁移IP和MAC地址不变,因为采用了MAC in UDP的封装方式,使得原始的二层报文在ip网络中传输,保证了虚拟机迁移前后的IP/MAC地址不变
- 更容易维护,由于是基于IP组建的大二层网络,可以充分利用现有的IP网络技术
SDN概念
我们需要了解一下两个概念
Underlay
和Overlay
Underlay
实际上的物理网络结构
Overlay
构建在Underlay上的虚拟网络结构
VXLAN Segment
每一个Overlay的二层网络,可以被称作为VXLAN segment
属于相同VXLAN segment的物理机或者虚拟机,都属于同一个逻辑二层网络
VXLAN Segment通过VXLAN ID
来表示
VXLAN ID又称VNI——Vxlan Network Identifier
VXLAN网络标识符,长度24比特
VXLAN网络构图&概念
VXLAN Segment
一个overlay网络的范围,属于相同VXLAN Segment的物理机或者虚拟机处于同一个逻辑二层网络
VNI
VXLAN ID
和VLAN ID类似,用于VXLAN网络标识符
VTEP
VXLAN隧道的端点
就是VXLAN的边缘设备,VXLAN相关的处理(封装、解封等)都是在VTEP上进行的
他可以是交换机,也可以是虚机所在的服务器
VXLAN Tunnel
VXLAN隧道,两个VTEP点到点的逻辑隧道
VTEP为二层帧封装上VXLAN头部之后,会再依次封装UDP、IP、MAC头部,典型的隧道技术
数据都是通过VXLAN隧道进行转发
VSI
虚拟交换实例 Virtual Switching Instance
VTEP上为一个VXLAN提供二层交互服务的虚拟交换实例
看做一台虚拟交换机,他具备传统以太网交换机的所有功能
AC
接入链路 Attachment Circuit
接入终端接入VTEP的逻辑链路
指定接入到VXLAN Segment的感兴趣流
VXLAN报文格式
VXLAN整体封装占50字节
基本格式是基于L2oUDP
VXLAN标签VNI占8字节
封装流程
首先数据进入AC,会匹配感兴趣流,发送至VSI内,然后根据正常的封装流程进行封装
外层的IP头为VXLAN Tunnel两端VTEP设备的地址
外层的MAC头为报文在传统网络中,做二、三层转发的MAC地址
外层UDP头也是同理
可以这么理解,外层头部是给传统Underlay去解封转和封装查表转发的,内层剩余的头部就是给Overlay去看的
VXLAN隧道的工作模式
一共有两种工作模式L2 Gateway二层转发模式
和L3 Gateway三层转发模式
L2 Gateway
二层转发模式,VTEP通过查找MAC地址表,对流量进行转发,用于VXLAN与VLAN之间的二层通信
特点:工作在二层转发模式,不能进行三层转发
L3 Gateway
三层转发模式,VTEP通过查找ARP&路由表,进行流量转发,用于跨三层通信,会映入L3VNI概念
特点:工作在三层转发模式,会兼容二转发和三层转发
VXLAN网关模式
VXLAN网络组网模型中,有两种网关模式:集中式网关
、分布式网关
集中式网关
在集中式网关中,由Leaf对二层VXLAN业务进行转发or终结
而三层转发,则由Spine上的对应VXLAN的三层虚拟VSI接口承担
该组网模型的缺点就是:所有的三层流量需要经过spine进行转发,存在流量转发路径非最优、多次封装等问题
引出了分布式网关组网模型
分布式网关
分布式网关,将Spine的网关功能,下沉到了Leaf上
让Leaf具备二三层转发能力
每个Leaf都需要创建相同的VSI接口和IP地址以及MAC地址
对于数据中心内部的流量,均可以在内部的Leaf或者Leaf之间,进行VXLAN隧道的建立转发,无需经过Spine
对于外部的流量,Leaf通过VXLAN隧道发送至Spine,Spine解封装后发出去
Spine上的VSI接口只作为与外网互联的三层接口
需要知道几个名词:
外部网络连接到Overlay的边缘设备叫Border
以后可能会遇到Border Leaf、Service Leaf
VXLAN工作原理
VXLAN的数据平面
在网络虚拟化中,网络被分为了数据平面
、控制平面
、管理平面
VXLAN中的数据平面主要由SPINE或LEAF等VTEP设备承担
控制平面由EVPN控制或者人为手工
上图是一个VXLAN报文的转发流程
VM1访问VM2
先封装内层报文,包含了VM1源IP,VM2目IP,VM1源MAC,VM2目MAC
进入交换机后,由VTEP进行二次外层封装
包含VTEP源IP,VTEP目IP,VTEP源MAC,VTEP目MAC,以及UDP头
在Underlay中,感知该报文为普通IP/UDP的报文,按照正常的转发流程封装流程进行转发
内层由对于的VTEP进行解封转发
VXLAN隧道建立的方式
一共有3种:手动配置
、自动方式
SDN方式
手动配置
在大规模数据中心网络中,一般不用这种方式配置,过于庞大与繁琐
通过手动创建Tunnel接口,配置对应的模式以及本端对端源目VTEP的IP,来完成隧道的建立
自动方式
引入EVPN技术
通过EVPN发现远端VTEP后,自动与其建立VXLAN隧道
SDN方式
通过SDN控制器,搜集所有VTEP信息,下发配置
自动建立所有VTEP之间的VXLAN隧道
VSI的建立
一般有两中建立方式
基于端口+VLAN的配置
手工配置VSI,并指定对应的VXLAN,与多个隧道进行绑定
更多的是使用前者
服务实例的建立
服务实例或者叫接入链路AC
服务实例,用来指定该服务实例感兴趣流数据(通常基于VLAN如上图),并且指定该感兴趣流数据,由哪一个VSI进行转发处理
图上的Service instance 1,就指定了感兴趣流是VLAN2标签的数据在VSIA中进行处理
BUM流量转发
BUM流量
指的是广播
、未知单播
、组播
这三种流量
在VXLAN中,针对以上流量有两种转发模式:头端复制
、核心复制
头端复制
VSI接收到来自本地的BUM流量报文后,会在本地复制或者封装后,发给绑定在该VSI下的全部Tunnel接口和本地AC
核心复制
将同一个VXLAN内的所有VTEP加入到一个组播组内,VSI接收到BUM那些泛洪流量之后,不仅会在本地站点进行泛洪,还会重新封装组播目的IP地址,封装后的报文,还会根据已经建立的转发表,转发至其他VTEP
VTEP的MAC学习
VTEP设备基于VSI学习MAC,生成MAC表项,和传统物理的交换机类似
基于VLAN学习MAC,生成表项
VXLAN组网优化
第一个优化点,是在分布式组网中,针对ARP/ND泛洪抑制的优化
ARP/ND泛洪抑制
在大二层网络中,尽量降低ARP报文,在全网的泛洪转发
一般会再VSI接口下配置启用ARP/ND抑制功能
vis [name]
arp suppression enable
ipv6 nd suppression enable
配置该功能之后,能有效抑制ARP/ND全网泛洪
VTEP从本地站点或者VXLAN隧道中收到ARP/ND请求或应答报文之后,会根据收到的报文,额外在本地建立一个ARP/ND抑制表项
当后续的VTEP收到从本地站点内的虚拟机,请求其他虚拟机的MAC地址的ARP/ND请求时,会优先根据抑制表项进行代答
如果抑制表内没有,才会泛洪请求到核心网中
BUM报文VSI泛洪
也和前者差不多,大二层组网,要尽量减少这些流量,在全网的泛洪
一样再VSI接口中进行关闭
vis [name]
flooding disable [all/Broadcast/Unknown-Multicast/Unknown-unicast]
关闭VSI的泛洪功能后,可选择性配置泛洪的MAC地址
若目的帧匹配到配置的MAC地址泛洪,则该帧可泛洪至远端站点
不匹配则会限制在本地站点内,不会再通过VXLAN隧道转发至远端站点
- 如果组网存在二层广播的场景,不能关闭该功能
- 该功能默认环境下开启
关闭隧道MAC/ARP学习
在EVPN+VXLAN组网模式中
需要关闭隧道MAC/ARP学习
VXLAN隧道只作为转发平面
EVPN作为控制平面,下面的VTEP通过EVPN传递MAC/ARP信息
/*关闭隧道MAC学习功能*/
vxlan tunnel mac-learning disable
/*关闭隧道ARP学习功能*/
vxlan tunnel arp-learning disable
/*关闭隧道ND学习功能*/
vxlan tunnel nd-learning disable
VXLAN配置流程
手动配置的话,大致有5个步骤
#1 配置设备VXLAN隧道工作的模式,是L2Gateway还是L3Gateway
#2 配置VXLAN隧道
#3 配置VSI,绑定VNI,绑定感兴趣流
#4 配置服务实例,指定感兴趣流,绑定VSI
#5 配置VXLAN三层网关(集中式/分布式)
步骤解析
配置设备VXLAN隧道工作模式
/*首先修改设备VXLAN隧道工作的模式,硬件资源默认情况下是二层网关模式*/
[Switch] hardware-resource vxlan [border8k | border16k | border24k | border32k | border40k | l2gw | l3gw8k | l3gw 16k | l3gw24k | l3gw32k | l3gw40k]
/*交换机需要开启L2VPN*/
[Switch] l2vpn enable
/*大型匡式设备例如S12500系列,默认情况下,VXLAN隧道的模式为L3Gateway,修改为L2Gateway用如下命令*/
[S12508] undo vxlan ip-forwarding
配置VXLAN隧道
/*
配置VXLAN隧道全局源地址
这个地址一般的loopback地址
在配置vxlan前,一般会将互联网络通过IGP跑通
*/
[Switch] tunnel global source-address [ip]
/*创建VXLAN隧道*/
[Switch] interface tunnel0 mode vxlan
/*手动指定该VXLAN隧道源地址,本端VTEP源地址,如果配置全局源地址,可忽略该项配置*/
[Switch-Tunnel0] source [ip]
/*配置隧道目的地址,对端VTEP地址*/
[Switch-Tunnel0] destination [ip]
配置VSI,绑定VNI,关联VXLAN隧道
/*创建VSI,并进入视图*/
[Switch] vsi [name]
/*在VIS中绑定VNI也就是VXLAN ID*/
[Switch-vsi-name] vxlan [vxlan-id]
/*关联VXLAN与VXLAN隧道*/
[Switch-vsi-vxlan-id] tunnel [tunnel-id]
配置服务实例,绑定感兴趣流
/*进入需要关联的物理接口或聚合口*/
[Switch] interface G1/0/1
/*创建服务实例*/
[Switch-Interface] service-instance [id]
/*配置服务实例匹配报文规则*/
[Switch-Interface-instance] encapsulation [default/tagged/untagge/s-id [vlan id]]
/*配置感兴趣流与VSI绑定*/
[Switch-Interface-instance] xconnect vsi [id] 可选access-mode [ethernet/vlan]
配置VXLAN网关&模式
/*进入VSI虚接口*/
[Switch] interface vsi [id]
/*配置VSI虚接口IP*/
[Switch-vsi-int] ip address [ip] [mask]
/*如果是分布式网关还需配置如下两条命令*/
[Switch-vsi-int] mac-address [mac]
[Switch-vsi-int] distributed-gateway local /*启用分布式网关*/
/*进入VSI视图,为VSI指定网关接口*/
[Switch-vsi] gateway vsi-interface [id]
配置案例
根据模拟器做如上拓扑实验
#VXLAN(1)#数据中心网络 (1)#Underlay(1)#Overlay(1)文章作者:Magic清风
文章链接:https://skylan.cc/archives/1742346094404
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论