ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

06-实战应用篇-BGP企业网络架构设计-边界eBGP+内部iBGP

06-实战应用篇-BGP企业网络架构设计-边界eBGP+内部iBGP

BGP 企业网络架构设计:边界 eBGP + 内部 iBGP

单 ISP 用静态路由就够了,但多 ISP、多云接入时,BGP 架构设计决定了网络的稳定性和可扩展性。边界 eBGP + 内部 iBGP 是业界最佳实践。

文章目录

  • BGP 企业网络架构设计:边界 eBGP + 内部 iBGP
    • 一、企业为什么需要设计 BGP 架构
      • 1.1 从单 ISP 到多 ISP/多云
      • 1.2 架构设计的核心挑战
    • 二、设计原则
      • 2.1 AS 号分配原则
      • 2.2 协议分层原则
    • 三、推荐架构:边界 eBGP + 内部 iBGP
      • 3.1 架构图
      • 3.2 设计要点
      • 3.3 三厂商配置
        • Cisco 配置(边界FW)
        • 华为配置(边界FW)
        • FortiGate 配置(边界FW)
      • 3.4 Next-Hop 问题详解
    • 四、不推荐架构:纯 eBGP 串联
      • 4.1 架构图
      • 4.2 问题分析
      • 4.3 对比表格
    • 五、生产环境关键设计
      • 5.1 双 RR 冗余设计
      • 5.2 Loopback 接口建邻居
      • 5.3 OSPF + BGP 联动
      • 5.4 路由过滤
        • 企业接 ISP 时:收默认路由还是收全表?
        • 出向路由过滤
      • 5.5 出入向流量不对称问题
        • 哪些场景会有问题?
        • 解决思路:两个层级
        • 源进源出 vs BGP 属性控制:怎么选?
    • 六、三云专线 BGP 对接速查
    • 七、小结
      • 架构选型一句话总结
      • 与前 5 章的关联
    • 参考资料
    • 系列文章

一、企业为什么需要设计 BGP 架构

1.1 从单 ISP 到多 ISP/多云

很多企业的网络演进路径是这样的:

阶段 1:单 ISP 接入 企业网络 ─── 静态默认路由 ─── ISP 问题:没有,简单够用 阶段 2:双 ISP 接入(主备) 企业网络 ─── 静态路由 + 浮动路由 ─── ISP1(主)/ ISP2(备) 问题:还能应付,但切换慢(依赖静态路由的链路检测) 阶段 3:多 ISP / 多云接入 企业网络 ─── ISP1 / ISP2 / 阿里云 / AWS / 腾讯云 问题:静态路由搞不定,需要 BGP 动态选路

多 ISP/多云场景的核心问题:

  • 出向流量:从哪条链路出去?(选路控制)
  • 入向流量:对端从哪条链路进来?(流量引导)
  • 故障切换:链路断了怎么快速切换?
  • 路由传递:内部设备怎么共享外部路由?

答案:边界用 eBGP(跨 AS),内部用 iBGP(同 AS 内传递路由),两者配合解决所有问题。

1.2 架构设计的核心挑战

设计 BGP 企业网络架构,需要解决 4 个核心问题:

问题解决方案
边界怎么连 ISP/云eBGP(跨 AS)
内部怎么传递路由iBGP(同 AS)
iBGP 全网状连接太多Route Reflector(RR)
iBGP Next-Hop 不可达OSPF + next-hop-self/local

二、设计原则

2.1 AS 号分配原则

🏗️ 什么是 AS 号规划?

AS(Autonomous System,自治系统)是统一路由策略的网络,每个 AS 有一个唯一编号。

公有 AS vs 私有 AS:

  • 公有 AS(1-64511):需要在 RIR(APNIC/ARIN)注册,互联网可见
  • 私有 AS(64512-65534 或 4200000000-4294967294):仅用于内部,不出现在互联网路由表

企业网络 AS 号规划:

  • 边界设备(FW/边界路由器):统一用一个私有 AS(如 AS65001),与 ISP 建立 eBGP
  • 内部设备(核心/汇聚/接入):同一个私有 AS(如 AS65001),建立 iBGP
  • 避免问题:内部设备使用不同 AS 号会导致配置复杂、AS-Path 膨胀

示例:

