BGP local-as 用法详解

🔀 BGP local-as 用法详解

AS 号迁移利器 | 让邻居看到的 AS 号与本机实际 AS 号不同

一、什么是 BGP local-as

一句话:让路由器在与某个特定邻居建立 BGP 时,使用一个"假的"AS 号(local-as),而不是自己真正的 AS 号。

本质:路由器对外"伪装"自己属于另一个 AS,使邻居认为它是在和那个旧 AS 号做 eBGP peer。

核心价值:在 AS 号变更/合并/迁移时,不需要修改对端(如运营商)的 BGP 配置,实现平滑过渡。

工作机制

当配置 neighbor x.x.x.x local-as 旧AS号 后:

① OPEN 消息:向该邻居发送的 BGP OPEN 包中,My AS 字段填的是 local-as(旧AS号),不是真正的 AS 号
② AS_PATH 出方向:向该邻居发送路由时,在 AS_PATH 前面先加 local-as,再加真实 AS
③ AS_PATH 入方向:从该邻居收到路由时,在 AS_PATH 中加入 local-as
④ 对其他邻居无影响:只针对配置了 local-as 的那个邻居生效

二、AS_PATH 变化详解

场景: R1(AS 100) ←→ R2(真实AS 200, local-as 65000 给R1) ←→ R3(AS 300) R2 对 R1 伪装为 AS 65000 ┌──────┐ ┌──────┐ ┌──────┐ │ R1 │ eBGP │ R2 │ eBGP │ R3 │ │AS 100│◄──────────────►│AS 200│◄──────────────►│AS 300│ └──────┘ R1 认为对端 └──────┘ └──────┘ 是 AS 65000 │ │ neighbor R1 local-as 65000 │ AS_PATH 变化 (R2 → R1 方向发送路由): R3 发来的路由 AS_PATH = [300] R2 转给 R1 时 AS_PATH = [65000, 200, 300] ↑ ↑ local-as 真实AS AS_PATH 变化 (R1 → R2 方向接收路由): R1 发来的路由 AS_PATH = [100] R2 收到后内部看到 AS_PATH = [65000, 100] ↑ local-as 被插入

三、命令语法与选项

3.1 Cisco IOS / IOS-XE

router bgp 200
 neighbor 10.0.0.1 remote-as 100
 neighbor 10.0.0.1 local-as 65000

3.2 关键选项

选项效果使用场景
local-as 65000 默认行为:AS_PATH 中同时出现 local-as 和真实 AS
出方向: [65000, 200, ...]
标准迁移场景
local-as 65000 no-prepend 从邻居收到的路由不在 AS_PATH 中插入 local-as
(只影响入方向)
避免入方向 AS_PATH 变长导致路径次优
local-as 65000 no-prepend replace-as 出方向用 local-as 替换真实 AS
出方向: [65000, ...](不出现200)
入方向也不插入
完全隐藏真实 AS 号,对邻居透明
local-as 65000 no-prepend replace-as dual-as 同时接受对端用旧AS号或新AS号建邻居 过渡期间允许对端随时切换
⚠️ 最常用组合:local-as 65000 no-prepend replace-as — 完全透明替换,对端完全不知道你换了 AS 号。

四、典型使用场景

场景1:企业 AS 号变更(最常见)

背景:公司原来用 AS 65000 和运营商做 BGP 互联。现在公司被收购,需要变更为新的 AS 200。
问题:运营商配置变更流程长(需提工单审批),不可能和你同时改。
方案:你这边先把 AS 改为 200,用 local-as 65000 继续伪装,等运营商改完后再取消 local-as。
迁移前: [企业 AS 65000] ←── eBGP ──→ [运营商 AS 4808] 迁移后 (企业侧先改, 运营商暂不动): [企业 AS 200, local-as 65000] ←── eBGP ──→ [运营商 AS 4808] (运营商不感知变化) 最终 (运营商完成变更后): [企业 AS 200] ←── eBGP ──→ [运营商 AS 4808] (移除 local-as)
! === 企业路由器配置 (迁移期间) ===
router bgp 200                          ! 真实新AS号
 neighbor 202.96.1.1 remote-as 4808    ! 运营商AS
 neighbor 202.96.1.1 local-as 65000 no-prepend replace-as
 !                                      ↑ 伪装为旧AS,运营商无感

场景2:两家企业网络合并

背景:A 公司 (AS 100) 收购 B 公司 (AS 200)。合并后统一用 AS 100。
问题:B 公司有大量 BGP 邻居(上游运营商、客户、合作方),不可能同时通知所有人改配置。
方案:B 公司路由器改为 AS 100,对所有外部邻居用 local-as 200 过渡。
! === B 公司路由器 (合并后) ===
router bgp 100                          ! 统一为 A 公司 AS
 ! 对运营商1保持旧AS
 neighbor 1.1.1.1 remote-as 4134
 neighbor 1.1.1.1 local-as 200 no-prepend replace-as
 ! 对运营商2保持旧AS
 neighbor 2.2.2.2 remote-as 4837
 neighbor 2.2.2.2 local-as 200 no-prepend replace-as
 ! 与 A 公司内部用真实AS iBGP
 neighbor 10.0.0.1 remote-as 100

场景3:多归属客户 AS 迁移

背景:客户同时接了电信和联通。现在客户要从私有AS 65001 迁移到公有AS 3000。
问题:两个运营商的变更窗口不同,不可能同一时刻一起改。
方案:客户先改 AS 为 3000,对两个运营商分别 local-as 65001,待运营商逐个变更完毕后再逐步取消。
! === 客户路由器 (过渡期) ===
router bgp 3000
 ! 电信还没改完,继续伪装
 neighbor 202.97.1.1 remote-as 4134
 neighbor 202.97.1.1 local-as 65001 no-prepend replace-as
 ! 联通已经改完,不再需要 local-as
 neighbor 219.158.1.1 remote-as 4837
 ! (无 local-as,直接用真实 AS 3000)

