您好,欢迎访问这里是深圳市硕远科技有限公司!
戴尔服务器价格_IBM联想配置_浪潮代理-深圳市硕远科技有限公司
联系我们
戴尔服务器价格_IBM联想配置_浪潮代理-深圳市硕远科技有限公司
邮箱:2324898850@qq.com
电话:400-080-6079
地址:深圳市龙华区河背工业区108创业园A301
当前位置:主页 > 新闻动态 > 行业新闻 >

行业新闻

基于BGP MPLS的EVPN

发布时间:2022-04-23 02:00:02浏览次数:

摘要

本文档描述了基于 BGP MPLS 的以太网 VPN (EVPN) 的过程,此处描述的过程满足 RFC 7209-Requirements for Ethernet VPN (EVPN)中规定的要求。

本备忘录的状态

这是一个 Internet 标准跟踪文档。

本文档是 Internet 工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已接受公众审查,并已被互联网工程指导组 (IESG) 批准出版。有关 Internet 标准的更多信息,请参见 RFC 5741-RFC Streams, Headers, and Boilerplates 的第 2 节。

有关本文档的当前状态、任何勘误以及如何提供反馈的信息,请访问 http://www.rfc-editor.org/info/rfc7432。

1、简介

[RFC4664- Framework for Layer 2 Virtual Private Networks (L2VPNs)]、[RFC4761- Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling] 和 [RFC4762- Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling] 中定义的虚拟专用 LAN 服务 (Virtual Private LAN Service,VPLS) 是一种经过验证且广泛部署的技术。但是,现有解决方案在多宿主和冗余、多播优化、配置简单性、基于流的负载均衡和多路径方面存在许多限制;这些限制是数据中心 (Data Center,DC) 部署的重要考虑因素。 [RFC7209- Requirements for Ethernet VPN (EVPN)] 描述了解决这些限制的新解决方案的动机,它还概述了新解决方案必须满足的一组要求。

本文档描述了称为基于 BGP MPLS 的以太网 VPN (Ethernet VPN,EVPN) 的解决方案的过程,以满足 [RFC7209] 中规定的要求。有关详细要求和动机,请参阅 [RFC7209]。如本文档所述,EVPN 需要对现有 IP/MPLS 协议进行扩展;除了这些扩展之外,EVPN 还使用了现有 MPLS 技术的多个组成模块。

2、需求说明

本文档中的关键词“必须”、“不得”、“需要”、“应该”、“不应”、“应该”、“不应该”、“推荐”、“可以”和“可选”是解释为 [RFC2119-Key words for use in RFCs to Indicate Requirement Levels] 中的描述。

3、术语

广播域:Broadcast Domain,在桥接网络中,广播域对应于虚拟局域网 (Virtual LAN,VLAN),其中一个 VLAN 通常由单个 VLAN ID (VID) 表示,但可以由多个 VID 表示,其中根据 [802.1Q]使用共享 VLAN 学习 (Shared VLAN Learning ,SVL)。

桥接表:Bridge Table,MAC-VRF上广播域的一个实例化。

CE:Customer Edge device,客户边缘设备,例如主机、路由器或交换机。

EVI:Ethernet VPN instance,EVPN中连接服务提供商边缘设备 (Provider Edge,PE)的EVPN实例。

MAC-VRF:PE上介质访问控制 (MAC) 地址的虚拟路由和转发表(Virtual Routing and Forwarding table)。

以太网段 (Ethernet Segment,ES):当客户站点(设备或网络)通过一组以太网链路连接到一个或多个 PE 时,该组链路称为“以太网段”。

以太网段标识符 (Ethernet Segment Identifier,ESI):标识以太网段的唯一非零标识符称为“以太网段标识符”。

以太网标签:Ethernet Tag,标识特定广播域的以太网标签,例如VLAN。一个 EVPN 实例由一个或多个广播域组成。

LACP:Link Aggregation Control Protocol,链路聚合控制协议。

MP2MP:Multipoint to Multipoint,多点到多点。

MP2P:Multipoint to Point,多点到点。

P2MP:Point to Multipoint,点到多点。

P2P:Point to Point,点到点。

PE:Provider Edge device,提供商边缘设备。

单活冗余模式:当连接到以太网段的所有 PE 中只有一个 PE 被允许转发到/来自指定 VLAN 的以太网段的流量时,那么这个以太网段被定义为工作在单活冗余模式。

全活冗余模式:当连接到以太网段的所有 PE 都可以将已知单播流量转发到/来自指定 VLAN 的以太网段时,那么这个以太网段被定义为工作在全活冗余模式。

4、基于 BGP MPLS 的 EVPN 概述

本节对EVPN做了一个概述。EVPN 实例包括连接到构成 MPLS 基础设施边缘的提供商边缘设备 (PE) 的客户边缘设备 (CE)。 CE可以是主机、路由器或交换机,PE 提供 CE 之间的虚拟二层桥接连接。服务提供商的网络中可能有多个 EVPN 实例。

PE 可以通过 MPLS 标签交换路径 (Label Switched Path,LSP) 基础设施连接,该基础设施提供 MPLS 技术的优势,例如快速重新路由、弹性等。PE也可以通过 IP 基础设施连接,在这种情况下,PE之间可以使用IP/GRE(Generic Routing Encapsulation,通用路由封装)隧道或其他IP隧道。本文档中的详细过程仅针对作为隧道技术的 MPLS LSP 指定。然而,这些过程被设计为可扩展到 IP 隧道作为包交换网络 (Packet Switched Network,PSN) 隧道技术。

在EVPN中,PE 之间的 MAC 学习不是发生在数据平面(就像 VPLS [RFC4761] [RFC4762] 中的传统桥接那样),而是发生在控制平面。控制平面学习可以更好地控制 MAC 学习过程,例如限制谁学习什么以及应用策略的能力。此外,选择用于通告 MAC 可达性信息的控制平面是多协议 (multi-protocol,MP) BGP(类似于 IP VPN [RFC4364-BGP/MPLS IP Virtual Private Networks (VPNs)]),这就为“虚拟化”或相互影响的主机组(主机、服务器、虚拟机)之间的相互隔离提供了可能性以及灵活性。在 EVPN 中,PE 使用多协议 BGP (MP-BGP) 向控制平面中的其他 PE 通告从连接到它们的 CE 学到的 MAC 地址以及 MPLS 标签。控制平面学习可以实现多宿主 CE 到多个 PE 的流量负载均衡,这是对同一对 PE 之间的多个 MPLS 核心通过LSP进行负载均衡的补充。换句话说,它允许 CE 连接到多个活动的连接点,它还可以在发生某些网络故障时缩短收敛时间。

但是,PE 和 CE 之间的学习是通过最适合 CE 的方法完成的:数据平面学习、IEEE 802.1x、链路层发现协议 (Link Layer Discovery Protocol,LLDP)、IEEE 802.1aq、地址解析协议 (Address Resolution Protocol,ARP)、管理平面、或其他协议。

关于 PE 上的第 2 层转发表是否填充了控制平面已知的所有 MAC 目标地址,或者 PE 是否实施基于缓存的方案,这是由本地决定的。例如,MAC 转发表可能仅填充通过特定 PE 的活动流的目的MAC。

EVPN 的策略属性与 IP-VPN 的策略属性非常相似。 EVPN 实例需要每个 MAC-VRF 中唯一的路由标识符 (Route Distinguisher,RD) 和一个或多个全局唯一的路由目标 (Route Targets,RT)。 CE 连接到 PE 上的 MAC-VRF,在以太网接口上,可以配置一个或多个以太网标签,例如 VLAN ID。一些部署方案保证 VLAN ID 跨 EVPN 实例的唯一性:指定 EVPN 实例的所有连接点都使用相同的 VLAN ID,并且没有其他 EVPN 实例使用此 VLAN ID。本文档将这种情况称为“唯一 VLAN EVPN”,并描述了对其进行优化的简化过程。

5、以太网段

如 [RFC7209] 所示,每个以太网段在 EVPN 中都需要一个唯一标识符。本节定义如何分配此类标识符以及如何对其进行编码以用于 EVPN 信令。本文档的后面部分描述了使用标识符的协议机制。

当客户站点通过一组以太网链路连接到一个或多个 PE 时,这组以太网链路就构成了一个“以太网段”。对于多宿主站点,每个以太网段 (Ethernet segment,ES) 由称为以太网段标识符 (Ethernet Segment Identifier,ESI) 的唯一非零标识符标识。 ESI 被编码为行格式的 10 个八位字节整数,首先发送最重要的8位,保留后面的2个 ESI 值:

- ESI 0 表示单宿主站点。

- ESI {0xFF}(重复 10 次)称为 MAX-ESI 并保留。

一般来说,一个以太网段应该有一个非保留的 ESI,它是唯一的网络范围(即,联通所有 PE 上的所有 EVPN 实例)。如果构成以太网段的CE由网络管理员管理,则应保证ESI的唯一性;但是,如果 CE 不受管理,则管理员必须为该以太网段配置网络范围内唯一的ESI,这是启用以太网段的自动发现和指定转发器 (Designated Forwarder,DF) 选举所必需的。

在具有可管理和非可管理的 CE 的网络中,ESI 具有以下格式:

位:

T(ESI 类型)是一个 1 个八位字节字段(最重要的八位字节),它指定了其余 9 个八位字节(ESI 值)的格式。可以使用以下六种 ESI 类型:

- 类型 0 (T=0x00) - 此类型表示任意 9 八位字节 ESI 值,由管理员管理和配置。

- 类型 1 (T=0x01) - 当在 PE 和 CE 之间使用 IEEE 802.1AX LACP 时,此 ESI 类型表示通过连接以下参数从 LACP 确定的自动生成的 ESI 值:

+ CE LACP 系统 MAC 地址(6 个八位字节)。 CE LACP 系统 MAC 地址必须编码在 ESI 值字段的前 6 个八位字节中。

+ CE LACP 端口密钥(2 个八位字节)。 CE LACP 端口密钥必须编码在系统 MAC 地址后面的 2 个八位字节中。

+ 剩余的八位字节将设置为 0x00。

对于 CE 而言,它会将其连接的多个 PE 视为同一台交换机。这允许 CE 聚合连接到不同 PE 的一个链路组中。

只有在产生满足上述唯一性要求的 ESI 时,才能使用此机制。

- 类型 2 (T=0x02) - 这种类型用于通过 CE 和 PE 之间的桥接 LAN 间接连接主机的情况。 ESI 值是自动生成的,并根据二层桥接协议确定,如下所述:如果在桥接 LAN 中使用多生成树协议 (Multiple Spanning Tree Protocol,MSTP),则通过侦听桥接 PDU (Bridge PDUs,BPDU) 得出此以太网段上的ESI值。为此,PE 不需要运行 MSTP。但是,PE 必须通过侦听 BPDU 来了解内部生成树 (IST) 根的根桥 MAC 地址和桥优先级。 ESI 值的组成如下:

+ 根网桥 MAC 地址(6 个八位字节)。根桥 MAC 地址必须编码在 ESI 值字段的前6个八位字节中。

+ 根网桥优先级(2 个八位字节)。 CE 根桥优先级必须编码在根桥 MAC 地址后的 2 个八位字节中。

+ 剩余的八位字节将设置为 0x00。

只有在产生满足上述唯一性要求的 ESI 时,才能使用此机制。

- 类型 3 (T=0x03) - 此类型表示可以基于MAC自动生成或是由管理员配置的 ESI 值。 ESI 值的组成如下:

+ 系统 MAC 地址(6 个八位字节)。 PE MAC 地址必须编码在 ESI 值字段的前6 个八位字节中。

+ 本地鉴别器值(3 个八位字节)。本地鉴别器值必须编码在 ESI 值的后3 个八位字节中。

只有在产生满足上述唯一性要求的 ESI 时,才能使用此机制。

- 类型 4 (T=0x04) - 此类型表示可以自动生成或由管理员配置的路由器ID的一个ESI 值。 ESI 值的构造如下:

+ 路由器 ID(4 个八位字节)。系统路由器 ID 必须编码在 ESI 值字段的前 4 个八位字节中。

