定义:
RFC7348定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是三层网络虚拟化技术
1 出现背景
1.1 由实体到云的变化
时间 | 服务器单位 | 优势 | 缺陷 | 主要流量走向 |
---|---|---|---|---|
过去 | 实体机 | 单独完成计算工作,计算任务统筹简单 | 服务器CPU、GPU等利用率较低,电力成本过高 | 南北向 |
现在 | 虚拟机(一台实体机资源可以动态分配给多台虚拟机使用) | 服务器CPU、GPU等利用率高,电力成本相对降低,分布式计算提高了服务器整体算力 | 技术复杂度较高,虚拟化需要一定技术支持;云计算需要进行任务的统筹和分配,较麻烦 | 东西向 |
1.2 云的特点
①分布式计算
云计算的主要特征之一就是"
分布式计算
";这种计算方法要求位于中心节点的虚拟机将任务拆分成多个子任务分发给其他虚拟来进行并行计算,最后虚拟机们再将计算完成后的子任务传递给中心节点的虚拟机进行任务的整合,在这个过程中还设计任务的复制冗余过程;以上种种过程都需要使用"
东西向流量
"来进行传输;
②虚拟机迁移
"虚拟机迁移"要求迁移前后的主机配置(如网关,IP地址)不变,也就
要求主机迁移前后的位置都要在一个二层网络中
(无论是二层还是大二层),"虚拟机迁移"流量也是"东西向流量";
③需求VLAN数变多
由于一个实体机可以虚拟成众多虚拟机,所以
主机的数量暴增
,这也使得需求的VLAN数量变多;
1.3 云的需求
我们根据上面云的特点,总结出对于网络需求
云的特点 | 网络需求 |
---|---|
东西向流量增加 | 东西向互访延迟低,无阻塞,大带宽 |
主机都在一个二层 | 扩大二层范围 |
主机数量的暴增 | 要求VLAN数扩展,网络架构也要易扩展,减轻交换机MAC表负担 |
需求一、东西向互访延迟低
在传统网络架构中,如VLAN 10 访问 VLAN 40需要跨三层,延迟较高
注:
可能读者会有疑问,为什么终端不全部放在一个汇聚交换机底下,这样东西向互访就不需要跨三层了?
因为汇聚层交换机存在瓶颈,要想再新增VLAN就需要新增汇聚交换机,跨三层通信,具体看下面的需求二;
需求二、无阻塞易扩展
无阻塞------接入层交换机的收敛比接近1;
收敛比:
接入层交换机南向带宽之和/接入层交换机北向带宽之和,比如接入层交换机下连十台主机,每台10G,上联100G,则收敛比为 10*10G/100G = 1;收敛比越接近1,网络整体阻塞程度越低,当然小于1也行只是没有必要;
对于传统架构,接入层交换机的北向带宽不易扩展
,需要使用链路聚合技术,一旦汇聚层交换机下联接口达到上限既汇聚层交换机成为瓶颈
,则无法再进行北向带宽扩展,就容易出现收敛比异常
;
当然,上面说的汇聚层交换机瓶颈问题,可以通过 链路聚合+堆叠
的方式解决,不过需要注意,堆叠是有上限的
,不可无限堆叠,仍存在瓶颈
;
注:
读者可能会问,为什么传统的
VRRP+MSTP
不被加入该扩展方案?因为,VRRP+MSTP 本质上是
冗余方案
的一种,而不作为扩展方案
,在加入STP相关技术破环之后,冗余链路就被down掉了,所以接入交换机的上行带宽并没有增加,当然收敛比也没有变化;
需求三、大带宽
由于传统网络中的汇聚层冗余方式,多是通过 VRRP+MSTP
,而这一冗余方式需要STP来破环,所以就会导致先天有一链路会被Down掉,自然带宽就小了;
需求四、扩大二层范围
对于传统架构,确实可以通过 链路聚合+堆叠
的方式,扩大纯二层的范围,但一方面由于堆叠的数量限制二层范围有瓶颈,另一方面纯二层范围太大容易存在广播风暴等问题;所以需要一种基于三层的大二层技术,可以避免二层问题的同时,实现大二层的功能;
需求五、VLAN数扩展
传统的VLAN数量只有4096个,在云计算的时代,主机(虚拟机)数量暴增,需求的VLAN数也需要扩展;所以需要一种新技术满足扩展VLAN的需求;
需求六、减轻MAC表负担
传统汇聚层交换机需要承载所有主机的MAC表项,在主机(虚拟机)数量暴增的今天,这容易导致汇聚层交换机出现瓶颈问题;所以需要一种新的技术解决MAC表项过多的问题;
1.5 引言
那么,怎么为云计算提供满足需求的网络呢?我们就需要下面几种网络架构或技术的结合应用:叶脊网络架构、VXLAN、EVPN;
2 叶脊网络
先看以下三个云的需求,传统网络架构难以满足,所以就需要一种新的网络架构;
- 需求一、东西向互访延迟低
- 需求二、无阻塞易扩展
- 需求三、大带宽
2.1 定义
Spine-Leaf 网络架构,也称为叶脊网络,由于这种网络架构来源于交换机内部的 Switch Fabric,因此也被称为 Fabric 网络架构,同属于 CLOS 网络模型。事实已经证明,Spine-Leaf 网络架构可以提供高带宽、低延迟、非阻塞的服务器到服务器连接;
2.2 原理
区别于传统网络架构中,接入汇聚交换机之间链路都是二层链路;
叶脊网络上联链路都是三层链路,如果说两个 Leaf 交换机下的服务器需要通讯,需要通过 L3 路由,经由 Spine 交换机进行转发。
如果Leaf交换机上联存在冗余链路,在选路方式上,我们就不再使用二层网络中类STP的方式,而是使用三层的等价多路径来实现链路的负载均衡;
2.3 优势
能满足云的前面三个需求,就是该网络架构的优势,我们将逐个分析
- 需求一、东西向互访延迟低
- 需求二、无阻塞易扩展
- 需求三、大带宽
优势一、东西向互访延迟低
互访流量只需要跨二层(传统网络架构为三层)
优势二、无阻塞易扩展
在传统网络中属于瓶颈的汇聚层交换机在叶脊网络中易于扩展,这样方便增加接入层交换机(Leaf交换机)上联带宽,平衡收敛比,实现无阻塞传输;
优势三、大带宽
Leaf交换机上联链路使用等价多路径,可以轻易实现带宽的扩容;
3 VXLAN
3.1 简介
3.1.1 定义
RFC7348定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网);
VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是一种三层的网络虚拟化技术;
3.1.2 名词
注:以下为H3C的名词解释,其他厂商略有偏差
- VSI:Virtual Switch Instance,虚拟交换实例,VTEP 上为一个 VXLAN 提供二层交换服务的虚拟交换实例。VSI 可以看做是 VTEP 上的一台基于 VXLAN 进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能,包括源 MAC 地址学习、MAC 地址老化、泛洪等。VSI与 VXLAN 一一对应。
- VNI:VXLAN ID类似于VLAN的VID,比VID多,有2^24次方个(VLAN只有 2^12个),一个VNI可以映射多个VID;
- Tunnel:此处Tunnel指VXLAN Tunnel,两个 VTEP 之间的点到点逻辑隧道VTEP 为数据帧封装 VXLAN 头、UDP 头和 IP 头后,通过 VXLAN 隧道将封装后的报文转发给远端 VTEP,远端 VTEP 对其进行解封装。
- VTEP :专用封装VXLAN头部交换机,可以是物理设备也可以是虚拟机上设备
(虚拟上面对用户透明但占用服务器资源,物理设备性能更好但要考虑兼容性问题)- NVE :用于建立隧道的接口,通常源IP使用环回地址的IP
(使用环回接口建立隧道可以防止物理接口动荡而导致的隧道建立失败,因为可以做冗余处理)- VSI-Interface:类似于SVI,作为网关角色,用于跨BD路由以及终结VXLAN封装访问外网
3.1.3 报文
注:以下是经过VTEP后的报文结构
如 图 1-2 所示,VXLAN报文的封装格式为:在原始二层数据帧外添加 8 字节VXLAN头、8 字节UDP头和 20 字节IP头。其中,UDP头的目的端口号为VXLAN UDP端口号(缺省为 4789)。 VXLAN头主要包括两部分:
- 标记位:"I"位为 1 时,表示 VXLAN 头中的 VXLAN ID 有效;为 0,表示 VXLAN ID 无效。其他位保留未用,设置为 0。
- VXLAN ID:用来标识一个 VXLAN 网络,长度为 24 比特。
3.2 转发原理
VXLAN是一种在三层网络中模拟二层网络的转发机制,既结合结合了三层网络优势又摒弃了二层网络劣势的L2VPN技术;
- 三层网络优势:灵活,范围广,可用等价路由来进行负载均衡
- 类二层转发机制:基于VXLAN进行源MAC的学习,基于VXLAN进行目的MAC的转发;
3.2.1 广播/组播
-
环境介绍
VTEP 1:VSI10_VXLAN10_Tunnel1/2/3
VTEP 2:VSI20_VXLAN20_Tunnel1/2/3
VTEP 3:VSI30_VXLAN30_Tunnel1/2/3
-
具体流程
- PC1(192.168.10.1/24) ping 同网段的 PC2(192.168.10.2/24),则进行icmp包的封装,当封装到二层的目的MAC时,由于本地没有存在相应的ARP表项,所以需要进行ARP的请求,由于是同网段,所以请求的MAC就是PC2的IP对应的MAC;
- 该请求发出后,经过Server内部的虚拟交换机,会被打上一个VLAN 10 的TAG,然后上送给VTEP1;
- VTEP1的接口GE0/2因为有配置VXLAN的相关规则------收到VLAN10的标签时,将该标签去除,同时给ARP报文新增VLAN10标签的映射VXLAN10标签;再根据VXLAN标签查找
L2VPN MACADDRESS表
,由于是广播则直接泛洪处理------将报文运至VXLAN10内的所有Tunnel,进行封装后转发该报文;- VTEP1 还会进行
L2VPN MAC
的学习(图中红色),其学习规则类似于MAC地址的学习------基于VXLAN的源MAC学习和基于VXLAN的目的MAC转发,不过需要注意,虽然是基于VXLAN但是本地L2VPN MAC表
中是用VSI记录,因为①VSI和VXLAN存在一一对应的关系;②VSI可以使用字符串记录更加方便设计者理解;③不过VSI是本地有效的,也就是说两个相同VXLAN的终端通信,只需要VXLAN号一致即可,VSI昵称不需要一样(因为他根本不传递)- VTEP2收到该报文,解封装新二层,发现目的IP是自己的Tunnel接口,所以开始进行
L2VPN MAC
的学习,将Tunnel接口填入L2VPN MAC表
的port处,然后一路解封到VXLAN层,把和VXLAN对应的VSI填入L2VPN MAC
的VSI中,然后解封装到原MAC层,将其中的源MAC填入L2VPN MACS表
中;- VTEP2 解封装后会查找
L2VPN MACS表
基于VXLAN10进行目的MAC的转发,由于是广播则直接泛洪处理------在VXLAN10内泛洪,泛洪到物理接口;所以再根据VSI绑定的物理接口进行报文的重构,加上对应的VLAN后发出;
3.2.2 同网段单播
-
环境介绍
VTEP 1:VSI10_VXLAN10_Tunnel1/2/3
VTEP 2:VSI20_VXLAN20_Tunnel1/2/3
VTEP 3:VSI30_VXLAN30_Tunnel1/2/3
-
具体流程
注:以下过程是在ARP后进行的
- PC1(192.168.10.1/24) ping 同网段的 PC2(192.168.10.2/24),则进行icmp包的封装,当封装到二层的目的MAC时,由于本地存在相应的ARP表项,所以进行二层封装后发出ICMP包;
- ICMP包经过Server内部的虚拟交换机,会被打上一个VLAN 10 的TAG,然后上送给VTEP1;
- VTEP1的接口GE0/2因为有配置VXLAN的相关规则------收到VLAN10的标签时,将该标签去除,同时给ARP报文新增VLAN10标签的映射VXLAN10标签;再根据VXLAN标签查找
L2VPN MAC表
,由于存在表项,直接将报文转发至Tunnel 1进行报文的封装后发出;- VTEP2收到该报文,解封装后,基于VXLAN进行目的MAC的转发,将报文运至GE0/2,同时根据VXLAN对应VSI绑定接口的配置进行报文的重构,加上VLAN10后发出;;
3.2.2 跨网段单播
-
环境介绍
VTEP 1:VSI10_VXLAN10_Tunnel1/2/3
VTEP 2:VSI20_VXLAN20_Tunnel1/2/3
VTEP 3:VSI30_VXLAN30_Tunnel1/2/3
-
具体流程
注:以下过程是在ARP后进行的
- PC1(192.168.10.1/24) ping 跨网段的 PC2(192.168.20.1/24),则进行icmp包的封装,当封装到二层的目的MAC时,由于本地存在相应的ARP表项(网关MAC),所以进行二层封装后发出ICMP包;
- ICMP包经过Server内部的虚拟交换机,会被打上一个VLAN 10 的TAG,然后上送给VTEP1;
- VTEP1的接口GE0/2因为有配置VXLAN的相关规则------收到VLAN10的标签时,将该标签去除,同时给ARP报文新增VLAN10标签的映射VXLAN10标签;再根据VXLAN标签查找
L2VPN MAC表
,由于存在表项,直接将报文转发至Tunnel 3进行报文的封装后发出;- VBDIF收到报文后解封装,发现原目的IP为192.168.20.1,则内部路由到192.168.20.254,然后重新进行VXLAN封装后发出;
- VTEP2收到该报文,解封装后,基于VXLAN进行目的MAC的转发,将报文运至GE0/2,同时根据VXLAN对应VSI绑定接口的配置进行报文的重构,加上VLAN10后发出;;
3.3 特殊机制
3.3.1 防环机制
远端 VTEP 从 VXLAN 隧道上接收到报文后,不会再将其泛洪到其他的 VXLAN 隧道;
3.3.2 ARP泛洪抑制机制
为了避免广播发送的 ARP 请求报文占用核心网络带宽,VTEP 从本地站点或 VXLAN 隧道接收到ARP 请求和 ARP 应答报文后,根据该报文在本地建立 ARP 泛洪抑制表项。后续当 VTEP 收到本站点内虚拟机请求其它虚拟机 MAC 地址的 ARP 请求时,优先根据 ARP 泛洪抑制表项进行代答。如果没有对应的表项,则将 ARP 请求泛洪到核心网。ARP 泛洪抑制功能可以大大减少 ARP 泛洪的次数。
图 1-9 所示,ARP泛洪抑制的处理过程如下:
- (1) 虚拟机 VM 1 发送 ARP 请求,获取 VM 7 的 MAC 地址。
- (2) VTEP 1 根据接收到的ARP请求,建立VM 1 的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP 请求(图 1-9 以单播路由泛洪方式为例)。
- (3) 远端 VTEP(VTEP 2 和VTEP 3)解封装 VXLAN 报文,获取原始的 ARP 请求报文后,建立 VM 1 的 ARP 泛洪抑制表项,并在本地站点的指定 VXLAN 内泛洪该 ARP 请求。
- (4) VM 7 接收到 ARP 请求后,回复 ARP 应答报文。
- (5) VTEP 2 接收到 ARP 应答后,建立 VM 7 的 ARP 泛洪抑制表项,并通过 VXLAN 隧道将 ARP 应答发送给 VTEP 1。
- (6) VTEP 1 解封装 VXLAN 报文,获取原始的 ARP 应答,并根据该应答建立 VM 7 的 ARP 泛洪 抑制表项,之后将 ARP应答报文发送给 VM 1。
- (7) 在 VTEP 1 上建立 ARP 泛洪抑制表项后,虚拟机 VM 4 发送 ARP 请求,获取 VM 1 或 VM 7 的 MAC 地址。
- (8) VTEP 1 接收到 ARP 请求后,建立 VM 4 的 ARP 泛洪抑制表项,并查找本地 ARP 泛洪抑制 表项,根据已有的表项回复 ARP 应答报文,不会对 ARP 请求进行泛洪。
- (9) 在 VTEP 3 上建立 ARP 泛洪抑制表项后,虚拟机 VM 10 发送 ARP 请求,获取 VM 1 的 MAC 地址。
- (10) VTEP 3 接收到 ARP请求后,建立 VM 10 的 ARP 泛洪抑制表项,并查找本地 ARP 泛洪抑制 表项,根据已有的表项回复 ARP 应答报文,不会对 ARP请求进行泛洪;
3.4 优势
优势一、扩大二层范围
跨三层通信,虚拟二层范围灵活多变,方便虚拟机热迁移;
优势二、VLAN扩展
VXLAN数量比VLAN多,有2^24次方个(VLAN只有 2^12个),一个VXLAN可以映射多个VLAN,可以给更多虚拟机提供局域网隔离;
优势三、减轻MAC表负担
中间三层交换机转发根据路由表进行转发,节省了MAC地址的空间;
3.5 劣势
劣势一、隧道手动建立
隧道建立和VxLAN匹配需要手动完成,难以应用于大规模网络部署,也不好管理;
劣势二、地址泛洪同步
传统VxLAN只定义了VxLAN的报文封装,MAC+IP地址学习依赖于数据平面泛洪行为来完成,会导致BUM报文泛洪到整个Fabric;
4 EVPN
4.1 简介
4.1.1 定义
EVPN(Ethernet Virtual Private Network)是一种构建数据中心二层网络互联技术。EVPN通过扩展MP-BGP协议来传递网络节点的MAC和ARP等信息,通过生成的MAC表项和路由表项进行二/三层报文转发,以实现数据中心互联的目的。
4.2 特点(优势)
优势一、隧道自动建立
EVPN BGP可以帮助本端VTEP自动发现VTEP、自动建立VXLAN隧道、自动创建VXLAN广播表等。
优势二、MAC/IP自学习
EVPN BGP可以帮助本端VTEP学习远端MAC/IP信息,减少ARP泛洪到骨干网中的次数;
4.2 原理
4.2.1 消息类型
BGP EVPN主要通告以下三种类型的NLRI
Type 2 MAC/IP Advertisement Route
Type 2 分为两类:通告MAC信息/通告MAC/IP信息;
- 通告MAC信息
在遇到单播报文时,本端VTEP可以通过从远端VTEP学习到的MAC信息进行基于VXLAN的目的MAC转发;但本端VTEP在收到虚机的ARP请求时,还是需要Tunnel泛洪处理;
本地MAC的学习可以靠以太报文的源MAC学习获得;
该消息类型,仅需定义VSI内的RT值,因为本质上VSI是一台二层交换机,所以其只有MAC信息;
[SwitchA] vsi bbb
[SwitchA-vsi-bbb] evpn encapsulation vxlan
[SwitchA-vsi-bbb-evpn-vxlan] route-distinguisher auto //BGP-AS:VNI
[SwitchA-vsi-bbb-evpn-vxlan] vpn-target auto
- 通告MAC/IP信息
在遇到单播报文时,本端VTEP可以通过从远端VTEP学习到的MAC信息进行基于VXLAN的目的MAC转发;当遇到ARP请求时,可以使用从远端VTEP学习到的MAC/IP信息来进行ARP的代答,减少ARP泛洪到网络中的次数;
本地MAC的学习可以靠以太报文的源MAC学习获得。而ARP(IP/MAC映射)可以靠ARP或免费ARP等报文学习获得;
该消息类型,不仅需定义VSI内的RT值,还需定义VRF的EVPN RT值,因为该类属性是evpn特有,所以需要在地址簇下进行RT定义;
[SwitchA] vsi bbb
[SwitchA-vsi-bbb] evpn encapsulation vxlan
[SwitchA-vsi-bbb-evpn-vxlan] route-distinguisher auto //BGP-AS:VNI
[SwitchA-vsi-bbb-evpn-vxlan] vpn-target auto
[SwitchA] ip vpn-instance tenant1
[SwitchA-vpn-instance-tenant1] address-family evpn
[SwitchA-vpn-evpn-tenant1] vpn-target 1:1
在集中式/分布式网关中的区别
-
集中式网关
二层VTEP需要将学习到的ARP通告给网关,在GW上需要下发ARP,并产生32位直连路由。ARP里的MAC为主机或虚机的真实MAC。从GW往VTEP的报文转发时,在VTEP上做二层MAC转发;
-
分布式网关
每一个分布式网关都会将学习到的ARP通告给其他网关。在远端VTEP上,2类路由里面的IP会下发到VRF表形成32位主机路由,此路由的下一跳为通告此路由的VTEP设备。报文转发时,从网关发出的报文内层MAC为对端VTEP设备的MAC,因此报文在对端VTEP上做三层转发;
Type 3 Inclusive Multicast Ethernet Tag Route
作用:来通告VTEP及其所属VXLAN,以实现VTEP自动发现、自动建立VXLAN隧道、自动创建VXLAN广播表等。只有拥有相同VXLAN且RT值匹配的Tunnel之间会自动建立VXLAN隧道;
因为该类属性是evpn特有,所以需要在地址簇下进行RT定义;
[SwitchA] ip vpn-instance tenant1
[SwitchA-vpn-instance-tenant1] address-family evpn
[SwitchA-vpn-evpn-tenant1] vpn-target 1:1
Type 5 IP Prefix Advertisement Route
作用:EVPN网络构建的是一个私有网络,它也可以通过接入外网,实现跟外网通信的目的。当外部路由协议(如普通BGP,或者IGP协议)将外部路由注入EVPN BGP时,就会产生该类路由;
因为注入的是普通MP-BGP路由,所以在普通vpn实例下进行RT定义;
[SwitchA] ip vpn-instance tenant1
[SwitchA-vpn-instance-tenant1] route-distinguisher 1:1
4.2.2 ARP应答模式
代答模式
在同网段互访时,该模式为默认模式,当Leaf节点收到一个请求同网段IP对应的MAC地址的ARP报文时,会返回该MAC给主机;
代理模式
在同网段互访时,该模式要手动设置,当Leaf节点收到一个请求同网段IP对应的MAC地址的ARP报文时,会返回该自身Leaf节点的MAC地址;在跨网段互访时,该模式为默认模式;
注:
可能读者会有疑惑,这种代理行为意味着报文在Leaf1要解封装到IP层,进行三层路由转发,但是Leaf1本身存在SVI其IP和目的IP也是相同网段,难道这个三层转发不会直接在Leaf1就结束吗?
答案是否定的,在EVPN的Type 2消息不仅会为远端的VTEP生产对应的MAC以及ARP(MAC/IP)表项,还会生成一条32位的路由表项,所以对于Leaf2而言,存在10.1.1.0/24和10.1.1.12/32两条路由,此时当然是基于最长掩码匹配原则,选择后者进行三层的转发;
代理模式意味着报文进入三层转发模式,三层转发则有两种的转发模式,既非对称IRB和对称IRB;
非对称IRB
由于分布式网关的不对称布局模式,导致流量来去时携带的标签不一致,也就形成了非对称IRB;
对称IRB
两者比较
- 对于非对称IRB
1、转发过程更好理解
2、无论Leaf下是否存在其他VNI的主机,都得配置所有VNI网关来进行跨网段转发,较占用资源 - 对于对称IRB
1、按需创建,根据远端的32位路由上的VNI来进行封装
2、节省VTEP上的VNI资源