华为DCN网络之:EVPN

1 EVPN背景与基本术语

EVPN颠覆了传统L2VPN数据面学习MAC地址的方式,引入控制面学习MAC和IP指导数据转发,实现了转控分离。

EVPN解决传统L2VPN的典型问题,实现双活、快速收敛、简化运维等价值。

EVPN的控制平面采用MP-BGP,数据平面支持多种类型的隧道,例如MPLS、GRE隧道、SRv6。本课程以MPLS作为外层隧道转发技术进行讲解。

  • 控制平面:PE之间交互BGP EVPN报文,传递MAC和IP地址。
  • 数据平面:由IP隧道或MPLS标签转发路径组成数据转发路径。只负责数据转发,无需广播泛洪学习MAC地址。

基本术语

  • ES(Ethernet Segment)代表用户站点(设备或网络)连接到PE的一组以太链路,使用ESI(Ethernet Segment Identifier)来表示。
  • EVI(EVPN instance)代表一个EVPN实例,用于标识一个EVPN客户。
  • MAC-VRF是PE上属于EVI的MAC地址表。
  • RD(Route Distinguisher)是EVPN的唯一标识,用于区分EVI。
  • RT(Route Target)用于控制EVPN路由的引入。
  • DF(Designated Forwarder)用于在CE多归属场景下只转发一份BUM流量至CE。
  • ESI Label是EVPN Type 1路由所携带的扩展团体属性。在多归场景下,用于实现快速收敛和水平分割。
  • BUM(Broadcast、Unknown unicast、Multicast)Label是由Type 3路由携带,用于转发BUM流量。
  • 单播Label由Type 2路由携带,用于转发单播流量。

ES和ESI

ES代表用户站点(设备或网络)连接到PE的一组以太链路,使用ESI来表示。

ESI总长度为10个字节,且在全网范围内唯一。

同一ES双归的两个PE配置的ESI必须相同。例如PE1和PE2上配置相同的ESI为1(此处数值仅为方便理解)。

ESI的格式

Type(1Byte): ESI Value(9 Bytes)

  1. Type 0:ESI的值由管理员手工配置
  2. Type 1:当PE和CE之间使用LACP时,ESI的值为:CE LACP System MAC address (6 Byte) + CE LACP Port Key (2 Byte) + 0x00 (1 Byte)
  3. Type 2:Auto generated by MSTP
  4. Type 3: System MAC + Local Discriminator
  5. Type 4: Router ID + Local Discriminator
  6. Type 5: AS Number + Local Discriminator

配置及查看

powershell 复制代码
[*PE1] interface eth-trunk 10
[*PE1-Eth-Trunk10] esi 0000.1111.2222.1111.1111
<PE1> display bgp evpn all esi
Number of ESI for EVPN address family: 1
         ESI                                  IFName/Bridge-domain     
 0000.1111.2222.1111.1111            Eth-Trunk10

EVI和MAC-VRF

EVI代表一个EVPN实例,用于标识一个EVPN客户。
MAC-VRF是PE上属于EVI的MAC地址表。

RD和RT

RD是EVPN实例的唯一标识,用于区分EVI。
RT作用是给路由打标签,用于控制EVPN路由的引入。

2 EVPN工作原理

2.1 简介与交互流程

EVPN路由

EVPN定义了一种新的BGP NLRI(Network Layer Reachable Information)来承载所有的EVPN路由,被称为EVPN NLRI。

EVPN NLRI被MP-BGP携带。MP-BGP支持多协议扩展,定义EVPN的AFI(Address Family Identifier)是25,SAFI(Subsequent Address Family Identifier)是70。

RFC7432中定义了EVPN的Type 1~Type 4共4类路由。随着EVPN协议的发展,越来越多的路由被新定义。这里首先介绍EVPN四种类型的路由。

类型 名称 作用 受益
Type1 Ethernet Auto Discovery Route 别名MAC地址批量撤销多活指示通告ESI标签 环路避免快速收敛负载分担
Type2 MAC/IP Advertisement Route MAC地址学习通告MAC/IP绑定MAC地址移动性 ARP抑制主机迁移
Type3 Inclusive Multicast Route 组播隧道端点自动发现&组播类型自动发现 支持BUM流量转发
Type4 Ethernet Segment Route ES成员自动发现DF选举 多活,单活支持
Type5 Prefix Route 传递IP路由(Type2只能传递32位IP路由) 支持L3 VPN功能
EVPN工作流程

