ENSP Pro Lab笔记:配置BGP EVPN VXLAN双栈(1)

一、实验目的

本实验旨在深入掌握基于 BGP EVPN 控制平面的 VXLAN 网络部署与运维,具体目标如下:

  1. 掌握分布式网关架构 :理解并部署 分布式任播网关 (Distributed Anycast Gateway),验证虚拟机迁移场景下的网关高可用性与流量路径优化。
  2. 剖析 BGP EVPN 控制面机制 :深入分析 BGP EVPN 在 IPv4/IPv6 双栈 环境下的路由交互逻辑,重点掌握 Type 2 (MAC/IP)Type 3 (Inclusive Multicast)Type 5 (IP Prefix) 路由的生成触发条件与传递规则。
  3. 分析对称 IRB 转发原理 :通过抓包与路由表分析,厘清 Symmetric IRB (对称集成路由桥) 模式下,L2VNI 与 L3VNI 在跨子网数据转发中的协同工作机制。
  4. 验证双栈 Overlay 互通:在 eNSP Pro 环境下,完成 Overlay 网络的 IPv4/IPv6 双栈配置,验证控制平面与数据平面的 Loopback 分离设计方案的可行性。

二、实验环境

2.1 实验拓扑说明 (Topology Overview)

以下是关于实验拓扑的详细说明,旨在清晰地界定网络架构、设备角色以及互联关系。

本实验采用典型的数据中心 Spine-Leaf 架构,构建了一个基于 BGP EVPN VXLAN 的 IPv4/IPv6 双栈 网络环境。

1. 网络分层与设备角色

  • 核心层/脊节点 (Spine Layer)

    • 设备 : Spine1 (Router-ID: 1.1.1.1)
    • 角色 : 核心转发节点及 BGP 路由反射器 (RR)
    • 功能 : 负责高速转发 IP 流量(Underlay),反射 BGP EVPN 路由(Overlay)。注意:Spine1 在本实验中不做 VXLAN 封装,不需要配置 VTEP 地址。
  • 叶子层/业务节点 (Leaf Layer)

    • 设备 : Leaf1 (ID: 2.2.2.2) & Leaf2 (ID: 3.3.3.3)
    • 角色 : 业务叶节点 (Server Leaf),也是 VXLAN 隧道端点 (VTEP)
    • 功能 :
      • 作为分布式任播网关,终结 VXLAN 隧道。
      • 接入服务器业务流量,处理 ARP/ND 代答与抑制。
      • 运行 BGP EVPN 协议,与 Spine 建立 iBGP 邻居。
  • 边界层 (Border Layer)

    • 设备 : BL1 (ID: 4.4.4.4)
    • 角色: 边界叶节点 (Border Leaf)。
    • 功能 : 负责数据中心内部 Overlay 网络与外部网络的 南北向流量交互。执行路由引入与 Type 5 路由生成。
  • 接入层 (Access Layer)

    • 设备 : ASW1 & ASW2
    • 角色: 二层接入交换机。
    • 功能: 仅需支持 VLAN 和 Trunk 功能,负责汇聚服务器流量并打上 VLAN Tag 透传给 Leaf 节点。
  • 外部网络 (External Network)

    • 设备 : R1
    • 角色: 模拟 ISP 或核心路由器。
    • 功能: 模拟 Internet 或 WAN 侧,用于验证南北向双栈连通性。

2. 链路连接关系

  • Underlay 互联:

    • Leaf1 (GE1/0/1) <--> Spine1 (GE1/0/1)
    • Leaf2 (GE1/0/2) <--> Spine1 (GE1/0/2)
    • BL1 (GE1/0/3) <--> Spine1 (GE1/0/3)
    • 链路运行 OSPF 协议,实现 Loopback 地址互通。
  • 业务接入:

    • Serv1/Serv2 --> ASW1 --> Leaf1 (GE1/0/2)
    • Serv3/Serv4 --> ASW2 --> Leaf2 (GE1/0/1)
    • Leaf 与 ASW 之间通过 Trunk 互联,透传 VLAN 10/20。
  • 边界互联:

    • BL1 (GE1/0/1) <--> R1 (GE0/0/1)
    • 运行静态路由,互联地址段为 182.1.1.0/24 (IPv4) 和 182:1:1::/64 (IPv6)。

3. 业务网段规划 (双栈)

拓扑图中展示了两个主要的业务子网,它们跨越了 Leaf 节点(体现大二层与分布式网关特性):

  • 业务子网 A (VLAN 10 / BD 100) :
    • 成员: Serv1 (Leaf1下), Serv3 (Leaf2下)
    • IPv4 : 172.16.1.0/24 (网关 .1)
    • IPv6 : 172:16:1::/64 (网关 ::1)
  • 业务子网 B (VLAN 20 / BD 200) :
    • 成员: Serv2 (Leaf1下), Serv4 (Leaf2下)
    • IPv4 : 10.10.10.0/24 (网关 .1)
    • IPv6 : 10:10:10::/64 (网关 ::1)

2.2 数据准备

(1)服务器配置数据

Server MAC Address IP Address / Mask Gateway VLAN
Serv1 40:3f:ab:de:4d:11 172.16.1.10/24 172.16.1.1 10
172:16:1::10/64 172:16:1::1/64
Serv2 76:4e:c0:14:7d:7a 10.10.10.10/24 10.10.10.1 20
10:10:10::10/64 10:10:10::1/64
Serv3 fa:9e:65:74:00:10 172.16.1.20/24 172.16.1.1 10
172:16:1::20/64 172:16:1::1/64
Serv4 38:05:60:49:71:64 10.10.10.20/24 10.10.10.1 20
10:10:10::20/64 10:10:10::1/64

(2)ASW1 配置数据

划分 vlan10/20,和 Leaf1 Trunk 连接

(3) ASW2配置数据

划分 vlan30/40,和 Leaf2 Trunk 连接

(4)Leaf/Spine/BL 基础配置与业务映射表

设备角色 标识 ID (Lo0) VTEP 地址 (Lo10) 接入 VLAN (VID) 广播域 (BD) L2 VNI
Spine1 1.1.1.1 N/A - - -
Leaf1 2.2.2.2 20.20.20.20 10 100 8000
20 200 9000
Leaf2 3.3.3.3 30.30.30.30 30 300 8000
40 400 9000
BL1 4.4.4.4 40.40.40.40 - - -
关键设计说明:
  • Spine1 (核心/反射器)

    • 作为 Underlay 网络的核心传输节点及 BGP 路由反射器 (RR)。
    • 配置特点 :仅负责底层 IP 报文的高速转发,不参与 VXLAN 隧道的封装与解封装,因此无需配置 VTEP 源地址 (Loopback10)。
  • BL1 (边界网关)

    • 作为数据中心与外部网络(南北向流量)的边界网关。
    • 配置特点 :主要承载三层路由业务(通过 L3VNI 互通),无本地业务终端接入,因此无需配置二层相关参数(如 VLAN、Bridge Domain 或 L2VNI)。
  • Underlay 互联

    • Spine 与 Leaf/BL 之间通过三层路由接口互联,运行 OSPF 协议,互联地址段规划为 192.168.x.x/24

(5)EVPN 相关配置数据与逻辑规划

分布式网关场景下 L2VPN(EVPN 实例)与 L3VPN(VPN 实例)之间的逻辑关系及 RT(Route Target)的作用如下:

1. 配置参数表

此表展示了二层广播域(BD)与三层路由域(VPN 实例)的参数映射,以及关键的 RT 规划。

设备节点 业务层级 标识 ID VNI RD RT (Route Target)
Leaf1 L2VPN (BD 100) BD 100 8000 20:1 100:10 (L2互通) 200:10 (Export, 供L3使用)
L2VPN (BD 200) BD 200 9000 20:2 100:20 (L2互通) 200:10 (Export, 供L3使用)
L3VPN (VPN1) vpn1 100 200:1 200:10 (L3互通)
Leaf2 L2VPN (BD 300) BD 300 8000 30:1 100:10 (L2互通) 200:10 (Export, 供L3使用)
L2VPN (BD 400) BD 400 9000 30:2 100:20 (L2互通) 200:10 (Export, 供L3使用)
L3VPN (VPN1) vpn1 100 300:1 200:10 (L3互通)
BL1 L3VPN (VPN1) vpn1 100 400:1 200:10 (L3互通)
2. 逻辑关系核心说明
  • 二层域 (L2 Domain)

    • 对应 EVPN Instance (MAC-VRF)
    • 物理映射关系:VLAN -> Bridge Domain (BD) -> L2VNI
    • MAC 路由交互 :生成 Type 2 (MAC only) 路由。本端 EVPN 实例携带二层 RT(如 100:10)发布,对端相同 BD 的 EVPN 实例通过匹配该 RT 接收,实现同子网二层互通。
  • 三层域 (L3 Domain)

    • 对应 VPN Instance (IP-VRF)
    • 逻辑映射关系:VPN Instance -> L3VNI
    • 网段路由交互 :生成 Type 5 (IP Prefix) 路由。本端 VPN 实例携带三层 RT(200:10)发布,对端 VPN 实例通过匹配该 RT 接收,实现路由表同步及访问外部网络。
  • 分布式网关交互 (IRB - Integrated Routing and Bridging)

    • 主机路由泄露 (L2 to L3) :当开启 ARP/ND 收集功能后,EVPN Instance (L2) 会生成包含 IP 信息的主机路由(Type 2 MAC+IP)。
    • RT 的关键作用 :为了让这些主机路由能被远端的 VPN Instance (L3) 学习到(用于跨子网通信),L2 配置中必须将 三层 RT (200:10) 配置为 export-extcommunity
    • 结果 :L2 产生的 Type 2 (IP) 路由携带了 L3 的 RT,从而被对端 L3 VPN 实例导入,生成 /32/128 主机路由。

2.3 实验设备与版本说明

仿真平台版本:eNSP-Pro_V100R002C10SPC001

