admin管理员组

文章数量:1607673

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

因此本文将以EVPN VXLAN分布式网关场景下报文交互过程为基础进行介绍,以详细介绍EVPN。

  • 关于EVPN相关概念,可参考2014年发布的RFC7209-Requirements for Ethernet VPN (EVPN)
  • 关于VXLAN基本原理,可参考2014年发布的RFC7348-Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
  • 关于EVPN VXLAN方案的RFC,可参考2018年发布的RFC8365-A Network Virtualization Overlay Solution Using EVPN
  • 关于 EVPN 路由类型的介绍,可参考IANA发布的Ethernet VPN (EVPN)

扩展阅读:

  • Overlay网络虚拟化的相关问题,可参考2014年发布的RFC7364-Problem Statement: Overlays for Network Virtualization
  • 关于EVPN MPLS方案原理,可参考2015年发布的RFC7432-BGP MPLS-Based Ethernet VPN
  • 关于EVPN PBB方案原理,可参考2015年发布的RFC7623-Provider Backbone Bridging Combined with Ethernet VPN
  • 关于EVPN对VPWS的支持原理,可参考2017年发布的RFC8214-Virtual Private Wire Service Support in Ethernet VPN
  • 关于EVPN E-Tree方案原理,可参考2018年发布的RFC8317-E-Tree Support in EVPN and PBB-EVPN
  • 关于EVPN SRv6方案原理,可参考2022年发布的RFC9252-BGP Overlay Services Based on SRv6
  • 关于EVPN/MP-BGP字段的相关参数,可参考IANA发布的Border Gateway Protocol (BGP) Parameters
  • 关于BGP通告VXLAN隧道的相关参数,可参考IANA发布的Border Gateway Protocol (BGP) Tunnel Encapsulation
  • 关于BGP EVPN的AFI相关参数,可参考IANA发布的Address Family Numbers
  • 关于BGP EVPN的SAFI相关参数,可参考IANA发布的Subsequent Address Family Identifiers (SAFI) Parameters
  • 关于EVPN Extended Community Sub-Types,可参考IANA发布的EVPN Extended Community Sub-Types


EVPN还存在大量相关RFC及其他文档,感兴趣者可查阅相关资料。

Note:第一二章主要简介了概念内容。有相关基础可以直接阅读第后续章节。

目录

EVPN VXLAN

  • 目录

  • 1.EVPN VXLAN的概念
    • 1.1.相关术语
    • 1.2.EVPN
      • 1.2.1.常用EVPN路由类型
      • 1.2.2.EVPN基本原理
    • 1.3.VXLAN
  • 2.静态VXLAN场景
    • 2.1.VXLAN流量转发过程
    • 2.2.VXLAN Layer2配置介绍
    • 2.3.VXLAN Layer3网关
  • 3.EVPN VXLAN
    • 3.1.EVPN报文解析
      • 3.1.1.EVPN报文解析-Type-3
      • 3.1.2.EVPN报文解析-Type-2
    • 3.2.RFC9135中的IRB型Type-2 MAC/IP route
      • 3.2.1.Symmetric IRB的工作过程
      • 3.2.2.Asymmetric IRB工作过程
      • 3.2.3.Type-2 MAC/IP route实际效果
    • 3.3.EVPN VXLAN Layer2实例
    • 3.4.EVPN VXLAN Layer3实例
  • 4.其他信息
    • 4.1.状态查看
    • 4.2.EVPN VXLAN特性
      • 4.2.1.虚机迁移
    • 4.3.Type-5 IP Prefix Route--RFC9136
  • 更新

1.EVPN VXLAN的概念

1.1.相关术语

Note:第一二章主要简介了概念内容。有相关基础可以直接阅读第后续章节。
EVPN:Ethernet VPN,以太网VPN技术。
VXLAN:Virtual eXtensible Local Area Network,虚拟扩展局域网。最初用于在3层 underlay 网络上解决2层 overlay 的虚拟化技术方案,目前也可实现3层 overlay。
Ethernet NVO Tunnel:Network Virtualization Overlay tunnels with an Ethernet payload,将 Ethernet 帧作为 Payload 封装于隧道中的网络虚拟化方案。常用的方案有 VXLAN 和 NVGRE(定义于RFC7637的 Network Virtualization Using Generic Routing Encapsulation)
IP NVO Tunnel:Network Virtualization Overlay tunnels with IP payload ,将 IP 包作为 Payload 封装于隧道中的网络虚拟化方案。常用的方案有 MPLS in GRE(定义于RFC4023的 Encapsulating MPLS in IP or Generic Routing Encapsulation)和 GPE(目前存于草案的 Generic Protocol Extension)

单活冗余:Single-Active Redundancy Mode。当一个设备或网络多归到至少2个 PE(Provide Edge) 组成的组,但只有一个PE可以为给定的VLAN向多归设备或网络转发流量。
多活冗余:All-Active Redundancy Mode。当一个设备或网络多归到多个 PE,并且每个 PE 都可转发来自该设备的流量。
EOR/TOR:End of Row和Top of Rack。

EOR和TOR通常指的是网络架构或网络角色。EOR架构指的是将核心设备放置于机柜列的首尾两端,将其与每列机柜的其他设备跳线互联;TOR架构通常是指将交换机放置于服务器机柜的顶端,每台机柜的交换机在跳线至核心设备上。
因此TOR交换机一般指的是接入交换机或Leaf交换机,EOR交换机一般指汇聚交换机或SPINE交换机。

VPLS:Virtual Private LAN Service,虚拟私有局域网。一种L2VPN技术,其他同类技术包括Ethernet-Tree,L2TP,VPWS等。
VTEP(VXLAN Tunnel Endpoints):VXLAN 网络的边缘设备,是 VXLAN 隧道的起点和终点。用于封装和解封装VXLAN Header信息。
NVE(Network Virtualization Edge):虚拟化网络的边缘设备。用于封装和解封装VXLAN Header信息。区别在于NVE一般指的是设备,VTEP指的是隧道。一台设备可以有多个VTEP。
VNI(VXLAN Network Identifier):VXLAN的网络标识符。类似于VLAN ID的用户标识,一个VNI代表了一个租户,属于不同VNI的虚机之间不能直接二层通信。
VXLAN网关:类似普通网关概念。VXLAN网关主要用于不同VNI之间的虚机,以及VXLAN网络和非VXLAN网络中的虚机相互通信。

VXLAN二层网关用于终端接入VXLAN网络,也可用于同一VXLAN网络的子网通信;VXLAN三层网关用于VXLAN网络中跨子网通信以及访问外部网络,并且可分为集中式网关分布式网关
集中式网关指的是所有设备集中到一台汇聚/核心/SPINE上进行VXLAN网络间的互访。分布式网关指的是采用类似任播的方式每个VXLAN接入点建立各自的三层网关进行转发。
VXLAN二层网关和VXLAN三层网关可以在物理上是同一设备。

AC(Attachment Circuit):接入电路,指连接 CE 与 PE 的链路,对应的接口可以是实际的物理接口,也可以是虚拟接口。
TSs(Tenant Systems):租户系统,通常指 VPN 实例内的终端等。
BD域(Bridge-Domain):是一个本地概念,用于区分不同的 VNI 实例和用户链路 AC 绑定。
在 EVPN VXLAN 场景下,需要在 VTEP 设备上配置 BD 与 VNI 的映射关系。进入 VXLAN 隧道的报文根据 BD 与 VNI 的映射关系确定 VXLAN 封装时添加的 VNI 标签。

BD域是HW的一个针对 VXLAN 实现的特定方案。其他厂家的实现并不采用该方式,感兴趣者可查阅相关资料。
例如,H3C使用VSI(Virtual Station Interface)的相关概念。

MAC-VRF:PE 上建立的以 MAC 为基础的虚拟转发表。
IP-VRF:PE 上建立的 IP 路由的虚拟路由和转发表。
ES(Ethernet Segment):CE 连接 PE 的 Ethernet 链路集合。
ESI(Ethernet Segment Identifier):10字节的 ES 非0标识。RFC7432中说明:取0时,表示单归站点;全ff为保留。

