跳到内容
当前位置:首页>面试真题>某游戏公司网络工程师面试真题(一):BGP/OSPF 双点双向重分布 & RR 反射等价路由

某游戏公司网络工程师面试真题(一):BGP/OSPF 双点双向重分布 & RR 反射等价路由

  • 2026-09-18 20:33:13
某游戏公司网络工程师面试真题(一):BGP/OSPF 双点双向重分布 & RR 反射等价路由

问题一:BGP 与 OSPF 的双点双向重分布如何配置?

一、拓扑

        ┌─────────── OSPF Area 0  ───────────┐
        │                                    │
     ASBR-1 (R1)                      ASBR-2 (R2)
        │                                    │
        └────────── BGP AS 100───────────────┘

二、风险

双点双向重分布的核心风险是 Tag 防回馈 + 优先级防次优

其中Tag 解决路由引入的循环问题(路由回馈),调整 O_ASE 优先级解决 BGP 引入 OSPF 后优先级倒挂导致的次优路径问题。两者缺一不可。

三、方案

1、路由回馈方案:

使用四标签防回馈的方法,其本质是:每个引入方向产生一个唯一的 Tag,对端用这个 Tag 来拒绝反向引入,即每个引入方向 deny 的是对端生成的 tag。

R1 配置:

# OSPF 引入 BGP
route-policy OSPF_to_BGP deny node 5      // deny 在前!
 if-match tag 400                // R1 不会把 R2 从 BGP 引入 OSPF 的路由再送回 BGP

route-policy OSPF_to_BGP permit node 10
 apply tag 100                     // OSPF 过来的路由打上 tag 100

# BGP 引入 OSPF
route-policy BGP_to_OSPF deny node 5    // deny 在前!
 if-match tag 200              // R1 不会把 R2 从 OSPF 引入 BGP 的路由再送回 OSPF

route-policy BGP_to_OSPF permit node 10
 apply tag 300                 // BGP 过来的路由打上 tag 300

R2 配置:

# BGP → OSPF
route-policy BGP_to_OSPF deny node 5
 if-match tag 100                // R2 不会把 R1 从 OSPF 引入 BGP 的路由再送回 OSPF

route-policy BGP_to_OSPF permit node 10
 apply tag 400                   // BGP 过来的路由打上 tag 400

# OSPF → BGP
route-policy OSPF_to_BGP deny node 5
 if-match tag 300                // R2 不会把 R1 从 BGP 引入 OSPF 的路由再送回 BGP

route-policy OSPF_to_BGP permit node 10
 apply tag 200                   // OSPF 过来的路由打上 tag 200

2、优先级防次优

问题本质:低优先级协议向高优先级协议引入时的经典次优路径问题。

BGP(pref 255)引入 OSPF 后变成外部路由 O_ASE(pref 150),优先级反而更高了。

路由协议优先级(以华为示例):

直连     0
OSPF     10     ← 最高
静态     60
OSPF ASE 150    ← 引入后变成这种
BGP      255    ← 原始来源,优先级反而最低

具体场景推演

            外部网络 10.1.1.0/24
                    │
        ┌───────────┴───────────┐
        │                       │
      BGP Peer                BGP Peer
        │                       │
     ┌──┴──┐                ┌──┴──┐
     │ R1  │                │ R2  │
     │ASBR │                │ASBR │
     └──┬──┘                └──┬──┘
        │       OSPF           │
        └─────────┬────────────┘
                  │
              其他OSPF路由器

正常路径(理想):R2 通过自己的 BGP peer 直接访问 10.1.1.0/24。

实际发生(次优)流量凭空多走一跳,R2 绕到 R1 再出去


四、解决方案

根本思路:让 BGP 原始路由的优先级 ≥ O_ASE。

# 方案一(推荐):把 O_ASE 优先级降到和 BGP 同级或更低
ospf 1
 preference ase 255      # O_ASE 优先级和 BGP 拉平,不会抢 BGP 的路
# 方案二:引入时放大 cost,降低 O_ASE 吸引力
route-policy BGP_to_OSPF permit node 10
 apply cost 10000
 apply cost-type type-1

ospf 1
 import-route bgp route-policy BGP_to_OSPF

问题二:如何让 RR 反射多条等价路由给客户端?

一、拓扑

         ┌───────────┐
         │ 设备A      │ ─── 路由 10.1.1.0/24, NEXT_HOP=A
         │(Client)   │
         └─────┬─────┘
               │ IBGP
               ▼
         ┌───────────┐            ┌───────────┐
         │    RR     │ ── 反射 ──→│ 设备C      │
         │           │            │(Client)   │
         └─────┬─────┘            └───────────┘
               ▲
               │ IBGP
         ┌─────┴─────┐
         │ 设备B      │ ─── 路由 10.1.1.0/24, NEXT_HOP=B
         │(Client)   │
         └───────────┘

RR 从 A 和 B 收到同一前缀 10.1.1.0/24 的两条 IBGP 路由,希望反射给 C 时, C 能收到两条等价路由做负载分担。

二、核心问题拆解

这个问题分两步:

步骤
问题
解决手段
第一步
RR 自身能安装两条等价路由吗?
maximum load-balancing ibgp
第二步
RR 能把两条都发给 C 吗?
peer advertise add-path

两步缺一不可:RR 自己先得装两条,才有东西可发;光装了但不配 Add-Path,还是只发一条最优。


第一步:RR 上如何生成/安装等价路由?

BGP 默认行为:只装一条

BGP 选路算法在最后阶段有强制 IP地址 小者胜,所以即使两条路由 LOCAL_PREF、AS_PATH、MED、ORIGIN 全部相同,默认也只安装一条到路由表

开启 BGP 负载分担让 RR 装多条

华为 VRP 需要显式开启 BGP 负载分担:

bgp 100
 ipv4-family unicast
  maximum load-balancing ibgp 2      # 安装最多 2 条 IBGP 等价路由
验证 RR 是否装了多条
display bgp routing-table 10.1.1.0

 BGP local router ID : 3.3.3.3
 Local AS number : 100
 Paths:   2 available, 1 best           ← Paths=2 说明装了两条

  Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
  *>i  10.1.1.0/24    A的IP          0          100        0       i
  * i                 B的IP          0          100        0       i

*>表示最佳路径,*表示等价备份路径。


第二步:使用Add-Path命令把两条都发给 C

RR 自己装了 2 条,但默认还是只反射最优那条(*>)给 C。需要 Add-Path 突破这个限制:

RR设备侧:

bgp 100
 router-id 3.3.3.3
 ipv4-family unicast
  # 开启负载分担(先装多条)
  maximum load-balancing ibgp 2

  # 声明 Client
  peer C的IP as-number 100
  peer C的IP reflect-client

  # 开启 Add-Path 双向协商能力
  peer C的IP capability-advertise add-path both

  # 反射策略:反射最优 2 条路径(即A和B的两条全部发给C)
  peer C的IP advertise add-path best 2

C设备侧:

bgp 100
 ipv4-family unicast
  # 开启负载分担
  maximum load-balancing ibgp 2

  # 开启 Add-Path 接收能力
  peer RR的IP as-number 100
  peer RR的IP capability-advertise add-path both

第三步:完整验证

C设备 上查看路由表:

display bgp routing-table 10.1.1.0

  Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
  *>i  10.1.1.0/24    A的IP          0          100        0       i
  * i                 B的IP          0          100        0       i

两条等价路由,C 可以做 IBGP 负载分担。