ISP1(AS4666,公有) ISP2(AS4788,公有) ↓ eBGP ↓ eBGP 边界FW(AS65001,私有) ↓ iBGP 核心SW(AS65001,私有) ↓ iBGP 汇聚SW(AS65001,私有)

2.2 协议分层原则

企业网络按功能分层,每层使用不同协议:

层级设备协议说明
边界层FW / 边界路由器eBGP + OSPF与 ISP/云建立 eBGP,内部用 OSPF 传递路由
核心层核心交换机iBGP + OSPF作为 RR,传递 BGP 路由,OSPF 解决 Next-Hop
汇聚层汇聚交换机iBGP + OSPF作为 RR Client,接收 BGP 路由
接入层接入交换机默认路由 + OSPF不需要运行 BGP,使用默认路由上网

为什么这样分层:

  • 边界 eBGP:跨 AS 必须用 BGP,ISP 不会跟你跑 OSPF
  • 内部 iBGP:同 AS 内传递外部路由,避免 AS-Path 膨胀
  • OSPF:解决 iBGP Next-Hop 可达性问题(下一节详解)

三、推荐架构:边界 eBGP + 内部 iBGP

3.1 架构图

架构说明:

云/ISP(公有 AS) ↓ eBGP(物理接口) 边界FW(AS65001)← 公有 AS 与私有 AS 的分界点 ↓ iBGP(Loopback 接口) 核心SW(AS65001)← RR(路由反射器) ↓ iBGP(Loopback 接口) 汇聚SW(AS65001)← RR Client ↓ 默认路由(OSPF 传递) 接入SW(无 BGP)

3.2 设计要点

1. AS 号分配

  • 云/ISP:各自公有 AS(如 AS4666、AS4788)
  • 企业内部:统一一个私有 AS(如 AS65001)
  • 边界 FW 作为 AS65001 的一部分,不属于公有 AS

2. 邻居关系

邻居关系类型接口类型说明
云/ISP ↔ FWeBGP物理接口直连,同网段
FW ↔ 核心SWiBGPLoopback跨多跳,稳定性高
核心SW ↔ 汇聚SWiBGPLoopback跨多跳,RR Client
汇聚SW ↔ 接入SWOSPF物理接口接入层不需要 BGP

3. RR 设计

  • 核心SW 作为 RR(路由反射器)
  • 汇聚SW 作为 RR Client
  • 避免 iBGP 全网状连接(4 台设备只需 3 条 iBGP 会话,而不是 6 条)

4. Next-Hop 处理

这是 iBGP 架构最容易踩的坑,下一节详解。

3.3 三厂商配置

场景:边界 FW 连接阿里云(AS45104),内部核心SW 作为 RR

