4. 多租户EVPN控制平面设计
多租户EVPN的控制平面设计,核心不是“把BGP跑起来”,而是让不同租户的二层/三层可达性在共享的Underlay与BGP基础设施上保持严格隔离,同时让同一租户跨站点的EVI能够正确互通。要做到这一点,必须先把三个概念钉死:EVI(EVPN Instance,租户在一个EVPN域内的实例)、RD(Route Distinguisher,路由区分符)和RT(Route Target,路由目标)。它们分别解决“我是谁”“这条路由属于谁”“这条路由该被谁导入”三个问题。
一、租户到EVI的映射:先定边界,再定标识
EVI是租户在EVPN控制平面上的逻辑实例。一个租户可以只有一个EVI(例如单VLAN或单桥域),也可以有多个EVI(例如多VLAN、多网段、多业务)。设计的第一步是建立“租户—EVI—VLAN/网段”的映射表。常见做法是:每个租户的每个二层广播域对应一个EVI,EVI ID在PE设备上本地唯一即可,但为了运维清晰,建议全网统一规划,例如用“租户编号×100+业务编号”作为EVI ID。
在华为/华三/思科等主流实现中,EVI通常通过evpn vpn-instance或l2vpn evpn实例来承载,并与bridge-domain或vlan绑定。例如租户A有两个VLAN:VLAN 10(办公)和VLAN 20(生产),则规划EVI 1001和EVI 1002,分别绑定BD 10和BD 20。这样做的目的是让控制平面上的每条EVPN路由都能明确归属到某个租户的某个业务域,避免后续RD/RT规划时出现“一锅粥”。
二、RD规划:让相同前缀不再冲突
RD的作用是让不同PE上相同的MAC/IP前缀在BGP表中成为不同路由。EVPN中,Type-2(MAC/IP Advertisement)和Type-3(Inclusive Multicast Ethernet Tag)等路由都携带RD。如果两个租户都使用相同的MAC地址或IP地址,没有RD就会在BGP表中冲突。因此,RD必须全网唯一,且最好与租户/EVI有可读的对应关系。
推荐两种RD格式:
- ASN:NN:例如
65000:1001,其中65000是本地AS,1001是EVI编号。适合单AS或联盟场景。 - IP:NN:例如
10.0.0.1:1001,其中10.0.0.1是PE的Loopback0地址,1001是EVI编号。适合多AS或需要按PE区分RD的场景。
实际工程中,如果租户数量多、EVI数量大,建议采用“PE Loopback: EVI ID”格式,这样每个PE上同一EVI的RD天然不同,且能通过RD反查是哪个PE发布的哪条EVI路由。例如PE1(Loopback 10.0.0.1)上EVI 1001的RD为10.0.0.1:1001,PE2(Loopback 10.0.0.2)上同一EVI的RD为10.0.0.2:1001。这样即使两个PE发布了相同的MAC地址,BGP也会视为两条不同路由,由RT决定是否导入。
三、RT规划:控制路由的导入与导出
RT是BGP扩展团体属性,分为Export RT和Import RT。Export RT决定“我发布的路由带什么标签”,Import RT决定“我接收哪些标签的路由”。EVPN中,RT是租户隔离的关键:只有Export RT与对端Import RT匹配的路由才会被导入到对应的EVI中。
RT规划通常有两种模式:
- 对称模式:同一EVI的Export RT和Import RT相同,例如EVI 1001的RT为
65000:1001。这是最简单、最常用的方式,适合大多数单租户单EVI场景。 - 非对称模式:Export RT和Import RT不同,用于Hub-Spoke、中心站点需要导入所有分支路由但分支只导入中心路由的场景。例如中心站点Export RT为
65000:1001,Import RT为65000:1001和65000:2001;分支站点Export RT为65000:2001,Import RT为65000:1001。
对于多租户场景,建议采用“租户ID:EVI ID”作为RT,例如租户A的EVI 1001对应RT 100:1001,租户B的EVI 2001对应RT 200:2001。这样即使两个租户使用相同的EVI ID,RT也能区分开。如果租户数量超过AS号范围,可以使用4字节AS号或IP格式RT。
四、BGP对等体与路由反射器部署
EVPN控制平面依赖BGP传递EVPN路由。在中小规模网络中,PE之间可以建立全互联的IBGP对等体;但在多租户、多PE场景下,全互联会导致N²条会话,扩展性差。因此,通常部署路由反射器(RR)来集中反射EVPN路由。
RR部署要点:
- RR与所有PE建立IBGP对等体,PE之间不需要直接建立对等体。
- RR上需要配置
address-family l2vpn evpn,并允许客户端。 - RR本身不修改EVPN路由的下一跳,除非配置了
next-hop-self。在EVPN中,通常保持下一跳为发布该路由的PE,以便流量正确转发。 - 如果跨AS,需要在AS边界部署ASBR,并配置
ebgp对等体,同时使用next-hop-unchanged或next-hop-self根据实际转发需求决定。
以下是一个典型的EVPN控制平面设计示例,展示了租户A和租户B在PE1、PE2、PE3上的EVI映射、RD/RT规划以及RR的反射关系:
在上图示例中,PE1和PE2属于租户A,PE3属于租户B。RR与三台PE分别建立IBGP EVPN对等体。PE1发布租户A的Type-2路由时携带RD 10.0.0.1:1001和Export RT 100:1001;RR反射给PE2和PE3。PE2的Import RT包含100:1001,因此导入该路由;PE3的Import RT为200:2001,不匹配,因此丢弃。同理,PE3发布的租户B路由也不会被PE1/PE2导入。这样就在共享RR和Underlay的情况下,实现了租户A与租户B的控制平面隔离。
五、设计检查与常见问题
完成规划后,建议按以下清单检查:
- 每个租户的EVI是否与VLAN/BD正确绑定?
- 同一EVI在不同PE上的RD是否唯一?
- Export RT与对端Import RT是否匹配?是否存在误导入?
- RR是否已激活
l2vpn evpn地址族?PE是否只与RR建立对等体? - 跨AS场景下,ASBR是否配置了正确的
next-hop-unchanged或next-hop-self?
常见问题包括:RD冲突导致相同MAC无法区分;RT配置错误导致租户间路由泄露;RR未开启EVPN地址族导致路由无法反射;以及下一跳未正确保留导致流量黑洞。排查时,可在PE上使用display bgp evpn all routing-table查看EVPN路由的RD、RT和下一跳,确认路由是否按预期导入和导出。
peer group简化配置。如果租户数量超过1000,可考虑使用4字节AS号或IP格式RT,并启用BGP Add-Path或RT约束路由反射(RT-Constrain)来减少RR上的路由数量。
总结来说,多租户EVPN控制平面设计的本质是:用EVI划分租户业务边界,用RD保证路由唯一性,用RT控制路由导入导出,用RR提升BGP扩展性。四者配合,才能在共享网络基础设施上实现租户间的真正隔离与按需互通。