设备名称 (Hostname) 网络角色 (Role) 设备型号 (Model) 系统镜像版本 (Image Version)
Spine1 Spine 脊节点 CE6800 V300R024C10SPC500
Leaf1 / Leaf2 Server Leaf 业务叶节点 CE6800 V300R024C10SPC500
BL1 Border Leaf 边界叶节点 CE6800 V300R024C10SPC500
ASW1 / ASW2 Access Switch 接入层交换机 S6700 V600R024C10SPC500
Serv1 ~ 4 End Host 业务服务器/终端 PC-CLIENT N/A
R1 Core Gateway 模拟核心路由器/外网 AR6700 V600R024C10SPC100

三、实验内容

为了确保实验的严谨性与逻辑性,本实验按照底层构建 →\rightarrow→ 叠加层部署 →\rightarrow→ 基础设施验证 →\rightarrow→ 业务驱动与观测的四阶段流程进行。

第一阶段:拓扑搭建与底层互通 (Underlay Construction)

  1. 实验拓扑构建:严格按照设计拓扑连接设备,完成链路物理/虚拟连接及设备基础初始化。
  2. Underlay 网络配置 :配置接口 IP 地址及 OSPF 协议,确保各 Leaf 与 Spine 节点的 Loopback0 (管理/BGP ID) 及 Loopback10 (VTEP Source) 接口实现三层互通。

第二阶段:Overlay 网络与网关部署 (Overlay & Gateway Deployment)

  1. BGP EVPN 控制面部署:建立 Spine (RR) 与 Leaf 之间的 iBGP EVPN 邻居关系,实现控制平面信令交互。
  2. VXLAN 数据面与分布式网关配置
    • 配置 NVE 接口与 VTEP 隧道源。
    • 部署 分布式任播网关 (Distributed Anycast Gateway),配置 L2VNI 与 L3VNI。
    • 开启 ARP/ND 广播抑制 及主机路由收集功能(arp collect host enable / ipv6 nd collect host enable)。
    • 在 Border Leaf (BL1) 配置外部路由引入(Type 5 路由生成)。

第三阶段:初始状态检查与验证 (Initial State Verification)

本阶段在未发起业务流量前进行,旨在确立网络基线。

  1. 基础设施层校验

* Underlay 检查 :确认 OSPF 邻居 Full,全网 Loopback 可达。

* Overlay 控制面 :确认 BGP EVPN 邻居状态为 Established。

* Overlay 数据面 :确认 VXLAN Tunnel Up,检查基于 Type 3 (IMET) 路由生成的头端复制列表 (BUM Peer)。

  1. 基础路由表项校验

* 检查 Type 5 (Prefix) 路由:确认网段路由(内部直连与外部引入)已全网同步。

* 检查 本地表项:验证 IPv6 Link-Local 邻居发现情况(ND表),确认 IPv4 ARP 表项的初始状态(通常为空)。

第四阶段:业务连通性测试与动态观测 (Traffic Test & Observation)

本阶段通过实际业务流量触发控制平面动作,观察 EVPN 路由的动态生成。

  1. 验证同子网二层互通 (Intra-Subnet)

* 测试 Serv1 ↔\leftrightarrow↔ Serv3 (同 VLAN 10)。

* 观测点 :验证 MAC 地址学习及 Type 2 (纯 MAC) 路由的生成。

  1. 验证跨子网三层互通 (Inter-Subnet)

* 测试 Serv2 ↔\leftrightarrow↔ Serv3 (跨 VLAN)。

* 观测点 :验证 ARP/ND 触发机制,观察 Type 2 (IRB 主机路由) 的生成,以及主机路由在远端 Leaf VPN 实例中的注入情况。

  1. 验证南北向流量互通 (North-South)

* 测试 Serv1/Serv2 ↔\leftrightarrow↔ R1 (182.1.1.2)。

* 观测点:验证 Type 5 路由引流及回程路由的查找。

四、配置步骤

4.1 基础网络互通配置 (Basic Network Connectivity)

将基础配置分为终端、接入层、Underlay 路由三个子版块,结构清晰

本阶段旨在完成接入层二层通道的划分,以及数据中心 Underlay 网络的三层互通,确保所有 VTEP 节点的 Loopback 接口之间路由可达。

(1) 终端初始化 (End Host Initialization)

  • 按照"数据准备"章节规划的 IP 地址,配置服务器 Serv1 ~ Serv4 的 IPv4/IPv6 地址及默认网关。

(2) 接入层二层配置 (Access Layer L2 Configuration)

  • 配置目标:在接入交换机 (ASW) 上划分 VLAN,并将下行接口加入对应 VLAN,上行接口配置为 Trunk 模式以透传 VLAN Tag。

ASW1 配置(连接 Leaf1):

bash 复制代码
#
vlan batch 10 20
#
# 上行连接 Leaf1
interface GE1/0/2
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
# 下行连接 Serv1 (VLAN 10)
interface GE1/0/3
 port link-type access
 port default vlan 10
#
# 下行连接 Serv2 (VLAN 20)
interface GE1/0/4
 port link-type access
 port default vlan 20
#

ASW2 配置(连接 Leaf2):

bash 复制代码
#
vlan batch 30 40
#
# 上行连接 Leaf2
interface GE1/0/1
 port link-type trunk
 port trunk allow-pass vlan 30 40
#
# 下行连接 Serv3 (VLAN 30)
interface GE1/0/2
 port link-type access
 port default vlan 30
#
# 下行连接 Serv4 (VLAN 40)
interface GE1/0/3
 port link-type access
 port default vlan 40
#

(3) Underlay 路由协议配置 (OSPF)

  • 配置目标:配置物理接口与 Loopback 接口地址,并启用 OSPF 协议,实现全网 Loopback 接口互通(作为 BGP Router-ID 及 VTEP 隧道源地址)。
  • 配置原则
    • Underlay 网络仅运行 IPv4
    • 必须发布 Loopback0 (管理/BGP ID) 和 Loopback10 (数据面/VTEP Source) 网段。
    • 必须发布物理互联接口网段。

Leaf1 OSPF 配置示例(Spine1、Leaf2、BL1 配置逻辑类似):

bash 复制代码
#
# 基础 Router-ID 配置 (建议与 Loopback0 一致)
ospf 1 router-id 2.2.2.2
 area 0.0.0.0
  # 发布 Loopback0 (BGP Peer Address)
  network 2.2.2.2 0.0.0.0
  # 发布 Loopback10 (VTEP Source Address)
  network 20.20.20.20 0.0.0.0
  # 发布物理互联接口 (连接 Spine)
  network 192.168.12.2 0.0.0.0
#

4.2 配置 Overlay 业务接入 (Service Access Configuration)

本阶段在 Leaf 节点的下行接口配置二层子接口,将接入层感知的 VLAN Tag 映射到 VXLAN 网络内部的广播域 (Bridge Domain)。这一步的核心是将传统的 VLAN 流量"接入"到 VXLAN 的 Bridge Domain 中。

配置对应关系:

  • Leaf1 : VLAN 10 →\rightarrow→ BD 100; VLAN 20 →\rightarrow→ BD 200
  • Leaf2 : VLAN 30 →\rightarrow→ BD 300; VLAN 40 →\rightarrow→ BD 400

Leaf1 配置 (连接 ASW1):

bash 复制代码
#
# 创建广播域
bridge-domain 100
bridge-domain 200
#
# 配置二层子接口,关联 VLAN 10 与 BD 100
interface GE1/0/1.1 mode l2
 encapsulation dot1q vid 10
 bridge-domain 100
#
# 配置二层子接口,关联 VLAN 20 与 BD 200
interface GE1/0/1.2 mode l2
 encapsulation dot1q vid 20
 bridge-domain 200
#

Leaf2 配置 (连接 ASW2):

bash 复制代码
#
# 创建广播域
bridge-domain 300
bridge-domain 400
#
# 配置二层子接口,关联 VLAN 30 与 BD 300
interface GE1/0/1.1 mode l2
 encapsulation dot1q vid 30
 bridge-domain 300
#
# 配置二层子接口,关联 VLAN 40 与 BD 400
interface GE1/0/1.2 mode l2
 encapsulation dot1q vid 40
 bridge-domain 400
#

4.3 配置 BGP EVPN 控制平面 (Control Plane Configuration)

本阶段建立 Overlay 网络的控制平面。采用 Spine 作为 BGP 路由反射器 (RR),Leaf 节点作为 RR 客户端的设计。所有 Leaf 节点只需与 Spine 建立 iBGP EVPN 邻居,无需 Full-Mesh 全互联。

(1) Spine1 配置 (Route Reflector)

  • 配置重点
    • 启用 evpn-overlay enable 全局开关。
    • 配置 Loopback0 为更新源建立 iBGP 邻居。
    • l2vpn-family evpn 地址族下,指定 Leaf 为 reflect-client
    • 关闭默认 IPv4 单播能力 (undo default ipv4-unicast):默认情况下 BGP 会协商 IPv4 Unicast 地址族。由于 Underlay 网络已通过 OSPF 打通,Overlay 控制面仅需传递 EVPN 路由,因此关闭默认的 IPv4 单播协商,减少资源占用,使 BGP 会话更加纯粹。
    • 关键指令undo policy vpn-target(详见配置后说明)。
bash 复制代码
#
# 1. 全局开启 EVPN 能力
evpn-overlay enable
#
bgp 100
 router-id 1.1.1.1
 # 【关键】关闭默认的 IPv4 单播地址族协商,构建纯粹的 EVPN 控制面
 undo default ipv4-unicast
 # 建立 iBGP 邻居 (Underlay 互通基于 Loopback0)
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack0
 peer 3.3.3.3 as-number 100
 peer 3.3.3.3 connect-interface LoopBack0
 peer 4.4.4.4 as-number 100
 peer 4.4.4.4 connect-interface LoopBack0
 #
 # 2. 显式清理 IPv4 单播邻居关系 (如果之前建立过)
 ipv4-family unicast
  undo peer 2.2.2.2 enable
  undo peer 3.3.3.3 enable
  undo peer 4.4.4.4 enable
 #
 # 3. EVPN 地址族 (核心配置)
 l2vpn-family evpn
  # 【关键】关闭 RT 过滤,确保 RR 能接收并反射所有 EVPN 路由
  undo policy vpn-target
  # 激活邻居并配置为反射器客户端
  peer 2.2.2.2 enable
  peer 2.2.2.2 reflect-client
  peer 3.3.3.3 enable
  peer 3.3.3.3 reflect-client
  peer 4.4.4.4 enable
  peer 4.4.4.4 reflect-client