+ 本地鉴别器值(4 个八位字节)。本地鉴别器值必须编码在 IP 地址后的 4 个八位字节中。

+ ESI 值的低位八位字节将设置为 0x00。

只有在产生满足上述唯一性要求的 ESI 时,才能使用此机制。

- 类型 5 (T=0x05) - 此类型表示可以自动生成或由管理员配置的基于自治系统 (Autonomous System,AS) 的 ESI 值。 ESI 值的构造如下:

+ AS 编号(4 个八位字节)。这是系统拥有的 AS 编号,必须编码在 ESI 值字段的前4个八位字节中。如果使用2个八位字节的AS编号,则高位额外的2个八位字节将为 0x0000。

+ 本地鉴别器值(4 个八位字节)。本地鉴别器值必须编码在 AS 编号后的 4 个八位字节中。

+ ESI 值的最后2个八位字节将设置为 0x00。

只有在产生满足上述唯一性要求的 ESI 时,才能使用此机制。

6、以太网标签 ID

以太网标签 ID 是一个 32 位字段,包含 12 位或 24 位标识符,其用于标识 EVPN 实例中的特定广播域(例如,VLAN),12 位的标识符称为 VLAN ID (VID)。一个EVPN实例由一个或多个广播域(一个或多个VLAN)组成。 EVPN 服务提供商将 VLAN 分配给指定的 EVPN 实例,一个指定的 VLAN 本身可以由多个 VID 表示。在这种情况下,参与该指定 EVPN 实例中VLAN的 PE 负责执行与本地连接的 CE 设备之间的 VLAN ID 转换。

如果 VLAN 由该 EVPN 实例中经过所有 PE 设备的某个VLAN的 VID 表示,则不需要在 PE 处进行 VID 转换。此外,一些部署场景保证了所有 EVPN 实例中 VID 的唯一性;指定EVPN实例的所有连接点都使用相同的 VID,并且没有其他 EVPN 实例使用该 VID。这就允许每个 EVPN 实例的 RT(s) 自动从相应的 VID 生成,如第 7.10.1 节所述。

以下小节讨论在各种 EVPN BGP 路由(在第 8 节中定义)中,广播域(例如,VLAN)、以太网标签 ID(例如,VID)和 MAC-VRF 之间的关系以及以太网标签 ID 的设置,用于 [RFC7209] 中描述的不同类型的服务接口。

保留以下以太网标签 ID 值:

- 以太网标签 ID {0xFFFFFFFF} 称为 MAX-ET。

6.1、基于VLAN的服务接口

有了这个业务接口,一个EVPN实例就只包含一个广播域(例如一个VLAN)。因此,该接口上的 VID 与 MAC-VRF 之间存在一对一的映射关系。由于 MAC-VRF 对应于单个 VLAN,因此它由对应于该 VLAN 的单个网桥表组成。如果 VLAN 由多个 VID 表示(例如,每个 PE 的每个以太网段有一个不同的 VID),那么每个 PE 需要为以它目的地的以太网段的报文执行 VID 转换。在这种情况下,通过 MPLS/IP 网络传输的以太网报文应该保持带有原始 VID 的标记,并且必须在数据路径中支持 VID 转换,而且必须在所在PE上执行。所有 EVPN 路由中的以太网标签 ID 必须设置为 0。

6.2、VLAN 捆绑服务接口

通过该业务接口,一个EVPN实例对应多个广播域(如多个VLAN);然而,每个 MAC-VRF 只维护一个网桥表,这意味着多个 VLAN 共享同一个网桥表。这意味着MAC地址在该 EVI 的所有 VLAN 中必须是唯一的,以便该服务正常工作。换句话说,VLAN 和 MAC-VRF 之间存在多对一映射,而且MAC-VRF 由单个网桥表组成。此外,每个VLAN必须由单独的VID表示。例如,此服务接口类型不允许进行 VID 转换。 MPLS 封装的帧必须保持带有原始 VID 的标记,不允许进行标签转换,所有 EVPN 路由中的以太网标签 ID 必须设置为 0。

6.2.1、基于端口的服务接口

此服务接口是 VLAN 捆绑服务接口的特例,其中端口上的所有 VLAN 都属于同一服务并映射到同一捆绑。处理过程与第 6.2 节中描述的程序相同。

6.3、VLAN 感知捆绑服务接口

使用此服务接口,EVPN 实例由多个广播域(例如,多个 VLAN)组成,每个 VLAN 都有自己的网桥表——即,多个网桥表(每个 VLAN 一个)由与EVPN 实例。

广播、未知单播或多播 (Broadcast, unknown unicast, or multicast,BUM) 流量仅发送到指定广播域中的 CE;然而,EVI 中的广播域可以各自拥有自己的 P-Tunnel,也可以共享 P-Tunnel——例如,EVI 中的所有广播域都可以共享一个 P-Tunnel。

在单个 VLAN 由单个 VID 表示并且因此不需要 VID 转换的情况下,MPLS 封装的数据包必须携带该 VID,所有 EVPN 路由中的以太网标签 ID 必须设置为该 VID。通告 PE 可以在 MAC/IP 通告路由中通告 MPLS Label1,该路由仅代表 EVI 或同时代表以太网标签 ID 和 EVI。该决定只是通告PE(也是处置PE)的本地事务,不会影响任何其他PE。

在单个 VLAN 由不同 CE 上的不同 VID 表示并因此需要 VID 转换的情况下,EVPN BGP 路由中必须携带规范化的以太网标签 ID (VID)。此外,通告PE在MAC/IP通告路由中通告MPLS Label1,同时代表以太网Tag ID和EVI,以便在接收到MPLS封装的报文时,从MPLS EVPN标签中识别对应的桥表,并且以太网标签ID的转换操作仅在配置 PE 上进行,也就是说,通过 MPLS/IP 网络传输的以太网帧必须保持带有原始 VID 的标记,并且 VID 转换在配置 PE 上执行。所有 EVPN 路由中的以太网标签 ID 必须设置为 EVPN 提供商分配的标准化以太网标签 ID。

6.3.1、基于端口的 VLAN 感知服务接口

此服务接口是 VLAN 感知捆绑服务接口的特例,其中端口上的所有 VLAN 都是同一服务的一部分,并映射到单个捆绑但没有任何 VID 转换。这些程序是第 6.3 节中描述的程序的一个子集。

7、BGP EVPN 路由

本文档定义了一个新的 BGP 网络层可达性信息 (Network Layer Reachability Information,NLRI),称为 EVPN NLRI。

EVPN NLRI 的格式如下:

Route Type 字段定义了 EVPN NLRI 其余部分的编码(Route Type specific EVPN NLRI)。

长度字段指示 EVPN NLRI 的路由类型特定字段的八位字节长度。

本文档定义了以下路由类型:

+ 1 - 以太网自动发现 (Auto-Discovery,A-D) 路由

+ 2 - MAC/IP 通告路由

+ 3 - 包含多播以太网标签路由

+ 4 - 以太网段路由

这些路由类型的详细编码和过程将在后续部分中描述。

EVPN NLRI 在 BGP [RFC4271] 中使用 BGP 多协议扩展 [RFC4760] 携带,地址族标识符 (Address Family Identifier,AFI) 为 25 (L2VPN),随后地址族标识符 (Subsequent Address Family Identifier,SAFI) 为 70 (EVPN)。 MP_REACH_NLRI/MP_UNREACH_NLRI 属性中的 NLRI 字段包含 EVPN NLRI(按上述规定编码)。

为了让两个 BGP 发言者能够交换标记的 EVPN NLRI,他们必须使用 BGP 功能宣告来确保他们都能够正确处理此类 NLRI。这是按照 [RFC4760] 中的规定完成的,通过使用 AFI 为 25 (L2VPN) 和 SAFI 为 70 (EVPN) 的能力代码 1(多协议 BGP)。

7.1、以太网自动发现路由

以太网 A-D 路由类型特定的 EVPN NLRI 包括以下内容:

出于 BGP 路由密钥处理的目的,只有以太网段标识符和以太网标签 ID 被认为是 NLRI 中前缀的一部分。 MPLS 标签字段将被视为路由属性,而不是路由的一部分。

该路由的步骤和用法,请参见第 8.2 节(“快速收敛”)和第 8.4 节(“别名和备份路径”)。

7.2、MAC/IP 宣告路由

MAC/IP 宣告路由类型指定EVPN NLRI需包括以下内容:

出于 BGP 路由密钥处理的目的,只有以太网标签 ID、MAC 地址长度、MAC 地址、IP 地址长度和 IP 地址字段被视为 NLRI 中前缀的一部分。以太网段标识符、MPLS Label1 和 MPLS Label2 字段将被视为路由属性,而不是作为“路由”的一部分。 IP 和 MAC 地址长度均以位为单位。

有关此路由的过程和用法,请参阅第 9 节(“确定单播 MAC 地址的可达性”)和第 14 节(“单播数据包的负载均衡”)。

7.3、包含组播以太网标签路由

包含多播以太网标签路由类型指定EVPN NLRI包含以下内容:

有关此路由的程序和用法,请参阅第 11 节(“多目的流量的处理”)、第 12 节(“未知单播数据包的处理”)和第 16 节(“多播和广播”)。 IP 地址长度以位为单位,出于 BGP 路由密钥处理的目的,只有以太网标签 ID、IP 地址长度和始发路由器的 IP 地址字段被视为 NLRI 中前缀的一部分。

7.4、以太网段路由

以太网段路由类型指定 EVPN NLRI包括以下内容:

有关此路由的流程和用法,请参阅第 8.5 节(“指定转发者选举”)。 IP 地址长度以位为单位。出于 BGP 路由密钥处理的目的,只有以太网段 ID、IP 地址长度和始发路由器的 IP 地址字段被视为 NLRI 中前缀的一部分。

7.5、ESI 标签扩展团体

该扩展团体是一个新的可传递扩展团体,其类型字段值为 0x06,子类型为 0x01。 它可以与以太网自动发现路由一起通告,并为多宿主站点启用水平分割过程,如第 8.3 节(“水平分割”)中所述。 ESI Label 字段代表通告 PE 的 ES,它被连接到同一多宿主以太网段的其他 PE 用于水平分割过滤。

每个 ESI 标签扩展团体都被编码为一个 8 字节的值,如下所示:

Flags 八位字节的低位被定义为“Single-Active”位,值为 0 表示多宿主站点在全活冗余模式下运行,值为 1 表示多宿主站点在单活冗余模式下运行。

7.6、ES导入路由目标

这是一个新的可传递路由目标扩展团体,由以太网段路由承载。使用时,它使连接到同一多宿主站点的所有PE 都可以引入Ethernet Segment 路由。对于ESI类型 1、2 和 3,通过对 ES-Import Route Target 中对应于MAC地址的 9 个八位字节 ESI 值的前6个八位字节部分进行编码,自动生成该值。这个扩展团体的格式如下:

本文档扩展了路由目标扩展团体的定义,以允许高位八位字节(类型字段)的值为 0x06(除了 [RFC4360] 中指定的值)。低位八位字节(子类型字段)的值为0x02表示该扩展团体属于“路由目标”类型。新的类型字段值 0x06 表示该 RT 的结构是一个 6 字节的值(例如,MAC 地址)。实现 RT 约束 [RFC4684] 的 BGP 发言者也必须将 RT 约束程序应用于 ES-Import RT。

有关此属性的过程和用法,请参阅第 8.1 节(“多宿主以太网段自动发现”)。

7.7、MAC 移动扩展团体

该扩展团体是一个新的可传递扩展团体,其类型字段值为 0x06,子类型为 0x00。它可以与 MAC/IP 通告路由一起通告。第 15 节(“MAC 移动性”)中描述了使用此扩展团体的过程。

MAC 移动性扩展团体被编码为 8 个八位字节的值,如下所示:

Flags 八位字节的低位定义为“Sticky/static”标志,可以设置为 1。值为 1 表示 MAC 地址是静态的,不能移动。序列号用于确保当同一 MAC 地址发生多次更新时,PE 保留正确的 MAC/IP 通告路由。