10字节的ESI格式:1字节的Type+9字节的ESI Value。
1字节Type:用于标识 ESI Value 的格式。目前定义了6种ESI。Type=0x00表示由管理员控制;Type=0x01表示由 IEEE 802.1AX LACP 生成;Type=0x02表示由生成树控制;Type=0x03表示 MAC-based ESI Value;Type=0x04表示 Router-ID ESI Value;Type=0x05表示 Autonomous System(AS)-based ESI Value。

Ethernet Tag:4字节的广播域标识。一个 EVPN 实例可以包含多个广播域。全0标识该EVI只有一个广播域。

通常使用时用于携带 CE 的 VLAN ID。参与给定 EVPN 实例的该 VLAN 的 PE 负责执行与本地连接的 CE 设备的 VLAN ID 转换。
应用场景上有:
VLAN-Based Service Interface:一个 EVPN 实例(MAC-VRF)对应一个广播域(VLAN)。在所有 EVPN 路由中 Ethernet Tag ID 必须为0。
VLAN Bundle Service Interface:一个 EVPN 实例对应多个广播域。在所有 EVPN 路由中 Ethernet Tag ID 必须为0。
VLAN-Aware Bundle Service Interface:一个 EVPN 实例对应多个广播域,但每个 VLAN 具有自己的转发表。在所有 EVPN 路由中 Ethernet Tag ID 为标准化后的值。
自动换行
,等。

1.2.EVPN

简单来说,数据中心的发展要求建立大二层网络。而传统 VPLS 无法很好利用多点到多点(MP2MP)标签交换路径(Lable Swithch Path,LSP)来优化多目标帧的传递,无法支持多活冗余接入。并且目前的网络发展趋势要求:链路冗余、BUM 流量优化、易于调配、新的服务接口,并且可以实现快速收敛和泛洪抑制。

EVPN(Ethernet Virtual Private Network) 是全业务承载的 VPN 解决方案。EVPN 利用 BGP 来传递二层或三层的网络层可达性信息,借用 VPN 中的 RT 概念来进行不同实例间的 MAC/IP 等表项学习和控制。从而实现转发面和控制面的分离。
传统的 L2VPN 的公网设备完全类似于二层交换机,设备的 MAC 学习主要通过 ARP 泛洪等手段进行,无控制面参与。

1.2.1.常用EVPN路由类型

EVPN 是一种 MP-BGP,在 RFC7432 中定义了一系列常用 BGP EVPN 路由类型,主要有如下几种 BGP EVPN路由:

Link Type作用场景
Type-1:
Ethernet Auto-Discovery Route
向其他的PE通告本端的PE对接入站点的MAC地址是否可达主要用在快速收敛、冗余模式。水平分割场景,解决多归属网络中的流量负载分担问题。
Type-2:
MAC/IP Advertisement Route
站点的MAC和IP等信息通告减少广播流和带宽资源的浪费
Type-3:
inclusive Multicast Route
发送多播地址可达信息来实现广播域内的成员互相发现,BUM表象建立/头端复制列表创建隧道的属性
Type-4:
Ethernet Segment Route
连接到相同CE和PE设备之间相互自动发现,ES成员列表生成DF选举
Type-5:
IP Prefix Route
《RFC9136》
EVPN网络接入外部网络IP前缀的形式通告引用的外部路由

其中 Type-1 Ethernet Auto-Discovery Route 又可分为 per ES 和 per EVI
Type-1 per Ethernet Segment:主要用于快速收敛、冗余模式和水平分割。
Type-1 per EVPN Instance:主要用于 Aliasing别名 和备份路径。
自动换行
并且可通过相应的 Length 等字段在 IPv4/IPv6 中同步实现功能。

Type-1 Ethernet Auto-Discovery Route
//ESI 和 Ethernet Tag ID 前文已进行描述,此处不在详细描述。
此处的 MPLS Label 为单播流量负载分担转发时使用的MPLS标签。

1@:注意 Type-1 路由此处 MPLS Label 取值314601,其2进制为0100 1100 11001110 1001 0001。因此此处 Wireshark 省略了3bits的实验值和 1bits 的 Bottom-of-Stack 栈底标识。
2@:当 Type-1 路由中 MPLS Label 有相应取值时(per EVI型Type-1),通常与扩展团体属性 Encapsulation 同步出现:由2018年发布的RFC8365所定义。取值为8表示 VXLAN Encapsulation,取值为10表示 EVPN MPLS。相应信息也可见《3.1.EVPN报文解析》中内容。
3@:当 Type-1 路由中 MPLS Label 无相应取值时(per ES型Type-1),通常与扩展团体属性 ESI Label 同步出现:这一扩展团体属性可与 Type-1 Ethernet Auto-discovery routes 一起通告,用于多归站点的水平分割。

Type-2 MAC/IP Advertisement Route:详细信息可见《3.1.EVPN报文解析》中内容。
//这里的 VNI 有时也可以 MPLS Label 标签指代。

Type-3 Inclusive Multicast Ethernet Tag Route:详细信息可见《3.1.EVPN报文解析》中内容。
//主要用于和其他扩展属性一同建立 VXLAN 隧道和创建头端复制列表。

Type-4 Ethernet Segment Route
//这里携带的 IP 地址主要用于 DF 选举。

通常与RFC8584中定义的扩展团体属性 DF Election Extended Community 同步出现://携带进行 DF 选举的相应信息,比如选举算法和能力的协商。
Raw Value的第1个字节携带 DF Alg 表示DF选举算法;第2-3个字节携带 Bitmap 表示 AC-DF Capability;第4-6个字节目前协议暂定为保留值,具体实现上可能与厂家相关。
自动换行目前在最新的草案《draft-ietf-bess-evpn-pref-df(Preference-based EVPN DF Election)》中定义了新的算法以允许手动配置DF选举值。上图展示了相应结果。

到目前为止 EVPN技术还有:
2022 年发布的《RFC9251-Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Proxies for Ethernet VPN (EVPN)》用于标准化组播场景的三种 EVPN 路由;
2024 年发布的《RFC9572-Updates to EVPN EVPN Broadcast, Unknown Unicast, or Multicast (BUM) Procedures》用于标准化处理 BUM 流量的三种 EVPN 路由。

关于 EVPN 路由类型的介绍,可参考IANA发布的Ethernet VPN (EVPN)。感兴趣者可查阅相关资料。

点击此处回到目录

1.2.2.EVPN基本原理

Type-1的双归
Type-1 Ethernet Auto-Discovery Route和Type-4 Ethernet Segment Route通常用于双归场景下结合使用。
1@:Type-1 Ethernet Auto-Discovery Route 在双归场景下,通过 10 字节的 ESI 将 PE 上的链路组成 ES 成员组。来自 ES 的广播数据将携带 ESI 值,具有相同 ESI 的流量不在发向同一 ES 的其他成员。这一行为称水平分割。
2@:Type-4 Ethernet Segment Route 在双归场景下,携带 PE 本地的 ESI 和 PE 的 EVPN 源地址创建 ES 成员组。并根据 ES 成员组进行 DF 选举。来自远端的 BUM 流由 DF 角色负责转发,non-DF 将其丢弃。

Type-4的DF选举
在双归场景下,携带本端 PE 依据 ESI 和 EVPN 源地址创建 ES 成员组。并根据 ES 成员组进行 DF 选举。来自远端的 BUM 流由 DF 角色负责转发,non-DF 将其丢弃。

对于 VLAN-based 的服务,以 <ES、VLAN> 粒度进行 DF 选举的默认过程,或者对VLAN-(aware) bundle 的服务,以 <ES, VLAN bundle> 粒度进行 DF 选举的默认过程,称为“service carving”。

通过 service carving,可以为每个 Ethernet segment 选择多个 DF 以便对发往给定网段的多目标流量执行负载平衡。