Cisco 配置(边界FW)
! ===== 边界FW 配置 ===== interface Loopback0 ip address 10.0.0.1 255.255.255.255 description iBGP-Source interface GigabitEthernet0/0 description TO-ALICLOUD ip address 169.254.1.1 255.255.255.252 bfd interval 50 min_rx 50 multiplier 3 ! ↑ BFD 快速故障检测(第 5 章详解) router ospf 1 router-id 10.0.0.1 network 10.0.0.1 0.0.0.0 area 0 network 10.1.1.0 0.0.0.255 area 0 ! FW ↔ 核心SW default-information originate ! 向内部下发默认路由 router bgp 65001 bgp router-id 10.0.0.1 ! eBGP 邻居(阿里云) neighbor 169.254.1.2 remote-as 45104 neighbor 169.254.1.2 description ALICLOUD-VBR neighbor 169.254.1.2 password 7 <md5-key> ! MD5 认证 ! iBGP 邻居(核心SW,作为 RR Client) neighbor 10.0.0.2 remote-as 65001 neighbor 10.0.0.2 description CORE-SW neighbor 10.0.0.2 update-source Loopback0 ! 用 Loopback 建邻居 address-family ipv4 ! eBGP 邻居 neighbor 169.254.1.2 activate neighbor 169.254.1.2 next-hop-self ! 显式指定 next-hop,确保跨版本一致 neighbor 169.254.1.2 fall-over bfd ! BFD 联动 neighbor 169.254.1.2 route-map IDC_TO_CLOUD out ! 只宣告 IDC 前缀 ! iBGP 邻居 neighbor 10.0.0.2 activate neighbor 10.0.0.2 next-hop-local ! 向 iBGP 邻居宣告时改 Next-Hop neighbor 10.0.0.2 route-reflector-client ! 核心SW 是 RR Client neighbor 10.0.0.2 fall-over bfd ! BFD 联动 ! 重分发 OSPF(subnets 确保非主类网络也被重分发) redistribute ospf 1 subnets ! 路由过滤:只宣告 IDC 前缀 ip prefix-list IDC_PREFIXES seq 10 permit 10.10.0.0/16 ip prefix-list IDC_PREFIXES seq 20 permit 10.20.0.0/16 route-map IDC_TO_CLOUD permit 10 match ip address prefix-list IDC_PREFIXES
! ===== 核心SW 配置(RR Client)===== interface Loopback0 ip address 10.0.0.2 255.255.255.255 router ospf 1 router-id 10.0.0.2 network 10.0.0.2 0.0.0.0 area 0 network 10.1.1.0 0.0.0.255 area 0 network 10.2.2.0 0.0.0.255 area 0 router bgp 65001 bgp router-id 10.0.0.2 ! iBGP 邻居(边界FW) neighbor 10.0.0.1 remote-as 65001 neighbor 10.0.0.1 update-source Loopback0 neighbor 10.0.0.1 fall-over bfd address-family ipv4 neighbor 10.0.0.1 activate
华为配置(边界FW)
# ===== 边界FW 配置 ===== interface LoopBack0 ip address 10.0.0.1 32 description iBGP-Source interface GigabitEthernet0/0 description TO-ALICLOUD ip address 169.254.1.1 255.255.255.252 # OSPF ospf 1 router-id 10.0.0.1 # router-id 在 OSPF 视图内配置 area 0.0.0.0 network 10.0.0.1 0.0.0.0 network 10.1.1.0 0.0.0.255 default-route originate # 向内部下发默认路由 # BGP bgp 65001 router-id 10.0.0.1 # eBGP 邻居(阿里云) peer 169.254.1.2 as-number 45104 peer 169.254.1.2 description ALICLOUD-VBR peer 169.254.1.2 password simple <md5-key> # MD5 认证 peer 169.254.1.2 next-hop-local # 华为用 next-hop-local peer 169.254.1.2 bfd enable # BFD 联动 peer 169.254.1.2 bfd min-tx-interval 50 min-rx-interval 50 detect-multiplier 3 # iBGP 邻居(核心SW,作为 RR Client) peer 10.0.0.2 as-number 65001 peer 10.0.0.2 description CORE-SW peer 10.0.0.2 connect-interface LoopBack0 # 用 Loopback 建邻居 peer 10.0.0.2 next-hop-local # 华为:向 iBGP 邻居改 Next-Hop peer 10.0.0.2 reflect-client # 核心SW 是 RR Client peer 10.0.0.2 bfd enable # 路由过滤:只宣告 IDC 前缀 ipv4-family unicast peer 169.254.1.2 enable peer 169.254.1.2 route-policy IDC_TO_CLOUD export peer 10.0.0.2 enable import-route ospf 1 # 路由策略 ip ip-prefix IDC_PREFIXES index 10 permit 10.10.0.0 16 ip ip-prefix IDC_PREFIXES index 20 permit 10.20.0.0 16 route-policy IDC_TO_CLOUD permit node 10 if-match ip-prefix IDC_PREFIXES
# ===== 核心SW 配置(RR Client)===== interface LoopBack0 ip address 10.0.0.2 32 # OSPF ospf 1 router-id 10.0.0.2 area 0.0.0.0 network 10.0.0.2 0.0.0.0 network 10.1.1.0 0.0.0.255 network 10.2.2.0 0.0.0.255 bgp 65001 router-id 10.0.0.2 peer 10.0.0.1 as-number 65001 peer 10.0.0.1 connect-interface LoopBack0 peer 10.0.0.1 bfd enable ipv4-family unicast peer 10.0.0.1 enable
FortiGate 配置(边界FW)
config system interface edit"port1"setip169.254.1.1255.255.255.252setdescription"TO-ALICLOUD"next edit"loopback0"setip10.0.0.1255.255.255.255 next end config router ospfsetrouter-id10.0.0.1 config ospf-area edit"0.0.0.0"config ospf-interface edit"port1"setinterface"port1"next edit"loopback0"setinterface"loopback0"next end next endsetdefault-information-originateenable# 向内部下发默认路由end config router bgpsetas65001setrouter-id10.0.0.1 config neighbor# eBGP 邻居(阿里云)edit"169.254.1.2"setremote-as45104setdescription"ALICLOUD-VBR"setpassword<md5-key># MD5 认证next# iBGP 邻居(核心SW,RR Client)edit"10.0.0.2"setremote-as65001setdescription"CORE-SW"setupdate-sourceenable# 用 Loopback 建邻居next end config address-family edit"ipv4"config neighbor edit"169.254.1.2"setactivateenablesetnext-hop-selfenable# 显式指定 next-hop,确保跨版本一致setbfdenable# BFD 联动next edit"10.0.0.2"setactivateenablesetnext-hop-selfenable# 向 iBGP 邻居改 Next-Hopsetroute-reflector-clientenable# 核心SW 是 RR Clientsetbfdenablenext end config redistribute config"ospf"setstatusenableend end next end end