7.8、默认网关扩展团体

默认网关团体是一个不透明类型的扩展团体(参见 [RFC4360] 的第 3.3 节)。它是一个可传递的团体,这意味着第一个八位字节是 0x03。第二个八位字节(子类型)的值是 IANA 分配的 0x0d(默认网关)。该团体的 Value 字段是保留的(发送方设置为 0,接收方忽略)。有关此属性的过程和用法,请参阅第 10.1 节(“默认网关”)。

7.9、每个 MAC-VRF 的路由标识符分配

Route Distinguisher (RD) 必须设置为通告 NLRI 的 MAC-VRF 的 RD,必须为 PE 上的指定MAC-VRF 分配 RD。该 RD 在 PE 上的所有 MAC-VRF 中必须是唯一的,推荐使用 Type 1 RD [RFC4364]。值字段包括 PE 的 IP 地址(通常为环回地址),后跟一个对 PE 唯一的数字,这个数字可以由PE生成。或者,在Unique VLAN EVPN 情况下,后12位可能是12位VLAN ID,其余前4位设置为0。

7.10、路由目标

EVPN 路由可以携带一个或多个路由目标 (Route Target,RT) 属性,RT可以手工配置(如在 IP VPN 中)或可以自动生成。

如果 PE 使用 RT 约束,PE 会根据 [RFC4684] 使用 RT 约束来通告所有此类 RT。RT约束的使用允许每个 EVPN 路由仅到达那些配置为从 EVPN 路由所携带的一组 RT 中导入至少一个 RT 的 PE。

7.10.1、从以太网标签 ID 自动生成

对于“唯一VLAN EVPN”场景,非常需要从该 EVPN 实例的以太网标签 ID (VLAN ID) 自动导出 RT。执行这种自动推导的过程如下:

+ RT的全局管理员字段必须设置为与 PE 相关联的自治系统 (AS) 编号。

+ 12位VLAN ID必须编码在本地管理员字段的最低 12 位中,其余位设置为零。

8、多宿主功能

本节讨论用于支持 EVPN 中的多宿主的功能、过程和关联的 BGP 路由。这涵盖了多宿主设备 (multihomed device,MHD) 和多宿主网络(multihomed network,MHN) 场景。

8.1、多宿主以太网段自动发现

连接到同一以太网段的 PE 可以通过以太网段路由的交换自动发现彼此,只需要少量的配置甚至无需配置。

8.1.1、构建以太网段路由

Route Distinguisher (RD) 必须是type 1 RD [RFC4364],值字段包括 PE 的 IP 地址(通常为环回地址),后跟一个对 PE 唯一的数字。

以太网段标识符 (Ethernet Segment Identifier,ESI) 必须设置为第 5 节中描述的 10 个八位字节值。

通告以太网段路由的 BGP 通告还必须携带 ES-Import Route Target,如第 7.6 节中所定义。

必须完成以太网段路由过滤,以便以太网段路由仅由多宿主到同一以太网段的 PE 导入。之后,连接到特定以太网段的每个 PE 构建导入过滤规则,以引入携带 ES-Import Route Target 的路由,该路由目标从 ESI 构建。

8.2、快速收敛

在 EVPN 中,MAC 地址可达性是通过 MPLS 网络上的 BGP 控制平面获知的。因此,在没有任何快速保护机制的情况下,网络收敛时间和遇到故障的 PE 必须撤消的 MAC/IP 通告路由数量相关。对于高度扩展的环境,此方案会导致收敛缓慢。

为了缓解这种情况,EVPN 定义了一种机制,以便在与以太网段的连接发生故障时,向远端PE节点高效、快速地发出信号,要求更新其转发表。这是通过让每个PE为每个本地连接的以太网段为每个ES通告一组一个或多个以太网 A-D 路由来完成的(有关如何构建这些路由的详细信息,请参阅下面的第 8.2.1 节)。 PE 可能需要为指定ES的每个ES路由通告多个以太网A-D,因为 ES 可能位于多个 EVI 中,并且所有这些 EVI 的 RT 可能不适合单个路由。为ES通告一组包含所有ES的以太网 A-D,使得每个路由都包含完整 RT 集的一个子集。每个 ES 路由的每个以太网 A-D 通过不同的路由标识符 (RD) 与集合中的其他路由区分开来。

当与所连接的网段的连接出现故障时,PE 会根据 ES 路由撤回相应的以太网 A-D 集。这会触发所有收到撤销请求的 PE 更新与相关以太网段相关联的所有 MAC 地址的下一跳邻接关系。如果没有其他 PE 为这一段通告以太网 A-D 路由,那么收到撤销的 PE 只会使该段的MAC条目无效。否则,PE 相应地更新其下一跳邻居。

8.2.1、为每个以太网段路由构建以太网 A-D

本节描述用于构建每个 ES 路由的以太网 A-D 的过程,该路由用于快速收敛(如上所述)和通告用于水平分割过滤的 ESI 标签(如第 8.3 节所述)。支持这条路由是必需的。

Route Distinguisher (RD) 必须是type 1 RD [RFC4364]。值字段包括 PE 的 IP 地址(通常为环回地址),后跟一个对 PE 唯一的数字。

以太网段标识符必须是第 5 节(“以太网段”)中描述的 10 个八位字节的实体。当 Segment Identifier 设置为 0 时(例如,单宿主场景),不需要以太网 A-D 路由。

以太网标签 ID 必须设置为 MAX-ET。

NLRI 中的 MPLS 标签必须设置为 0。

ESI 标签扩展团体必须包含在路由中。如果需要全活冗余模式,那么ESI标签扩展团体标志中的“单活”位必须设置为 0,并且该扩展团体中的MPLS标签必须设置为有效的 MPLS 标签值。该扩展团体中的 MPLS 标签被称为 ESI 标签,并且必须在每个以太网 A-D 中每个为 ES 通告的 ES 路由中具有相同的值。如果通告PE使用入口复制来接收来自其他PE的多播、广播或未知单播流量,则该标签必须是下游分配的MPLS标签。如果通告PE使用 P2MP MPLS LSP 发送组播、广播或未知单播流量,则该标签必须是上游分配的 MPLS 标签。该标签的用法在第 8.3 节中描述。

如果需要单活冗余模式,那么 ESI 标签扩展团体标志中的“单活”位必须设置为 1,并且 ESI 标签应该设置为有效的 MPLS 标签值。

8.2.1.1、以太网 A-D 路由目标

每个 ES 路由的每个以太网 A-D 必须携带一个或多个路由目标 (RT) 属性。每个 ES 的以太网 A-D 路由集必须携带以太网段所属的所有 EVPN 实例的整个 RT 集。

8.3、水平分割

假设一个 CE 多宿主到以太网段 ES1 上的两个或多个 PE,以全活冗余模式运行。如果 CE 将广播、未知单播或多播 (BUM) 数据包发送到非指定转发器 (non-DF) PE 之一,例如 PE1,则 PE1 将将该数据包转发到所有其他 PE 或其他 PE 的子集。该 EVPN 实例,包括该以太网段的DF PE。在这种情况下,CE多宿主到的DF PE 必须丢弃数据包,而不是转发回 CE。此过滤在本文档中称为“水平分割过滤”。

当一组 PE 在单活冗余模式下运行时,强烈建议使用这种水平分割过滤机制,因为它可以防止在故障或恢复时出现会影响以太网段的瞬态循环。例如,当两个在 DF 选举程序稳定下来之前,PE 认为两者都是该段的 DF。

为了实现这种水平分割功能,源自非DF PE 的每个 BUM 数据包都封装有 MPLS 标签,该标签标识起源以太网段(即,帧进入EVPN网络的段)。该标签被称为 ESI 标签,并且在全活冗余模式下每个PE路由使用一组以太网 A-D是,必须由所有PE分发,根据上面的第 8.2.1 节。当在单活冗余模式下每个 ES 路由使用一组以太网 A-D操作时,ESI 标签应该由所有 PE 分配。这些路由由连接到以太网段的PE 引入,也由与路由中的以太网段至少有一个EVPN 实例的PE 引入。如第 8.1.1 节所述,路由必须携带带有有效 ESI 标签的 ESI 标签扩展团体。处置 PE 依靠 ESI 标签的值来确定是否允许 BUM 帧离开特定的以太网段。

8.3.1、ESI 标签分配

以下小节描述了 ESI 标签的分配过程,根据用于在 EVPN 网络中传送多目的数据包的隧道类型,而有所不同。

8.3.1.1、入口复制

在全活或单活冗余模式下运行并使用入口复制来接收 BUM 流量的每个 PE 在每个 ES 路由的以太网 A-D 集中为其连接的 ES 通告下游分配的 ESI 标签。该标签必须由宣告PE 在平台标签空间中编程,并且该标签的转发条目必须不能将接收到的带有该标签的数据包转发到分发该标签的以太网段上。

全活冗余模式下的入口PE在BUM报文中包含ESI标签的规则如下:

- 非 DF 入口 PE 必须在发送给它的 BUM 数据包的副本中包含由 DF 出口 PE 分发的 ESI 标签。

- 入口 PE(DF 或非 DF)应该在发送给它的 BUM 数据包的副本中包含由每个非 DF 出口 PE 分发的 ESI 标签。

运行在单活冗余模式下的入口PE 在BUM 数据包中包含ESI 标签的规则如下:

- 入口 DF PE 应该在发送给它的 BUM 数据包的副本中包含出口 PE 分发的 ESI 标签。

在全活和单活冗余模式下,入口PE不得在发送到出口PE的BUM数据包副本中包含 ESI 标签,该出口 PE 未连接到 BUM 数据包进入 EVI所经过的ES。

以 PE1 和 PE2 为例,它们在 ES1 上多宿主到 CE1 并在全活多宿主模式下运行。此外,请假设 PE1 正在使用 P2P 或 MP2P LSP 向 PE2 发送数据包。假设PE1是VLAN1的非DF,PE2是VLAN1的DF,PE1在ES1的VLAN1上收到CE1发来的BUM报文。该场景下,PE2为EVPN实例对应的VLAN1下发Inclusive Multicast Ethernet Tag路由。因此,当 PE1 发送它从 CE1 接收到的 BUM 数据包时,它必须首先将 PE2 为 ES1 分配的 ESI 标签压入到MPLS标签堆栈。然后,它必须将PE2在VLAN1的包含多播以太网标签路由中分发的 MPLS 标签压入到 MPLS 标签堆栈上。生成的数据包进一步封装在 P2P 或 MP2P LSP 标签堆栈中,以便将数据包传输到 PE2。当 PE2 收到此数据包时,它会根据顶部 MPLS 标签确定删除任何 P2P 或 MP2P LSP 标签后将数据包复制到的 ESI 集。如果下一个标签是 PE2 为 ES1 分配的 ESI 标签,则 PE2 不得将数据包转发到 ES1。如果下一个标签是一个尚未由 PE2 分配的 ESI 标签,则 PE2 必须丢弃该数据包。需要注意的是,在这种情况下,如果 PE2 收到来自 CE1 的 VLAN1 的 BUM 数据包,那么它应该在将数据包发送到 PE1 时使用从 PE1 收到的 ESI 标签封装该数据包,以避免在故障情况下出现任何瞬态环路会影响 ES1(例如,端口或链路故障)。

8.3.1.2、P2MP MPLS LSP

在全活冗余模式下运行并使用 P2MP LSP 发送 BUM 流量的非 DF PE 在每个 ES 路由的以太网 A-D 集合中为其公共连接的 ES 通告上游分配的 ESI 标签,该标签由发布路由的PE上行分配。该标签必须由连接到路由中通告的 ESI 的其他 PE 编程,在通告 PE 的上下文标签空间中。此外,此标签的转发条目必须不能将收到的带有此标签的数据包转发到分配了该标签的以太网段上。该标签也必须由导入路由但未连接到路由中通告的 ESI 的其他 PE 在通告 PE 的上下文标签空间中进行编程。此外,此标签的转发条目必须是没有其他相关操作的标签弹出。

