最近纠结一个问题,为什么leaf上没有外部路由的引入,还会产生5类路由,并且这个5类路由还是vsi-interface10和vsi-interface30的网关的,这样是不是多此一举了?

[H3C-Vsi-interface123]display current-configuration by-section in -in
#
ip vpn-instance vpn10
route-distinguisher 1000:1000
#
address-family ipv4
vpn-target 11:11 import-extcommunity
vpn-target 11:11 export-extcommunity
#
address-family evpn
vpn-target 100:100 import-extcommunity
vpn-target 100:100 export-extcommunity
#
vsi vpn10
gateway vsi-interface 10
vxlan 10
evpn encapsulation vxlan
route-distinguisher 10:10
vpn-target 10:10 export-extcommunity
vpn-target 10:10 import-extcommunity
#
vsi vpn30
gateway vsi-interface 30
vxlan 30
evpn encapsulation vxlan
route-distinguisher 30:30
vpn-target 30:30 export-extcommunity
vpn-target 30:30 import-extcommunity
#
interface Vsi-interface10
ip binding vpn-instance vpn10
ip address 10.33.10.254 255.255.255.0
mac-address 0001-0001-0001
distributed-gateway local
#
interface Vsi-interface30
ip binding vpn-instance vpn10
ip address 10.33.30.254 255.255.255.0
mac-address 0003-0003-0003
distributed-gateway local
#
interface Vsi-interface123
ip binding vpn-instance vpn10
l3-vni 123
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
#
address-family l2vpn evpn
peer 1.1.1.1 enable
#
[H3C]display ospfv3 [H3C]dis cu | include irb advertise [H3C] 模拟器环境没有检索到这个命令,
[H3C]display evpn route ? arp Address Resolution Protocol information arp-mobility ARP mobility information mac MAC address information mac-mobility MAC mobility information nd IPv6 neighbor discovery information nd-mobility ND mobility information [H3C]display evpn route arp Flags: D - Dynamic B - BGP L - Local active G - Gateway S - Static M - Mapping I - Invalid VPN instance: vpn10 Interface: Vsi-interface30 IP address MAC address Router MAC VSI index Flags 10.33.30.1 5812-c78d-0a06 56db-75f2-0200 2 DL 10.33.30.2 5812-cf63-0b06 - 2 B 10.33.30.254 0003-0003-0003 56db-75f2-0200 2 GL VPN instance: vpn10 Interface: Vsi-interface10 IP address MAC address Router MAC VSI index Flags 10.33.10.1 56db-b49c-0606 56db-75f2-0200 0 DL 10.33.10.2 56db-bb73-0806 - 0 B 10.33.10.254 0001-0001-0001 56db-75f2-0200 0 GL [H3C]
[H3C]display current-configuration by-section in [H3C]display current-configuration by-section include ospf # ospf 1 router-id 2.2.2.2 area 0.0.0.0 # interface LoopBack0 ip address 2.2.2.2 255.255.255.255 ospf 1 area 0.0.0.0 # interface GigabitEthernet1/0/1 port link-mode route combo enable fiber ip address 100.1.12.2 255.255.255.0 ospf 1 area 0.0.0.0 # [H3C]
怎么不让这个leaf发5类路由呢?
你观察到的现象很敏锐,而且这个问题确实容易让人困惑——Leaf 上没有配置路由引入(比如 import-route),却自动生成了两条 Type5 路由,而且是 VSI 虚接口的网关子网。
先直接说结论:这不但不是多此一举,反而是 EVPN 分布式网关场景下非常必要且标准的行为。
从输出看:
[5] = EVPN Type5 路由(IP Prefix Route)
[0] = 本端生成的且未携带网关 MAC 扩展
/80 是 EVPN NLRI 长度,其中包含 RD + 前缀信息
下一跳是 0.0.0.0:表明这是本设备自己发起的路由,不是从别的 PE 学来的
这两条路由对应的是:
VSI-interface10 的网关子网:10.33.10.0/24
VSI-interface30 的网关子网:10.33.30.0/24
在 EVPN VXLAN 分布式网关中:
每个 Leaf 上的 VSI 虚接口(如 Vsi-interface10)配置了相同的网关 IP(例如 10.33.10.1/24)
这个子网对应的网段路由(10.33.10.0/24)需要通告给其他 Leaf
否则,对端 Leaf 收到发往 10.33.10.5 的流量时,不知道这个 IP 属于哪个 Leaf 的本地子网
传统做法:通过 Type2 逐条主机路由通告
更优做法:通过 Type5 通告子网汇总路由,减少路由条目
当你在 Leaf 上配置:
生成一条 Type5 路由(10.33.10.0/24)
在 BGP EVPN 中通告出去(除非被策略阻止)
这个行为不依赖任何外部路由引入(不用 import-route direct 或 network 命令)。
我们对比一下如果没有自动生成 Type5 会发生什么:
| 场景 | 没有 Type5 | 有 Type5 |
|---|---|---|
| Leaf2 上的 VM 访问 10.33.10.5 | Leaf2 查路由表没有 10.33.10.0/24,丢包或走默认路由(错) | Leaf2 学到 10.33.10.0/24 → Leaf1 VTEP IP,正确封装 VXLAN |
| 跨子网三层转发 | 只能用 Type2 逐条学习每个 VM 的 IP,路由表爆炸 | 用一条子网路由覆盖所有主机 |
| 新增 VM 在 10.33.10.0/24 | 需要重新通告 Type2 | 已有的 Type5 已经覆盖,无需额外路由 |
Type5 在这里的作用:
不是“引入外部路由”,而是 “宣告本地网关所属的网段”,用于跨 Leaf 三层互通。
5.5.5.5/32)才是真的外部引入下一跳 4.4.4.4(远端设备)
路由标记为 i(internal)且 > best
这条很可能是从 Border Leaf / Spine 引入的外部路由(比如通过 import-route static/ospf)
这一条才符合你理解的“需要主动引入才会产生”。
🧐 问题根因深度解析:EVPN 5 类路由(IP Prefix)的产生机制
一、先明确核心概念
你看到的 display bgp l2vpn evpn route-type ip-prefix 输出中,EVPN 5 类路由(Type 5: IP Prefix Route),是 EVPN 架构中用于在 VXLAN 网络中发布三层 IP 前缀的路由类型,核心作用是实现跨站点三层互通。
你疑惑的点:Leaf 没有手动引入外部路由,为什么会产生 Type 5 路由?而且还是网关网段的?是不是多此一举?我们结合你的配置和 H3C EVPN VXLAN 的实现原理,一步步拆解。
二、根因 1:分布式网关场景下,Type 5 路由是 EVPN L3 VNI 的自动生成机制
1. 你的组网关键配置
plaintext
# 1. 配置了L3 VNI(核心!)
interface Vsi-interface123
ip binding vpn-instance vpn10
l3-vni 123
# 2. 两个分布式网关接口,绑定同一个VPN实例vpn10
interface Vsi-interface10
ip binding vpn-instance vpn10
ip address 10.33.10.254/24
distributed-gateway local
interface Vsi-interface30
ip binding vpn-instance vpn10
ip address 10.33.30.254/24
distributed-gateway local
# 3. BGP EVPN邻居配置
bgp 100
address-family l2vpn evpn
peer 1.1.1.1 enable
2. 自动生成 Type 5 路由的原理
在 H3C EVPN VXLAN 分布式网关 + 集中式 L3 VNI的组网中:
当你在Vsi-interface123(L3 VNI 接口)绑定了 VPN 实例vpn10,并启用 BGP EVPN 后,设备会自动将该 VPN 实例下所有直连的三层网段(即两个网关接口10.33.10.0/24、10.33.30.0/24),以 EVPN Type 5 路由的形式发布给 EVPN 邻居(你的 Spine / 对端 Leaf)。
这个过程不需要手动配置import-route引入外部路由,是 EVPN L3 VNI 的默认行为,目的是让对端 Leaf/Spine 学习到本端的网关网段,实现跨 Leaf 的三层互通。
3. 为什么是这两个网段?
你红框中的两条 Type 5 路由:
[5][0][24][10.33.10.0]/80:对应Vsi-interface10的网关网段10.33.10.0/24
[5][0][24][10.33.30.0]/80:对应Vsi-interface30的网关网段10.33.30.0/24
这两个网段是本 Leaf 的直连网段,不是外部路由,因此不需要手动引入,设备会自动发布。
三、根因 2:第三条 Type 5 路由(5.5.5.5/32)的来源
你输出中还有一条*>i Network : [5][0][32][5.5.5.5]/80,这条是从 EVPN 邻居(Spine / 对端 Leaf)学习到的 Type 5 路由:
状态码* >i:i表示internal(内部 BGP 路由),说明是从 iBGP 邻居4.4.4.4(对端 Leaf/Spine)学习到的
NextHop: 4.4.4.4:下一跳是对端设备的 Loopback 地址
Path/Ogn: ?:表示路由起源为incomplete(通常是对端引入的静态 / 直连路由)
这条路由是对端设备发布的,不是本 Leaf 生成的,因此和你 “没有引入外部路由” 的前提不矛盾。
四、关键问题解答:是不是多此一举?
绝对不是多此一举,这是 EVPN 分布式网关组网的核心机制,原因如下:
1. 跨 Leaf 三层互通的必要条件
假设你的网络中有多台 Leaf(Leaf1、Leaf2),都属于同一个 VXLAN 网络:
Leaf1 的Vsi-interface10网关是10.33.10.254/24,下联终端 A(10.33.10.1)
Leaf2 的Vsi-interface10网关是10.33.10.254/24(分布式网关,同网段同 IP),下联终端 B(10.33.10.2)
终端 A 访问终端 B 时,Leaf1 需要知道10.33.10.0/24网段的路由,通过 Type 5 路由学习到对端 Leaf2 的可达性,再通过 VXLAN 隧道转发报文。
如果没有 Type 5 路由,对端 Leaf 无法学习到本端的网关网段,跨 Leaf 的同网段 / 跨网段三层流量就无法互通。
2. 分布式网关的路由同步需求
分布式网关场景下,所有 Leaf 的同网段网关 IP 相同,需要通过 Type 5 路由同步各 Leaf 的网关网段信息,确保流量能正确转发到对应 Leaf,避免路由黑洞。
3. L3 VNI 的核心作用
L3 VNI(你配置的l3-vni 123)的核心作用就是在 EVPN 网络中实现三层路由的发布与转发,Type 5 路由是 L3 VNI 的核心承载路由,没有 Type 5 路由,L3 VNI 就无法实现三层互通。
五、补充:如何控制 Type 5 路由的发布(可选优化)
如果你希望禁止自动发布直连网段的 Type 5 路由,可以通过以下配置实现(H3C V7 版本):
1. 全局 / 接口下关闭自动发布
plaintext
# 进入BGP EVPN地址族视图
bgp 100
address-family l2vpn evpn
# 关闭自动发布直连网段的Type 5路由
undo import-route direct
# 仅手动引入需要发布的路由
import-route static
import-route ospf 1
2. 通过路由策略过滤
plaintext
# 配置路由策略,拒绝直连网段
route-policy deny-direct deny node 10
if-match ip-prefix direct-10
#
ip prefix-list direct-10 index 10 permit 10.33.10.0/24
ip prefix-list direct-10 index 20 permit 10.33.30.0/24
#
bgp 100
address-family l2vpn evpn
# 对发布的Type 5路由应用过滤策略
peer 1.1.1.1 route-policy deny-direct export
⚠️ 注意:关闭自动发布后,跨 Leaf 的三层互通会受影响,仅在不需要发布直连网段时使用。
六、总结
Type 5 路由的产生不是因为引入外部路由,而是 EVPN L3 VNI + 分布式网关的默认自动发布机制,发布的是本 Leaf 的直连网关网段。
不是多此一举,Type 5 路由是 EVPN VXLAN 网络实现跨 Leaf 三层互通的核心路由类型,是分布式网关组网的必要机制。
第三条5.5.5.5/32的 Type 5 路由是从 EVPN 邻居学习到的,不是本 Leaf 生成的。
💡 延伸建议
[H3C-vpn-instance-vpn10]display ip routing-table vpn-instance vpn10 protocol bgp Summary count : 4 BGP Routing table status : <Active> Summary count : 2 Destination/Mask Proto Pre Cost NextHop Interface 10.33.10.1/32 BGP 255 0 2.2.2.2 Vsi123 10.33.30.1/32 BGP 255 0 2.2.2.2 Vsi123 BGP Routing table status : <Inactive> Summary count : 2 Destination/Mask Proto Pre Cost NextHop Interface 10.33.10.0/24 BGP 255 0 2.2.2.2 Vsi123 10.33.30.0/24 BGP 255 0 2.2.2.2 Vsi123 另外的leaf收到那个leaf产生的5类路由,在vpn实例路由表里状态是<Inactive>,这个是正常的吗?
[H3C-vpn-instance-vpn10]display ip routing-table vpn-instance vpn10 protocol bgp Summary count : 4 BGP Routing table status : <Active> Summary count : 2 Destination/Mask Proto Pre Cost NextHop Interface 10.33.10.1/32 BGP 255 0 2.2.2.2 Vsi123 10.33.30.1/32 BGP 255 0 2.2.2.2 Vsi123 BGP Routing table status : <Inactive> Summary count : 2 Destination/Mask Proto Pre Cost NextHop Interface 10.33.10.0/24 BGP 255 0 2.2.2.2 Vsi123 10.33.30.0/24 BGP 255 0 2.2.2.2 Vsi123 另外的leaf收到那个leaf产生的5类路由,在vpn实例路由表里状态是<Inactive>,这个是正常的吗?
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
怎么不让这个leaf发5类路由呢?