场景4:数据中心互联 — 隐藏内部 AS 结构

背景:数据中心内部用私有 AS(如 65001-65100)做 Leaf-Spine BGP,但对外只想暴露一个公有 AS。
方案:边界路由器对外部邻居使用 local-as 替换内部AS。
! === DC 边界路由器 ===
router bgp 65001                         ! 内部私有AS
 ! 对外部合作伙伴暴露公有AS
 neighbor 203.10.1.1 remote-as 500
 neighbor 203.10.1.1 local-as 3000 no-prepend replace-as

五、多厂商配置对比

5.1 Cisco IOS-XE / IOS-XR

! IOS-XE
router bgp 200
 neighbor 10.0.0.1 remote-as 100
 neighbor 10.0.0.1 local-as 65000 no-prepend replace-as

! IOS-XR
router bgp 200
 neighbor 10.0.0.1
  remote-as 100
  local-as 65000 no-prepend replace-as

5.2 华为

! 华为设备
bgp 200
 peer 10.0.0.1 as-number 100
 peer 10.0.0.1 fake-as 65000
 ! 华为用 fake-as 实现同样功能
 ! 可选: peer 10.0.0.1 fake-as 65000 prepend-local-as (等同于默认行为)
 ! 可选: peer 10.0.0.1 fake-as 65000 (不加 prepend 则等同于 no-prepend replace-as)

5.3 Juniper

! Juniper
protocols bgp group EXTERNAL {
    neighbor 10.0.0.1 {
        peer-as 100;
        local-as 65000 {
            private;            /* 等同于 no-prepend replace-as */
            /* 不加 private 则会在 AS_PATH 中出现两个 AS */
        }
    }
}

5.4 厂商对照

功能Cisco华为Juniper
基本 local-as local-as 65000 fake-as 65000 local-as 65000
不插入入方向 no-prepend 默认行为 默认行为
替换真实AS(出方向) replace-as 默认行为(不加prepend-local-as) private
双AS接受 dual-as dual-as alias

六、验证与排障

! === Cisco 验证命令 ===

! 查看邻居详情(确认 local-as 生效)
show bgp neighbors 10.0.0.1 | include local AS
! 输出示例: For address family: IPv4 Unicast
!   Local AS = 65000 (configured), Real AS = 200

! 查看发出去的路由 AS_PATH
show bgp ipv4 unicast neighbors 10.0.0.1 advertised-routes
! 注意看 AS_PATH 中是否只有 local-as (replace-as) 或同时有两个

! 查看收到的路由 AS_PATH
show bgp ipv4 unicast neighbors 10.0.0.1 received-routes

! 查看 BGP OPEN 消息中的 AS 号
debug bgp updates
debug bgp keepalives

! === 华为验证 ===
display bgp peer 10.0.0.1 verbose
display bgp routing-table peer 10.0.0.1 advertised-routes

七、注意事项与限制

1. local-as 不能和真实 AS 相同
local-as 的值不能等于 router bgp 后面的 AS 号,否则报错。

2. local-as 不能和对端 AS 相同
如果 local-as = remote-as,BGP 会认为是 iBGP(或 loop),建议避免。

3. 每个邻居只能配一个 local-as
不能对同一个邻居配两个 local-as。

4. 与 confederation 不兼容
在 BGP confederation 环境中使用 local-as 可能有冲突,需谨慎。

5. AS_PATH 环路检测
默认情况下 local-as 会被加入 AS_PATH,可能触发环路检测。使用 allowas-in 可规避特殊场景。

6. 只针对单个邻居
local-as 是 per-neighbor 配置,不影响与其他邻居的 BGP 关系。

7. 迁移完成后及时清理
过渡期结束后应移除 local-as 配置,避免长期维护两套 AS 带来的复杂性。

八、完整迁移操作流程(实战步骤)

目标:将 AS 65000 迁移为 AS 200,对端运营商 AS 4808 暂不配合修改。
! ====== 步骤1: 修改 AS 号 + 加 local-as (一个维护窗口内完成) ======

! 先加新配置
router bgp 200
 bgp router-id 1.1.1.1
 neighbor 202.96.1.1 remote-as 4808
 neighbor 202.96.1.1 local-as 65000 no-prepend replace-as
 address-family ipv4 unicast
  network 103.1.1.0 mask 255.255.255.0
  neighbor 202.96.1.1 activate

! 删除旧 BGP 进程(如果 IOS 需要先 no router bgp 65000)
! 注意:改 AS 号会导致所有 BGP 邻居 reset,需维护窗口操作

! ====== 步骤2: 验证 ======
show bgp summary
! 确认邻居状态为 Established
show bgp neighbors 202.96.1.1 | include local
! 确认 Local AS = 65000

! ====== 步骤3: 通知运营商修改对端配置 ======
! 运营商将 remote-as 65000 改为 remote-as 200

! ====== 步骤4: 运营商改完后,移除 local-as ======
router bgp 200
 no neighbor 202.96.1.1 local-as

! ====== 步骤5: 最终验证 ======
show bgp summary
show bgp neighbors 202.96.1.1 advertised-routes
BGP local-as 用法详解 | AS 迁移/合并场景 | Cisco / 华为 / Juniper
posted @ 2026-10-18 01:09  JacobJacob  阅读(8)  评论(0)    收藏  举报