在《RFC7432-8.5.Designated Forwarder Election》中定义了目前通用的DF选举原则
@基于端口转发:由 Type-4 Ethernet Segment Route 中的 IP 地址最小者承担;
@基于VLAN转发:每个 vlan 的 DF 角色为 ES 成员组中的特定序号N,N=VLAN ID mod CE多归数(也即连接同一个CE的PE数量)。
//ES成员组示例。这里的最终结果为:偶数 vlan id 以 PE1 作为DF,奇数 vlan id 以 PE2 作为DF。
//df-election type vlan 配置基于VLAN的DF选举功能。
自动换行
这一行为主要通过《RFC8584》中定义的扩展团体属性 DF Election Extended Community 实现(DF Alg = 0)://携带进行 DF 选举的相应信息,比如选举算法和能力的协商。Raw Value的第1个字节携带 DF Alg 表示DF选举算法;第2-3个字节携带 Bitmap 表示 AC-DF Capability;第4-6个字节目前协议暂定为保留值,具体实现上可能与厂家相关。
自动换行
目前在最新的草案《draft-ietf-bess-evpn-pref-df(Preference-based EVPN DF Election)》中定义了新的算法以允许手动配置DF选举值。上图展示了相应结果。

在完成 DF 选举后,PE 将发布 Type-1 路由。

快速收敛
网络收敛时间是受故障的 PE 必须发送撤销 Type-2 MAC/IP Route 路由速度影响。 对于大规模网络环境,不做优化的网络方案通常会有缓慢收敛速度。 为了缓解这种情况,EVPN 定义了一种机制,以便在 Ethernet Segment 连接出现故障时(PE—CE间链路中断等情况),高效快速地向远程 PE 节点发出需要更新其转发表的信号。

具体实现上通过让 PE 为每个本地连接的 Ethernet Segment 通告一个或多个 Type-1 Ethernet Auto-Discovery Route per ES 路由集合来完成。此时,接收该路由的 PE 更新与相关 Ethernet Segment 关联的所有 MAC-VRF 中的信息,而无需针对每一条业务路由进行 withdraw。

对于给定的 Ethernet Segment ,PE 可能需要通告多个 Type-1 Ethernet Auto-Discovery Route per ES。因为 Ethernet Segment 可能位于多个 EVI 中,并且所有这些 EVI 的 RT 可能不适合单个路由。 为 ES 通告 Type-1 Ethernet Auto-Discovery Route per ES 允许每个路由包含完整 RT 集的子集。 Type-1 Ethernet Auto-Discovery Route per ES 路由通过 RD 相互区分。//这里可能的一种情况是在 CE 和 PE 之间建立了多个 EVI,但是复用了同一个 ESI。

自动换行
BUM的水平分割
RFC7432 中提出了 EVPN 的水平分割机制。这种情况通常发生在一个 CE 多归到多个 PE 上时。如果 CE 将 BUM(Broadcast、Unknowncast和Multicast)发送到 non-DF 型 PE 上时,该 PE 会将 BUM 流量转发给其他 PE。CE 多归到的 DF 型 PE 必须丢弃数据包,而不转发回 CE。

具体实现上,来自 non-DF PE 的每个 BUM 数据包都封装有 MPLS标签/ESI标签。该标签由 Type-1 Ethernet Auto-Discovery Route per ES 携带。同时由于 BGP 的更新机制,本地 ES 成员列表不会被同一个 ES 的其他 PE 更新。

而远端 PE 接收到 Type-1 Ethernet Auto-Discovery Route per ES 路由后只更新本地 MAC-VRF 表项,并可形成负载分担(具体转发时根据 HASH 算法选择其中一个下一跳。)。同只有 DF 设备转发 BUM 流量,从而实现远端的水平分割。

自动换行
Aliasing别名 和备份路径
EVPN 的 Aliasing别名 机制主要使用在 CE 多归到进行了 Link Aggregation Group (LAG) 多活 PE 时的场景下。在某些场景下,多活PE很可能只有单台设备学习到了终端的 MAC 信息。远端 PE 也将只学习到具有单个下一跳的 EVPN 路由,而失去了流量的负载分担效果。

EVPN 的 Aliasing别名 机制使远端 PE 可以访问给定 ES 上的 EVPN 实例,即使它没有从该 EVI/ES 获知 MAC 地址。

具体实现上,本端 PE 发送同一个 ES 的 per EVI(ESI Label Extended Community中"Single-Active" bit 置0)和 per ES 两种类型的 Type-1 Ethernet Auto-Discovery Route,远端 PE 接收后将两种路由进行组合进行标识。并且此种 per EVI 路由必须和 per ES 路由结合使用生效,并且单独接收不得用于转发流量。

EVPN 的备份路径机制主要使用在CE 多归到进行了单活 PE 场景下。此时本端 PE 通告一个 ESI Label Extended Community中"Single-Active" bit 置1 的 per EVI 路由。远端 PE 接收非保留 ESI 的 Type-2 MAC/IP route,并视为可通过与此Type-1 路由组合的任何 PE 访问该MAC,并且应为该路由安装备份路径。

1.3.VXLAN

VXLAN 是大二层网络中广泛使用的 NVO(Network Virtualization Over Layer 3)网络虚拟化技术,主要在服务器的虚拟化中实现虚机动态迁移(虚拟机在迁移前后的IP和MAC地址不能改变)和租户隔离

虚拟机动态迁移的显著好处在于虚拟机在其新位置保留关键的网络状态防止现有的传输连接(例如TCP)中断并需要重新启动。
租户隔离可能不仅仅是基于地址空间的隔离,也可以是同一网络空间上的隔离。或者说相同的网络地址可以同时在不同的虚拟网络中使用。

VXLAN 的一个主要需求是数据中心数据量的扩增导致虚机上 MAC 地址表数量的狂增,并且传统 VLAN4094 的数量对于数据隔离能力愈发不足。并且对于使用数据链路层的虚拟化环境,一个重要的要求是在整个数据中心甚至数据中心之间具有呈现 2 层网络规模,以有效分配计算、网络和存储资源。同时需要避免 STP 协议等无环路拓扑协议对链路的禁用。

今天的虚拟化环境对连接到服务器的TOR交换机的MAC地址表提出了额外的要求。TOR交换机现在必须学习各个虚拟机的MAC地址,而每个服务器链路可能有上百个MAC地址。

VXLAN 是3层网络上的2层 Overlay 方案。每个 Overlay 层被称为 VXLAN Segment。只有同一 VXLAN Segment 内的虚拟机才能相互通信。每个 VXLAN 段都通过一个24位的 Segment ID 进行标识,称为“VXLAN网络标识符(VNI)”。通过 VNI 的流量隔离,VXLAN Segment 之间有重叠的 MAC 地址,但永远不会有流量“交叉”。

VXLAN的功能实现:在 IP 网络上当源和目的之间有通信需求时,便在 IP 网络之上创建一条虚拟的隧道,透明转发用户数据。任意两点之间都能通过 VXLAN 隧道来通信,忽略底层网络的结构和细节。VXLAN 也被称为一种第2层网络 Overlay 在第3层网络之上的隧道技术:Ethernet NVO tunnel。

基本转发逻辑
1@:由映射函数将来自 VM 的报文目的地地址(L2或L3)映射到出口 NVE 设备的对应目的地址。
2@:将接收到的 VM 报文封装在报头内。
3@:将报文实际转发到其目的地。数据包完全基于其外部地址的底层(即IP网络)进行转发,并在对端进行相应解封装

@第一跳的 NVE 设备可以是传统的交换机或路由器,或者是位于在管理程序内的虚拟交换机。
@Overlap 的一个关键方面是将VM使用的“虚拟”MAC和/或IP地址与物理网络基础设施和数据中心使用的基础设施IP地址解耦。如果虚拟机改变了位置,Overlap 边缘设备只需更新它们的映射表,以反映虚拟机在数据中心内的新位置。因此虚拟机现在可以位于Overlap所在的所有数据中心。
@Overlap 不影响其与传统网络的沟通。连接到虚拟网络的设备和连接到非虚拟化网络的设备之间的通信在体系结构上是通过专门的网关设备来处理的。