#

💡 技术原理:为什么 Spine 需要 undo policy vpn-target

  • 默认行为 :BGP 设备在接收到 VPN 路由(含 EVPN 路由)时,会检查路由携带的 Route Target (RT) 属性。如果该 RT 与本地任何 VPN/EVPN 实例的 Import RT 不匹配,设备将丢弃该路由。
  • RR 的特殊性:Spine 作为路由反射器,通常不承载具体业务,因此没有配置本地 EVPN 实例(即没有本地 RT)。
  • 配置目的 :执行 undo policy vpn-target 后,Spine 将忽略 RT 匹配检查,接收并保存所有收到的 EVPN 路由,从而能够将其反射给其他 Leaf 节点。

(2) Leaf1 配置 (RR Client)

  • 配置重点:指向 Spine (1.1.1.1) 建立 iBGP EVPN 邻居。
  • Leaf2 与 BL1 配置逻辑相同。
bash 复制代码
#
# 1. 全局开启 EVPN 能力
evpn-overlay enable
#
bgp 100
 router-id 2.2.2.2
 # 【关键】关闭默认的 IPv4 单播地址族协商
 undo default ipv4-unicast
 # 华为设备私有特性,建议开启以支持 4 字节 AS 号的平滑兼容
 private-4-byte-as enable
 # 指向 Spine 建立邻居
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack0
  #
 ipv4-family unicast
  undo peer 1.1.1.1 enable
 #
 # EVPN 地址族
 l2vpn-family evpn
  # 缺省即开启 policy vpn-target,只接收 RT 匹配的路由
  policy vpn-target
  peer 1.1.1.1 enable
#

4.4 配置 Overlay 业务实例 (L3VPN & L2VPN)

重点在于清晰地理解 Route Target (RT) 在三种不同场景下的作用:L2 互通L3 路由泄露 (Host Route Leaking) 以及 网段路由发布 (Prefix Route)

本阶段配置 VXLAN 的业务承载实体。

  • L3VPN 实例 (VRF):用于承载三层流量 (IPv4/IPv6),对应 L3VNI。
  • L2VPN 实例 (BD-EVPN):用于承载二层流量,对应 L2VNI。

(1) Leaf1 配置

  • RT 规划回顾
    • 200:10 :作为全网统一的 L3 RT。用于 L3VPN 之间传递网段路由,以及 L2VPN 向 L3VPN 泄露主机路由。
    • 100:10 / 100:20 :作为 L2 RT。仅用于同子网 L2VNI 之间的 MAC 同步。
bash 复制代码
#
# 1. 配置 L3VPN 实例 (VRF)
ip vpn-instance vpn1
 # IPv4 地址族
 ipv4-family
  route-distinguisher 200:1
  # 接收/发送 Type 5 网段路由时使用的 RT
  vpn-target 200:10 export-extcommunity evpn
  vpn-target 200:10 import-extcommunity evpn
  # 接收 L2 泄露上来的 Type 2 主机路由时使用的 RT
  vpn-target 200:10 import-extcommunity
 # IPv6 地址族
 ipv6-family
  route-distinguisher 200:1
  vpn-target 200:10 export-extcommunity evpn
  vpn-target 200:10 import-extcommunity evpn
  vpn-target 200:10 import-extcommunity
 # 关联 L3VNI (用于跨子网转发)
 vxlan vni 100
#
# 2. 配置 L2VPN 实例 (BD 100)
bridge-domain 100
 vxlan vni 8000
 evpn
  route-distinguisher 20:1
  # L2 互通 RT (仅本 BD 内有效)
  vpn-target 100:10 export-extcommunity
  vpn-target 100:10 import-extcommunity
  # 【关键】向 L3VPN 泄露主机路由 (Type 2 IRB) 的 RT
  vpn-target 200:10 export-extcommunity
#
# 3. 配置 L2VPN 实例 (BD 200)
bridge-domain 200
 vxlan vni 9000
 evpn
  route-distinguisher 20:2
  vpn-target 100:20 export-extcommunity
  vpn-target 100:20 import-extcommunity
  # 【关键】向 L3VPN 泄露主机路由
  vpn-target 200:10 export-extcommunity
#

(2) Leaf2 配置

  • RD 值需保证设备内唯一,建议全网规划(如 300:1)。
bash 复制代码
#
ip vpn-instance vpn1
 ipv4-family
  route-distinguisher 300:1
  vpn-target 200:10 export-extcommunity evpn
  vpn-target 200:10 import-extcommunity evpn
  vpn-target 200:10 import-extcommunity
 ipv6-family
  route-distinguisher 300:1
  vpn-target 200:10 export-extcommunity evpn
  vpn-target 200:10 import-extcommunity evpn
  vpn-target 200:10 import-extcommunity
 vxlan vni 100
#
bridge-domain 300
 vxlan vni 8000
 evpn
  route-distinguisher 30:1
  vpn-target 100:10 export-extcommunity
  vpn-target 100:10 import-extcommunity
  vpn-target 200:10 export-extcommunity
#
bridge-domain 400
 vxlan vni 9000
 evpn
  route-distinguisher 30:2
  vpn-target 100:20 export-extcommunity
  vpn-target 100:20 import-extcommunity
  vpn-target 200:10 export-extcommunity
#

(3) BL1 配置 (Border Leaf)

  • 特点 :BL1 作为边界网关,通常不直接接入业务服务器,因此无需配置 bridge-domain,仅需配置 L3VPN 实例用于路由引入与转发。
bash 复制代码
#
ip vpn-instance vpn1
 ipv4-family
  route-distinguisher 400:1
  # 负责 Type 5 网段路由的接收与发布
  vpn-target 200:10 export-extcommunity evpn
  vpn-target 200:10 import-extcommunity evpn
 ipv6-family
  route-distinguisher 400:1
  vpn-target 200:10 export-extcommunity evpn
  vpn-target 200:10 import-extcommunity evpn
 vxlan vni 100
#

💡 深度解析:EVPN 中 vpn-target 命令的精细化控制

在 EVPN 分布式网关场景中,RT (Route Target) 的配置决定了路由如何在 L2 和 L3 表项间流动。

1. L3VPN 侧 (ip vpn-instance 视图)

  • 命令vpn-target ... export-extcommunity evpn
    • 作用 :专门控制 Type 5 (IP Prefix Route) 的 RT 携带。当 BL 或 Leaf 发布网段路由(如引入的外部路由或直连网段)时,会携带此 RT。
  • 命令vpn-target ... import-extcommunity (无 evpn 关键字)
    • 作用 :允许 L3VPN 实例接收来自 L2VPN 泄露上来的 Type 2 (MAC/IP) 主机路由。这是实现分布式网关流量转发(Symmetric IRB)的基石。

2. L2VPN 侧 (bridge-domain -> evpn 视图)

  • 命令vpn-target ... export-extcommunity
    • 作用 A (L2 互通) :发布 Type 2 (纯 MAC) 路由,携带二层 RT (如 100:10)。远端 BD 接收后实现二层桥接。
    • 作用 B (L3 泄露) :发布 Type 2 (MAC+IP) 主机路由,携带三层 RT (如 200:10)。
    • 机制:通过在此处配置三层 RT (200:10),L2 实例将 ARP/ND 收集到的主机 IP 信息"泄露"给全网的 L3VPN 实例。远端 Leaf 的 L3VPN 实例通过 Import 200:10,将这些 /32 或 /128 主机路由安装到 VRF 路由表中。

4.5 配置 VXLAN 隧道接口与 BUM 流量复制

这一节的核心在于配置 NVE (Network Virtualization Edge) 接口,并基于 BGP Type 3 路由构建用于处理广播、未知单播和组播 (BUM) 流量的头端复制列表。

本阶段配置 VXLAN 的隧道端点 (VTEP) 接口,并定义 BUM 流量的复制机制。

(1) Leaf 节点配置

  • 配置逻辑
    • Source Address:指定 Loopback10 (数据平面地址) 为封装 VXLAN 报文的外层源 IP。
    • Head-End Replication :针对每个 L2VNI (8000, 9000),开启基于 BGP 的头端复制功能。
  • Leaf1 配置
bash 复制代码
#
interface Nve1
 # 指定 VTEP 隧道源地址 (Data Plane Loopback)
 source 20.20.20.20
 # 针对 L2VNI 开启 BGP 头端复制,触发 Type 3 路由生成
 vni 8000 head-end peer-list protocol bgp
 vni 9000 head-end peer-list protocol bgp
#
  • Leaf2 配置
bash 复制代码
#
interface Nve1
 source 30.30.30.30
 vni 8000 head-end peer-list protocol bgp
 vni 9000 head-end peer-list protocol bgp
#

(2) Border Leaf (BL1) 配置

  • 配置逻辑 :BL1 作为边界网关,主要处理 L3VPN 流量(通过 L3VNI)。由于它不直接接入二层业务(不关联 L2VNI),因此不需要处理 BUM 流量 ,无需配置 vni ... head-end peer-list。它只需要建立 NVE 接口以支持单播 VXLAN 隧道即可。
bash 复制代码
#
interface Nve1
 source 40.40.40.40
#