在单活冗余模式下运行并使用 P2MP LSP 发送 BUM 流量的 DF PE 应在每个 ES 路由的以太网 A-D 集合中为其连接的 ES 通告上行分配的 ESI 标签,正如上一段所述。

以 PE1 和 PE2 为例,它们在 ES1 上多宿主到 CE1 并在全活多宿主模式下运行。另外,请假设 PE3 属于 ES1 的 EVPN 实例之一。此外,假设作为非 DF 的 PE1 正在使用 P2MP MPLS LSP 发送 BUM 数据包。当 PE1 发送它从 CE1 接收到的 BUM 数据包时,它必须首先将它为接收数据包的 ESI 分配的 ESI 标签压入 MPLS 标签堆栈。生成的数据包进一步封装在 P2MP MPLS 标签栈中,以便将数据包传输到其他 PE。必须在 EVPN 的 MPLS 传输基础设施中使用的 P2MP LSP 上禁用倒数第二跳弹出。当 PE2 收到这个数据包时,它会解封装顶部 MPLS 标签,并使用顶部标签确定的上下文标签空间转发数据包。如果下一个标签是 PE1 分配给 ES1 的 ESI 标签,则 PE2 不得将数据包转发到 ES1。当PE3收到这个数据包时,它会解封装顶部的MPLS标签,并使用顶部标签确定的上下文标签空间转发数据包。如果下一个标签是 PE1 分配给 ES1 的 ESI 标签,并且 PE3 未连接到 ES1,则 PE3 必须弹出标签并将数据包泛洪到该 EVPN 实例中的所有本地 ESI。应该注意的是,当 PE2 通过 P2MP LSP 发送 BUM 帧时,即使它是该 VLAN 的 DF,它也应该使用 ESI 标签封装该帧,以避免在会影响 ES1 的故障场景中出现任何瞬态环路(例如,端口或链路故障)。

8.4、别名和备份路径

在 CE 多宿主到多个 PE 节点的情况下,使用具有全活冗余的链路聚合组 (Link Aggregation Group,LAG),可能只有单个PE知道与 CE 传输的流量相关联的一组 MAC 地址。这会导致即使多个 PE 连接到多宿主网段,远程 PE 节点只从单个 PE 接收这些地址的 MAC/IP 通告路由的情况。结果,远程PE无法在连接到多宿主以太网段的PE节点之间有效地负载均衡流量。例如,当 PE 对访问执行数据平面学习时,CE上的负载均衡功能会将流量从指定的源 MAC 地址哈希到某个 PE,可能就是这种情况。

发生这种现象的另一种情况是当 PE 依赖控制平面学习访问时(例如,使用 ARP),因为 ARP 流量被哈希到 LAG 中的单个链路。

为了解决这个问题,EVPN 引入了“别名”的概念,即 PE 能够发出信号,表明它可以到达指定 ES 上的 EVPN 实例,即使它没有从该 EVI/ES 获知任何 MAC 地址。为此目的使用每个 EVI 路由的以太网 A-D。接收带有非保留 ESI 的 MAC/IP 通告路由的远程 PE 应该认为通告的 MAC 地址可通过所有已通告该 MAC 地址的 EVI/ES 可达性的 PE 到达,这些PE 通过每个 EVI 路由的以太网 AD 的组合对于该 EVI/ES(和以太网标签,如果适用)和以太网 AD,每个 ES 路由的 ESI 标签扩展团体标志中的“单活”位设置为 0。

请注意,每个 EVI 路由的以太网 A-D 可能会在远程 PE 接收到每个 ES 路由的以太网 A-D 集之前被远程 PE 接收。因此,为了处理极端情况和竞争条件,远程 PE 不得将每个 EVI 路由的以太网 A-D 用于流量转发,除非它也接收到每个 ES 路由的相关以太网 A-D 集。

备份路径是一个密切相关的功能,但它用于单活冗余模式。在这种情况下,PE 还使用如上所述的每个EVI路由的以太网AD和每个ES路由的以太网AD的相同组合来通告它具有到指定 EVI/ES 的可达性,但在标志中带有“单活”位ESI 标签扩展团体的设置为 1。 接收带有非保留 ESI 的 MAC/IP 通告路由的远程 PE 应该假设通告的 MAC 地址可通过任何已通告以太网 AD 路由组合的PE可达,并且它应该为该 MAC 地址配置一个备份路径。

8.4.1、为每个 EVPN 实例路由构建以太网 A-D

本节介绍用于构建每个 EVPN 实例 (EVI) 路由的以太网 A-D 的过程,该路由用于别名(如上所述)。对这条路线的支持是可选的。

Route Distinguisher (RD) 必须按照第 7.9 节进行设置。

以太网段标识符必须是第 5 节(“以太网段”)中描述的 10 个八位字节的实体。当 Segment Identifier 设置为 0 时,不需要以太网 A-D 路由。

以太网标签 ID 是以太网段上以太网标签的标识符。这个值可能是一个12位的VLAN ID,在这种情况下后12位设置为VLAN ID,前20位设置为0。或者,它可能是EVPN使用的另一个以太网标签,可以设置为以太网段上的默认以太网标签或值 0。

请注意,以上允许使用以下粒度之一来通告以太网 A-D 路由:

+ 每个 MAC-VRF 每个 <ESI, Ethernet Tag ID> 元组的一个以太网 A-D 路由。这适用于 PE 使用基于 MPLS 的配置和 VID 转换时,或者当 PE 使用基于 MAC 的配置和 VID 转换时可能适用。

+ 每个 MAC-VRF 的每个 <ESI> 的以太网 A-D 路由(其中以太网标签 ID 设置为 0)。这适用于 PE 使用基于 MAC 的部署或基于 MPLS 的部署而无需 VID 转换的情况。

MPLS 标签的用法在第 14 节(“单播数据包的负载均衡”)中描述。

路由的 MP_REACH_NLRI 属性的 Next Hop 字段必须设置为广播 PE 的 IPv4 或 IPv6 地址。

根据第 7.10 节,以太网 A-D 路由必须携带一个或多个路由目标 (RT) 属性。

8.5、指定转发器选举

假设作为主机或路由器的 CE,它直接多宿主到指定以太网段上EVPN实例中的多个 PE。一个或多个以太网标签可以配置在以太网段上。在这种情况下,只有一个 PE,称为指定转发器 (Designated Forwarder,DF),负责以下操作:

- 在特定以太网段上的指定以太网标签上向 CE 发送多播和广播流量。

- 如果环境需要未知单播流量的泛洪,则在特定以太网段上的指定以太网标签上将未知单播流量(即 PE 不知道目标 MAC 地址的流量)泛洪到 CE。

请注意,此行为允许以 <ES, VLAN> 或 <ES, VLAN bundle> 的粒度为多播、广播和未知单播流量选择 DF,是本规范中的默认行为。

请注意,CE 始终使用单个链路向PE发送属于特定流的数据包。例如,如果 CE 是主机,则如前所述,主机将用于到达 PE 的多条链路视为链路聚合组(Link Aggregation Group,LAG)。 CE 使用本地哈希函数将流量映射到 LAG 中的链路上。

如果桥接网络通过交换机多宿主到 EVPN 网络中的多个PE,那么支持All-Active 冗余模式需要桥接网络使用LAG连接到两个或多个 PE。

如果桥接网络没有使用LAG连接到 PE,那么对于指定的 <ES, VLAN> 或 <ES, VLAN bundle>,只有桥接网络和 PE 之间的链路之一必须是活动链路。在这种情况下,每个 PE 通告的每 ES 以太网 A-D 路由集必须将 ESI 标签扩展团体标志中的“Single-Active”位设置为 1。

对于基于 VLAN 的服务以 <ES, VLAN> 粒度或对于 VLAN(感知)捆绑服务以 <ES, VLAN 捆绑> 粒度进行 DF 选举的默认过程称为“服务雕刻”。通过服务雕刻,可以为每个以太网段选择多个 DF(每个 VLAN 或 VLAN 束一个),以便对发往指定段的多目的地流量执行负载均衡。负载均衡过程在PE节点之间平均分配每个 ES 的 VLAN 空间,这样每个 PE 都是该 ES 的一组不相交的 VLAN 或 VLAN绑定的 DF。服务雕刻的程序如下:

1. 当 PE 发现所连接以太网段的 ESI 时,它会通告一条带有关联的 ES-Import 扩展团体属性的以太网段路由。

2. 然后,PE启动一个计时器(默认值 = 3 秒)以允许接收来自连接到同一以太网段的其他 PE 节点的以太网段路由。此计时器值在连接到同一以太网段的所有 PE 上应相同。

3. 当定时器超时时,每个PE 建立一个有序列表,该列表将连接到以太网段的所有PE 节点(包括它自己)的IP 地址以递增的数值递增。此列表中的每个 IP 地址都是从通告的以太网段路由的“始发路由器的 IP 地址”字段中提取的。然后给每个 PE 指定一个序数,指示其在有序列表中的位置,从 0 开始作为具有数字最低 IP 地址的 PE 的序数。序数用于确定哪个 PE 节点将成为以太网段上指定 EVPN 实例的 DF,使用以下规则:

假设有N个 PE 节点的冗余组,对于基于 VLAN 的服务,当 (V mod N) = i 时,序号为 i 的PE是<ES, VLAN V> 的 DF。在 VLAN(感知)捆绑服务的情况下,则必须在模函数中使用该 ES 上该捆绑中数字最小的VLAN值。

应该注意的是,如果需要的话,使用以太网段路由中的“始发路由器的 IP 地址”字段来获取有序列表所需的 PE IP 地址允许 CE 跨不同 AS 进行多宿主。

4. 被选为指定 <ES, VLAN> 或 <ES, VLAN bundle> 的 DF 的 PE 将在相应 ES 上为该 VLAN 或 VLAN绑定除阻塞多目的地流量。请注意,DF PE 会在出口方向上向该段解除阻塞多目标流量。所有非 DF PE 继续在出口方向上丢弃多目标流量,该流量方向为<ES, VLAN> 或 <ES, VLAN bundle>。

在链路或端口故障的情况下,受影响的 PE 撤回其以太网段路由。这将在冗余组中的所有 PE 上重新触发业务雕刻程序。对于PE节点故障,或者在PE投运、退运时,PE重新触发业务雕刻。在单活多宿主的情况下,当一个服务由于重新划分而从冗余组中的一个 PE 移动到另一个 PE 时,最终成为该服务的选举出的DF PE,应该触发MAC地址向关联的以太网段刷新通知。例如,这可以使用 IEEE 802.1ak 多 VLAN 注册协议 (Multiple VLAN Registration Protocol,MVRP)“新”声明来完成。

8.6、与单宿主PE的互操作性

我们将只支持单宿主CE设备的PE称为单宿主PE。对于单宿主PE,以上多宿主过程都可以省略;然而,为了允许单宿主 PE 与多宿主 PE 完全互操作,即使单宿主 PE 也应该支持上述一些多宿主过程:

- 与处理以太网 A-D 路由相关的程序以实现快速收敛(第 8.2 节(“快速收敛”)),让单宿主 PE 受益于快速收敛

- 与处理以太网 A-D 路由相关的程序以实现别名(第 8.4 节(“别名和备份路径”)),让单宿主 PE 受益于负载均衡

- 与处理以太网 A-D 路由相关的程序以作为备份路径(第 8.4 节(“别名和备份路径”)),让单宿主PE 受益于相应的收敛优化

9、确定单播 MAC 地址的可达性

PE根据目的MAC地址转发收到的报文,这意味着PE必须能够了解如何到达指定的目标单播 MAC 地址。

MAC地址学习有两个组成部分——“本地学习”和“远程学习”:

9.1、本地学习

指定的 PE 必须能够从与其相连的 CE 获悉 MAC 地址。这被称为本地学习。

指定EVPN实例中的 PE 必须支持使用标准 IEEE 以太网学习程序的本地数据平面学习。 PE从CE网络接收到如下报文时,必须能够学习数据平面的MAC地址:

- DHCP 请求

- 对它自己的 MAC 的 ARP 请求

- 对等方的 ARP 请求