数据结构上:主要采用 MAC in UDP 的方式进行流量转发。
Flags:2字节。
Group Policy:2字节。
VNI:3字节。24bits,相当于vlan标签。
Reserved:1字节。
也即将整个Ethernet封装于UDP报文中。数据结构上,先嵌套一层 VXLAN Header 信息,随后标注于 UDP 的 DPort=4789 上。
一般对UDP的SPort不做要求,或由原始以太帧字段哈希得到。RFC7348建议在动态/专用端口范围49152-65535取值。
从报文格式上可以看出,尽管 VXLAN 是一个2层技术,但其在进行原始 Ethernet 封装时,是不携带 VLAN Tag 的。

2014年发布RFC7348的《6.1. Inner VLAN Tag Handling》建议除非另有配置,否则VTEP不应在隧道数据包(Payload)上包含内部VLAN标签。

点击此处回到目录

2.静态VXLAN场景

这里以基于接口的静态 VXLAN 隧道为例进行介绍,也即数据面静态学习方式。

2.1.VXLAN流量转发过程

以图示进行 VXLAN 传输流量报文的过程进行解析。CE1-3 用于模拟公网,建立VXLAN 隧道。CE2 和 CE3 分别为 VTEP/NVE 节点,将来自 BD域 的报文进行 VXLAN 封装。
考虑到模拟器支持能力,可以将CE1更换为普通设备或者直接删除。因为这里仅用于承载公网流量。


PC1–>PC2: 与普通的Layer2报文处理过程类似。
1@PC1判断为同网段路由通信,发送 ARP 请求。(默认ARP表为空)
2@SW1对来自 PC1 的报文进行相应的 VLAN Tag 标记,并将其从相应端口转发。
3@:与BD域绑定的CX设备接口接口收到报文后(这一行为与 L3VPN 的端口加入 VPN 实例非常类似),对其进行相应的 VXLAN 封装。并将其根据定义的头端复制列表发送给对 VXLAN 隧道对端。
4@:对端CX设备接口接口收到报文后,对其进行相应的VXLAN解封装。并将其从BD域绑定的接口转发出去。
3@和4@所描述的BD域都与VNI相关,只在具有相同VNI的BD域内进行转发。VNI类似于报文的VLAN标签,也类似于L3VPN的私网标签。
5@:对端PC2接口收到报文后,对其进行相应的ARP回包。

这样就完成了1次ARP请求。随后在以所述的过程完成通信。

VXLAN 的封装是 MAC in UDP也即会将报文的整个作为 VXLAN 的 Payload。并且使用 UDP 目的端口 4789进行标识。UDP 的源目的IP为建立 VXLAN 隧道的地址

此时可将整个网络拓扑理解为一个大二层网络交换机,VNI就是该大交换机的 VLAN 广播域标识。与 VNI 对应的 BD 用于将接口加入到广播域中。

报文示例
从报文上看,VXLAN 隧道直接将 Ethernet 帧封装发送给所有具有相同 VNI 的实例隧道。此时的行为与传统 L2VPN 类似,并不区分报文的 BUM 类型。

2.2.VXLAN Layer2配置介绍

这里只提供了CE1设备配置,有能力者可自行进行其它设备的配置。
有需要者可私信联系提供模拟器源文件及配置。

sysname CE2
#
bridge-domain 10
 vxlan vni 10
#
interface GE1/0/1.10 mode l2
 encapsulation dot1q vid 10
 bridge-domain 10
#
interface Nve1
 source 2.2.2.2
 vni 10 head-end peer-list 3.3.3.3
#

这里可以看出静态VXLAN隧道建立包含三个部分:(这里仅仅指的是以接口模式进行区分)
1@:创建 BD域 与 VNI实例 绑定。BD域和 VNI 是一一对应的。
2@:用户口与 BD域 绑定。并指定进入 VXLAN 的模式为 dot1q vlan10。

此外,一个BD域可以在端口上指定多个进入 VXLAN 的dot1q,也即此时多个vlan可以对应1个BD域。 encapsulation dot1q vid 10 to 20。

并且值得注意的是,在本 VXLAN 场景下 VLAN 的存在没有意义。此时进入 VXLAN 隧道时都会将其进行vlan剥离。
2014年发布RFC7348的《6.1. Inner VLAN Tag Handling》建议除非另有配置,否则 VTEP 不应在隧道数据包(Payload)上包含内部VLAN标签。

default:允许所有进入VXLAN隧道。不对报文进行处理。
dot1q:只允许特定vlan进入VXLAN隧道。并将该VLAN标签进行剥离。即使初始时未剥离,也会在解封装VXLAN时进行剥离或替换。
qinq:只允许QINQ型vlan进入VXLAN隧道。
untag:只允许不携带vlan进入VXLAN隧道。
在VTEP入节点配置了default模式后,该物理口的其他子接口不允许进行其他模式。

3@:建立公网 VXLAN 隧道。这里建立的静态 VXLAN,仅要求隧道地址可正常路由即可。并且一个 VNE 接口可以指定多个 VNI,一个 VNI 可以指定多个 VTEP 邻居节点。
VXLAN隧道建立情况//隧道类型为VXLAN_NVO。

Mac学习情况

BD域也可基于VLAN进行绑定
//在BD10下绑定相应的vlan10。实际较少使用。

2.3.VXLAN Layer3网关

VXLAN 通过类似 vlanif 的方式实现三层路由
1@:添加同一子网的 vbdif 接口地址,由 vbdif 接口进行路由。
2@:该 vbdif 是与 BD域 相对应的。

interface Vbdif10
  ip address 192.168.1.100 255.255.255.0
#

//相应的端口需要放行/建立相应的BD/VNI实例。这里的10是BD域编号,具有一定的对应关系。

该vbdif可以作为普通路由节点进行对外通信。而虚机和该vbdif之间其实还是进行的2层通信。
//对于某些设备,例如S6720EI和S6720S-EI,作为VXLAN三层网关设备时,需要配置 Eth-Trunk 接口作为VXLAN环回接口对VXLAN报文解封装后进行三层转发。
//service type vxlan-tunnel,配置Eth-trunk接口为VXLAN环回接口。

实际上 VTEP/NVE 设备可以同时承载二层和三层VXLAN网关。那么VXLAN的二层和三层在网络架构上有什么区别?
从流量行为上来说,VXLAN 的2层网关是对其进行 VXLAN 的“2层”封装,是用户流量进行 VXLAN 处理的第一个节点。VXLAN 的3层网关是对 VXLAN跨网段/跨VNI路由 的VXLAN节点。对于 VXLAN 的2层网关和3层网关分别部署的场景,2层设备和3层设备通常是跨越设备建立 VXLAN 隧道的。
VXLAN的2层网关:维护 MAC 和 VXLAN 隧道传递的路由信息。
VXLAN的3层网关:维护 MAC/ARP,用户路由和 VXLAN 隧道传递的路由信息。

VXLAN的3层网关可以分为集中式网关分布式网关
集中式网关通常指的是整个“大2层”网络的某个或某些 VNI 网关集中于一台设备(或M-LAG双活网关)。这种方案明显存在2个缺点:
1@:类似单臂路由的流量迂回行为会造成带宽挤占。
2@:全网流标集中于一台设备,在大型网络上存在表项瓶颈,需要进行资源扩容。(通过扩容设备,将VNI网关切割分离。)

点击此处回到目录

3.EVPN VXLAN

EVPN(Ethernet Virtual Private Network) 是一种用于二层网络互联的 VPN 技术。通过在 BGP 协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息)即 EVPN NLRI,用于二层网络的不同站点之间的 MAC 地址学习和发布。
VXLAN 引入了 EVPN 作为控制平面,通过在 VTEP 之间交换 BGP EVPN 路由实现 VTEP 的自动发现、主机信息通告等特性,从而避免了不必要的数据流量泛洪。

3.1.EVPN报文解析

EVPN VXLAN 的配置内容比较简单,这里首先详细介绍下用于 VXLAN 隧道建立的 Type-3 Inclusive Multicast Route 和传递 MAC/IP 表项的 Type-2 MAC/IP Advertisement Route。

3.1.1.EVPN报文解析-Type-3