💡 技术深解:Type 3 路由与头端复制 (Ingress Replication)
  • Type 3 路由 (Inclusive Multicast Route)
    • 当在 NVE 接口下配置 vni <ID> head-end peer-list protocol bgp 后,VTEP 会生成 Type 3 EVPN 路由 并通告给邻居。
    • 含义:"我是 VTEP A,我是 VNI 8000 的成员。如果你有属于 VNI 8000 的广播/组播流量,请复制一份发给我。"
  • 头端复制列表 (Head-End Replication List)
    • 远端 VTEP 收到 Type 3 路由后,会将发送者的 IP 地址加入到本地对应 VNI 的泛洪列表(Flood List)中。
    • 当本地收到 BUM 流量(如 ARP 请求)时,硬件会根据该列表,将报文复制多份,分别单播封装发送给列表中的所有 VTEP。
✅ 状态检查

使用 display vxlan peerdisplay vxlan tunnel 检查隧道建立情况及头端复制列表。

bash 复制代码
[Leaf1] display vxlan tunnel
Number of vxlan tunnel : 1
Tunnel ID   Source           Destination      State  Type     Uptime
---------------------------------------------------------------------
4026531841  20.20.20.20      30.30.30.30      up     dynamic  00:03:48

4.6 配置分布式任播网关 (IPv4/IPv6 双栈)

本节内容的核心在于:通过配置 Vbdif 接口,实现 VXLAN 网络的三层网关功能 。重点在于解释清楚**"任播 (Anycast)"的概念,以及 主机信息收集 (collect host)** 如何驱动 BGP EVPN 生成 Type 2 IRB 路由。

本阶段在 Leaf 节点配置 Vbdif 接口作为租户的默认网关。

采用 分布式任播网关 (Distributed Anycast Gateway) 部署模式,所有 Leaf 节点的 Vbdif 接口配置相同的 IPv4/IPv6 地址相同的 MAC 地址。这确保了虚拟机在不同 Leaf 间迁移时,无需更改网关信息。

(1) Leaf1 配置

bash 复制代码
#
# 配置 Vbdif100 (对应 BD 100 / VLAN 10)
interface Vbdif100
 # 绑定 L3VPN 实例
 ip binding vpn-instance vpn1
 #
 # --- IPv4 网关配置 ---
 ip address 172.16.1.1 255.255.255.0
 mac-address 0001-0001-0001       ; 【关键】显式指定统一的网关 MAC
 vxlan anycast-gateway enable     ; 启用分布式网关特性
 arp collect host enable          ; 收集 ARP 生成 Type 2 IRB (v4)
 #
 # --- IPv6 网关配置 ---
 ipv6 enable
 ipv6 address 172:16:1::1/64
 ipv6 nd collect host enable      ; 收集 ND 生成 Type 2 IRBv6
#
# 配置 Vbdif200 (对应 BD 200 / VLAN 20)
interface Vbdif200
 ip binding vpn-instance vpn1
 ip address 10.10.10.1 255.255.255.0
 mac-address 0002-0002-0002
 vxlan anycast-gateway enable
 arp collect host enable
 #
 ipv6 enable
 ipv6 address 10:10:10::1/64
 ipv6 nd collect host enable
#

(2) Leaf2 配置

  • 注意 :尽管 Leaf2 连接的是 VLAN 30/40 (BD 300/400),但由于属于同一个 IP 子网(172.16.1.0/24),因此网关 IP 和 MAC 必须与 Leaf1 完全一致
bash 复制代码
#
interface Vbdif300
 ip binding vpn-instance vpn1
 ip address 172.16.1.1 255.255.255.0   ; 与 Leaf1 保持一致
 mac-address 0001-0001-0001            ; 与 Leaf1 保持一致
 vxlan anycast-gateway enable
 arp collect host enable
 #
 ipv6 enable
 ipv6 address 172:16:1::1/64           ; 与 Leaf1 保持一致
 ipv6 nd collect host enable
#
interface Vbdif400
 ip binding vpn-instance vpn1
 ip address 10.10.10.1 255.255.255.0
 mac-address 0002-0002-0002
 vxlan anycast-gateway enable
 arp collect host enable
 #
 ipv6 enable
 ipv6 address 10:10:10::1/64
 ipv6 nd collect host enable
#

💡 技术深解:分布式网关的核心指令

1. vxlan anycast-gateway enable (任播网关)

  • 作用 :开启此功能后,Leaf 节点在数据平面上模拟出一个虚拟网关。
  • 行为特征
    • 本地处理 :网关只处理从本地接入侧(Access Side)收到的 ARP/ND 请求。
    • 隧道过滤 :网关会丢弃从 VXLAN 隧道侧收到的、目的 MAC 是网关 MAC 的 ARP/ND 报文,防止环路和冲突。
    • 无缝迁移:由于所有 Leaf 的网关 IP/MAC 相同,终端迁移后无需刷新 ARP 表项即可直接通信。

2. arp/ipv6 nd collect host enable (主机路由收集)

  • 作用 :这是实现 BGP EVPN 路由通告 (IRB) 的"扳机"。
  • 机制
    • 默认情况下,Vbdif 接口学到的 ARP/ND 条目仅用于本地二层转发。
    • 开启此命令后,设备会将本地学习到的 ARP/ND 表项"上送"给 BGP 进程。
    • BGP 进程据此生成 Type 2 (MAC/IP) 路由,并发布给远端 Leaf。
    • 结果 :远端 Leaf 收到路由后,在 VPN 实例中生成 /32 (IPv4) 或 /128 (IPv6) 的主机路由,从而实现跨 Leaf 的精确三层转发。

3. 广播抑制与代答 (优化机制)

  • ARP/ND 广播抑制 (arp broadcast-suppress):
    • 在 BD 视图下配置。Leaf 节点拦截终端的 ARP 请求,若本地已有缓存,则直接代答;若无缓存,则通过单播询问 Controller 或丢弃(取决于配置),从而减少二层网络中的广播风暴。
  • ARP/ND 代理 (arp l2-proxy enable):
    • Leaf 节点作为代理,直接回应终端的 ARP/ND 请求。通常与 collect host 配合使用,利用收集到的主机表项进行代答。

4.7 配置 BGP EVPN 发布 IRB 路由 (IPv4/IPv6)

本节配置是实现分布式网关三层互通的"最后一块拼图"。虽然在前一节我们在 Vbdif 接口下配置了 collect host enable,但还需要在 BGP 协议层面显式允许将收集到的 IP 信息封装进 EVPN 路由发送给邻居。

本阶段修改 BGP EVPN 地址族的发布策略,允许向对等体发送携带 IP 地址信息的 Type 2 路由。这是实现 Symmetric IRB 转发模式下主机路由(Host Route)传递的必要条件。

(1) Leaf 节点与 Border Leaf 配置 (RR Client)

  • 配置目标:Leaf1/Leaf2/BL1 需要向 Spine (RR) 发布包含 IPv4 和 IPv6 地址的 EVPN 路由。
  • 配置逻辑:Leaf1、Leaf2 和 BL1 的配置逻辑完全一致,均指向 RR (1.1.1.1)。
bash 复制代码
#
# Leaf1, Leaf2, BL1 通用配置
bgp 100
 l2vpn-family evpn
  policy vpn-target
  peer 1.1.1.1 enable
  # 【关键】允许发布携带 IPv4 地址的 Type 2 路由
  peer 1.1.1.1 advertise irb
  # 【关键】允许发布携带 IPv6 地址的 Type 2 路由
  peer 1.1.1.1 advertise irbv6
#

(2) Spine 节点配置 (Route Reflector)

  • 配置目标:Spine 需要具备处理和转发携带 IP 信息的 EVPN 路由的能力,并与所有 Client 协商此能力。
bash 复制代码
#
# Spine1 配置
bgp 100
 l2vpn-family evpn
  # 针对所有 Leaf/BL 节点开启 IRB 发布能力
  # Leaf1
  peer 2.2.2.2 advertise irb
  peer 2.2.2.2 advertise irbv6
  # Leaf2
  peer 3.3.3.3 advertise irb
  peer 3.3.3.3 advertise irbv6
  # BL1
  peer 4.4.4.4 advertise irb
  peer 4.4.4.4 advertise irbv6
#

💡 技术深解:advertise irb 的作用机制

在 BGP EVPN 中,Type 2 路由(MAC/IP Advertisement Route)有两种形态:

  1. 纯 MAC 路由 (MAC-only)

    • 仅包含 [MAC Address, L2VNI]
    • 用于二层互通。
    • 默认情况下,只要本地学习到 MAC 就会发布此类路由。
  2. IRB 主机路由 (MAC+IP)

    • 包含 [MAC Address, IP Address, L2VNI, L3VNI]
    • 用于三层互通(分布式网关路由)。
    • 限制:默认情况下,BGP 为了节省资源,即使 Vbdif 收集到了 ARP/ND 信息,也不会在 Type 2 路由中填充 IP Address 字段。
    • 解锁 :执行 peer ... advertise irb (IPv4) 和 irbv6 (IPv6) 命令后,设备才会被授权将 IP 信息填充到 Type 2 路由中发送给邻居。如果不配置此命令,远端 Leaf 将无法学习到 /32/128 主机路由,导致跨子网通信失败。

4.8 配置网段路由发布 (Type 5 - IP Prefix Route)

本节配置的核心目的是生成 Type 5 EVPN 路由。Type 2 路由主要用于传递具体的终端主机信息(/32 或 /128),而 Type 5 路由则用于传递网段信息(如子网段、外部路由),实现类似传统 L3VPN 的功能。

本阶段配置 BGP 将 VPN 实例中的普通 IPv4/IPv6 路由(如直连路由、静态路由或引入的外部路由)转换为 Type 5 (IP Prefix Route) 通告给 EVPN 对等体。

(1) Leaf 节点与 Border Leaf 配置

  • 配置目标
    • Leaf 节点 :发布本地 Vbdif 直连网段(如 172.16.1.0/24),供 BL 节点学习以便回程流量寻址。
    • BL 节点:发布引入的外部路由(如 Internet 路由),供 Leaf 节点学习以便访问外网。
  • 配置逻辑:在 BGP 的 VPN 实例地址族视图下,引入路由并开启 EVPN 通告能力。