启动阶段

  1. EVPN对等体交互EVPN Type 3路由建立BUM流量转发表。
  2. EVPN对等体交互Type 4路由完成ES发现和DF选举(在ES多归属场景下)。
  3. EVPN对等体交互Type 1路由,交互ESI标签,进而实现水平分割、别名等功能。

流量转发

CE侧流量触发PE通过Type 2路由通告MAC地址,该路由携带分配的标签信息,后续根据该标签执行单播流量转发。

EVPN表项介绍

EVPN维护三张表用于指导流量转发:

  1. MAC-VRF表用于记录已知单播流量的转发。
  2. BUM流量转发表用于指导广播、未知单播和组播流量转发。
  3. ES成员表用于记录用户接入PE信息。
MAC-VRF

在PE上创建EVPN实例,配置它的RD和RT。PE上本地将激活EVPN,产生MAC-VRF,其内容为空。

BUM流量转发表

配置PE之间对等体(Peer)关系。以PE1为例,它将发送Type 3路由发现邻居并分配标签。

PE2、PE3和PE4生成BUM流量转发表。

这个过程中所有PE均发送Type 3类型路由,最终形成稳定的BUM流量转发表。


DF选举

在PE连接CE的接口配置ESI。PE会交互Type 4路由,传播ESI并进行DF选举。

当CE多归到多个PE时,只能有1个PE向CE转发BUM流量,选出这个PE的过程被称为DF选举。

PE通过特定算法选举出DF。本例中假设PE2和PE3被选举为DF,则只允许PE2和PE3转发BUM流量给CE。

分发ESI标签:水平分割

PE通过Type 1类路由分发ESI标签。ESI Label用于水平分割防止同一ES来的流量又绕回到该ES。

此过程中所有PE均发送Type 1路由,生成完整的ES成员信息表。

总结

  1. 启动阶段

EVPN的启动阶段生成MAC-VRF、BUM流量转发表和ES成员信息表。此时MAC-VRF表项为空。

  1. 流量转发阶段

EVPN流量转发阶段由CE侧用户流量发起开始。

用户CE1和CE2不感知PE设备的EVPN协议交互。

本例中CE1访问CE2业务流程如下:

MAC地址学习

CE1访问CE2,首先发送ARP请求。PE1接收报文,生成本地MAC表条目。

  • MAC地址通告

PE1 EVPN将本地MAC地址条目生成Type 2路由,携带PE1设备分配的标签301。

远端的PE设备通过MP-BGP学习到EVPN路由,生成MAC表条目。

EVPN支持CE多活接入PE。PE2感知直连CE1,刷新最优的MAC表条目,并生成和通告Type 2路由。

  • 远端MAC地址学习

因PE1和PE2分配不同的MPLS标签,PE3和PE4有两条路径到达CE1。

ARP广播转发

CE1发送的ARP请求达到PE1。PE1通过数据面学习到CE1的MAC地址,然后通过Type 2路由发送给所有邻居。

控制平面行为完成后,PE1将执行数据平面行为,即转发ARP广播请求。最后因PE3为DF,PE3转发ARP广播报文到CE2。

  • PE1 to PE3

PE1到PE3的ARP报文查询BUM流量转发表转发,携带103标签。PE3为DF,转发报文到Port3。

  • PE1 to PE4

PE1到PE4的流量携带标签104。PE4根据标签确认是BUM流量,因PE4为非DF,丢弃报文。

  • PE1 to PE2

由于PE1和PE2属于相同ES,PE1到PE2的流量同时携带ESI标签202和BUM标签102。PE2接收到报文发现有标签202,则丢弃该报文。

ARP单播应答

CE2单播回复ARP应答。PE3首先本地学习CE2的MAC地址,然后触发EVPN控制面行为,即发送Type 2路由。PE3查询MAC地址表转发单播报文到PE1,最后PE1转发ARP报文到CE1。

  • 本地学习MAC地址

CE2回复单播ARP应答。PE3通过数据面学习到CE2的MAC地址,生成本地MAC-VRF表项。

  • MAC地址通告

PE3生成并通告Type 2路由。其他PE接收PE3发出的Type 2路由,刷新本地MAC表项。

PE4的接口属于ESI 2,因此刷新更优的MAC地址表。同时生成和发布Type 2路由。

  • 数据平面转发

PE3通过负载分担算法找出下一跳(如:PE1)发送报文,携带标签301。PE1接收报文后向Port1转发。

2.2 EVPN路由类型详解

Ethernet A-D路由

当各个PE之间的BGP邻居关系建立成功后,PE之间会传递以太网自动发现路由,该路由可想其他PE通告本端PE对接入站点的MAC地址的可达性,即PE对连接的站点是否可达

