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)
Type 0
:ESI的值由管理员手工配置Type 1
:当PE和CE之间使用LACP时,ESI的值为:CE LACP System MAC address (6 Byte) + CE LACP Port Key (2 Byte) + 0x00 (1 Byte)Type 2
:Auto generated by MSTPType 3
: System MAC + Local DiscriminatorType 4
: Router ID + Local DiscriminatorType 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工作流程
启动阶段
- EVPN对等体交互EVPN Type 3路由建立BUM流量转发表。
- EVPN对等体交互Type 4路由完成ES发现和DF选举(在ES多归属场景下)。
- EVPN对等体交互Type 1路由,交互ESI标签,进而实现水平分割、别名等功能。
流量转发
CE侧流量触发PE通过Type 2路由通告MAC地址,该路由携带分配的标签信息,后续根据该标签执行单播流量转发。
EVPN表项介绍
EVPN维护三张表用于指导流量转发:
- MAC-VRF表用于记录已知单播流量的转发。
- BUM流量转发表用于指导广播、未知单播和组播流量转发。
- 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成员信息表。
总结
- 启动阶段
EVPN的启动阶段生成MAC-VRF、BUM流量转发表和ES成员信息表。此时MAC-VRF表项为空。
- 流量转发阶段
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实例对应的私网标签
- 主机MAC地址通告
如果需要实现接入不同PE设备的主机间二层业务互通,则两台PE间需要相互学习主机MAC。作为BGP EVPN对等体的PE之间通过交换MAC/IP地址通告路由,可以相互通告已经获取到的主机MAC地址。其中,MAC Address Length和MAC Address字段为主机MAC地址。
- 主机ARP通告
MAC/IP地址通告路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在PE之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP地址通告路由也称为ARP类型路由。
- 主机IP路由通告
如果需要实现接入不同PE设备的IPv4主机间三层业务互通,则两台PE间需要互相学习主机IPv4路由。作为BGP EVPN对等体的PE之间通过交换MAC/IP地址通告路由,可以相互通告已经获取到的主机IPv4地址。其中,IP Address Length和IP Address字段为主机IP路由的目的地址,同时MPLS Label2字段必须携带三层业务流量转发使用的标签。此时的MAC/IP地址通告路由也称为IRB类型路由。
- 主机ND信息通告
MAC/IP地址通告路由可以同时携带主机MAC地址+主机IPv6地址,因此该路由可以用来在PE之间传递主机ND表项,实现主机ND信息通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IPv6地址。此时的MAC/IP地址通告路由也称为ND类型路由。
- 主机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路由完成,其作用是:
- 在指定的ES上向CE发送组播和广播。
- 向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解决方案一致,都是三种方案:
- OptionA:PE和ASBR之间建立EVPN邻居关系,ASBR之间不需要运行EVPN
- OptionB:PE和ASBR之间建立EVPN邻居关系,ASBR之间也建立EVPN邻居关系。
- 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 # 不关闭某些功能无法配置