bash 复制代码
#
# Leaf1, Leaf2, BL1 通用配置逻辑
bgp 100
 #
 # --- IPv4 网段路由发布 ---
 ipv4-family vpn-instance vpn1
  # 引入路由 (Leaf 通常引入直连,BL 可能引入 OSPF/Static)
  import-route direct
  # 【关键】将 IP 路由表中的路由转换为 Type 5 EVPN 路由发布
  advertise l2vpn evpn
 #
 # --- IPv6 网段路由发布 ---
 ipv6-family vpn-instance vpn1
  import-route direct
  advertise l2vpn evpn
#

💡 技术深解:advertise l2vpn evpn 与 Type 5 路由

在 BGP EVPN 路由体系中,Type 5 路由 (IP Prefix Route) 扮演着"传统路由搬运工"的角色。

  1. 命令作用

    • advertise l2vpn evpn 命令打通了 IP Routing Table (VRF)BGP EVPN Table 之间的界限。
    • 它将 VRF 中通过 import-route 引入的路由(如 Direct, OSPF, Static)提取出来,封装成 Type 5 路由格式发送给邻居。
  2. 与 Type 2 (IRB) 的区别

    • Type 2 (IRB) :传递的是 主机路由 (/32/128),携带 MAC 信息。源头是 ARP/ND 表项。用于同一租户内的精确互通和迁移。
    • Type 5 (Prefix) :传递的是 网段路由 (如 /24),不携带 MAC 信息。源头是路由表。用于通告子网段或引入外部网络的路由(南北向流量)。
  3. 场景应用

    • 在本实验的南北向通信(访问 R1)中,BL1 就是通过此配置,将去往 R1 的路由变成 Type 5 路由告诉 Leaf1 的。

4.9 配置边界互联与外部路由 (Border Interconnection)

本节内容的核心在于打通 Overlay 网络与外部物理网络(Underlay/Internet)的连接。关键点在于 Border Leaf 接口的 VRF 绑定 以及外部路由器的 回程路由 配置。

本阶段配置 Border Leaf (BL1) 与外部核心路由器 (R1) 的物理互联地址,并在 R1 上配置指向 VXLAN 内部租户网段的静态路由,以实现南北向流量的互通。

(1) BL1 配置 (边界网关)

  • 配置目标 :将连接 R1 的物理接口切换为三层模式,并绑定到租户的 VPN 实例 (vpn1) 中,确保该接口的路由能直接进入 VRF 路由表,进而通过 Type 5 路由发布给内部 Leaf。
  • 配置逻辑
    • undo portswitch:将二层接口切换为三层路由接口。
    • ip binding vpn-instance:接口划入 VRF,隔离路由表。
bash 复制代码
#
interface GE1/0/1
 # 切换为三层接口
 undo portswitch
 # 【关键】绑定到租户 VRF,确保外部流量进入正确的 VPN 实例
 ip binding vpn-instance vpn1
 #
 # IPv4 配置
 ip address 182.1.1.1 255.255.255.0
 # IPv6 配置
 ipv6 enable
 ipv6 address 182:1:1::1/64
#

(2) R1 配置 (模拟外部网络)

  • 配置目标:配置互联地址,并添加去往数据中心内部租户网段的静态路由(回程路由)。
  • 配置逻辑
    • 下一跳指向 BL1 的互联接口地址。
    • 目标网段涵盖租户的 IPv4 (10.x, 172.16.x) 和 IPv6 子网。
bash 复制代码
#
# 互联接口配置
interface GE0/0/1
 ip address 182.1.1.2 255.255.255.0
 ipv6 enable
 ipv6 address 182:1:1::2/64
#
# --- IPv4 回程路由 ---
# 指向租户 Serv2/4 网段
ip route-static 10.10.10.0 255.255.255.0 182.1.1.1
# 指向租户 Serv1/3 网段
ip route-static 172.16.1.0 255.255.255.0 182.1.1.1
# 指向管理/Underlay 网段 (可选,视管理需求而定)
ip route-static 192.168.0.0 255.255.0.0 182.1.1.1
#
# --- IPv6 回程路由 ---
# 指向租户 IPv6 网段
ipv6 route-static 172:16:1:: 64 182:1:1::1
ipv6 route-static 10:10:10:: 64 182:1:1::1 
#

💡 技术深解:南北向流量的路由逻辑
  1. 出方向 (Leaf -> Internet)

    • BL1 通过 import-route direct 将直连的外部网段 (182.1.1.0/24) 引入 BGP。
    • BL1 生成 Type 5 (Prefix) 路由发布给内部 Leaf。
    • Leaf 收到后,知晓去往外网需找 BL1。
  2. 入方向 (Internet -> Leaf)

    • R1 收到去往 10.10.10.10 的报文。
    • R1 查静态路由,下一跳发给 BL1 (182.1.1.1)。
    • BL1 收到报文,根据接口绑定进入 vpn1 路由表。
    • BL1vpn1 路由表,匹配到由 Leaf 发布过来的 Type 5 (网段)Type 2 (主机) 路由。
    • BL1 封装 VXLAN 隧道,将报文转发给目标 Leaf。

五. 初始状态检查与验证 (Initial State Verification)

本章节的目标是在进行实际业务 Ping 测试(Packet Walk)之前,确认 Underlay 底层互通性、Overlay 控制面邻居关系以及基础路由表项的正确性。这是排查问题的关键基线。

在发起业务流量测试前,需按照从底层到上层、从控制面到数据面的顺序,对网络状态进行基线检查。

5.1 Underlay 基础网络检查

确认底层 OSPF 协议收敛,所有 VTEP 节点的 Loopback 地址(Loopback0 和 Loopback10)在路由表中可见且可达。

  • 检查命令
    • display ospf peer brief:确认 OSPF 邻居状态为 Full
    • display ip routing-table protocol ospf:确认能学习到所有 Leaf/Spine/BL 的 Loopback0 (2.2.2.2 等) 和 Loopback10 (20.20.20.20 等) 路由。
  • 关键点:确保 Loopback0 用于 BGP 建立,Loopback10 用于 VXLAN 隧道封装,两者缺一不可。

5.2 Overlay 控制平面检查 (BGP EVPN Peer)

确认 BGP EVPN 地址族的邻居关系是否正常建立。

  • 检查命令display bgp evpn peer
  • 预期结果 :所有 Leaf/BL 节点应与 Spine (RR) 建立邻居关系,状态为 Established

比如,在 Spine1 (RR) 上检查 BGP EVPN 邻居状态,确保所有 Leaf 和 Border Leaf 节点均已成功建立 EVPN 会话。

  • 检查命令[Spine1] display bgp evpn peer
  • 实验输出
bash 复制代码
[Spine1]dis bgp evpn peer
 BGP local router ID        : 1.1.1.1
 Local AS number            : 100
 Total number of peers      : 3
 Peers in established state : 3

  Peer                             V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv
  2.2.2.2                          4         100      186      282     0 01:08:35 Established       26
  3.3.3.3                          4         100      175      279     0 01:06:20 Established       22
  4.4.4.4                          4         100       78      276     0 01:05:26 Established        6
  • 结果分析
    1. State :所有对等体(2.2.2.2, 3.3.3.3, 4.4.4.4)的状态均为 Established,说明 EVPN 控制平面连接正常。
    2. PrefRcv (接收前缀数)
      • Leaf1 (2.2.2.2) & Leaf2 (3.3.3.3) :接收到的前缀数较多(26/22 条)。这些前缀包含 Type 3 (IMET-Inclusive Multicast Ethernet Tag Route) 泛洪路由(每个 L2VNI 一条)、Type 5 (Prefix) 网段路由(本地直连网段)以及部分 Type 2 (MAC) 路由(设备自身接口 MAC 或已学习到的终端 MAC)。
      • BL1 (4.4.4.4) :接收到的前缀数较少(6 条)。这是符合预期的,因为 BL1 通常只发布引入的 Type 5 外部网段路由,且由于 BL1 本次实验未配置 L2VNI(不处理 BUM 流量),因此不会发布 Type 3 路由。

5.3 Overlay 数据平面检查 (VXLAN Tunnel & Peer)

需要从VXLAN 隧道的建立机制BUM 流量复制机制 两个维度来剖析Tunnel和Peer差异。

核心区别在于:

  1. Tunnel (隧道):是物理通道,只要有通信需求(无论是二层还是三层,单播还是广播)都会建立。
  2. Peer (头端复制列表) :是逻辑列表,仅用于 L2VNI 的广播/组播 (BUM) 流量复制
    确认 VXLAN 隧道接口是否 Up,以及头端复制列表是否基于 Type 3 路由正确生成。
  • 检查命令
    • display vxlan tunnel:查看动态隧道是否建立(Source/Destination IP 正确,State 为 Up)。
    • display vxlan peer:查看 VNI 的头端复制列表(Head-end Peer List),确认包含同 VNI 的其他 VTEP IP。
  • 关联路由 :此状态依赖于 Type 3 (Inclusive Multicast) 路由的正常交互。

本步骤检查数据平面转发通道的建立情况。对比 Server Leaf (Leaf1) 与 Border Leaf (BL1) 的表项差异,验证不同业务角色下的隧道建立逻辑。

1. Leaf 节点检查 (L2/L3 融合节点)

Leaf1 同时承载二层同子网互通 (L2VNI) 和三层跨网段路由 (L3VNI) 业务。

  • 检查命令[Leaf1] display vxlan tunnel & display vxlan peer

  • 实验输出

    bash 复制代码
    [Leaf1]dis vxlan tunnel
    Number of vxlan tunnel : 2
    Tunnel ID   Source           Destination      State  Type     Uptime
    4026531841  20.20.20.20      30.30.30.30      up     dynamic  01:21:13  
    4026531842  20.20.20.20      40.40.40.40      up     dynamic  01:20:19  
    
    [Leaf1]dis vxlan peer  
    Number of peers : 2
    Vni ID    Source           Destination      Type      Out Vni ID
    8000      20.20.20.20      30.30.30.30      dynamic   8000          
    9000      20.20.20.20      30.30.30.30      dynamic   9000          
  • 结果分析

    • Tunnel (2条) :Leaf1 与 Leaf2 (30.30.30.30) 及 BL1 (40.40.40.40) 均建立了 VXLAN 隧道。这表明 Leaf1 可以向这两台设备发送 VXLAN 封装报文。
    • Peer (有表项) :Leaf1 拥有去往 Leaf2 的头端复制列表。这是因为两者都配置了 L2VNI (8000/9000) 并交换了 Type 3 (IMET) 路由。当 Leaf1 收到广播报文时,会根据此表项复制并发送给 Leaf2。
    • 注意:Leaf1 没有去往 BL1 的 Peer 表项,因为 BL1 不参与二层广播。