以太自动发现路由(Ethernet Auto-Discovery Route)有两种类型:

  • Ethernet A-D per ES route:主要用于快速收敛、冗余模式和水平分割。
  • Ethernet A-D per EVI route:主要用于别名。
NLRI格式 字段说明
Route Distinguisher(8 Byte) Ethernet Auto-Discovery Per ES路由上该字段是由PE上设置的源IP地址组合而成,例如X.X.X.X:0;Ethernet Auto-Discovery Per EVI路由上该字段为EVPN实例下设置的RD(Route Distinguisher)值。
Ethernet Segment Identifier(10 Byte) PE与某一CE的连接定义的唯一标识。Ethernet Auto-Discovery Per ES路由上该字段为全F;Ethernet Auto-Discovery Per EVI路由上该字段用于标识一个ES下的不同的子广播域,全0标识该EVI只有一个广播域。
Ethernet Tag ID(4 Byte) 该字段为Ethernet Tag的标识,RFC建议最后20 bit可以为VLAN ID。
MPLS Label(3 Byte) Ethernet Auto-Discovery Per ES路由上该字段为全0;Ethernet Auto-Discovery Per EVI路由上该字段为EVPN单播流量负载分担转发时使用的MPLS标签。
MAC/IP地址通告路由

可以携带本端PE上EVPN实例的RD值、ESI值以及EVPN实例对应的私网标签。除了NLRI,MAC/IP地址通告路由还包含了EVPN实例的RT值、路由下一跳等信息。该类型路由可以用于从本端PE向其它PE发布单播MAC/IP地址的可达信息。

NLRI格式 字段说明
Route Distinguisher(8 Byte) 该字段为EVPN实例下设置的RD值
Ethernet Segment Identifier(10 Byte) PE与某一CE的连接定义的唯一标识
Ethernet Tag ID(4 Byte) 该字段为当前设备上实际配置的VLAN ID
MAC Address Length(1 Byte) 该字段被设置为48 bit
MAC Address(6 Byte) 该字段为此路由携带的主机MAC地址
IP Address Length(1 Byte) 该字段为可选,可被设置为32或128 bit
IP Address(0或4或16 Byte) 该字段为可选,携带的主机IP地址
MPLS Label1(3 Byte) 该字段由下游路由器分配,用于二层业务流量转发
MPLS Label2(0或3 Byte) 该字段为可选,用于三层业务流量转发

MAC/IP地址通告路由可以携带本端PE上EVPN实例的RD值、ESI值以及EVPN实例对应的私网标签

  1. 主机MAC地址通告

如果需要实现接入不同PE设备的主机间二层业务互通,则两台PE间需要相互学习主机MAC。作为BGP EVPN对等体的PE之间通过交换MAC/IP地址通告路由,可以相互通告已经获取到的主机MAC地址。其中,MAC Address Length和MAC Address字段为主机MAC地址。

  1. 主机ARP通告

MAC/IP地址通告路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在PE之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP地址通告路由也称为ARP类型路由。

  1. 主机IP路由通告

如果需要实现接入不同PE设备的IPv4主机间三层业务互通,则两台PE间需要互相学习主机IPv4路由。作为BGP EVPN对等体的PE之间通过交换MAC/IP地址通告路由,可以相互通告已经获取到的主机IPv4地址。其中,IP Address Length和IP Address字段为主机IP路由的目的地址,同时MPLS Label2字段必须携带三层业务流量转发使用的标签。此时的MAC/IP地址通告路由也称为IRB类型路由。

  1. 主机ND信息通告

MAC/IP地址通告路由可以同时携带主机MAC地址+主机IPv6地址,因此该路由可以用来在PE之间传递主机ND表项,实现主机ND信息通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IPv6地址。此时的MAC/IP地址通告路由也称为ND类型路由。

  1. 主机IPv6路由通告

如果需要实现接入不同PE设备的IPv6主机间三层业务互通,则两台PE间需要互相学习主机IPv6路由。作为BGP EVPN对等体的PE之间通过交换MAC/IP地址通告路由,可以相互通告已经获取到的主机IPv6路由。其中,IP Address Length和IP Address字段为主机IPv6路由的目的地址,同时MPLS Label2字段必须携带三层业务流量转发使用的标签。此时的MAC/IP地址通告路由也称为IRBv6类型路由。

Inclusive Multicast路由

集成多播路由(Inclusive Multicast Route):用于处理BUM报文。多播流量包括广播流量、组播流量和未知目的地址的单播流量。