三厂商关键命令对比:

功能Cisco华为FortiGate
iBGP 改 Next-Hopnext-hop-local(AF 下)next-hop-local(Peer 级)next-hop-self enable(AF-Neighbor 下)
eBGP 改 Next-Hopnext-hop-self(AF 下)next-hop-local(Peer 级)next-hop-self enable(AF-Neighbor 下)
iBGP 源接口update-source(全局块)connect-interface(Peer 级)update-source enable(全局块)
RR Client 配置route-reflector-client(AF 下)reflect-client(Peer 级)route-reflector-client enable(AF-Neighbor 下)
BFD 联动fall-over bfd(AF 下)bfd enable(Peer 级)bfd enable(AF-Neighbor 下)
重分发 OSPFredistribute ospf 1 subnets(AF 下)import-route ospf 1(AF 下)redistribute ospf(AF 下)

注意:Cisco 和 FortiGate 的 next-hop、BFD、RR 等命令在address-family ipv4子块下配置;华为 VRP 在 BGP 视图的 Peer 级别直接配置,命令层级不同但效果一致。

3.4 Next-Hop 问题详解

🔄 为什么 Next-Hop 是 iBGP 最大坑点?

问题场景:

阿里云(AS45104)── eBGP ── 边界FW(AS65001)── iBGP ── 核心SW 阿里云宣告路由 10.10.0.0/16,Next-Hop = 169.254.1.2(阿里云地址) 边界FW 传给核心SW 时,Next-Hop 还是 169.254.1.2 核心SW 没有到 169.254.1.2 的路由 → 路由不可达 ❌

根因:iBGP 不会修改 Next-Hop(这是 BGP 协议设计)

解决方案:

  • next-hop-self(Cisco)/next-hop-local(华为):向 iBGP 邻居宣告路由时,强制把 Next-Hop 改成自己的地址
  • OSPF:确保内部所有设备互通,能到达修改后的 Next-Hop

配置位置(注意三厂商命令层级不同):

  • Cisco / FortiGate:在address-family ipv4子块下配置
  • 华为 VRP:在 BGP 视图的 Peer 级别直接配置
  • 边界FW 向 iBGP 邻居宣告时:next-hop-local
  • 核心SW 向 iBGP 邻居宣告时:next-hop-local
  • 边界FW 向 eBGP 邻居宣告时:next-hop-self

对比(注意:Cisco/FortiGate 在 address-family 子块下配,华为在 Peer 级直接配):

命令Cisco(AF 下)华为(Peer 级)FortiGate(AF-Neighbor 下)
iBGP 改 Next-Hopnext-hop-localnext-hop-localnext-hop-self enable
eBGP 改 Next-Hopnext-hop-selfnext-hop-localnext-hop-self enable

注意:华为统一使用next-hop-local(不论 eBGP/iBGP),FortiGate 统一使用next-hop-self enable。


四、不推荐架构:纯 eBGP 串联

4.1 架构图

阿里云(AS45104) ↓ eBGP 边界FW(AS65001) ↓ eBGP(串联) 核心SW(AS65002) ↓ eBGP(串联) 汇聚SW(AS65003) ↓ 默认路由 接入SW