2. Border Leaf 节点检查 (纯 L3 路由节点)

BL1 仅处理南北向的三层路由流量,不接入二层业务,也不处理广播泛洪。

  • 检查命令[BL1] display vxlan tunnel & display vxlan peer

  • 实验输出

    bash 复制代码
    [BL1]dis vxlan tunnel
    Number of vxlan tunnel : 2
    Tunnel ID   Source           Destination      State  Type     Uptime
    4026531841  40.40.40.40      20.20.20.20      up     dynamic  01:21:14  
    4026531842  40.40.40.40      30.30.30.30      up     dynamic  01:21:14  
    
    [BL1]dis vxlan peer
    Number of peers : 0
  • 结果分析

    • Tunnel (2条) :BL1 通过 Type 5 (Prefix)Type 2 (IRB) 路由学习到了内部 Leaf 的路由信息,因此建立了去往 Leaf1 和 Leaf2 的动态隧道,用于传输三层单播流量
    • Peer (0条) :由于 BL1 未配置 L2VNI (无 bridge-domain 配置),它不会生成也不接收 Type 3 路由。它不需要处理 BUM 流量,因此头端复制列表为空。

💡 核心差异总结
表项类型 对应流量 触发条件 (路由类型) Leaf 状态 BL 状态
Tunnel 单播 (Unicast) Type 2 (MAC/IP) Type 5 (Prefix) (需与 Leaf/BL 互通) (需与 Leaf 互通)
Peer 广播/组播 (BUM) Type 3 (IMET) (需处理同子网广播) (纯三层转发,不处理广播)

结论:BL1 "有 Tunnel 无 Peer" 是正常现象,表明它成功建立了三层路由转发通道,且正确地规避了不必要的二层广播处理。

5.4 EVPN 路由表项初步检查

查看 BGP EVPN 路由表,确认各类路由的基础收敛情况。

  • 检查命令display bgp evpn all routing-table
  • 检查重点
    1. Type 3 路由 (IMET):必须存在。用于构建 BUM 流量的广播表。
    2. Type 5 路由 (Prefix)
      • 应能看到 BL1 发布的外部网段路由(如 0.0.0.0/0182.1.1.0/24)。
      • 应能看到 Leaf 节点发布的内部直连网段路由(如 172.16.1.0/24)。
    3. Type 2 路由 (MAC/IP)
      • MAC 路由:可能较少或为空(取决于是否有底层协议报文触发)。
      • IRB 路由:在业务未通前,通常为空。

在 Leaf1 上执行 display bgp evpn all routing-table,可以看到 BGP EVPN 控制平面已成功收敛。

bash 复制代码
[Leaf1]dis bgp evpn all routing-table 
 Local AS number : 100

 BGP Local router ID is 2.2.2.2
 Status codes: * - valid, > - best, d - damped, x - best external, a - add path,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

 
 EVPN address family:
 Number of Mac Routes: 24
 Route Distinguisher: 20:1
       Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop
 *>    0:48:0001-0001-0001:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-3f52-6388:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-bd3d-e33c:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-cfd9-36d2:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:403f-abde-4d11:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-3f52-6388:128:[FE80::281:3FFF:FE52:6388]     0.0.0.0                                      
 *>    0:48:0081-bd3d-e33c:128:[FE80::281:BDFF:FE3D:E33C]     0.0.0.0                                      
 *>    0:48:0081-cfd9-36d2:128:[FE80::281:CFFF:FED9:36D2]     0.0.0.0                                      
 *>    0:48:403f-abde-4d11:128:[FE80::423F:ABFF:FEDE:4D11]    0.0.0.0                                      
 Route Distinguisher: 20:2
       Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop
 *>    0:48:0002-0002-0002:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-f6dd-23f7:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-8c8f-d31f:128:[FE80::281:8CFF:FE8F:D31F]     0.0.0.0                                      
 *>    0:48:0081-c848-bba8:128:[FE80::281:C8FF:FE48:BBA8]     0.0.0.0                                      
 *>    0:48:0081-f6dd-23f7:128:[FE80::281:F6FF:FEDD:23F7]     0.0.0.0                                      
 *>    0:48:764e-c014-7d7a:128:[FE80::744E:C0FF:FE14:7D7A]    0.0.0.0                                      
 Route Distinguisher: 30:1
       Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop
 *>i   0:48:0001-0001-0001:0:0.0.0.0                          30.30.30.30                                  
 *>i   0:48:0081-021b-3158:128:[FE80::281:2FF:FE1B:3158]      30.30.30.30                                  
 *>i   0:48:0081-3605-62bf:128:[FE80::281:36FF:FE05:62BF]     30.30.30.30                                  
 *>i   0:48:0081-3fc0-2cbb:128:[FE80::281:3FFF:FEC0:2CBB]     30.30.30.30                                  
 *>i   0:48:fa9e-6574-0010:128:[FE80::F89E:65FF:FE74:10]      30.30.30.30                                  
 Route Distinguisher: 30:2
       Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop
 *>i   0:48:0002-0002-0002:0:0.0.0.0                          30.30.30.30                                  
 *>i   0:48:0081-762c-3f3f:128:[FE80::281:76FF:FE2C:3F3F]     30.30.30.30                                  
 *>i   0:48:0081-9de1-68bc:128:[FE80::281:9DFF:FEE1:68BC]     30.30.30.30                                  
 *>i   0:48:3805-6049-7164:128:[FE80::3A05:60FF:FE49:7164]    30.30.30.30                                  


 EVPN-Instance 100:
 Number of Mac Routes: 14
       Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop
 *>    0:48:0001-0001-0001:0:0.0.0.0                          0.0.0.0                                      
 * i                                                          30.30.30.30                                  
 *>    0:48:0081-3f52-6388:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-bd3d-e33c:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:0081-cfd9-36d2:0:0.0.0.0                          0.0.0.0                                      
 *>    0:48:403f-abde-4d11:0:0.0.0.0                          0.0.0.0                                      
 *>i   0:48:0081-021b-3158:128:[FE80::281:2FF:FE1B:3158]      30.30.30.30                                  
 *>i   0:48:0081-3605-62bf:128:[FE80::281:36FF:FE05:62BF]     30.30.30.30                                  
 *>    0:48:0081-3f52-6388:128:[FE80::281:3FFF:FE52:6388]     0.0.0.0                                      
 *>i   0:48:0081-3fc0-2cbb:128:[FE80::281:3FFF:FEC0:2CBB]     30.30.30.30                                  
 *>    0:48:0081-bd3d-e33c:128:[FE80::281:BDFF:FE3D:E33C]     0.0.0.0                                      
 *>    0:48:0081-cfd9-36d2:128:[FE80::281:CFFF:FED9:36D2]     0.0.0.0                                      
 *>    0:48:403f-abde-4d11:128:[FE80::423F:ABFF:FEDE:4D11]    0.0.0.0                                      
 *>i   0:48:fa9e-6574-0010:128:[FE80::F89E:65FF:FE74:10]      30.30.30.30                                  


 EVPN-Instance 200:
 Number of Mac Routes: 10
       Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop
 *>    0:48:0002-0002-0002:0:0.0.0.0                          0.0.0.0                                      
 * i                                                          30.30.30.30                                  
 *>    0:48:0081-f6dd-23f7:0:0.0.0.0                          0.0.0.0                                      
 *>i   0:48:0081-762c-3f3f:128:[FE80::281:76FF:FE2C:3F3F]     30.30.30.30                                  
 *>    0:48:0081-8c8f-d31f:128:[FE80::281:8CFF:FE8F:D31F]     0.0.0.0                                      
 *>i   0:48:0081-9de1-68bc:128:[FE80::281:9DFF:FEE1:68BC]     30.30.30.30                                  
 *>    0:48:0081-c848-bba8:128:[FE80::281:C8FF:FE48:BBA8]     0.0.0.0                                      
 *>    0:48:0081-f6dd-23f7:128:[FE80::281:F6FF:FEDD:23F7]     0.0.0.0                                      
 *>i   0:48:3805-6049-7164:128:[FE80::3A05:60FF:FE49:7164]    30.30.30.30                                  
 *>    0:48:764e-c014-7d7a:128:[FE80::744E:C0FF:FE14:7D7A]    0.0.0.0                                      
 
 EVPN address family:
 Number of Inclusive Multicast Routes: 4
 Route Distinguisher: 20:1
       Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop
 *>    0:32:20.20.20.20                                       0.0.0.0                                      
 Route Distinguisher: 20:2
       Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop
 *>    0:32:20.20.20.20                                       0.0.0.0                                      
 Route Distinguisher: 30:1
       Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop
 *>i   0:32:30.30.30.30                                       30.30.30.30                                  
 Route Distinguisher: 30:2
       Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop
 *>i   0:32:30.30.30.30                                       30.30.30.30                                  

                
 EVPN-Instance 100:
 Number of Inclusive Multicast Routes: 2
       Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop
 *>    0:32:20.20.20.20                                       0.0.0.0                                      
 *>i   0:32:30.30.30.30                                       30.30.30.30                                  


 EVPN-Instance 200:
 Number of Inclusive Multicast Routes: 2
       Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop
 *>    0:32:20.20.20.20                                       0.0.0.0                                      
 *>i   0:32:30.30.30.30                                       30.30.30.30                                  
 
 EVPN address family:
 Number of Ip Prefix Routes: 23
 Route Distinguisher: 200:1
       Network(EthTagId/IpPrefix/IpPrefixLen)                 NextHop
 *>    0:172.16.1.0:24                                        0.0.0.0                                      
 *>    0:10.10.10.0:24                                        0.0.0.0                                      
 *>    0:172.16.1.1:32                                        0.0.0.0                                      
 *>    0:10.10.10.1:32                                        0.0.0.0                                      
 *>    0:[FE80::]:10                                          ::                                           
 *>    0:[10:10:10::]:64                                      ::                                           
 *>    0:[172:16:1::]:64                                      ::                                           
 *>    0:[10:10:10::1]:128                                    ::                                           
 *>    0:[172:16:1::1]:128                                    ::                                           
 Route Distinguisher: 300:1
       Network(EthTagId/IpPrefix/IpPrefixLen)                 NextHop
 *>i   0:172.16.1.0:24                                        30.30.30.30                                  
 *>i   0:10.10.10.0:24                                        30.30.30.30                                  
 *>i   0:172.16.1.1:32                                        30.30.30.30                                  
 *>i   0:10.10.10.1:32                                        30.30.30.30                                  
 *>i   0:[10:10:10::]:64                                      ::FFFF:30.30.30.30                           
 *>i   0:[172:16:1::]:64                                      ::FFFF:30.30.30.30                           
 *>i   0:[10:10:10::1]:128                                    ::FFFF:30.30.30.30                           
 *>i   0:[172:16:1::1]:128                                    ::FFFF:30.30.30.30                           
 Route Distinguisher: 400:1
       Network(EthTagId/IpPrefix/IpPrefixLen)                 NextHop
 *>i   0:182.1.1.0:24                                         40.40.40.40                                  
 *>i   0:41.41.41.0:24                                        40.40.40.40                                  
 *>i   0:182.1.1.1:32                                         40.40.40.40                                  
 *>i   0:41.41.41.41:32                                       40.40.40.40                                  
 *>i   0:[182:1:1::]:64                                       ::FFFF:40.40.40.40                           
 *>i   0:[182:1:1::1]:128                                     ::FFFF:40.40.40.40                           