Type-3 Inclusive Multicast Route
BGP 除了携带 Origin 和 AS_PATH 这两个 Well-known mandatory 公认必遵等属性外其他还携带了: EXTENDED__COMMUNITIESPMSI_TUNNEL_ATTRIBUTEMP_REACH_NLRI属性:
BGP的 attribute 是基于TLV模式的,这为BGP提供了极大的扩展性。
EXTENDED_COMMUNITIES:主要携带了扩展团体属性,该团体属性用于进行 EVPN 路由控制,并同时指明了隧道类型为 VXLAN。

1@:NVE/VTEP 节点上的 BD 域实际上类似于 VPN 实例的存在。这里的 RT 携带的 BD 域中的 export RT。因为这一报文本质上还是属于路由,只有具有匹配的 BD 域中的 RT 才能自动建立起 VXLAN 隧道。
2@:Encapsulation Extended Community 由2018年发布的RFC8365所定义,取值为 8 表示 VXLAN Encapsulation。
取10时,在EVPN中通常在 EVPN MPLS 场景下使用该隧道。感兴趣者可查阅相关资料。

自动换行
PMSI_TUNNEL_ATTRIBUTE:(P-Multicast Service Interface Tunnel,RFC6514中定义该 Path Attribute)这里主要携带建立 VXLAN 隧道的属性信息。
Flags:1字节。用于指定传递属性的类型。这里为可选过渡。
Type Code:1字节。标识BGP属性类型,这里表示属性为网络层可达信息。
Length:除去Flags、Type和Length(一般1bit或2bits)后的整个属性的长度。
Flags:1字节。标识当前隧道是否需要叶子节点信息。VXLAN场景无意义。
Tunnel Type:1字节。目前仅支持6表示头端复制BUM转发。
VNI:3字节。此时的VNI用于进行2层标识。与 MPLS Label 长度一致,作用也类似。有时将 VNI 也称作 Label。
Tunnel ID:4字节。描述了建立VXLAN隧道的路由节点,也即 VTEP 隧道节点。

MP_REACH_NLRI:网络可达信息。主要携带 EVPN 路由。之前介绍的5种路由,在此携带。
Flags:1字节。用于指定传递属性的类型。这里为可选非过渡。
Type Code:1字节。标识BGP属性类型,这里表示属性为网络层可达信息。
Length:除去Flags、Type和Length(一般1bits或2bits)后的整个属性的长度。
Address family identifier (AFI):地址族类型。RFC7432 中定义取值 AFI=25 和 SAFI=70 表明为 L2VPN 的 EVPN。
Network Layer Reachability Information (NLRI):网络层可达信息。

Route Type:1字节。EVPN路由类型。这里表示的是Type-3 Inclusive Multicast Route 集成组播路由

Length:除去Route Type和Length后的整个NLRI的长度。
route distinguisher:8字节。路由区分符,类似与VPNv4路由。
Ethernet Tag ID:4字节。用于承载VXLAN的EVPN场景下无意义,取0。
IP Add Length 和 IPv4 add:5字节。描述了建立VXLAN隧道的路由节点,也即vtep隧道节点。

@:VXLAN隧道的建立实际上由 PMSI_TUNNEL_ATTRIBUTE 和 MP_REACH_NLRI 共同完成。
@:从EVPN NLRI上看,Type-3 Inclusive Multicast Route 主要由RD和VTEP/NVE地址所包含。因此使用EVPN动态建立VXLAN隧道时,指定的租户必须既包含 Route distinguisher又包含 Route Target。(此处携带的是BD广播域中的 RD 和 RT。)

3.1.2.EVPN报文解析-Type-2

Type-2 MAC/IP Advertisement Route
//这里标识的是ARP路由。MAC路由不携带相应的IP地址,主要用于2层转发。

Route distinguisher:8字节。路由区分符,与VPNv4路由的 Route distinguisher 类似。
Ethernet Segment ID:10字节。主要和 Type-1 Ethernet Auto-Discovery Route 结合使用。在双活场景下具有意义。
MAC add Length和MAC add:1+6字节。描述了虚机MAC地址。
Ip add Length和Ipv4 add:1+4字节。描述了虚机IP地址。
VNI:3字节。描述了对端所具有的2层BD域信息。

如果为跨VNI通信额外携带一个3层VNI。位于2层VNI后新增3字节。只携带2层VNI为MAC路由,携带2层和3层为IRB(Integrated Route and Bridge)路由

Type-2 MAC/IP Advertisement Route 主要用于减小网络中的广播流量。
1@:VTEP/NVE节点会学习BD域内的MAC和ARP信息,并将其在VXLAN隧道同步。
2@:这一功能还可主要虚机迁移。虚机完成迁移后,VTEP/NVE节点探测到虚机位置改变。其原本节点进行一次ARP探测。无回应则完成虚机迁移。

IBR路由示意:
//具有双层 VNI 的 IRB 路由。

这里有时还会在扩展属性里,携带8字节的 EVPN Router’s MAC Sub TLV 用于携带设备 VTEP/NVE 的MAC,防止冲突。自动换行
RFC9135中定义 EVPN Router’s MAC Sub TLV:EVPN Router’s MAC/Cont’d:6字节,此扩展团体属性承载对称 IRB 场景的 PE MAC 地址,并使用 EVPN Type-2 路由发送。
自动换行//查看设备MAC。对于交换机而言,通常情况下全部接口都使用背板MAC。

ARP和IBR路由的区别
ARP路由=MAC+IP+2层VNI
IRB路由=MAC+IP+2层VNI+3层VNI
3层VNI主要用于标识跨子网互访时封装的 VNI 值。
关于 IBR 路由的技术细节,可参考2021年发布的RFC9135-Integrated Routing and Bridging in EVPN

点击此处回到目录

3.2.RFC9135中的IRB型Type-2 MAC/IP route

IRB(Integrated Routing and Bridging)方案由2021年发布的RFC9135-Integrated Routing and Bridging in EVPN提出用于在租户系统和终端设备之间建立动态高效的子网间连接,同时保持 EVPN 的多归功能。

IRB路由的产生背景
@:集中式 L3 网关会产生发卡型流量,流量转发效率低下。
@:解决方案必须为每个租户提供其子网间流量的 IP 路由,以及其子网内流量和不可路由流量的以太网桥接。
@:解决方案必须允许在 PE 上基于特定 VLAN 禁用子网间流量的 IP 路由

当具有 IRB 功能的 PE 接收本地租户流量时,它不仅可以在本地桥接租户子网内流量,还可以在本地租户逐个数据包路由子网间流量,从而满足子网内和子网间转发的要求。

自动换行
symmetric IRB和asymmetric IRB
symmetric IRB:对称 IRB 的查找操作在入口和出口 PE 上都是对称的——即入口和出口 PE 都在 MAC 和 IP 地址上执行查找。入口 PE 执行 MAC 查找,然后执行 IP 查找,出口 PE 执行 IP 查找,然后执行 MAC 查找。

在 VXLAN 封装的 Ethernet NVO tunnel 中(MPLS 或 GPE 封装的 IP-only tunnel 也类似),Payload 的 源目的MAC 为 VXLAN 隧道的 PE MAC地址。因此,在对称 IRB 中,入口 PE 无需在其 ARP 表中维护目标租户的 ARP 条目。

asymmetric IRB:非对称 IRB 中的查找操作是非对称的。入口 PE 执行三次查找,而出口 PE 执行单个查找——即入口 PE 执行 MAC 查找,然后执行 IP 查找,然后再次执行 MAC 查找。出口 PE 仅执行单个 MAC 查找。

此时,Payload 的 目的MAC 为目标租户的 MAC地址。因此,非在对称 IRB 中,入口 PE 需要维护远端租户的 ARP 条目以及 MAC-VRF 中的相应 MAC。