4.2 问题分析

1. AS 号浪费

  • 每层设备需要不同 AS 号(65001、65002、65003)
  • 私有 AS 号虽然够用,但配置复杂

2. 需要 allowas-in

  • eBGP 默认拒绝 AS-Path 中包含自己 AS 号的路由
  • 纯 eBGP 串联会导致 AS-Path 反复包含内部 AS 号
  • 必须配置bgp allowas-in允许自己的 AS 号
! 核心SW 配置 router bgp 65002 ! eBGP 邻居(边界FW) neighbor 10.1.1.1 remote-as 65001 neighbor 10.1.1.1 next-hop-self ! 允许自己的 AS 号出现在 AS-Path bgp allowas-in

3. AS-Path 膨胀

  • 每经过一个 AS,AS-Path 增加一个 AS 号
  • 从阿里云学到的路由,传到汇聚SW 时 AS-Path =[45104, 65001, 65002, 65003]
  • 某些 ISP 会拒绝 AS-Path 过长的路由(>10 个 AS)

4. 没有冗余

  • 单点故障会导致整条链路断开
  • 无法利用 iBGP 的 RR 机制

4.3 对比表格

维度推荐架构(边界eBGP + 内部iBGP)不推荐架构(纯eBGP串联)
AS 号1 个公有 + 1 个私有多个私有 AS
配置复杂度中(RR 简化 iBGP)高(每层都要 allowas-in)
AS-Path不膨胀(iBGP 不加 AS)膨胀(每层加 AS)
冗余性高(双 RR)低(单点故障)
扩展性好(加 RR Client 即可)差(每层都要配新 AS)
生产推荐✅ 推荐❌ 不推荐

五、生产环境关键设计

5.1 双 RR 冗余设计

单 RR 的风险:

边界FW ── iBGP ── 核心SW(RR)── iBGP ── 汇聚SW ↓ RR 故障 → 整个 AS 内的 iBGP 路由无法传递 ❌

双 RR 设计:

边界FW1 ── iBGP ── 核心SW1(RR1) ↓ ↓ 边界FW2 ── iBGP ── 核心SW2(RR2) ↓ ↓ 汇聚SW(同时与 RR1 和 RR2 建 iBGP)

配置要点:

  • 所有设备同时与 RR1 和 RR2 建立 iBGP 邻居
  • RR1 和 RR2 使用不同的 Cluster ID(避免环路)
  • RR1 和 RR2 之间也建 iBGP 邻居(同步路由信息)
! RR1 配置 router bgp 65001 bgp cluster-id 1 neighbor 10.0.0.100 remote-as 65001 neighbor 10.0.0.100 route-reflector-client ! RR2 配置 router bgp 65001 bgp cluster-id 2 neighbor 10.0.0.100 remote-as 65001 neighbor 10.0.0.100 route-reflector-client

5.2 Loopback 接口建邻居

为什么 iBGP 用 Loopback 而不是物理接口:

接口类型稳定性说明
物理接口低链路故障 → 接口 Down → BGP 邻居断开
Loopback高接口永远 Up,只要 OSPF 能找到对端 Loopback,邻居就不掉

配置示例:

! 所有内部设备 interface Loopback0 ip address 10.0.0.x 255.255.255.255 description iBGP-Source router bgp 65001 neighbor 10.0.0.y remote-as 65001 neighbor 10.0.0.y update-source Loopback0 ! 用 Loopback 建邻居

前提条件:内部运行 OSPF,确保所有 Loopback 互通。

5.3 OSPF + BGP 联动

为什么内部需要运行 OSPF:

  1. 解决 iBGP Next-Hop 可达性:OSPF 确保所有设备能到达修改后的 Next-Hop
  2. Loopback 接口互通:iBGP 用 Loopback 建邻居,需要 OSPF 传递 Loopback 路由
  3. 快速收敛:OSPF 收敛比 BGP 快,链路故障时先收敛 OSPF,再触发 BGP 切换

配置要点:

! 边界FW router ospf 1 network 10.0.0.0 0.255.255.255 area 0 ! 所有 Loopback network 10.1.1.0 0.0.0.255 area 0 ! FW ↔ 核心SW default-information originate ! 向内部下发默认路由 ! 核心SW router ospf 1 network 10.0.0.0 0.255.255.255 area 0 network 10.1.1.0 0.0.0.255 area 0 network 10.2.2.0 0.0.0.255 area 0