[Leaf1] 

以下是对各类路由的深度剖析:

1. Type 2 Route (MAC/IP Advertisement) ------ 主机与 MAC 路由

此类型路由包含纯 MAC 路由(用于二层转发)和 IRB 主机路由(用于三层转发与 ARP/ND 抑制)。

  • 本地终端 (Local)

    • MAC : 403f-abde-4d11 (Serv1) 和 764e-c014-7d7a (Serv2) 分别在 RD 20:1 (BD100) 和 20:2 (BD200) 下可见,NextHop 为 0.0.0.0,表明为本地接入。
    • IPv6 Link-Local : 观察到 [FE80::423F:ABFF:FEDE:4D11] (Serv1) 等 Link-Local 地址的主机路由。这表明 IPv6 ND 收集功能 (ipv6 nd collect host enable) 已生效,Leaf1 已识别到本地 IPv6 终端。
    • 注意 : 此时表中尚未显示 Serv1/Serv2 的全局单播 IPv4/IPv6 地址 (172.16.1.10, 10:10:10::10)。这是正常现象,因为在未发起业务流量前,终端可能仅通过无状态自动配置 (SLAAC) 或 DAD 检测交互了 Link-Local 地址。发起 Ping 后将触发全局地址路由生成。
  • 远端终端 (Remote)

    • MAC : fa9e-6574-0010 (Serv3) 和 3805-6049-7164 (Serv4) 在 RD 30:130:2 下可见,NextHop 指向 Leaf2 (30.30.30.30)。
    • 结论: Leaf1 已成功通过 EVPN 学习到远端 Leaf2 下挂终端的 MAC 地址及 IPv6 Link-Local 地址,二层互通基础已就绪。

2. Type 3 Route (Inclusive Multicast) ------ BUM 泛洪隧道

用于构建处理广播/组播流量的头端复制列表。

  • L2VNI 8000 (BD100) : RD 20:1 下有本地路由,RD 30:1 下有远端路由 (NextHop 30.30.30.30)。
  • L2VNI 9000 (BD200) : RD 20:2 下有本地路由,RD 30:2 下有远端路由。
  • 结论: Leaf1 与 Leaf2 针对所有 L2VNI 的 BUM 隧道均已成功建立。

3. Type 5 Route (IP Prefix) ------ 网段路由 (双栈)

用于传递 IPv4 和 IPv6 的网段路由,实现分布式网关的路由同步及南北向互通。

  • IPv4 网段:

    • 本地直连 : 172.16.1.0/2410.10.10.0/24 在 RD 200:1 下可见。
    • 远端同步 : 相同的网段在 RD 300:1 (Leaf2) 下也可见,NextHop 为 30.30.30.30。这是任播网关的特征,确保回程流量可达最近的网关节点。
    • 外部路由 : 182.1.1.0/24 在 RD 400:1 (BL1) 下可见,NextHop 为 40.40.40.40。表明 Leaf1 已知晓去往外网的路径。
  • IPv6 前缀 (关键修正验证):

    • 本地 : [172:16:1::]:64[10:10:10::]:64 在 RD 200:1 下可见。
    • 远端 : 在 RD 300:1 (Leaf2) 下,可以看到 0:[172:16:1::]:64
    • 验证通过: 这标志着 IPv6 分布式网关的路由信息已在 Leaf1 和 Leaf2 之间正确同步。

总结:

当前的 EVPN 路由表状态非常健康

  1. 控制面:Type 3 和 Type 5 路由已全网收敛,双栈网段路由同步无误。
  2. 数据面准备:MAC 地址和 Link-Local IPv6 地址已学习,二层与三层的基础转发表项已就绪。
  3. 待触发:全局单播 IP 的主机路由 (Type 2 IRB) 等待实际业务流量触发生成。

5.5 VPN 实例路由表检查 (L3 Forwarding Plane Verification)

BGP EVPN 路由表(display bgp evpn ...)仅代表控制平面 的传递状况,而这些路由是否真正能够指导转发,取决于它们是否成功"落地"到 VPN 实例的路由表 (RIB/FIB)中。

在 BGP EVPN 场景下,Type 5 路由(网段)和 Type 2 路由(主机路由)在通过 RT (Route Target) 导入验证后,最终会呈现为 VPN 实例中的 IP 路由。

控制平面的 EVPN 路由(Type 2/5)最终必须被引入到本地的 VPN 实例路由表 中,才能真正指导三层数据转发。此步骤检查 BGP 路由是否成功"落地"为 IP 路由。

1. 检查 IPv4 VPN 路由表

  • 检查命令[Leaf1] display ip routing-table vpn-instance vpn1
  • 预期结果与分析
    • 直连网段 (Direct)
      • 应看到本地配置的网关网段(如 172.16.1.0/24, 10.10.10.0/24),Protocol 为 Direct。这是分布式网关的特征。
    • 外部网段 (IBGP/EVPN Type 5)
      • 应看到由 BL1 发布的外部路由(如 182.1.1.0/24 或缺省路由)。
      • Protocol 应为 IBGP (或 EVPN),NextHop 指向 BL1 的 VTEP 地址 (40.40.40.40),InterfaceVXLAN
    • 远端主机路由 (IBGP/EVPN Type 2)
      • (注:需在业务触发后)应看到远端主机的 /32 路由。
      • NextHop 指向远端 Leaf 的 VTEP 地址。
bash 复制代码
[Leaf1]dis ip routing-table vpn-instance vpn1
Proto: Protocol        Pre: Preference
Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route
------------------------------------------------------------------------------
Routing Table : vpn1
         Destinations : 11       Routes : 11        

Destination/Mask    Proto   Pre  Cost        Flags NextHop                                  Interface

     10.10.10.0/24  Direct  0    0             D   10.10.10.1                               Vbdif200
     10.10.10.1/32  Direct  0    0             D   127.0.0.1                                Vbdif200
   10.10.10.255/32  Direct  0    0             D   127.0.0.1                                Vbdif200
     41.41.41.0/24  IBGP    255  0             RD  40.40.40.40                              VXLAN
    41.41.41.41/32  IBGP    255  0             RD  40.40.40.40                              VXLAN
     172.16.1.0/24  Direct  0    0             D   172.16.1.1                               Vbdif100
     172.16.1.1/32  Direct  0    0             D   127.0.0.1                                Vbdif100
   172.16.1.255/32  Direct  0    0             D   127.0.0.1                                Vbdif100
      182.1.1.0/24  IBGP    255  0             RD  40.40.40.40                              VXLAN
      182.1.1.1/32  IBGP    255  0             RD  40.40.40.40                              VXLAN
255.255.255.255/32  Direct  0    0             D   127.0.0.1                                InLoopBack0
[Leaf1]

2. 检查 IPv6 VPN 路由表

  • 检查命令[Leaf1] display ipv6 routing-table vpn-instance vpn1
  • 预期结果与分析
    • 直连前缀 :本地网关前缀(如 172:16:1::/64)为 Direct
    • 外部前缀 :BL1 发布的外部 IPv6 路由(如 182:1:1::/64),Protocol 为 IBGP,下一跳指向 BL1。
    • 远端主机路由 :(业务触发后) 远端 IPv6 主机的 /128 路由。
bash 复制代码
[Leaf1]dis ipv6 routing-table vpn-instance vpn1
Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route
------------------------------------------------------------------------------
Routing Table : vpn1
         Destinations : 7        Routes : 7         

Destination  : 10:10:10::                              PrefixLength : 64
NextHop      : 10:10:10::1                             Preference   : 0
Cost         : 0                                       Protocol     : Direct
RelayNextHop : ::                                      TunnelID     : 0x0
Interface    : Vbdif200                                Flags        : D

Destination  : 10:10:10::1                             PrefixLength : 128
NextHop      : ::1                                     Preference   : 0
Cost         : 0                                       Protocol     : Direct
RelayNextHop : ::                                      TunnelID     : 0x0
Interface    : Vbdif200                                Flags        : D