或者,PE 可以在控制平面或通过 PE 和 CE 之间的管理平面集成学习 CE 的 MAC 地址。

在某些应用程序中,可通过本地连接段(例如,使用 ESI X)上的指定 PE 访问的 MAC 地址可能会移动,从而使其可通过另一个段上的另一个 PE(例如,使用 ESI Y)访问。这称为“MAC 移动性”。支持此操作的程序在第 15 节(“MAC 移动性”)中进行了描述。

9.2、远程学习

一个指定的 PE 必须能够确定如何将流量发送到属于或在连接到其他 PE 的 CE 之后的 MAC 地址,即发送到远程 CE 或远程 CE 后面的主机。我们称此类 MAC 地址为“远程”MAC 地址。

本文档要求PE在控制平面学习远程MAC地址。为了实现这一点,每个 PE 将它从控制平面中本地连接的 CE 学到的 MAC 地址通告给该 EVPN 实例中的所有其他 PE,使用 MP-BGP,特别是 MAC/IP 通告路由。

9.2.1、构建MAC/IP地址通告

BGP 被扩展为使用 EVPN NLRI 中的 MAC/IP 通告路由类型来通告这些 MAC 地址。

RD 必须按照第 7.9 节进行设置。

以太网段标识符设置为第 5 节(“以太网段”)中描述的 10 字节 ESI。

以太网标签 ID 可以为零或可以表示有效的以太网标签 ID。当 MAC-VRF 中有多个网桥表时,该字段可能不为零(即 PE 需要支持该 EVI 的 VLAN 感知捆绑服务)。

当 NLRI 中的以太网标签 ID 被设置为特定广播域的非零值时,该以太网标签 ID 可以是 CE 的以太网标签值(例如,CE VLAN ID)或 EVPN 提供商的以太网标签值(例如,提供商的VLAN ID)。如果指定广播域的 CE 以太网标签(例如,CE VLAN ID)在不同 CE 上不同,则属于后者。

MAC地址长度字段以位为单位,设置为 48。除48位之外的 MAC 地址长度值超出了本文档的范围。 MAC 地址的编码必须是由 [802.1Q] 和 [802.1D-REV] 指定的 6 字节 MAC 地址。

IP 地址字段是可选的。默认情况下,IP 地址长度字段设置为 0,并且从路由中省略 IP 地址字段。当需要通告有效的 IP 地址时,它会在此路由中进行编码。当存在IP地址时,IP地址长度字段以位为单位,并设置为 32 或 128 位。其他 IP 地址长度值超出了本文档的范围。IP地址的编码必须为 IPv4的4个八位字节或IPv6的 16 个八位字节。 EVPN NLRI 的长度字段(以八位字节表示,在第 7 节中描述)足以确定 IP 地址是否在此路由中编码,如果是,则编码的 IP 地址是IPv4或者是IPv6。

MPLS Label1 字段编码为 3 个八位字节,其中前20位包含标签值。MPLS 标签 1 必须被下游分配,并且它与由通告PE通告的 MAC 地址相关联。广播PE在收到MPLS封装的报文时使用该标签根据目的MAC地址向CE转发。转发程序在第 13 和 14 节中规定。

PE 可以为指定MAC-VRF中的所有MAC地址通告相同的单个EVPN标签。这种标签分配被称为每 MAC-VRF 标签分配。或者,PE 可以为每个 <MAC-VRF, Ethernet tag> 组合通告一个唯一的 EVPN 标签。这种标签分配被称为每<MAC-VRF,Ethernet tag >标签分配。作为第三种选择,PE 可以为每个 <ESI, Ethernet tag> 组合通告一个唯一的 EVPN 标签。此标签分配称为每 <ESI, Ethernet tag> 标签分配。作为第四种选择,PE 可以为每个 MAC 地址通告唯一的 EVPN 标签,这种标签分配被称为每 MAC 标签分配。所有这些标签分配方法都有其权衡,特定标签分配方法的选择对于发起路由的 PE 来说完全是本地有效的。

每个 MAC-VRF 标签的分配需要最少数量的 EVPN 标签,但除了出口 PE 上的 MPLS 查找之外,还需要 MAC 查找以进行转发。另一方面,每个 <ESI, Ethernet tag> 的唯一标签或每个 MAC 的唯一标签允许出口 PE 将它从另一个 PE 接收的数据包转发到连接的 CE,只需查找 MPLS 标签而无需执行 MAC 查找。这包括在出口到 CE 上执行适当的 VLAN ID 转换的能力。

MPLS Label2 字段是可选字段。如果存在,则将其编码为 3 个八位字节,其中前20 位包含标签值。

路由的 MP_REACH_NLRI 属性的 Next Hop 字段必须设置为通告PE的 IPv4 或 IPv6 地址。

MAC/IP 通告路由的 BGP 通告还必须携带一个或多个路由目标 (RT) 属性。RT 可以手工配置(如在IP VPN 中)或可以从以太网标签 ID 自动派生,在唯一VLAN 的情况下,如第 7.10.1 节所述。

需要注意的是,本文档并不要求PE在控制平面学习到远程MAC时创建转发状态,实际何时创建此转发状态时是本地实现问题。

9.2.2、路由解析

如果接收到的 MAC/IP宣告路由中的以太网段标识符字段设置为保留的 ESI 值 0或MAX-ESI,那么如果接收 PE 决定为关联的 MAC 地址设置转发状态,它必须基于单独的 MAC/IP宣告路由。

如果收到的 MAC/IP宣告路由中的以太网段标识符字段设置为非保留 ESI,并且接收 PE 本地连接到同一 ESI,则 PE 不会根据收到的路由更改其转发状态。这确保了本地路由优先于远程路由。

如果接收到的MAC/IP宣告路由中的以太网段标识符字段设置为非保留 ESI,那么如果接收 PE 决定为关联的 MAC 地址安装转发状态,则必须是当 MAC/IP 宣告路由并且已接收到每个 ES 路由的相关以太网AD集。MAC路由安装对每个 ES 路由的以太网 A-D 的依赖性是为了确保 MAC 路由在大规模撤回期间不会被意外设置。

为了通过示例说明这一点,请假设连接到多宿主以太网段 ES1 的两个 PE(PE1 和 PE2)。假设为全活冗余模式,指定MAC地址 M1 由​ PE1 学习,而不是PE2。在 PE3 上,可能会出现以下状态:

T1,当收到来自 PE1 的 MAC/IP 通告路由以及来自 PE1 和 PE2 的以太网 A-D per ES 路由和以太网 A-D per EVI 路由集时,PE3 可以将目的地为 M1 的流量转发到 PE1 和 PE2。

T2,如果在 T1 之后 PE1 根据 ES 路由撤消其以太网 A-D 集,则 PE3 仅将目的地为 M1 的流量转发到 PE2。

T2',如果在 T1 之后 PE2 撤消其每个 ES 路由的以太网 A-D 集,则 PE3 仅将目的地为 M1 的流量转发到 PE1。

T2'',如果在T1之后PE1撤消其MAC/IP宣告路由,则 PE3 将到 M1 的流量视为未知单播。

T3,PE2也为M1 发布一条MAC 路由,然后PE1 撤回M1 的MAC 路由。 PE3 继续将目的地为 M1 的流量转发到 PE1 和 PE2。换句话说,尽管 M1 被 PE1 撤回,但 PE3 会将目的地为 M1 的流量转发给 PE1 和 PE2。如果来自CE去往M1的流量被哈希到 PE1后,可能会被终止,导致 M1 在 PE1 中老化;但是,PE1 和 PE2 都可以访问 M1。

10、ARP 和 ND

MAC/IP 宣告路由中的 IP 地址字段可以选择携带与 MAC 地址关联的 IP 地址之一。这提供了一个选项,可用于最大限度地减少 ARP 或邻居发现 (Neighbor Discovery,ND) 消息通过 MPLS 网络和远程 CE 的泛洪。此选项还最大限度地减少了连接到 EVPN 网络的终端站/主机上的 ARP(或 ND)消息处理。 PE可以在CE和PE之间的控制或管理平面中获知与MAC地址相关联的IP地址。或者,它可以通过窥探到或来自 CE 的某些消息来了解这种绑定。当PE学习到与本地连接的CE的MAC地址相关联的IP地址时,它可以通过将该地址包含在MAC/IP Advertisement路由中将该地址通告给其他PE。IP地址可以是使用4个八位字节编码的IPv4地址或使用16个八位字节编码的IPv6地址。对于 ARP 和 ND 目的,IP 地址长度字段对于 IPv4 地址必须设置为 32,对于 IPv6 地址必须设置为 128。

如果有多个 IP 地址与一个 MAC 地址相关联,则必须生成多个MAC/IP宣告路由,每个 IP 地址一个。例如,对于双IP栈场景,当 IPv4 和 IPv6 地址与同一 MAC 地址相关联时,可能就是这种情况。当 IP 地址与 MAC 地址分离时,必须撤消具有该特定 IP 地址的 MAC/IP 宣告路由。

请注意,仅 MAC 路由可以与 MAC/IP 路由一起发布,但独立于 MAC/IP 路由,用于在数据平面中完成接入网络/节点上的 MAC 学习并且独立于生成 MAC/ IP路由。在这种情况下,当ARP表项超时导致MAC/IP被撤销时,MAC信息不会丢失。在通过管理或控制平面学习到主机MAC/IP的场景下,发送端PE可能只生成并发布MAC/IP路由。如果接收 PE 收到 MAC-only 路由和 MAC/IP 路由,那么当它收到 MAC/IP 路由的撤销消息时,它必须从 ARP 表中删除相应的条目,而不是从 MAC-VRF表中删除 MAC 条目,除非它收到 MAC-only 路由的撤销消息。

当 PE 收到 CE 对 IP 地址的 ARP 请求时,如果 PE 具有该 IP 地址的 MAC 地址绑定,则 PE 应通过响应 ARP 请求来执行 ARP 代理。

10.1、默认网关

当PE需要进行跨子网转发时,每个子网由不同的广播域(例如,不同的VLAN)表示时,在三层进行跨子网转发,执行这种功能的PE称为EVPN 实例的默认网关。在这种情况下,当 PE 收到针对配置为默认网关地址的 IP 地址的 ARP 请求时,PE 将发起 ARP 应答。

作为指定EVPN 实例的默认网关的每个 PE 可以在 EVPN 控制平面中使用 MAC/IP 通告路由通告其默认网关 MAC 地址,并且每个这样的 PE 指示这样的路由与默认网关相关联。这是通过要求路由携带第 7.8 节(“默认网关扩展团体”)中定义的默认网关扩展团体来实现的。当使用默认网关扩展团体通告 MAC 路由时,ESI 字段设置为零。

MAC/IP 宣告路由的 IP 地址字段设置为该子网(例如,EVPN 实例)的默认网关 IP 地址。对于指定的子网(例如,VLAN 或 EVPN 实例),所有参与者 PE 的默认网关 IP 地址都相同。包含此 IP 地址使接收 PE 能够根据在该子网(或 EVPN 实例)的 MAC/IP 宣告路由中收到的地址检查其配置的默认网关 IP 地址,如果存在差异,则 PE 应通知操作员并记录错误消息。

除非事先知道(通过本文档之外的方式)指定 EVPN 实例的所有 PE 充当该 EVPN 实例的默认网关,否则 MPLS 标签必须设置为有效的下游分配标签。

此外,即使指定 EVPN 实例的所有 PE 都充当该 EVPN 实例的默认网关,但这些 PE 中只有一些(而不是全部)具有足够的(路由)信息来为所有网络间提供子网间路由。子网流量起源于与 EVPN 实例关联的子网,然后当这样的 PE 在 EVPN 控制平面中使用 MAC/IP 通告路由通告其默认网关 MAC 地址并指示此类路由与默认网关关联时,路由必须携带有效的由下游分配的标签。

如果指定 EVPN 实例的所有 PE 都充当该 EVPN 实例的默认网关,并且所有网关设备都使用相同的默认网关 MAC 地址,则不需要此类宣告。但是,如果每个默认网关使用不同的 MAC 地址,则每个默认网关都需要知道其他网关的 MAC 地址,因此需要这样的通告。这称为 MAC 地址别名,因为单个默认网关可以由多个 MAC 地址表示。