5.4 路由过滤

为什么需要路由过滤:

  • 安全:防止不必要的路由进入内部网络
  • 减小路由表:内部设备不需要知道互联网所有路由
  • 避免路由泄漏:只宣告需要的前缀
企业接 ISP 时:收默认路由还是收全表?

📊 互联网全表有多大?

全球 BGP 路由表已经超过100 万条。如果企业 FW 从 ISP 接收全表,需要大内存路由器,而且绝大部分路由对企业没有意义。

大部分企业不需要学全表,以下是三种常见模式:

模式路由条数适用场景配置方式
模式 1:只收默认路由1 条单 ISP、双 ISP 主备(90% 的企业)用 prefix-list 只允许 0.0.0.0/0
模式 2:默认 + 少量特定前缀几十~几百条多云接入,需要区分云流量走向默认路由 + 云厂商前缀
模式 3:收全表100 万+ 条大型 ISP、CDN 厂商、内容分发平台需要大内存路由器

为什么大部分企业选模式 1?

企业内部用户要访问的是互联网上的任意地址 → 不需要知道每条路由在哪 → 一条默认路由 0.0.0.0/0 就够了 → ISP 帮你选路,你不用操心

双 ISP 主备场景(推荐方案):

ISP1(主)── eBGP ── 企业 FW ── eBGP ── ISP2(备) 只从两个 ISP 各收一条默认路由: ISP1 默认路由:Local Preference = 200(主) ISP2 默认路由:Local Preference = 100(备) 正常时:流量走 ISP1 ISP1 断了:自动切到 ISP2 路由表:只有 2 条默认路由

什么时候需要模式 2?

场景:企业同时接了阿里云和腾讯云专线 需求:去阿里云的流量走专线 A,去腾讯云的流量走专线 B 做法: 从 ISP1 收默认路由 + 阿里云前缀 从 ISP2 收默认路由 + 腾讯云前缀 路由表:几十到几百条(可控)

配置示例(Cisco,只收默认路由):

! 边界FW:只从 ISP 收默认路由,不收全表 ip prefix-list DEFAULT_ONLY permit 0.0.0.0/0 route-map FILTER_IN permit 10 match ip address prefix-list DEFAULT_ONLY router bgp 65001 neighbor 1.1.1.1 remote-as 4666 ! ISP1 neighbor 1.1.1.1 route-map FILTER_IN in ! 只收默认路由 neighbor 2.2.2.2 remote-as 4788 ! ISP2 neighbor 2.2.2.2 route-map FILTER_IN in ! 只收默认路由
出向路由过滤
! 边界FW:只宣告 IDC 前缀给 ISP,防止路由泄漏 ip prefix-list IDC_PREFIXES seq 10 permit 10.10.0.0/16 ip prefix-list IDC_PREFIXES seq 20 permit 10.20.0.0/16 route-map IDC_TO_CLOUD permit 10 match ip address prefix-list IDC_PREFIXES router bgp 65001 neighbor 169.254.1.2 route-map IDC_TO_CLOUD out

什么时候需要向 ISP/云宣告路由?

这取决于你有没有自己的公网 IP 段(PI 地址):

场景IP 来源是否宣告路由说明
ISP 分配公网 IP(PA)ISP 拥有该 IP 段不发ISP 自己覆盖这个段,企业用 NAT 上网
自带公网 IP(PI)+ ASN企业从 RIR 申请发必须宣告,否则互联网找不到你的 IP
云专线对接企业 IDC 私有段发(给云 VBR)云 VPC 需要知道 IDC 的 10.x/192.168.x 网段

90% 的企业(NAT 上网场景):

企业内网(10.0.0.0/8)── NAT ──> ISP 分配的公网 IP │ ISP 自带该段路由 企业不需要 BGP 宣告

企业用 NAT 把内网地址转成 ISP 分配的公网 IP,出口流量走 ISP,不需要向 ISP 宣告任何路由。ISP 本身就有公网段的路由。

