Print

IPv4 BGP Peer交互IPv6路由时因未配置下一跳改写策略导致IPv6报文无法转发

2026-09-14 发表

组网及说明

客户设备型号为 S9820-8C,软件版本为 R6710HS11。客户咨询该型号及版本是否支持通过 IPv4 BGP Peer 交互 IPv6 单播路由。

为验证相关功能及转发机制,实验环境使用两台设备作为 BGP 网关,两侧分别连接 IPv6 测试设备。中间两台设备之间使用 IPv4 地址建立 EBGP Peer,同时在 IPv6 Address Family 下使能该 IPv4 Peer,用于交换两侧 IPv6 路由。

验证组网如:

 

设备 接口 IPv4 IPv6
6850-2 WGE1/0/1 2001:DB8:12::2/64
6850-1 WGE1/0/1 2001:DB8:12::1/64
6850-1 WGE1/0/2 10.13.13.1/30 2001:DB8:13::1/64
6850-3 WGE1/0/2 10.13.13.2/30 2001:DB8:13::2/64
6850-3 WGE1/0/1 2001:DB8:34::1/64
6850-4 WGE1/0/1 2001:DB8:34::2/64

问题描述

客户咨询 S9820-8C R6710HS11 是否支持单栈 Peer 交互双栈路由,即使用 IPv4 地址建立 BGP Peer,并通过该 Peer 交换 IPv6 单播路由。

查询 BGP 配置指导发现,设备支持创建 IPv4 BGP 对等体后,在 IPv6 单播地址族下使能该 IPv4 Peer,实现 IPv4 BGP Peer 交互 IPv6 单播路由。

相关配置形式如下:

bgp 65001 peer 10.13.13.2 as-number 65003 address-family ipv6 peer 10.13.13.2 enable

实验验证发现,IPv4 BGP Peer 可以正常建立,IPv6 路由也能够通过该 Peer 正常学习。

例如 S6850-1 可以正常学习对端 IPv6 路由:

Network : 2001:DB8:34:: PrefixLen: 64 NextHop : ::FFFF:10.13.13.2 Path/Ogn : 65003i

S6850-3 同样可以正常学习:

Network : 2001:DB8:12:: PrefixLen: 64 NextHop : ::FFFF:10.13.13.1 Path/Ogn : 65001i

但在未配置 Route-Policy 修改下一跳的情况下,虽然 IPv6 路由能够正常进入路由表,实际 IPv6 报文无法正常转发。

过程分析

首先确认设备是否支持通过 IPv4 BGP Peer 交换 IPv6 单播路由。

根据 BGP 配置指导,“配置 IPv4 对等体交互 IPv6 单播路由”的配置步骤为:

peer ipv4-address as-number as-number address-family ipv6 peer ipv4-address enable

其中:

peer ipv4-address as-number as-number

用于创建 IPv4 BGP 对等体。

进入 IPv6 地址族后配置:

peer ipv4-address enable

表示允许本地设备与该 IPv4 BGP Peer 交换 IPv6 单播路由。

因此从控制平面能力来看,设备支持 IPv4 BGP Peer 交互 IPv6 路由。

实验进一步验证,IPv4 Peer 建立成功后,双方均可正常学习对端 IPv6 路由,说明 IPv6 NLRI 可以通过 IPv4 BGP Peer 正常交换。

未配置下一跳修改策略时,收到的 IPv6 BGP 路由下一跳显示为:

Original next hop : ::FFFF:10.13.13.1 Relay next hop : 10.13.13.1

其中:

Original next hop

表示 BGP 路由携带的原始下一跳。

`

::FFFF

:10.13.13.1` 为 IPv4-mapped IPv6 地址形式。

Relay next hop

表示设备通过路由栈对原始下一跳进行递归后得到的下一跳。

此时设备能够将 IPv6 BGP 路由安装到 IPv6 路由表,例如:

Destination : 2001:DB8:12::/64 Protocol : BGP4+ NextHop : 10.13.13.1 Interface : WGE1/0/2

说明控制平面已经完成路由学习及下一跳递归。

但实际 IPv6 业务报文无法正常转发。

进一步查询配置指导发现,对于“IPv4 对等体交互 IPv6 单播路由”的场景,配置步骤中明确要求:

peer ipv4-address route-policy route-policy-name import

即需要在入方向应用 Route-Policy 修改收到路由的下一跳。

IPv6 路由的下一跳需要修改为对端连接接口的 IPv6 地址,使 IPv6 数据平面能够按照正常 IPv6 下一跳完成转发。

因此该场景下存在两个不同层面的行为:

IPv4 BGP Peer建立 ↓ IPv6 NLRI正常交换 ↓ IPv6路由正常学习 ↓ 未修改IPv6 Next-Hop ↓ 控制平面正常 数据平面无法正常转发

根因在于通过 IPv4 Peer 收到的 IPv6 路由默认下一跳不能直接满足 IPv6 数据平面的正常转发要求,需要按照配置指导对收到的 IPv6 路由下一跳进行改写。

解决方法

实际上该配置方法在官网中已有记载:(06-BGP配置-新华三集团-H3C)

2.3.2  手工创建BGP对等体

 

配置步骤

(配置IPv4对等体交互IPv6单播路由)

进入系统视图。

system-view

进入BGP实例视图

bgp as-number[instance instance-name ]

创建IPv4 BGP对等体,并指定对等体的AS号,

peer ipv4-address as-number as-number

(可选)配置对等体的描述信息。

peer ipv4-address description text

缺省情况下,对等体没有描述信息,

创建BGPIPv6单播地址族,并进入相应地址族视图,

address-family ipv6 [ unicast ]

允许本地路由器与指定对等体交换IPv6单播路由信息,

peer ipv4-address enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息,

为IPv4对等体设置基于路由策略的路由修改下一跳策略

peer ipv4-address route-policy route-policy-name import

 

 

 

在 IPv6 Address Family 下,对 IPv4 BGP Peer 配置入方向 Route-Policy,并通过 Route-Policy 将收到的 IPv6 路由下一跳修改为对端接口 IPv6 地址。

例如 S6850-1:

route-policy IPV6-NH permit node 10 apply ipv6 next-hop 2001:DB8:13::2 quit bgp 65001 address-family ipv6 peer 10.13.13.2 route-policy IPV6-NH import

S6850-3:

route-policy IPV6-NH permit node 10 apply ipv6 next-hop 2001:DB8:13::1 quit bgp 65003 address-family ipv6 peer 10.13.13.1 route-policy IPV6-NH import

配置完成后刷新 BGP 入方向路由。

此时 IPv6 路由下一跳由原来的:

::FFFF:10.13.13.2

修改为:

2001:DB8:13::2

反方向同理。

IPv6 路由形成如下转发关系:

2001:DB8:34::/64 | v NextHop 2001:DB8:13::2 | v 对端BGP网关 | v 2001:DB8:34::/64

配置下一跳修改策略后,IPv6 数据报文可以正常转发。