@:并且需要注意的是对称 IRB 的 IP TTL 在入口和出口 PE 上都减一,而非对称 IRB 中仅在入口 PE 上都减一。
@:《RFC9135的4.1.章节》中定义 IRB 接口通常作为租户的默认网关存在,其可以使用 Anycast 型地址。并且 IRB 接口的 MAC 地址可以相同也可以不同,不同时需要携带RFC7432中定义的 Default Gateway extended community 进行说明。推荐使用相同 MAC 的 Anycast IRB 接口,此时不需要通告 Default Gateway extended community 并且虚机迁移后无需刷新网关 MAC 等表项。并且建议Anycast IPv4 IRB case: 00-00-5E-00-01-{VRID};Anycast IPv6 IRB case: 00-00-5E-00-02-{VRID}。
当然 IRB 接口还可以配置非 Anycast IP 地址,以便用于对称和非对称 IRB 的 OAM。
@出口 PE 将根据 Type-2 MAC/IP Advertisement route 中是否存在 Label2/VNI2 字段和 IP-VRF 路由目标来指示进行对称 IRB 还是非对称 IRB 转发。当存在 Label2/VNI2 字段和 IP-VRF 路由目标时进行对称 IRB 转发,反之进行非对称 IRB 转发。
对称 IRB 和非对称 IRB 转发更多的取决于操作者的使用,是 IP-VRF/MAC-VRF 表项规模和控制面简化之间的平衡。

《RFC9135的9.章节》给出了关于 IRB 模型的相关应用说明
@:IRB 模型往往与 Type-5 IP Prefix Route 路由结合在跨子网通讯场景下使用。对于同一子网通讯可使用 IRB 模型的 L2 方案,即,流量仅通过其 MAC-VRF。
@:IP NVO tunnel 仅适用于 Symmetric IRB 模型,并且此时无需携带 EVPN Router’s MAC Extended Community 扩展团体属性。
@:对于如下情况的 Type-2 EVPN MAC/IP Advertisement route,应当认为其为错误表达:仅包含 MPLS Label1/VNI1 和 IP-VRF Route Target;仅有 MAC-VRF Route Target 但包含 MPLS Label1/VNI1 和 MPLS Label2/VNI2;MAC address length 字段为0。

3.2.1.Symmetric IRB的工作过程

控制面
通告侧PE
通告侧 PE 学习到租户的 MAC 和 IP 信息后,将主机的 MAC 加入本地 MAC-VRF/BT ,将主机的 IP 加入到租户的 IP-VRF 中,同时缓存相应的 ARP/ND-Cache。
同时构造 Type-2 EVPN MAC/IP Advertisement route 向 EVPN 邻居发送:其中 MPLS Label1/VNI1 为 BD 的相应信息,MPLS Label2/VNI2 为租户 IP-VRF 的相应信息。如果隧道类型为以太封装,例如VXLAN,还应携带 EVPN Router’s MAC Extended Community 扩展团体属性。
《RFC9135的5.1.章节》还要求其必须包含租户的两种 Route Target 信息: MAC-VRF 的 RT 和 IP-VRF 的 RT 信息。

需要注意的是标准的 MPLS Label 和VNI 都为 3 字节,但是 MPLS Label 有3bits的QOS/实验字段和1bit的栈底标识。因此对于非 VXLAN 场景下,其有效字段为前20bits。

接收侧PE
接收侧 PE 接收到 Type-2 EVPN MAC/IP Advertisement route:
根据其中的 MAC-VRF Route Target 和 非0的Ethernet Tag 确定将相应的主机 MAC 放入对应的 MAC-VRF 和 bridge table 中。
根据其中的 IP-VRF Route Target,放入对应的 IP-VRF 中。

@:当接收侧 PE 发现非0的 MPLS Label2/VNI2 时,意味着该路由可被用于 symmetric IRB 过程。当与此IP进行通信时,需要使用 MPLS Label2/VNI2 作为数据包中 VXLAN 隧道的标签。
@:当接收侧 PE 还支持 asymmetric IRB,但接收到有两种 Route Target 的 Type-2 EVPN MAC/IP Advertisement route 却不包含 MPLS Label2/VNI2。此时接收侧 PE 仍可将主机信息安装于租户对应的 ARP 表中。
@:当接收侧 PE 不支持 IRB,同时接收到有两种 Route Target 的 Type-2 EVPN MAC/IP Advertisement route。此时接收侧 PE 仅将租户信息安装于 MAC-VRF 中。
@:当接收侧 PE 仅支持 asymmetric IRB,同时接收到有两种 Route Target 的 Type-2 EVPN MAC/IP Advertisement route 也包含 MPLS Label2/VNI2。此时接收侧 PE 忽略 MPLS Label2/VNI2,将主机信息仅安装于 MAC-VRF 和相应的 ARP 表项中。

转发面
入口PE
入口 PE 接收到原始以太帧时,根据 AC ID(例如VLAN ID)来识别所关联的 MAC-VRF 信息,并对 DMAC 地址执行查找。如果 DMAC 地址与入口 PE 的 IRB 接口 MAC 地址相对应,则该数据包必须是子网间路由的。因此,入口 PE 在关联的 IP-VRF 表中执行 IP 查找,并同时确定出接口、封装类型、MPLS Label/VNI 和 TTL-1。

@:如果隧道为 Ethernet NVO tunnel,其内部 Ethernet MAC 头部的 SMAC 为入口 PE 的 MAC 而 DMAC 为出口 PE 的 MAC。DMAC 可通过 EVPN Router’s MAC Extended Community 学习而来。
@:如果隧道为 Ethernet NVO tunnel,VNI 标签的分配模式有两种:downstream modeglobal modeDownstream mode 表示传输数据时的 VNI2 标签由下游 PE/目标 PE传递而来。Global mode 表示传输数据时的 VNI2 标签为全局协商而来,也即下游 PE/目标 PE 传递路由时,其中的 VNI2 标签应当与本地配置保持一致。否则,不应当认为该路由为可用路由。当然,具体模式的使用应当取决于管理者的相应选择。
@:数据包的 Underlay 封装应当分别为入口 PE 和出口 PE 的对应信息。

出口PE
出口 PE 接受到封装以太帧时,根据 MPLS label/VNI 来识别所关联的 IP-VRF 信息,并对 DIP 地址执行查找。如果 MPLS label/VNI 关联到了 MAC-VRF 信息,则进行相应的 Asymmetric IRB工作过程。

出口 PE 根据 IP-VRF,查找标识与出口子网的 MAC-VRF/Bridge Table 关联的 IRB 接口的本地邻接关系,同时还会将该数据包的 TTL- 1。出口 PE 从其 ARP/ND-Cache 中获取目标租户 MAC。随后将数据包 SMAC 封装为本地 IRB 接口,DMAC封装为目标租户 MAC,并将数据包发送到其目标子网 MAC-VRF/BT。

3.2.2.Asymmetric IRB工作过程

控制面
通告侧PE
通告侧 PE 学习到租户的 MAC 和 IP 信息后,将主机的 MAC 加入本地 MAC-VRF/BT ,将主机的 IP 加入到租户的 IP-VRF 中,同时缓存相应的 ARP/ND-Cache。
同时构造 Type-2 EVPN MAC/IP Advertisement route 向 EVPN 邻居发送:其中必须不包含 MPLS Label2/VNI2 信息。如果隧道类型为以太封装,例如VXLAN,还应携带 EVPN Router’s MAC Extended Community 扩展团体属性。
《RFC9135的5.1.章节》还要求其必须包含租户的 MAC-VRF 对应的 Route Target 信息,IP-VRF 的 RT 是否携带则取决于实际情况。

接收侧PE
接收侧 PE 接收到 Type-2 EVPN MAC/IP Advertisement route:
根据其中的 MAC-VRF Route Target 和 非0的Ethernet Tag 确定将相应的主机 MAC 放入对应的 MAC-VRF 和 Bridge Table 中。