什么时候才必须宣告路由?

  • 自带 ASN + PI 地址段(如 103.x.x.0/24),双线接入需要告诉两家 ISP “这个段从哪边走”
  • 云专线对接 VBR(文章配置示例的场景),需要把 IDC 的私有段(如 10.10.0.0/16)宣告给阿里云 VBR,否则云上 VPC 回不到你的 IDC

⚠️ 核心原则:不要向公网 ISP 宣告私有地址段(10.x/172.16.x/192.168.x)

私有地址上不了互联网,ISP 也不会接收。只有和云 VBR 对接(纯私有互联)时,才互相宣告私有段。

5.5 出入向流量不对称问题

🔄 出入向流量为什么会不对称?

出向和入向由不同主体控制,这是不对称的根本原因:

方向谁控制用什么属性
出向(你的流量从哪条链路出去)你自己Local Preference、Weight、MED
入向(对端从哪条链路进来)对端 ISP/云AS-Path Prepend、MED、Community

你无法控制对端的选路决策,所以进出走不同路径是互联网的常态,不是 bug。

哪些场景会有问题?

大部分普通场景没问题:

  • 单设备单出口:同一条物理链路进出,没有不对称问题
  • TCP/UDP 转发:路由器逐包做转发决策,进出不对称不影响
  • 单台防火墙 NAT:同一条链路进出,会话状态匹配正常

需要关注的三类场景:

场景问题后果
主备 FW + 多专线出向走 FW1→专线A,入向被对端选了专线B→FW2FW2 没有会话状态 → 丢包
多出口 NAT出向走 ISP1 做了 NAT,回包走 ISP2 进来ISP2 不认识 ISP1 的公网 IP → 丢包
iBGP RR + 多 FW不同 FW 各自向 ISP 通告路由,ISP 选了不同 FW会话状态分散,回包走错
解决思路:两个层级

层级 1:BGP 属性控制(协议层)

用 Local Preference + AS-Path Prepend配对控制,让进出走同一条链路:

出向控制:在 FW1 上设置 Local Preference 高 → 出向流量优先走 FW1 入向控制:对 FW2 的 eBGP 邻居做 AS-Path Prepend → 对端认为 FW1 的 AS-Path 更短 → 入向流量也走 FW1 效果:进出都走 FW1 ✅
! 出向控制:FW1 优先级高 route-map CLOUD_PREFERENCE permit 10 match ip address prefix-list ALL set local-preference 200 route-map CLOUD_PREFERENCE permit 20 match ip address prefix-list ALL set local-preference 100 router bgp 65001 neighbor 169.254.1.2 route-map CLOUD_PREFERENCE in ! 主链路 neighbor 169.254.2.2 route-map CLOUD_PREFERENCE in ! 备链路
! 入向控制:备链路做 AS-Path Prepend route-map PREPEND_AS permit 10 set as-path prepend 65001 65001 65001 router bgp 65001 neighbor 169.254.2.2 route-map PREPEND_AS out ! 备链路加长路径

层级 2:设备级源进源出(会话绑定)

🔧 什么是源进源出?

源进源出是防火墙/路由器的设备级特性,核心思路:入向流量从哪个接口进来,回包就从哪个接口出去。

传统行为(无源进源出): 阿里云专线A → FW → 企业网络 → FW → 阿里云专线B ← 回包走了另一条链路 ❌ 源进源出: 阿里云专线A → FW → 企业网络 → FW → 阿里云专线A ← 回包走同一条链路 ✅

实现原理:首次建连时记录"入接口→出接口"绑定,后续同一会话的包固定走同一条路径。

各厂商叫法:

厂商功能名称说明
华为 USG源进源出(firewall session link-group)会话绑定入接口和出接口
FortinetSession Sync + Interface BindHA 同步会话 + 接口绑定
Palo AltoSource-based Routing基于源 IP 路由
CiscoPolicy-Based Routing (PBR) + IP SLA基于策略路由实现类似效果

配置示例(华为 USG 源进源出):