收到此路由并按照本文档中指定的程序将其导入的每个 PE 在回复它收到的 ARP 请求时遵循本节中的程序。

每个 PE 作为一个指定的 EVPN 实例的默认网关,接收此路由,并导入它按照本文档中指定的程序必须创建 MAC 转发状态,使其能够应用 IP 转发到路由中携带的 MAC 地址的数据包。

11、多目的地流量的处理

一个指定的 PE 需要一些程序来将从 CE 接收到的广播或多播流量发送到 EVPN 实例中的指定以太网标签 (VLAN) 中封装的所有其他 PE,跨越该以太网标签 (VLAN) 在该 EVPN 实例中。在某些情况下,如第 12 节(“未知单播数据包的处理”)中所述,指定的 PE 可能还需要将未知单播流量泛洪到其他 PE。

特定 EVPN 实例中的 PE 可能使用入口复制、P2MP LSP 或 MP2MP LSP 向其他 PE 发送未知的单播、广播或组播流量。

每个 PE 必须通告“包含多播以太网标签路由”以启用上述功能。以下小节提供了构建包含多播以太网标签路由的过程。随后的小节更详细地描述了它的用法。

11.1、构建广泛组播以太网标签路由

RD 必须按照第 7.9 节进行设置。

以太网标签 ID 是以太网标签的标识符。它可以设置为 0 或一个有效的以太网标签值。

始发路由器的 IP 地址字段值必须设置为 PE 的 IP 地址,该地址对于 PE 上的所有 EVI 应该是通用的(例如,该地址可以是 PE 的环回地址)。 IP 地址长度字段以位为单位。

路由的 MP_REACH_NLRI 属性的 Next Hop 字段必须设置为广播 PE 的 IPv4 或 IPv6 地址。

包含多播以太网标签路由的 BGP 宣告还必须携带一个或多个路由目标 (RT) 属性。必须遵循第 7.10 节中描述的 RT 分配。

11.2、P-隧道识别

为了识别用于发送广播、未知单播或多播流量的 P 隧道,包含多播以太网标签路由必须携带 [RFC6514] 中指定的提供商多播服务接口 (Provider Multicast Service Interface,PMSI) 隧道属性。

根据 PE 上 EVPN 实例的 P-tunnel 所使用的技术,广泛组播以太网标签路由的 PMSI Tunnel 属性构造如下。

+ 如果发起宣告的 PE 使用 P-multicast 树作为 EVPN 的 P-tunnel,PMSI Tunnel 属性必须包含树的身份(注意 PE 可以在实际实例化之前创建树的身份树)。

+ 对 P 隧道使用 P 组播树的 PE 可以将 PE 上存在的两个或多个 EVPN 实例 (EVI) 聚合到同一棵树上。在这种情况下,除了携带树的身份外,PMSI 隧道属性必须携带 MPLS 上游分配的标签,PE 已将其唯一绑定到与此更新相关联的 EVI(由其 RT 确定)。

如果 PE 已经为它现在希望聚合的两个或多个 EVI 通告了包含多播以太网标签路由,那么 PE 必须重新通告这些路由。重新通告的路由必须与原始路由相同,除了 PMSI 隧道属性和该属性中携带的标签。

+ 如果发起通告的 PE 对 EVPN 的 P 隧道使用入口复制,则路由必须包括 PMSI 隧道属性,隧道类型设置为入口复制,隧道标识符设置为 PE 的可路由地址。 PMSI 隧道属性必须携带下游分配的 MPLS 标签。此标签用于解复用 PE 通过 MP2P 隧道接收的广播、组播或未知单播 EVPN 流量。

+ PMSI 隧道属性的叶子信息要求标志必须设置为零,并且在接收时必须被忽略。

12、未知单播报文的处理

本文档中的流程不需要 PE 向其他 PE 泛洪未知单播流量。如果 PE 通过控制平面协议学习 CE MAC 地址,则 PE 可以通过 BGP 分配 MAC 地址,并且所有单播 MAC 地址将在流量到达这些目的地之前学习。

但是,如果 PE 不知道接收到的数据包的目的 MAC 地址,则 PE 可能不得不泛洪该数据包。在进行泛洪时,必须考虑“水平分割转发”,如下所示: 以下过程背后的原理借用了 VPLS 解决方案中的水平分割转发规则 [RFC4761] [RFC4762]。当具有泛洪能力的 PE(比如 PEx)接收到未知的目标 MAC 地址时,它会泛洪该帧。如果帧来自附加的 CE,则 PEx 必须在它作为 DF 的每个以太网段(属于该 EVI)上发送该帧的副本,而不是在它接收帧的以太网段上。此外,PE 必须将帧泛洪到参与该 EVPN 实例的所有其他 PE。另一方面,如果帧来自另一个 PE(比如 PEy),PEx 必须在它是 DF 的每个以太网段(属于那个 EVI)上发送数据包的副本。 PEx 不得将帧发送到其他 PE,因为 PEy 已经这样做了。水平分割转发规则适用于未知的 MAC 地址。

是否将数据包泛洪到未知的目标 MAC 地址应该是一个管理选择,这取决于 CE 和 PE 之间的学习方式。

特定 EVPN 实例中的 PE 可以使用入口复制,使用 RSVP-TE P2P LSP 或 LDP MP2P LSP 向其他 PE 发送未知单播流量。或者,他们可以使用 RSVP-TE P2MP 或 LDP P2MP 将此类流量发送到其他 PE。

12.1、入口复制

如果使用入口复制,则 EVPN 实例的包含多播以太网标签路由中携带的 P-tunnel 属性指定其他 PE 可用于为该 EVPN 实例发送未知单播、多播或广播流量的下游标签到这个特定的 PE。

收到带有这个特定 MPLS 标签的数据包的 PE 必须将数据包视为广播、多播或未知单播数据包。此外,如果 MAC 地址是单播 MAC 地址,则 PE 必须将数据包视为未知单播数据包。

12.2、P2MP MPLS LSP

使用 P2MP LSP 的过程与 [RFC7117] 中描述的 VPLS 过程非常相似。 PE 用于为特定 EVPN 实例发送未知单播、广播或多播流量的 P 隧道属性在第 11 节(“多目标流量的处理”)中所述的包含多播以太网标签路由中公布。

P-tunnel 属性指定 P2MP LSP 标识符。这相当于 [RFC7117] 中描述的包含树。请注意,可能在不同 EVPN 实例中的多个以太网标签可能使用相同的 P2MP LSP,使用上游标签 [RFC7117]。这相当于聚合包含树 [RFC7117]。当 P2MP LSP 用于泛洪未知单播流量时,数据包重新排序是可能的。

在 PMSI 隧道属性中指定的 P2MP LSP 上接收数据包的 PE 必须将数据包视为广播、组播或未知单播数据包。此外,如果 MAC 地址是单播 MAC 地址,则 PE 必须将数据包视为未知单播数据包。

13、转发单播数据包

本节介绍 PE 转发单播数据包的过程,这些数据包是从直接连接的 CE 或其他一些 PE 接收的。

13.1、转发CE收到的报文

当 PE 收到来自 CE 的数据包时,在指定的以太网标签 ID 上,它必须首先查找数据包的源 MAC 地址。在某些启用 MAC 安全的环境中,源 MAC 地址可以用于验证主机身份并确定可以允许来自主机的流量进入网络。源 MAC 查找也可以用于本地 MAC 地址学习。

如果 PE 决定转发该数据包,则必须查找该数据包的目的 MAC 地址。如果 PE 已从一个或多个其他 PE 收到此目标 MAC 地址的 MAC 地址通告,或已从本地连接的 CE 获知,则该 MAC 地址被视为已知 MAC 地址。否则,它被认为是一个未知的 MAC 地址。

对于已知的 MAC 地址,PE 将此数据包转发到远程 PE 之一或本地连接的 CE。当转发到远程PE时,数据包被封装在远程PE通告的EVPN MPLS标签中,用于该MAC地址,并在MPLS LSP标签堆栈中到达远程PE。

如果 MAC 地址未知,并且 PE 上的管理策略要求泛洪未知单播流量,则:

- PE必须将数据包泛洪到其他 PE。 PE 必须首先将数据包封装在 ESI MPLS 标签中,如第 8.3 节所述。如果使用入口复制,数据包必须被复制到每个远程 PE,VPN 标签是一个 MPLS 标签,确定如下: 这是远程 PE 在包含多播以太网标签路由的 PMSI 隧道属性中通告的 MPLS 标签对于 <MAC-VRF> 或 <MAC-VRF, Ethernet tag> 组合。

路由中的以太网标签可以与入口PE在其上接收数据包的接口相关联的以太网标签相同。如果正在使用 P2MP LSP,则对于 EVPN 实例中的以太网标记,必须在 PE 是根的 P2MP LSP 上发送数据包。如果所有以太网标签都使用相同的 P2MP LSP,则 EVPN 实例中的所有 PE 都必须是 P2MP LSP 的叶子。如果一个不同的 P2MP LSP 用于 EVPN 实例中的指定以太网标签,那么只有以太网标签中的 PE 必须是 P2MP LSP 的叶子。数据包必须封装在 P2MP LSP 标签栈中。

如果 MAC 地址未知,那么,如果 PE 上的管理策略不允许未知单播流量泛洪:

- PE 必须丢弃数据包。

13.2、转发从远程 PE 收到的数据包

本节介绍转发从远程 PE 接收到的已知和未知单播报文的过程。

13.2.1、未知单播转发

当 PE 从远程 PE 收到 MPLS 数据包时,在处理 MPLS 标签堆栈后,如果顶部 MPLS 标签最终是与 EVPN 实例关联的 P2MP LSP 标签,或者在入口复制的情况下,在 P-tunnel 属性中通告的下游标签,并在执行第 8.3 节中描述的水平分割程序之后:

- 如果 PE 是以太网标记的特定 ESI 集上 BUM 流量的指定转发器,则默认行为是 PE 在这些 ESI 上泛洪数据​​包。换句话说,PE 的默认行为是假设对于 BUM 流量不需要执行目标 MAC 地址查找。作为一种选择,PE 可以执行目标 MAC 查找以将数据包仅泛洪到以太网标记中 CE 接口的子集。例如,基于管理策略,PE 可能决定不在某些以太网段上泛洪 BUM 数据包,即使它是以太网段上的 DF。

- 如果 PE 不是以太网标记的任何 ESI 上的指定转发器,默认行为是它丢弃数据包。

13.2.2、已知单播转发

如果顶部 MPLS 标签最终是在单播 MAC 宣告中公布的 EVPN 标签,则 PE 要么根据与该标签关联的 CE 下一跳转发信息转发数据包,要么执行目标 MAC 地址查找以转发数据包到 CE。

14、单播包的负载均衡

本节规定了向多宿主 CE 发送已知单播数据包的负载均衡过程。

14.1、PE到远端CE的流量负载均衡

每当远程 PE 为 MAC-VRF 中的指定 <ESI, Ethernet tag> 导入 MAC/IP 宣告路由时,它必须检查该 ESI 的所有导入的以太网 AD 路由,以确定以太网段的负载均衡特性.

14.1.1、单活冗余模式

对于指定的 ES,如果远程 PE 已经从至少一个 PE 导入了每个 ES 路由的以太网 AD 集,其中设置了 ESI 标签扩展社区中的“Single-Active”标志,则远程 PE 必须推断出ES 在单活冗余模式下运行。因此,只有通过宣布关联的 MAC/IP 宣告路由的 PE 才能访问 MAC 地址——这被称为主 PE。其他 PE 为同一 ES 为每个 ES 通告一组以太网 A-D 路由,为该 ES 提供备用路径,以防主 PE 遇到故障,并称为备用 PE。应该注意,指定<ES, VLAN>(或<ES, VLAN bundle>)的主要PE 是该<ES, VLAN>(或<ES, VLAN bundle>)的DF。