当PE之间的BGP邻居关系建立成功后,PE之间会传递集成多播路由,集成多播路由可以携带本端PE上EVPN实例的RD和RT(Route Target)值,以及Source IP(一般为本端PE的Loopback地址)和PMSI(Provider Multicast Service Interface)信息。PMSI和RT值承载在路由的属性信息中,RD和Source IP承载在路由的NLRI信息中。

NLRI格式 字段说明
Route Distinguisher(8 Byte) 该字段为EVPN实例下设置的RD值
Ethernet Tag ID(4 Byte) 该字段为当前设备上的VLAN ID
IP Address Length(1 Byte) PE上配置的源地址长度
Originating Router's IP Address(4或16 Byte) PE上配置的源地址

PMSI用于携带多播报文传输所使用的隧道类型(Ingress Replication或者MLDP)和隧道标签信息。

当一台PE设备收到多播流量后,会将多播流量以点到多点的形式转发给其他PE设备。PE设备之间通过集成多播路由可以建立传送流量的隧道。

PMSI属性在RFC6514中被定义。在EVPN场景中其Flag字段Leaf位为0,Tunnel类型为6"Ingress Replication"。

Ethernet Segment路由

以太网段路由(Ethernet Segment Route):主要用于DF选举。

以太网段路由可以携带本端PE的ESI值、Source IP地址和RD值(Source IP:0),用来实现连接到相同CE的PE设备之间互相自动发现。

NLRI格式 字段说明
Route Distinguisher(8 Byte) 该字段为EVPN实例下设置的RD值
Ethernet Segment Identifier(10 Byte) 该字段为当前设备与对端连接定义的唯一标识
IP Address Length(1 Byte) 该字段为IP地址长度
Originating Router's IP Address(4 or 16 Byte) 该字段为在PE上配置的源地址
IP前缀路由

IP前缀路由(IP Prefix Route):IP前缀路由用于在网络中传播从接入侧网络收到的主机IP地址信息或主机IP所在的网段信息。

NLRI格式 字段说明
Route Distinguisher(8 Byte) 该字段为EVPN实例下设置的RD值
Ethernet Segment Identifier(10 Byte) PE与某一CE的连接定义的唯一标识
Ethernet Tag ID(4 Byte) 该字段当前仅支持各位置为0
IP Prefix Length(1 Byte) 该字段为此路由携带的IP前缀掩码长度
IP Prefix(4或16Byte) 该字段为此路由携带的IP前缀地址
GW IP Address(4或16Byte) 该字段为默认网关地址
MPLS Label(3 Byte) 三层业务流量转发使用的标签

2.3 EVPN路由特性

快速收敛

EVPN中MAC地址通过BGP控制学习,在大规模的复杂网络下,路由的收敛时间会很长。因此EVPN定义了一种机制用于高效地通知远端PE直接更新转发表,即PE为所有的ES通告Ethernet A-D per ES route。

当PE检测到连接的CE故障,PE撤销对应的MAC地址表,并发送Ethernet A-D per ES route,知会其它PE撤销对应的MAC地址表。

ESI Label扩展团体必须被Ethernet A-D per ES route携带。

水平分割

在CE多归接入到PE场景下,如果CE的链路为All-Active模式,CE发送给一个PE的BUM报文可能被另一个PE环回,所以需要水平分割解决这个问题。

水平分割由所有PE通告携带ESI Label扩展团体属性的Ethernet A-D per ES route实现。例如下图中,PE2(DF)会分配1个ESI标签,来标识ES1,并通过Ethernet A-D per ES route发布给PE1(非DF)。PE1向PE2发BUM报文时需要打上此标签。PE2收到后识别发现是自己分配的标签,即不会向ES1转发。

别名

CE多归多活场景时,可能存在多归的PE中有PE没有学习到CE的MAC地址的情况,导致远端PE只接收到一个PE的MAC/IP通告,从而无法实现PE节点之间路径的负载均衡。别名(aliasing)通过Ethernet A-D per EVI route解决这个问题。别名的功能是让一个PE即使没有从EVI/ES学习到MAC地址,依然有可达性。

本例CE1双归接入PE1和PE2,假设PE1学习到Site1的地址而PE2没有学到,则PE1将通告MAC/IP路由包含具体信息,PE2通过Ethernet A-D per EVI路由通告可达性。因此PE3认为Site1 PE1和PE2均可达。

DF选举

CE多归场景下,ES上可能会被配置有多个Ethernet Tag,只有一个PE会被选举为DF(Designated Forwarder)。DF选举由携带ES-Import属性的Type 4路由完成,其作用是:

  1. 在指定的ES上向CE发送组播和广播。
  2. 向CE泛洪未知单播流量。