# 启用源进源出功能 firewall session link-group enable # 可选:基于源 IP 的路由策略 route-policy source_based_route permit node 10 if-match source-ip 10.10.0.0 16 apply preference 100
# FortiGate 会话同步(HA 环境) config system ha set session-pickup enable set session-pickup-connection-without-hardware-assistance enable end # 接口绑定(确保回包从入接口出) config system interface edit "port1" set alias "isp1" next end
源进源出 vs BGP 属性控制:怎么选?
维度源进源出(设备级)BGP 属性控制(协议级)
作用范围单设备全网
控制粒度会话级(每个连接)路由级(每个前缀)
配置复杂度低(一个命令)高(需要配 route-map/policy)
依赖条件需要设备支持需要两端都支持 BGP
适用场景单 FW 多出口、NAT 场景多 FW、多设备、运营商场景
局限性管不了另一台设备控制不了对端行为

最佳实践:组合使用

源进源出(兜底) + BGP 属性配对控制(主动) = 端到端路径一致性
  • 单 FW 场景:源进源出足够,配置简单
  • 主备 FW 场景:BGP 属性控制 + 源进源出(HA 同步会话)
  • 多 FW 多 ISP 场景:必须 BGP 属性控制,源进源出作为兜底

六、三云专线 BGP 对接速查

如果你的企业接入多个云,以下是三云专线的 BGP 对接要点:

特性阿里云 VBR+CENAWS DX+TGW腾讯云专线GW+CCN
BGP 对端 AS451047224(公有VIF)45090
互联地址169.254.x.x/30/30(控制台分配)/30
最大 BGP 前缀数100100100
跨 Region 互联CEN TR 自动TGW PeeringCCN 自动
双专线 ECMP支持(最多4条)需 LAG 或双 VIF支持
BFD 支持✅ VBR 支持✅ DX 支持(AWS侧自动启用,客户端需手动配置)✅ 支持
路由过滤路由策略(前缀级)前缀过滤列表CCN 路由管理

关键注意事项:

  1. 阿里云 VBR:

    • 对端 AS 固定 45104
    • 支持 BFD,建议启用(50ms × 3 = 150ms)
    • VBR 必须关联到 CEN,否则路由不通
  2. AWS DX:

    • 公有 VIF 对端 AS 固定 7224
    • AWS 侧自动启用异步 BFD(最小间隔 300ms),客户端路由器需手动配置 BFD 才能联动
    • 最多 100 个 BGP 前缀,超过会 reset session
  3. 腾讯云 CCN:

    • 对端 AS 固定 45090
    • 跨地域带宽需单独购买(默认 10Kbps,不购买几乎断掉)
    • CCN 内 VPC 网段重叠会导致路由冲突

七、小结

架构选型一句话总结

  • 边界 eBGP:跨 AS 连 ISP/云,必须用 BGP
  • 内部 iBGP:同 AS 内传递路由,避免 AS-Path 膨胀
  • RR 设计:避免 iBGP 全网状,双 RR 冗余
  • Next-Hop:next-hop-self(eBGP)/ next-hop-local(iBGP)+ OSPF

与前 5 章的关联

  • 第 1 章:BGP 状态机(邻居建立)
  • 第 2 章:BGP 属性(Local Preference、AS-Path、Next-Hop)
  • 第 3 章:BGP 选路(13 条规则)
  • 第 4 章:BGP 防环(iBGP 水平分割、RR)
  • 第 5 章:BGP+BFD(快速故障检测)
  • 第 6 章:BGP 企业网络架构(边界 eBGP + 内部 iBGP)

下一篇:BGP 常见故障排查——7 个典型场景的排查思路与解决方法。


参考资料

  • RFC 4271: A Border Gateway Protocol 4 (BGP-4) - BGP 协议核心标准
  • RFC 4456: BGP Route Reflection - BGP 路由反射器规范
  • IP Routing Configuration Guide, Cisco IOS XE 17.x - Cisco IOS XE BGP 配置指南
  • Huawei BGP Configuration Guide - 华为 NE 系列路由器 BGP 配置指南
  • 阿里云 VBR BGP 配置指南 - 阿里云边界路由器 BGP 配置
  • AWS Direct Connect Documentation - AWS DX BGP 配置指南
  • 腾讯云专线接入文档 - 腾讯云专线网关 BGP 配置

系列文章

  • 上一篇:05-实战篇-BGP+BFD快速切换-180秒到150毫秒的故障检测|BGP+BFD 快速切换:从 180 秒到 150 毫秒
  • 当前文章:BGP 企业网络架构设计:边界 eBGP + 内部 iBGP
  • 下一篇:07-运维排障篇-BGP常见故障排查-7个典型场景
返回列表