「BGP MPLS-based EVPN」- EVPN-NLRI

  CREATED BY JENKINSBOT

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

EVPN NLRI 是 MP-BGP 的新型 Path Attribute 扩展,被包含于 MP-REACH-NLRI 中,但新定义 NLRI 的格式;

属性概述

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

Frame 1: 163 bytes on wire (1304 bits), 163 bytes captured (1304 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_2e:4a:35 (00:e0:fc:2e:4a:35), Dst: HuaweiTe_0b:50:b5 (00:e0:fc:0b:50:b5)
Internet Protocol Version 6, Src: 2011::1, Dst: 2011::2
Transmission Control Protocol, Src Port: 49152, Dst Port: 179, Seq: 1, Ack: 1, Len: 77
Border Gateway Protocol - UPDATE Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 77
    Type: UPDATE Message (2)
    Withdrawn Routes Length: 0
    Total Path Attribute Length: 54
    Path attributes
        ...
        Path Attribute - MP_REACH_NLRI
            ...
            Address family identifier (AFI): 25
            Subsequent address family identifier (SAFI): 70
            ...

注:如上抓包报文并非实际的 EVPN NLRI 抓包,而是在 IPv6 的基础上进行简单修改的,目的是为了回忆 MP-BGP 报文格式;

属性字段

AFI and SAFI

其规定 EVPN 的 AFI(Address Family Identifier)是 25,SAFI(Subsequent Address Family Identifier)是 70;

Length of Next Hop Network Address (1 octet)

该字段表示下一跳地址的长度;

Network Address of Next Hop (variable)

该字段为 EVPN 路由的下一跳地址;

Reserved (1 octet)

全为 0

EVPN NLRI (Network Layer Reachability Information)

EVPN Network Layer Reachability Information (variable),EVPN NLRI

EVPN NLRI 格式采用 TLV(Type-Length-Value)三元组结构,使得报文具有很强的灵活性和扩展性:

Route Type,1-BYTE,在 RFC 7432 中,其定义 4 种不同类型的 EVPN Route;

Length,1-BYTE,定义 BGP EVPN NLRI 字段的长度;

Route Type Specifc,变长,表示不同的路由类型所有的不同字段填充;

TYPE-3-ROUTE: Inclusive Multicast Route

EVPN NLRI: Route Type Specifc

集成多播路由(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 信息中;

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 上配置的源地址;

Path Attribute: PSMI

PMSI 用于携带多播报文传输所使用的隧道类型(Ingress Replication 或者 MLDP)和隧道标签信息;
当一台 PE 设备收到多播流量后,会将多播流量以点到多点的形式转发给其他 PE 设备。PE 设备之间通过集成多播路由可以建立传送流量的隧道;
PMSI 属性在 RFC6514 中被定义。在 EVPN 场景中其 Flag 字段 Leaf 位为 0,Tunnel 类型为 6“Ingress Replication”;

Flags(1 Byte),最后一个 bit 为“Leaf”位;
Tunnel Type(1 Byte),EVPN 中类型一般为“6:Ingress Replication”;
MPLS Label(3 Byte),该字段为 MPLS 标签;
Tunnel Identifier(变长),该字段是隧道端 IP 地址;

TYPE-4-ROUTE: Ethernet Segment Route

EVPN NLRI: Route Type Specifc

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

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 上配置的源地址;

Path Attribute: EXTENDED_COMMUNITIES: ES-Import Route Target

ES-Import RT 是 EVPN 新定义的被 TYPE-4-ROUTE 所携带的扩展团体属性;
在 EVPN 多归场景下,BGP EVPN 通告 ES 路由时候必须同时携带 ES-Import RT,用于实现 ES 路由过滤;
ES 路由过滤:ES-Import RT 只允许连接相同站点的 PE 引入 TYPE-4-ROUTE。RT 被用于在所有连接相同站点 PE 上引入 Ethernet Segment 路由;

Type(1 Byte),该字段固定为 0x06;
Sub-Type(1 Byte),该字段固定为 0x02;
ES-Import(2 Byte),该字段最低 bit 被定义为“Single-Active”bit,为 0 标识为多归场景;
ES-Import Cont’d(4 Byte),该字段保留全 0;

TYPE-1-ROUTE: Ethernet A-D Route

EVPN NLRI: Route Type Specifc

Route Distinguisher(8 Byte)
1)Ethernet Auto-Discovery Per ES Route:该字段是由 PE 上设置的 SRC-IP-ADDR 组合而成,例如 X.X.X.X:0;
2)Ethernet Auto-Discovery Per EVI Route:该字段为 EVPN 实例下设置的 RD(Route Distinguisher)值;

Ethernet Segment Identifier(10 Byte)
1)PE 与某一 CE 的连接定义的唯一标识;
2)Ethernet Auto-Discovery Per ES Route:该字段为全 F;
3)Ethernet Auto-Discovery Per EVI Route:该字段用于标识一个 ES 下的不同的子广播域,全 0 标识该 EVI 只有一个广播域;

Ethernet Tag ID(4 Byte)
1)该字段为 Ethernet Tag 的标识,RFC 建议最后 20 bit 可以为 VLAN ID;

MPLS Label(3 Byte)
1)Ethernet Auto-Discovery Per ES Route:该字段为全 0;
2)Ethernet Auto-Discovery Per EVI Route:该字段为 EVPN 单播流量负载分担转发时使用的 MPLS 标签;

Path Attribute: EXTENDED_COMMUNITIES: ESI LABEL

ESI Label 是 EVPN Type 1 路由所携带的扩展团体属性;
在多归场景下,Type 1 路由必须携带此团体属性用于实现多归情况下的水平分割;

扩展团体属性字段,字段说明:
Type(1 Byte):该字段固定为 0x06;
Sub-Type(1 Byte):该字段固定为 0x01;
Flag(1 Byte):该字段最低 bit 被定义为 Single-Active bit,值为 0 时标识为多活场景;
Reserved(2 Byte):该字段保留全 0;
ESI Label (3 Byte):该字段用于 PE 标识每个 ES,用于水平分割;

TYPE-2-ROUTE: MAC/IP Advertisement Route

EVPN NLRI: Route Type Specifc

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),该字段为可选,用于三层业务流量转发;

Path Attribute: EXTENDED_COMMUNITIES: MAC MOBILITY

MAC Mobility 是 EVPN Type 2 路由所携带的扩展团体属性;
Flag 字段中最低比特被定义为“Sticky/static”位,此位为 1 时标识 MAC 地址固定不能移动;

Type(1 Byte),该字段固定为 0x06;
Sub-Type(1 Byte),该字段固定为 0x00;
Flag(1 Byte),该字段最低 bit 被定义为“Sticky/static”位,为 0 时标识 MAC 地址可移动;
Reserved(1 byte),该字段保留全 0;
Sequence Number(4 Byte),该字段用于收到多个更新时确保 PE 保持有正确的 MAC/IP 通告路由;

MAC 迁移特性将在后续章节中结合 VXLAN 进行学习;

TYPE-5-ROUTE: IP Prefix Route

厂商又补充一种路由类型,以满足业务需求;在华为中,还有 Type-5-Route 类型;更多详细 Type 5 路由内容请参考 RFC 草案;

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 或 16 Byte),该字段为此路由携带的 IP 前缀;
GW IP Address(4 或 16 Byte),该字段为默认网关地址;
MPLS Label(3 Byte),该字段为三层业务流量转发使用的标签;

应用场景

Type 5 被通告入 EVPN 实例中,实现 EVPN 实例与外部网络互通。