如果主 PE 遇到故障,它可以在撤消其 MAC/IP 宣告路由集之前撤消其针对受影响 ES 的每个 ES 路由集的以太网 A-D。

如果指定 ES 只有一个备份 PE,远程 PE 可以使用主 PE 撤回其每 ES 路由的一组以太网 AD 作为触发器更新其转发条目,对于关联的 MAC 地址,指向备份PE。当备份 PE 开始通过其连接的 ES 学习 MAC 地址时,它将开始发送 MAC/IP 宣告路由,而故障 PE 撤回其路由。这种机制最大限度地减少了故障转移事件期间的流量泛滥。

如果指定 ES 有多个备份 PE,则远程 PE 必须使用主 PE 撤回其每 ES 路由的一组以太网 AD 作为触发器,开始为关联的 MAC 地址泛洪流量(只要泛洪未知单播数据包在管理上是允许的),因为不可能选择单个备份 PE。

14.1.2、全活冗余模式

对于一个指定的 ES,如果远程 PE 已经从一个或多个 PE 导入了每个 ES 路由的以太网 AD 集,并且它们都没有在 ESI 标签扩展社区集中具有“Single-Active”标志,则远程 PE 必须推断ES 在全活冗余模式下运行。接收带有非保留 ESI 的 MAC/IP 通告路由的远程 PE 应认为通告的 MAC 地址可通过所有已通告该 MAC 地址的 EVI/ES 可达性的 PE 到达,这些PE 通过每个 EVI 路由的以太网 AD 的组合用于该 EVI/ES(和以太网标签,如果适用)以及该 ES 的每个 ES 路由的以太网 AD。远程 PE 必须使用接收到的 MAC/IP 通告路由和以太网 A-D 每个 EVI/每个 ES 路由来构建用于通告 MAC 地址的下一跳集。

每个下一跳都包含一个 MPLS 标签堆栈,出口 PE 将使用该标签堆栈转发数据包。这个标签栈的确定方式如下:

- 如果下一跳是作为 MAC 路由的结果构建的,则必须使用此标签堆栈。但是,如果该 PE 的 MAC 路由不存在,则下一跳和 MPLS 标签堆栈将作为以太网 A-D 路由的结果构建。请注意,以下描述适用于确定到达指定 PE 的特定下一跳的标签堆栈,远程 PE 从中接收并导入了与 MAC 宣告中存在的具有相同 ESI 和以太网标签的以太网 AD 路由。以下描述中提到的以太网 A-D 路由是指从该指定 PE 导入的路由。

- 如果每个 ES 的以太网 A-D 路由集和每个 EVI 的以太网 A-D 路由存在,则必须使用来自后一个路由的标签。

下面的例子解释了上面的内容。

假设一个 CE (CE1),它双归属到 LAG 接口 (ES1) 上的两个 PE(PE1 和 PE2),并在 VLAN1(映射到 EVI1)上发送源 MAC 地址为 MAC1 的数据包。远程 PE,例如 PE3,能够获知 MAC1 可通过 PE1 和 PE2 访问。如果PE1 和PE2 从CE1 收到带有MAC1 的数据包,它们都可以在BGP 中通告MAC1。如果不是这种情况,并且如果 MAC1 仅由 PE1 通告,PE3 仍然认为 MAC1 可通过 PE1 和 PE2 访问,因为 PE1 和 PE2 都为 ES1 和以太网 AD 通告每个 ES 路由的一组以太网 AD <EVI1, ES1> 的每个 EVI 路由。

将数据包发送到 PE1 的 MPLS 标签堆栈是到达 PE1(在堆栈顶部)的 MPLS LSP 堆栈,然后是 PE1 为 CE1 的 MAC 通告的 EVPN 标签。

将数据包发送到 PE2 的 MPLS 标签堆栈是到达 PE2(堆栈顶部)的 MPLS LSP 堆栈,然后是 PE2 为 <ES1, VLAN1> 通告的以太网 AD 路由中的 MPLS 标签,如果 PE2 没有在 BGP 中通告 MAC1。

我们将这些标签栈称为 MPLS 下一跳。

远程 PE (PE3) 现在可以在 PE1 和 PE2 之间对从其 CE 接收的、目的地为 CE1 的流量进行负载均衡。 PE3 可以使用 N 元组流信息将流量散列到 MPLS 下一跳之一中,以实现 IP 流量的负载均衡。或者,PE3 可以依赖源 MAC 地址进行负载均衡。

请注意,一旦 PE3 决定向 PE1 或 PE2 发送特定数据包,它可以使用常规 MPLS 程序从多个可能路径中选择一个到达特定远程 PE。例如,如果隧道技术基于 RSVP-TE LSP,并且 PE3 决定向 PE1 发送特定数据包,则 PE3 可以从多个以 PE1 作为目的地的 RSVP-TE LSP 中进行选择。

当PE1或PE2收到PE3发往CE1的报文时,如果报文是已知单播报文,则转发给CE1。如果是 BUM 报文,则只有 PE1 或 PE2 中的一个必须将报文转发给 CE。是PE1还是PE2将该报文转发给CE是根据两者中的哪一个是DF来决定的。

14.2、PE与本地CE之间的流量负载均衡

一个CE可以配置多个接口连接不同的PE或同一个PE进行负载均衡,采用LAG等技术。 PE 和 CE 可以使用以下机制之一将流量负载均衡到这些接口上。

14.2.1、数据平面学习

假设PE对从本地CE学习到的本地MAC地址进行数据平面学习。如果 PE 和 CE 之间的技术支持多路径,这使 PE 能够学习特定的 MAC 地址并将其与一个或多个接口相关联。 PE 现在可以在多个接口上对发往该 MAC 地址的流量进行负载均衡。

CE 是否可以对它在多个接口上生成的流量进行负载均衡取决于 CE 的实现。

14.2.2、控制平面学习

CE 可以是在所有接口上使用控制协议通告相同 MAC 地址的主机。这使 PE 能够了解主机的 MAC 地址并将其与所有接口相关联。 PE 现在可以在所有这些接口上对发往主机的流量进行负载均衡。主机还可以将其生成的流量负载均衡到这些接口上,接收流量的 PE 使用 EVPN 转发程序来转发流量。

15、MAC移动性

指定的主机或终端站(由其 MAC 地址定义)可以从一个以太网段移动到另一个以太网段;这被称为“MAC 移动性”或“MAC 移动”,它不同于多宿主情况,在这种情况下,指定的 MAC 地址可通过同一以太网段的多个 PE 访问。在 MAC 移动中,将有两组 MAC/IP 宣告路由,一组带有新的以太网段,另一组带有以前的以太网段,并且 MAC 地址似乎可以通过这些段中的每一个访问。

为了让 EVPN 实例中的所有 PE 能够正确地确定 MAC 地址的当前位置,通过前一个以太网段可达的所有通告必须被 PE 撤回,对于前一个以太网段,已经通告了它。

如果使用数据平面进行本地学习,这些 PE 将无法检测到 MAC 地址已移动到另一个以太网段,以及从其他 PE 接收到具有 MAC 移动性扩展社区属性的 MAC/IP 通告路由成为这些 PE 撤回宣告的触发因素。如果使用控制或管理平面执行本地学习,则这些交互将触发这些 PE 撤回其宣告。

在指定 MAC 有多次移动的情况下,可能在相同的两个以太网段之间,可能会有多次撤回和重新宣告。为了确保 EVPN 实例中的所有 PE 通过介入 BGP 基础设施正确接收所有这些,必须在 MAC 移动性扩展社区属性中引入序列号。

为了正确处理移动性事件,实现必须处理发生序列号回绕的场景。

指定 MAC 地址的每个 MAC 移动性事件将包含使用以下规则设置的序列号:

- 第一次通告 MAC 地址的 PE 通告它没有 MAC 移动性扩展社区属性。

- 检测到本地连接的 MAC 地址的 PE 之前收到了具有不同以太网段标识符的 MAC/IP 宣告路由,然后在带有序列号的 MAC 移动性扩展社区属性标记的 MAC/IP 宣告路由中宣告该 MAC 地址比接收到的 MAC/IP 宣告路由的 MAC 移动性扩展社区属性中的序列号大 1。在指定 MAC 地址的第一次移动事件的情况下,接收到的 MAC/IP 宣告路由不携带 MAC 移动扩展社区属性,因此假设对接收到的路由中的序列号值设置为 0这种处理。

- 检测到本地连接的 MAC 地址的 PE 之前收到了具有相同非零以太网段标识符的 MAC/IP 通告路由,并通过以下方式通告它:

1.没有MAC Mobility扩展团体属性,如果接收到的路由没有携带该属性。

2. 一个 MAC 移动性扩展社区属性,其序列号等于接收到的 MAC/IP 宣告路由中序列号中最高的一个,如果接收到的路由标记有 MAC移动性扩展社区属性。

- 检测到本地连接的 MAC 地址的 PE 之前收到了具有相同零以太网段标识符的 MAC/IP 宣告路由(单宿主场景),并使用正确设置序列号的 MAC 移动性扩展社区属性来宣告它。在单宿主场景的情况下,不需要进行 ESI 比较。 ESI 比较是针对多宿主进行的,以防止错误检测连接到同一多宿主站点的 PE 之间的 MAC 移动。

PE 收到 MAC 地址的 MAC/IP 通告路由,该 MAC 地址具有不同的以太网段标识符和更高的序列号,而不是它先前通告的那个,撤消它的 MAC/IP 通告路由。如果两个(或多个)PE 发布相同的MAC 地址,但序列号相同但以太网段标识符不同,则收到这些路由的PE 会选择IP 地址最低的PE 发布的路由作为最佳路由。如果 PE 是 MAC 路由的始发者,并且它收到与它生成的序列号相同的相同 MAC 地址,它将自己的 IP 地址与远程 PE 的 IP 地址进行比较,并选择最低的 IP。如果它自己的路由不是最好的,它就会撤回路由。

15.1、MAC重复问题

由于两个(或更多)主机错误配置了相同(重复)的 MAC 地址,因此可能会出现相同的 MAC 地址被同一 VLAN 中的不同 PE 获知的情况。在这种情况下,源自这些主机的流量将触发连接到这些主机的 PE 之间的连续 MAC 移动。重要的是要认识到这种情况并避免将序列号(在 MAC 移动性扩展社区属性中)增加到无穷大。为了补救这种情况,通过本地学习检测到 MAC 移动事件的 PE 启动一个 M 秒计时器(默认值为 M = 180),如果它在计时器到期之前检测到 N 个 MAC 移动(使用一个默认值 N = 5),则得出重复 MAC 情况发生的结论。 PE 必须提醒操作员并停止发送和处理该 MAC 地址的任何 BGP MAC/IP 宣告路由,直到操作员采取纠正措施。 M 和 N 的值必须是可配置的,以允许操作员控制的灵活性。请注意,EVPN 实例中的其他 PE 会将重复 MAC 地址的流量转发到通告重复 MAC 地址的 PE 之一。

15.2、静态MAC 地址

在某些情况下,需要将某些 MAC 地址配置为静态地址,以便它们不受 MAC 移动的影响。在这种情况下,这些 MAC 地址通过 MAC 移动性扩展社区进行通告,其中静态标志设置为 1,序列号设置为零。如果 PE 收到这样的宣告,然后通过本地学习学习到相同的 MAC 地址,那么 PE 必须提醒操作员。

16、组播和广播

特定 EVPN 实例中的 PE 可以使用入口复制或 P2MP LSP 向其他 PE 发送多播流量。

16.1、入口复制

PE 可以使用入口复制来泛洪 BUM 流量,如第 11 节(“多目的流量的处理”)中所述,一个指定的广播包必须发送到所有远程 PE。然而,用于多播流的指定多播分组可以仅发送到PE的子集。具体地,可以将指定的多播流仅发送到具有对多播流感兴趣的接收者的那些PE。根据 [RFC7117] 使用显式跟踪来确定哪些 PE 具有指定多播流的接收器。

16.2、P2MP LSP

PE 可以使用“包含”树来发送 BUM 数据包。这个术语是从 [RFC7117] 借来的。