Destination  : 172:16:1::                              PrefixLength : 64
NextHop      : 172:16:1::1                             Preference   : 0
Cost         : 0                                       Protocol     : Direct
RelayNextHop : ::                                      TunnelID     : 0x0
Interface    : Vbdif100                                Flags        : D

Destination  : 172:16:1::1                             PrefixLength : 128
NextHop      : ::1                                     Preference   : 0
Cost         : 0                                       Protocol     : Direct
RelayNextHop : ::                                      TunnelID     : 0x0
Interface    : Vbdif100                                Flags        : D

Destination  : 182:1:1::                               PrefixLength : 64
NextHop      : ::FFFF:40.40.40.40                      Preference   : 255
Cost         : 0                                       Protocol     : IBGP
RelayNextHop : ::                                      TunnelID     : 0x0000000027f0000002
Interface    : VXLAN                                   Flags        : RD

Destination  : 182:1:1::1                              PrefixLength : 128
NextHop      : ::FFFF:40.40.40.40                      Preference   : 255
Cost         : 0                                       Protocol     : IBGP
RelayNextHop : ::                                      TunnelID     : 0x0000000027f0000002
Interface    : VXLAN                                   Flags        : RD

Destination  : FE80::                                  PrefixLength : 10
NextHop      : ::                                      Preference   : 0
Cost         : 0                                       Protocol     : Direct
RelayNextHop : ::                                      TunnelID     : 0x0
Interface    : NULL0                                   Flags        : DB
[Leaf1]   

💡 核心逻辑说明
  1. 为什么不直接看 display bgp vpnv4

    • 虽然在 MPLS L3VPN 中我们习惯查看 bgp vpnv4,但在 EVPN VXLAN 场景下,设备通过 l2vpn-family evpn 接收路由后,是将 Type 5 和 Type 2 路由直接引入到 VPN 实例的 IP 路由表中。
    • display ip routing-table vpn-instance 是判断数据平面转发最直接、最权威的依据。只有在这里看到的路由,才能被写入 FIB 表指导流量转发。
  2. Type 5 路由的最终形态

    • Type 5 路由在 BGP EVPN 表中是"前缀路由"。
    • 导入 VRF 后 :它变成了一条普通的 IPv4/IPv6 路由,出接口变成 VXLAN 隧道 ,下一跳变成远端 VTEP。这就是 EVPN 实现"路由隔离与透传"的关键。
  3. Type 2 IRB 路由的最终形态

    • Type 2 路由在 BGP EVPN 表中包含 MAC 和 IP。
    • 导入 VRF 后 :其中的 IP 信息被提取出来,生成 /32 (v4) 或 /128 (v6) 的主机路由。这使得网关可以精确地将流量发往主机所在的特定 Leaf,而不是发往整个网段。

5.6 本地表项检查 (Pre-Traffic)

检查 Leaf 节点的本地转发表项。

  • 检查命令
    • display mac-address bridge-domain <bd-id>
    • display arp interface Vbdif <id>
    • display ipv6 neighbors interface Vbdif <id>
  • 预期说明 :由于尚未进行业务互通(Ping)测试,且终端未发送免费 ARP/NA,此时上述表项可能为空或仅包含少量系统条目。这是正常现象,待后续 Packet Walk 环节产生流量后,这些表项将动态生成并触发 Type 2 路由的发布。

这一步验证了接入侧 (Access Side) 的物理链路状态以及 IPv6 链路本地 (Link-Local) 机制是否正常工作。

1. 检查 MAC 地址表 (Bridge Domain)

  • 检查命令[Leaf1] display mac-address bridge-domain 100
  • 实验输出
bash 复制代码
[Leaf1]dis mac-address bridge-domain 100
Flags: * - Backup
       # - forwarding logical interface, operations cannot be performed based 
           on the interface.
BD   : bridge-domain   Age : dynamic MAC learned time in seconds
-------------------------------------------------------------------------------
MAC Address    VLAN/VSI/BD   Learned-From        Type                   Age
-------------------------------------------------------------------------------
0001-0001-0001 -/-/100       30.30.30.30         dynamic              12639
0081-3f52-6388 -/-/100       GE1/0/2.1           dynamic                 72
0081-bd3d-e33c -/-/100       GE1/0/2.1           dynamic                190
403f-abde-4d11 -/-/100       GE1/0/2.1           dynamic                277
-------------------------------------------------------------------------------
Total items: 4
  • 结果解读
    • 本地学习403f-abde-4d11 (Serv1 的 MAC) 来源于 GE1/0/2.1。说明 Leaf1 成功从物理接口学习到了本地终端 MAC。
    • 远端学习0001-0001-0001 (网关 MAC) 来源于 30.30.30.30 (Leaf2)。这是因为 Leaf2 也配置了相同的网关 MAC 并通过 EVPN 通告了出来,Leaf1 在二层泛洪域中学习到了它(注意:在任播网关场景下,这通常不影响业务,但也侧面证明了 EVPN L2 通道是通的)。
    • 其他 MAC0081-xxxx 开头的 MAC 通常是 IPv6 协议栈在进行 DAD (重复地址检测) 或 RS (路由器请求) 时产生的临时或组播映射 MAC。

2. 检查 IPv6 邻居表 (ND Table)

  • 检查命令[Leaf1] display ipv6 neighbors vbdif 100
  • 实验输出
bash 复制代码
[Leaf1]dis ipv6 neighbors vbdif 100
-----------------------------------------------------------------------------
IPv6 Address : FE80::281:3FFF:FE52:6388                                         
Link-layer   : 0081-3f52-6388                     State     : REACH             
Interface    : GE1/0/2.1                          Age       : 2                 
...
IPv6 Address : FE80::423F:ABFF:FEDE:4D11                                        
Link-layer   : 403f-abde-4d11                     State     : REACH             
Interface    : GE1/0/2.1                          Age       : 5                 
-----------------------------------------------------------------------------
Total: 3        Dynamic: 3      Static: 0       Remote: 0      
  • 结果解读
    • Link-Local 地址 :表中显示的 IP 均为 FE80::... 开头的链路本地地址。这是 IPv6 的特性,设备接入网络后会自动配置 Link-Local 地址并进行邻居发现。
    • State: REACH :表示邻居可达。Leaf1 已经与 Serv1 (403f-abde-4d11) 完成了 ND 交互。
    • 关键现象 :此时表中没有 Serv1 的全局单播地址 (172:16:1::10)。
      • 原因:因为尚未发起针对全局地址的 Ping 测试,终端还没有触发全局地址的 ND 解析。
      • 预期:这也是为什么之前的 Type 2 路由表中只有 Link-Local 主机路由的原因。待下一章节 Packet Walk 发起 Ping 后,这里将出现全局 IPv6 地址,并同步触发 EVPN 生成带全局 IP 的 Type 2 路由。

3. 本地 ARP 表项检查 (IPv4 Pre-Traffic)

最后,检查 IPv4 的 ARP 表项。

  • 检查命令[Leaf1] display arp interface vbdif100
  • 实验输出
bash 复制代码
[Leaf1]dis arp interface vbdif100
ARP timeout:1200s
ARP Entry Types: D - Dynamic, S - Static, I - Interface, O - OpenFlow, RD - Redirect
EXP: Expire-time  src: Source ip   dst: Destination ip

IP ADDRESS      MAC ADDRESS    EXP(M) TYPE/VLAN/CEVLAN   INTERFACE
----------------------------------------------------------------------------------------
172.16.1.1      0001-0001-0001        I                  Vbdif100        
----------------------------------------------------------------------------------------
Total:1         Dynamic:0       Static:0    Interface:1    OpenFlow:0
Redirect:0
  • 结果解读与对比分析
    1. 接口自身条目 (Type: I)
      • 表中唯一的条目 172.16.1.1 是 Vbdif100 接口自身的 IP 地址。TYPE: I 代表 Interface,即本机地址。
    2. 动态条目为空 (Dynamic: 0)
      • 现象 :表中没有 Serv1 (172.16.1.10) 的 ARP 条目。
      • 原因 (与 IPv6 的核心区别)
        • IPv6 设备接入网络后,会主动发送 RS/NS 报文利用 Link-Local 地址进行邻居发现,因此即使没有业务流量,也能看到 ND 表项(如上一节所示)。
        • IPv4 相对"沉默"。在没有发起 Ping 或其他业务流量之前,Server 通常不会主动向网关发送数据,网关也不会主动请求 Server 的 ARP。
    3. 结论 :这是正常的初始状态
      • 这证明了当前的 Type 2 路由表中缺失 IPv4 主机路由是合理的。
      • 待后续 Packet Walk 环节发起 Ping 172.16.1.10 后,ARP 交互将被触发,动态 ARP 条目生成,进而触发 BGP EVPN 生成包含 IPv4 地址的 Type 2 IRB 路由。
相关推荐
不断进步的咕咕怪12 小时前
meme分析
笔记
wheeldown12 小时前
【Linux网络编程】 Linux TCP网络编程:客户端开发+守护进程实战
linux·网络·tcp/ip
中屹指纹浏览器12 小时前
进程级沙箱隔离与WebGL指纹抗识别:指纹浏览器核心技术难点与工程落地
经验分享·笔记
sayang_shao12 小时前
Rust多线程编程学习笔记
笔记·学习·rust
进阶的猪12 小时前
Qt学习笔记
笔记·学习
mango_mangojuice12 小时前
Linux学习笔记 1.19
linux·服务器·数据库·笔记·学习
Aaron158812 小时前
通信灵敏度计算与雷达灵敏度计算对比分析
网络·人工智能·深度学习·算法·fpga开发·信息与通信·信号处理
执笔论英雄12 小时前
【RL]分离部署与共置模式详解
服务器·网络·windows
拍客圈13 小时前
Discuz CC 防护规则
服务器·网络·安全
文章永久免费只为良心13 小时前
一站式综合查询工具:IP、企业信息与网络空间资产高效查询工具
网络·网络协议·tcp/ip