2.4 EVPN接入原理

在EVPN网络边缘的PE设备上可以部署多个EVPN实例(EVI,EVPN Instance),每个EVPN实例可以连接一个或者多个用户网络。EVPN支持通过多种服务模式来接入用户网络:

Port Based模式

Port Base模式是一种整个接口接入业务的方式,即连接用户网络的物理接口直接绑定普通EVPN实例,且该接口不创建子接口。此种服务模式只能用于承载二层业务。

示例

powershell 复制代码
[~PE] interface GigabitEthernet 1/0/0
[*PE-GigabitEthernet1/0/0] evpn binding vpn-instance evpna
[*PE-GigabitEthernet1/0/0] commit
[~PE-GigabitEthernet1/0/0] quit
VLAN Based模式

在VLAN Based模式下,连接用户网络的物理接口划分成不同子接口,每个子接口关联不同的VLAN且加入不同的广播域BD(Bridge Domain)。每个广播域BD会与单独的一个EVPN实例进行绑定。此种服务模式可以用于承载二层业务或三层业务。本例有User1和User2,分别使用不同的子接口接入。

  • User1业务使用VLAN 10,从子接口GE1/0/0.1接入。
  • User2业务使用VLAN 20,从子接口GE1/0/0.2接入。

示例

powershell 复制代码
[~PE] bridge-domain 10
[*PE-bd10] evpn binding vpn-instance evpna
[*PE-bd10] quit
[*PE] interface GigabitEthernet 1/0/0.1 mode l2
[*PE-G1/0/0.1] encapsulation dot1q vid 10
[*PE-G1/0/0.1] bridge-domain 10
[*PE-G1/0/0.1] commit
VLAN Bundle模式

在VLAN Bundle模式下,一个EVPN实例可以连接多个用户,不同用户间使用VLAN进行划分,而该EVPN实例会绑定到一个广播域BD上。此类型服务模式中,接入同一个EVPN实例的不同用户共用同一个MAC转发表,因此需要网络中用户的MAC地址唯一。此种服务模式可以用于承载二层业务或三层业务。

VLAN-Aware Bundle模式

在VLAN-Aware Bundle模式下,一个EVPN实例可以连接多个用户,不同用户间使用VLAN进行划分绑定不同的BD。此类型服务模式中,接入同一个EVPN实例的不同用户分别使用独立的与BD对应的MAC转发表(以BD-tag标识)。

3 跨域EVPN

跨域EVPN的解决方案和MPLS VPN解决方案一致,都是三种方案:

  1. OptionA:PE和ASBR之间建立EVPN邻居关系,ASBR之间不需要运行EVPN
  2. OptionB:PE和ASBR之间建立EVPN邻居关系,ASBR之间也建立EVPN邻居关系。
  3. OptionC:ASBR之间建立eBGP邻居关系,自治域内建立IBGP邻居关系,PE之间建立EVPN。

4 EVPN的典型应用场景

4.1 园区网

园区虚拟化园区网络解决方案与云数据中心相同,采用EVPN的NVO解决方案(RFC8365)。

在不同的底层组网上使用VXLAN封装与控制平面EVPN结合,构建灵活的园区Overlay网络。

4.2 数据中心

在云数据中心采用EVPN的NVO(Network Virtualization Overlay)解决方案(RFC8365)。

推荐数据平面使用VXLAN封装,控制平面使用EVPN,构建灵活的数据中心Overlay网络。

4.3 SD-WAN

SD-WAN是新一代的企业分支互联解决方案,支持智能动态选路、ZTP和可视化等特性。

SD-WAN解决方案中,在RR与CPE之间部署EVPN用于在控制平面传递SD-WAN的Overlay VPN路由,数据平面采用IPsec VPN构建安全的转发通道。

5 EVPN的基本配置

两条有用的命令

powershell 复制代码
<HUAWEI> systemview immediately		# 配置立即生效,不需要再敲commit提交
[HUAWEI] undo dcn					# 不关闭某些功能无法配置
相关推荐
海绵波波1071 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
sanzk2 小时前
华为鸿蒙应用开发
华为·harmonyos
热爱跑步的恒川4 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面5 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程7 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
ClkLog-开源埋点用户分析7 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos
mg6687 小时前
鸿蒙系统的优势 开发 环境搭建 开发小示例
华为·harmonyos
模拟IC攻城狮8 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
lqj_本人8 小时前
鸿蒙next选择 Flutter 开发跨平台应用的原因
flutter·华为·harmonyos
幺零九零零8 小时前
【C++】socket套接字编程
linux·服务器·网络·c++