在服务提供商 (service provider,SP) 网络中可以使用多种传输技术。对于包含 P 组播树,这些传输技术包括由 RSVP-TE 或多点 LDP (mLDP) 创建的点对多点 LSP。

16.2.1、包容树

包含树允许在 SP 网络中使用单个多播分发树(称为包含 P-多播树)来承载来自指定 PE 上的一组指定 EVPN 实例的所有多播流量。可以建立一个特定的 P-multicast 树来承载属于单个 EVPN 实例的站点发起的流量,或者承载属于多个 EVPN 实例的站点发起的流量。在同一棵树上承载多个 EVPN 实例的流量的能力称为“聚合”,该树称为聚合包含 P 组播树或简称聚合包含树。聚合包含树需要包括作为使用该树的任何 EVPN 实例的成员的每个 PE。这意味着 PE 可能会收到 BUM 流量,即使它没有任何对接收该流量感兴趣的接收器。

本文档中定义的包含或聚合包含树是 P2MP 树,P2MP 树仅用于承载连接到作为树根的 PE 的 EVPN CE 的流量。

包含树的信令过程与[RFC7117]中的相同,VPLS A-D 路由替换为包含多播以太网标签路由。包含树的 P 隧道属性 [RFC7117] 与包含多播以太网标签路由一起通告,如第 11 节(“多目的流量的处理”)中所述。请注意,对于聚合包含树,PE 可以使用上游标签“聚合”同一 P2MP LSP 上的多个 EVPN 实例。聚合过程与 [RFC7117] 中描述的过程相同,VPLS A-D 路由被 EVPN 包含多播以太网标签路由取代。

17、收敛

本节介绍从不同类型的网络故障中进行故障恢复。

17.1、PE之间的传输链路和节点故障

使用现有的 MPLS 快速重路由机制可以在连接 PE 的基础设施中出现传输链路和节点故障的情况下提供大约 50 毫秒的故障恢复。

17.2、PE故障

假设与 PE1 和 PE2 双归属的主机 CE1。如果 PE1 发生故障,远程 PE、PE3 可以根据 BGP 会话的故障发现这一点。如果双向转发检测 (BFD) 用于检测 BGP 会话故障,则此故障检测可以在亚秒范围内。 PE3 可以更新它的转发状态以开始将 CE1 的所有流量仅发送到 PE2。

17.3、PE到CE网络故障

如果多宿主 CE 与其连接的其中一个 PE 之间的连接失败,则 PE 必须撤回先前为该 ES 通告的每个 ES 路由的以太网 A-D 集。这使远程 PE 能够从可用于将流量转发到 CE 的 MPLS 下一跳集中删除到此特定 PE 的 MPLS 下一跳。当 PE 上的 MAC 表项老化时,PE 必须从 BGP 中撤回 MAC 地址。

当以太网段上的以太网标签退役时,PE 必须根据为被退役影响的 <ESI, Ethernet tags> 宣布的 EVI 路由撤回以太网 A-D。此外,PE 还必须撤回受到撤回影响的 MAC/IP Advertisement 路由。

实现应使用每个 ES 路由的以太网 A-D 来优化 MAC/IP 宣告路由的撤销。当 PE 收到来自通告 PE 的特定以太网 A-D 路由的撤销时,它应该认为从与来自通告 PE 的以太网 A-D 路由相同的 ESI 中学习到的所有 MAC/IP 通告路由都已撤销。这可以在 PE 到 CE 故障的情况下优化网络收敛时间。

18、帧排序

在 MAC 地址中,如果目标 MAC 地址(跟在最后一个 MPLS 标签之后)的最高有效八位字节的第一个半字节(第 8 位到第 5 位)的值恰好是 0x4 或 0x6,则以太网帧可能会被误解中间 P 节点基于深度数据包检查执行 ECMP,将其作为 IPv4 或 IPv6 数据包,从而导致负载均衡属于不同 ECMP 路径上的同一流的数据包,并使这些数据包受到不同的延迟。因此,属于同一流的数据包可能会乱序到达目的地。在没有任何故障的稳定状态下,这种乱序交付可能会发生,从而对网络运营产生重大影响。

为了避免任何此类错误排序,应用以下规则:

- 如果网络对其 ECMP 使用深度数据包检查,则在发送 EVPN 封装时,“首选 PW MPLS 控制字”[RFC4385] 应该使用值为 0(例如,值为 0 的 4 字节字段) MP2P LSP 上的数据包。

- 如果网络使用熵标签 [RFC6790],那么在通过 MP2P LSP 发送 EVPN 封装的数据包时,不应使用控制字。

- 当通过 P2MP LSP 或 P2P LSP 发送 EVPN 封装的数据包时,不应使用控制字。

19、安全考虑

[RFC4761] 和 [RFC4762] 中讨论的安全注意事项适用于本文档,用于通过附件电路 (AC) 进行数据平面中的 MAC 学习以及通过 MPLS/IP 核心泛洪未知单播和 ARP 消息。 [RFC4364] 中讨论的安全注意事项适用于本文档,用于 MPLS/IP 核心上控制平面中的 MAC 学习。本节介绍了其他注意事项。

正如 [RFC4761] 中提到的,在 VPN 中实现数据隐私和防止拒绝服务攻击有两个方面:保护控制平面和保护转发路径。控制平面的妥协可能导致 PE 将属于某个 EVPN 的客户数据发送到另一个 EVPN,或黑洞 EVPN 客户数据,甚至将其发送给窃听者,从数据隐私的角度来看,这些都是不可接受的。此外,控制平面的入侵可能为未经授权的 EVPN 数据使用提供机会(例如,利用多播树内的流量复制来放大基于发送大量流量的拒绝服务攻击)。

本文档中的机制将 BGP 用于控制平面。因此,[RFC5925] 中讨论的技术有助于验证 BGP 消息,从而更难欺骗更新(可用于将 EVPN 流量转移到错误的 EVPN 实例)或撤回(拒绝服务攻击)。在多 AS 主干选项 (b) 和 (c) [RFC4364] 中,这也意味着保护自治系统边界路由器 (ASBR)、PE 或路由反射器之间的 AS 间 BGP 会话。

BGP 安全考虑的进一步讨论可以在 BGP 规范本身 [RFC4271] 和 BGP 安全分析 [RFC4272] 中找到。使用 TCP MD5 签名选项保护 BGP 会话的原始讨论可在 [RFC5925] 中找到,而 [RFC6952] 包括对 BGP 密钥和身份验证问题的分析。

请注意,[RFC5925] 将无助于保持 MPLS 标签的私密性:知道标签,人们可以窃听 EVPN 流量。这种窃听还需要访问 SP 网络内的数据路径。 VPN 服务的用户应采取适当的预防措施(例如加密)来保护通过 VPN 交换的数据。

保护数据平面的要求之一是只能从有效接口接受 MPLS 标签。对于 PE,有效接口包括来自 PE 自身 AS 中其他路由器的链路。对于 ASBR,有效接口包括来自 ASBR 自身 AS 中其他路由器的链路,以及来自具有指定 EVPN 实例的 AS 中其他 ASBR 的链路。在多自治系统 EVPN 实例的情况下,仅接受来自有效接口的 EVPN 数据包这一点尤为重要。

帮助限制仿冒 MAC 地址进入网络的恶意流量也很重要。第 15.1 节中描述的机制显示了如何检测重复的 MAC 地址并防止连续的虚假 MAC 移动性,第 15.2 节中描述的机制显示了如何将 MAC 地址固定到指定的以太网段,这样,如果它们出现在任何其他以太网段之后,则可以防止这些 MAC 地址的流量从其他以太网段进入 EVPN 网络。

20、IANA 考虑

本文档定义了一个新的 NLRI,称为“EVPN”,使用多协议扩展在 BGP 中承载。 此 NLRI 使用现有的 AFI 25 (L2VPN)。 IANA 已为 BGP EVPN 分配了 SAFI 值 70。

IANA 在 [RFC7153] 中分配了以下 EVPN 扩展社区子类型,本文档是它们的唯一参考。

0x00 MAC 移动性 [RFC7432]

0x01 ESI 标签 [RFC7432]

0x02 ES-导入路由目标 [RFC7432]

本文档创建了一个名为“EVPN 路由类型”的注册表。 新注册将通过 [RFC5226] 中定义的“RFC 要求”程序进行。 注册表的最大值为 255。初始注册如下:

0 保留 [RFC7432]

1 以太网自动发现 [RFC7432]

2 MAC/IP 宣告 [RFC7432]

3 包含多播以太网标签 [RFC7432]

4 以太网段 [RFC7432]

21、参考文献 21.1、规范性引用

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997,<http://www.rfc-editor.org/info/rfc2119>.

[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006, <http://www.rfc-editor.org/info/rfc4271>.

[RFC4360] Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended Communities Attribute", RFC 4360, February 2006, <http://www.rfc-editor.org/info/rfc4360>.

[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private Networks (VPNs)", RFC 4364, February 2006, <http://www.rfc-editor.org/info/rfc4364>.

[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter,"Multiprotocol Extensions for BGP-4", RFC 4760, January 2007, <http://www.rfc-editor.org/info/rfc4760>.

[RFC4761] Kompella, K., Ed., and Y. Rekhter, Ed., "Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling", RFC 4761, January 2007, <http://www.rfc-editor.org/info/rfc4761>.

[RFC4762] Lasserre, M., Ed., and V. Kompella, Ed., "Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling", RFC 4762, January 2007, <http://www.rfc-editor.org/info/rfc4762>.

[RFC7153] Rosen, E. and Y. Rekhter, "IANA Registries for BGP Extended Communities", RFC 7153, March 2014, <http://www.rfc-editor.org/info/rfc7153>.

21.2、信息性参考

[802.1D-REV]"IEEE Standard for Local and metropolitan area networks - Media Access Control (MAC) Bridges", IEEE Std. 802.1D, June 2004.

[802.1Q] "IEEE Standard for Local and metropolitan area networks -Media Access Control (MAC) Bridges and Virtual Bridged Local Area Networks", IEEE Std 802.1Q(tm), 2014 Edition, November 2014.

[RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC 4272, January 2006, <http://www.rfc-editor.org/info/rfc4272>.

[RFC4385] Bryant, S., Swallow, G., Martini, L., and D. McPherson,"Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN", RFC 4385, February 2006, <http://www.rfc-editor.org/info/rfc4385>.

[RFC4664] Andersson, L., Ed., and E. Rosen, Ed., "Framework for Layer 2 Virtual Private Networks (L2VPNs)", RFC 4664, September 2006, <http://www.rfc-editor.org/info/rfc4664>.

[RFC4684] Marques, P., Bonica, R., Fang, L., Martini, L., Raszuk, R., Patel, K., and J. Guichard, "Constrained Route Distribution for Border Gateway Protocol/MultiProtocol Label Switching (BGP/MPLS) Internet Protocol (IP) Virtual Private Networks (VPNs)", RFC 4684, November 2006, <http://www.rfc-editor.org/info/rfc4684>.

[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.

[RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP Authentication Option", RFC 5925, June 2010, <http://www.rfc-editor.org/info/rfc5925>.

[RFC6514] Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs", RFC 6514, February 2012, <http://www.rfc-editor.org/info/rfc6514>.

[RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and L. Yong, "The Use of Entropy Labels in MPLS Forwarding", RFC 6790, November 2012, <http://www.rfc-editor.org/info/rfc6790>.

[RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide", RFC 6952, May 2013, <http://www.rfc-editor.org/info/rfc6952>.

[RFC7117] Aggarwal, R., Ed., Kamite, Y., Fang, L., Rekhter, Y., and C. Kodeboniya, "Multicast in Virtual Private LAN Service (VPLS)", RFC 7117, February 2014, <http://www.rfc-editor.org/info/rfc7117>.

[RFC7209] Sajassi, A., Aggarwal, R., Uttaro, J., Bitar, N., Henderickx, W., and A. Isaac, "Requirements for Ethernet VPN (EVPN)", RFC 7209, May 2014, <http://www.rfc-editor.org/info/rfc7209>.

400-080-6079