@:如果接收侧 PE 仅使用 MAC-VRF Route Target,同时也使用 MAC-VRF Route Target 来标识相应的 IP-VRF。在这种情况下,接收 PE 可以使用 MAC-VRF 通过与子网 MAC-VRF/BT 关联的 IRB 接口来识别相应的 IP-VRF。 在这种情况下,接收 PE 可以使用 MAC-VRF Route Target 来识别相应的 IP-VRF。
@:如果接收侧 PE 使用 MAC-VRF Route Target 来标识 ARP/ND-Cache,则在对应的 ARP/ND-Cache 添加相应的条目。
@:如果接收侧 PE 发现 IP-VRF Route Target,则可以使用它来导入路由到 IP-VRF。如果接收侧 PE 未发现 IP-VRF Route Target,则 MAC-VRF 可用于派生相应的 IP-VRF 以进行导入。在这两种情况下,都会安装 IP-VRF 路由,并在收到的路由中包含租户 MAC 绑定。
@:如果通告侧 PE 发送了 symmetric IRB,但接收侧 PE 仅支持 asymmetric IRB,则接收 PE 必须忽略 MPLS Label2/VNI2 字段,并将 MAC 地址安装在该租户的 ARP/ND-Cache 对应 MAC-VRF 和 (IP、MAC) 关联中(IRB 接口由 MAC-VRF 标识)。

转发面
入口PE
入口 PE 接收到原始以太帧时,根据 AC ID(例如VLAN ID)来识别所关联的 MAC-VRF 信息,并对 DMAC 地址执行查找。如果 DMAC 地址与入口 PE 的 IRB 接口 MAC 地址相对应,则该数据包必须是子网间路由的。因此,入口 PE 在关联的 IP-VRF 表中执行 IP 查找,并同时确定出接口、封装类型、MPLS Label/VNI 和 TTL-1。

入口 PE 从其 ARP/ND-Cache 中获取目标租户的 MAC 地址。它将数据包封装为该目标 MAC 地址和与该 IRB 接口对应的源 MAC 地址,并将数据包发送到其目标子网 MAC-VRF/BT。

MAC-VRF/BT 中的目标 MAC 地址查找会产生出口 PE 的 BGP 下一跳以及 MPLS Label2/VNI2。入口 PE 使用 Ethernet NVO tunnel 封装数据包,并将数据包发送到出口 PE。此时,数据包转发依据入口 PE 的 MAC-VRF/BT 和出口 PE 的 MAC-VRF/BT。

出口PE
出口 PE 接受到封装以太帧时,根据 MPLS label/VNI 来识别所关联的 MAC-VRF/BT 信息,并对 DMAC 地址执行查找。

出口 PE 根据 IP-VRF,查找标识与出口子网的 MAC-VRF/Bridge Table 关联的 IRB 接口的本地邻接关系,同时还会将该数据包的 TTL- 1。出口 PE 从其 ARP/ND-Cache 中获取目标租户 MAC。随后将数据包 SMAC 封装为本地 IRB 接口,DMAC封装为目标租户 MAC,并将数据包发送到其目标子网 MAC-VRF/BT。

RFC7432 为 EVPN Label 提供了不同级别的粒度。除了标识 Bridge Domain Table外,它还可用于标识该接口上的出接口或目标 MAC 地址。此时,可以在出口 PE 上基于 EVPN 标签查找直接转发到出接口。

3.2.3.Type-2 MAC/IP route实际效果

那么在实际应用过程中,如何控制 Type-2 MAC/IP Advertisement Route 的发送?在此对其进行简单说明。
设备实际工作情况,还需请依照相关指导进行。

1@设备仅作VXLAN的二层网关

  • 设备如果建立 EVPN 对等体关系,则此时 BGP EVPN 仅用于动态形成 VXLAN 隧道。也即设备仅对外交互 Type-3 inclusive Multicast Route信息。EVPN 无控制面参与,所有表项已流量方式进行刷新。
  • 设备如果建立 EVPN 对等体关系同时使能通告 arp 型 Type-2 MAC/IP Advertisement Route,则如果使能基于 BD 的主机收集可以通告 arp 型路由。否则设备不可以通告arp 型 Type-2 MAC/IP Advertisement Route。也即 EVPN 的增强功能可以正常发挥效用。
    自动换行

2@设备仅作VXLAN的二层/三层网关

  • 设备默认通告三层网关的 Type-2 MAC/IP Advertisement Route。
  • 设备使能通告 arp 型 Type-2 MAC/IP Advertisement Route,则通告三层网关的相应信息。
  • 设备使能通告 irb 型 Type-2 MAC/IP Advertisement Route,除通告三层网关的相应信息外还可实现VTEP间传递主机路由。

@:对于VXLAN的分布式场景下,通常需要通告 irb 型 Type-2 MAC/IP Advertisement Route 以便完成跨子网的互访(需要3层VNI)。而在集中式场景下,二层网关开启代答等增强功能后,通常需要通告 arp 型 Type-2 MAC/IP Advertisement Route。
@:当然,未作EVPN的增强功能。此时网络还可通过流量方式更新表项。

点击此处回到目录

3.3.EVPN VXLAN Layer2实例

这里只提供了CE1设备配置,有能力者可自行进行其它设备的配置。
有需要者可私信联系提供模拟器源文件及配置。

//这里以CE1和CE2分别作为各自BD域的2层网关进。同时CE1和CE2作为公网,提供可达的 VTEP/NVE 地址用于自动建立 VXLAN 隧道。

evpn-overlay enable
#
bridge-domain 10
 vxlan vni 10
 evpn
  route-distinguisher 1:1
  vpn-target 100:200 export-extcommunity
  vpn-target 100:200 import-extcommunity
#
interface Nve1
 source 1.1.1.1
 vni 10 head-end peer-list protocol bgp
#
bgp 100
 router-id 1.1.1.1
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack1
 ipv4-family unicast
  network 10.1.1.0 255.255.255.0
  undo peer 2.2.2.2 enable
#
 l2vpn-family evpn
  policy vpn-target
  peer 2.2.2.2 enable
#

从以上配置可以发现
1@:BD域的创建相当于L3VPN的VPN实例,用于与2层租户关联。
2@:创建 EVPN VXLAN 时,只需将创建模式改为BGP即可。
3@:在 l2vpn-family evpn 模式下,需要酌情关闭policy vpn-target。例如对于IBGP的RR场景,RR设备上可能并不包含该VPN实例。

可以发现该场景下与静态VXLAN Layer2并无多大差别,只是借用EVPN的 Type-3 Inclusive Multicast Route 完成了VXLAN隧道的建立(或者说头端复制列表的建立)。
而流量行为上,与静态VXLAN完全相同。

3.4.EVPN VXLAN Layer3实例

这里只提供了CE1设备配置,有能力者可自行进行其它设备的配置。
有需要者可私信联系提供模拟器源文件及配置。<__>模拟器比较难实现,有的时候只能看到BGP的Update报文,有的甚至看不到不发Update。

以下配置仅供参考,例如 CE系列交换机与NE路由器的配置存在差别。

sysname CE1
#
evpn-overlay enable
#
ip vpn-instance A
 ipv4-family
  route-distinguisher 11:11
  vpn-target 11:22 export-extcommunity evpn
  vpn-target 11:22 import-extcommunity evpn
 vxlan vni 50
#
//华为的三层VNI
bridge-domain 10
 vxlan vni 10
 evpn
  route-distinguisher 1:1
  vpn-target 100:200 export-extcommunity
  vpn-target 100:200 import-extcommunity
#
//华为的二层VNI
interface Vbdif10
 ip binding vpn-instance A
 ip address 10.1.1.100 255.255.255.0
 arp distribute-gateway enable
 mac-address 3875-1111-0010
 arp collect host enable
#
//使能分布式网关后,NVE将只处理收到的用户侧主机发送的ARP报文生成主机路由。
//此时,通过 EVPN 路由学习其他租户的 MAC 路由和 IP Prefix 路由。
interface GE1/0/0
 undo portswitch
 undo shutdown
 ip address 10.1.2.1 255.255.255.0
#
interface GE1/0/1
 undo shutdown
#
interface GE1/0/1.10 mode l2
 encapsulation dot1q vid 10
 bridge-domain 10
#
interface LoopBack1
 ip address 1.1.1.1 255.255.255.255
#
interface Nve1
 source 1.1.1.1
 vni 10 head-end peer-list protocol bgp
#
bgp 100
 router-id 1.1.1.1
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack1
 #
 ipv4-family unicast
  undo peer 2.2.2.2 enable
 #
 l2vpn-family evpn
  policy vpn-target
  peer 2.2.2.2 enable
  peer 2.2.2.2 advertise irb
#

以上配置需要注意的有
1@:三层网关类似于L3VPN租户路由的概念,需要建立VPN实例。并且这里额外指定了RD和RT。从模拟器上看到的RT仍然为BD域下的RT值。实际上应当都可以接收。
2@:类似于L3VPN租户路由,在接口下绑定VPN就自动生成Type-2 路由。(VPN自动为绑定租户生成VPNv4路由。)
点击此处也可以看到发送了主机10.1.1.1和10.1.1.11的IRB路由。
3@:对于BGP需要指定为对端发送Type-2 路由的类型。这里指定的是IRB路由,也可指定ARP路由。

控制面行为介绍
流量行为上与静态VXLAN完全相同,因此省略。这里重点说明各种RT和RD的作用。

1@:建立BGP的EVPN邻居关系。这里与Layer2相关行为类似。
2@:路由的传递。由于BD与和VPN实例下都存在RD和RD值,这里需要重点进行说明。
2.1@:路由的传出—>从报文上看。无论是哪种Type-2 路由,其RT值都取BD域下定义的Export RT值,RD都取BD域下定义的RD值。
2.2@:路由的接收—>此时报文中不在体现,需要有本地配置进行识别。

  当EVPN对等体接收到该EVPN路由后:
  @首先检查BD域下的Import RT,进行匹配。
     成功则接收可完成ARP广播抑制和虚机迁移等功能。
  @随后检查VPN实例的EVPN Import RT,进行匹配。
     成功则可放入VPN实例中,进行跨子网互访。

  需要注意的是这是两个功能,互不影响。

完成上述路由传递后,控制面完成收敛。

点击此处回到目录

4.其他信息

4.1.状态查看

BD域详细信息

VXLAN信息

BGP状态

4.2.EVPN VXLAN特性

VXLAN建立大二层网络后,在公网上会不可避免的出现大量二层的广播报文。为了防止挤占公网带宽的情况,有如下情况的优化。
ARP 二层代答
1@:其核心思想是隔离ARP广播域,让设备对接收到的ARP请求报文尽量进行本地优先代答。设备在收到ARP报文时,会先查看自己能否获取到该ARP请求报文的目的用户的信息,如果能够获取就直接进行ARP代答,否则按照原先的转发流程转发该报文。
//arp l2-proxy enable使能ARP二层代答功能。使能ARP二层代答功能的同时,ARP Snooping功能自动使能,ARP Snooping通过侦听ARP报文建立记录源用户信息的ARP Snooping表项。适用于 EVPN 的 L2 Gateway 场景下。

在之后的ARP请求时,VXLAN基于ARP本地表项代替终端进行应答(代答)。
注意是代答不是代理。代理指的是用本地自己设备的MAC进行应答。而代答还是使用正确的MAC只是代替终端进行了代理应答

ARP广播抑制/广播变单播
1@:如果没有开启代答功能,也可以通过广播抑制来限制流量。通过检索目标节点所在VTEP/NVE节点,只将ARP转变为单播包发送给具体的VTEP/NVE节点进行相应操作。(这里也缓存了目标的ARP信息)。对端收到相应的报文后,解封装单播发送。目标节点单播回应。适用于 EVPN 的 L3 Gateway 场景下。
如果无缓存,还是需要在全网泛洪一次来进行ARP/MAC学习。
//arp broadcast-suppress使能BD域内的ARP广播抑制功能。该功能使能后,设备在收到ARP广播报文时,支持将其转成单播报文进行发送。ARP的广播抑制功能与ARP 二层代答互斥。

如果开启了基于BD域进行主机信息搜集功能,还会将该信息在VXLAN中泛洪传递。
//arp collect host enable,使能基于VBDIF接口粒度(另一种基于 BD 域粒度)进行主机信息搜集的功能。将本设备的主机信息通过BGP EVPN路由向远端扩散处理。

4.2.1.虚机迁移

VXLAN 的一个重要特点和优势在于对虚机迁移的支持能力。VXLAN 直接封装的是Ethernet帧,因此数据的MAC和IP都不发生改变。虚机迁移前后可以不发生状态的改变。
在此重点进行下2方面的说明:
1@控制面:虚机的迁移完成后。VTEP/NVE 节点会探测到网络中的信息变化,并在 Type-2 MAC/IP route 中进行通告。
此时对于原有网络来说,实际上是发生了MAC漂移。为了与实际的飘逸网络故障场景进行区分,在报文上有如下警示。
Extended_Communities中会额外携带一个 MAC Mobility SubTLV,该TLV位于Encapsulation TLV之后和EVPN Router`s MAC之前。(此处没有体现)

RFC7432中定义 MAC Mobility SubTLV:Flags:1字节,MAC静态标识。取0x01表示MAC为静态不可漂移,并且 Sequence Number 取0。
Sequence Number:4字节,越大越优,类似于 OSPF LSA 的 Seq Num 可用于判断哪一条 Type-2 MAC/IP route 是最新的。
自动换行
通常对于稳定网络可以开启 MAC 学习抑制,并将 BD 内主机信息设置为静态MAC。
//mac-address learning disable关闭BD的MAC地址学习功能。//mac-address static bridge-domain命令用来基于BD(Bridge Domain)配置静态MAC地址表项,指导数据转发。对于静态 VXLAN 隧道的类似功能实现,可查阅相关资料。
自动换行
RFC7432中定义:
@:如果收到来自不同远端PE通告的具有不同 ESI 但相同 Sequence Number 的 Type-2 MAC/IP Advertisement route 后,选择具有最低 IP 地址的 PE 通告的路由作为最佳路由。
并且如果自己作为该路由的发起方竞选失败后,应当撤回该路由。
@:考虑到虚机MAC冲突的情况,PE可以启动一个 M 秒计时器(默认值为 M = 180),如果它在计时器到期之前检测到 N 个 MAC 移动(默认值为 N = 5),则断定发生了重复 MAC 情况。此时不应当发送该虚机的 Type-2 MAC/IP Advertisement route。
//detect loop-times配置MAC迁移抑制功能的环路检测参数。此命令只对MAC路由生效,对MAC/IP路由不生效。Huawei 的环路检测参数默认值与 RFC7432 保持一致,并且 Huawei 的 MAC 迁移抑制功能的抑制恢复时间为540秒(retry-cycle 540)。
//mac-duplication disable 用于关闭缺省的EVPN实例的MAC迁移抑制功能。
//此外还可通过black-hole-dup-mac将振荡的MAC路由设置为黑洞路由,以丢弃对应的流量。

2@转发面:转发面上的行为与所定义的BUM转发规则有关。有一点需要说明的是,虚机迁移完成后会触发一次免费ARP。而其原有网络VTEP节点会进行一次ARP探测,探测到原有位置网络发生改变后确认MAC漂移完成。

IRB模型的《RFC9135的7.章节》也描述了关于三种虚机迁移的相关场景工作过程(虚机主动发送ARP请求;虚机仅发送数据流;虚机体现为静默主机。),感兴趣者可查阅相关资料。

4.3.Type-5 IP Prefix Route–RFC9136

2021年发布的RFC9136-IP Prefix Advertisement in EVPN中引入了一种新的路由类型 Type-5 IP Prefix Route
这种路由主要用于跨租户系统和终端设备进行动态高效的子网连接。这些设备和终端设备可以是物理的或虚拟的,并且不一定参与动态路由协议。

引入外部路由时配置:

bgp 100
 router-id 1.1.1.1
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack1
 #
 ipv4-family unicast
  undo peer 2.2.2.2 enable
 #
 ipv4-family vpn-instance A
  import-route direct
  advertise l2vpn evpn
 #
 l2vpn-family evpn
  policy vpn-target
  peer 2.2.2.2 enable
  peer 2.2.2.2 advertise irb
#

注意需要在 vpn-instance 私网实例下有该外部路由条目才可引入相应的EVPN。
报文上此时的RT和RD则对应了VPN实例下的EVPN RT和EVPN RD值。

点击此处回到目录

更新

本文标签: 报文实例原理VXLAN