HCIE-DATACOM · 第 4 章

BGP
边界网关协议

AS 间路由的事实标准 · 邻居状态机 · 路径属性 · 11 条选路规则 · RR 与联盟 · 防环机制 · 收敛优化 —— HCIE 笔试最难拿分章,LAB 唯一"配置量决定通过率"的部分。

授课 10 学时 实验 8 学时 笔试高频 ★★★★★
HCIE-DataCom 全套课件第 4 章 / 共 13 章

本章学习目标

原理层

  • 逐条复述华为设备 BGP 选路规则并说明用途
  • 对每个核心属性:类型(公认/可选)、传递性、比较方向
  • 描述 RR / 联盟解决 IBGP 全互联问题的原理与差异
  • 三套防环机制分别在什么位置生效

实战层

  • 完成 AS 内(RR)+ AS 间组网与选路控制
  • 用 route-policy 精确改写属性,实现"考题指定路径"
  • 定位邻居 Idle/Active/Established 震荡
  • 聚合、默认路由、引入的策略化发布
考试权重HCIE-DataCom 笔试中 BGP+选路控制合计约占 1/4 分值;LAB 中 BGP 邻居 + 引入 + 选路是 IGP 之后最大分块。
4.1

BGP 概述与邻居建立

路径矢量协议 · TCP 179 · 增量更新 · 靠策略"人治"

BGP 定位与核心特性

路径矢量

不传"链路状态"也不传"距离",传去往目标的整条 AS 路径

可靠传输

跑在 TCP 179 上:增量触发更新、确认、重传全交给 TCP,协议本身无 Hello/泛洪。

策略为王

不追求"最优"而追求"可控":属性+策略覆盖一切选路。

维度IGP(OSPF/IS-IS)BGP
目的域内快速收敛、无环域间可控、稳定优先
更新周期+触发,LSA 泛洪增量(仅变化)+ Keepalive 维持
防环算法/结构保证AS_PATH 检查 + IBGP 水平分割 + Cluster_List
度量Cost(客观)多属性组合(策略主观)
规模百~千级百万路由级(Internet)
类型eBGP:不同 AS 间(TTL=1 默认);iBGP:同 AS 内(TTL=255)。华为默认 eBGP 邻居需直连,非直连要 peer x.x.x.x ebgp-max-hop

五种报文与状态机

Idle Start/资源可用 ConnectTCP握手中 Active监听并重试发起TCP 连接重试 OpenSent已发Open等回包 TCP建立 OpenConfirm参数互认(AS/RID/Timer) Open正确 EstablishedKeepalive/Update 协商OK 任何状态收到错误 → Notification → 回 Idle Idle 卡死:无路由/地址/被策略阻止 | Active 震荡:TCP 层不通(未开 peer、源地址错、179 被 ACL 拦) OpenSent/OpenConfirm 反复:AS号不匹配 / 认证失败 / RID 冲突 / Hold Time 差异
BGP 6 状态机(含 Connect 内部重试)
报文作用备注
Open协商版本(4)/本端 AS/RID/Hold TimeHold 取双方较小值(0=不发送 Keepalive,仅实验用)
Update宣告可达路由(NLRI+路径属性) / 撤销路由同一报文可同时撤旧宣新
Keepalive维持邻居(默认 60s 周期 / Hold 180s)华为默认 keepalive 60 / hold 180
Notification差错通知,一发即断排错看 FSM 原因码
Route-Refresh请求对等体重发某族路由(软复位)RFC 2918,独立能力;与 ORF 无关

邻居配置与避坑

# 基本 eBGP / iBGP
bgp 65001
 router-id 1.1.1.1
 peer 10.1.12.2 as-number 65002       # eBGP
 peer 2.2.2.2 as-number 65001          # iBGP 用Loopback
 peer 2.2.2.2 connect-interface LoopBack0
 # eBGP 多跳(经环回建邻居)
 peer 3.3.3.3 ebgp-max-hop 2
 peer 3.3.3.3 connect-interface LoopBack0
 ipv4-family unicast
  peer 10.1.12.2 enable
  peer 2.2.2.2 enable
  peer 2.2.2.2 next-hop-local   # iBGP发eBGP路由改下一跳
  • Idle 常见:没有到 peer 地址的路由(iBGP 忘配 IGP)、AS 号写错(Open 协商失败有错误码)
  • Active 常见:TCP 层问题 —— 认证不匹配、TCP 179 被阻断、本地 connect-interface 源地址与 peer 配置不符
  • 直连 eBGP 用环回:两端都要 ebgp-max-hop,且直连接口网络要进 IGP
  • 认证:peer password(MD5 / Keychain,Keychain 支持 md5/hmac-sha256-20 等,可换钥不中断)
  • 多实例/族:VPNv4、EVPN 等地址族需在对应 family 下 enable(LAB 忘 enable 是头号失分点)
诊断命令display bgp peer verbose 看 FSM 状态与 Timer;display tcp status 查 179 端口是否建立。

IBGP 全互联问题 → RR / 联盟

为什么必须全互联

IBGP 水平分割:从 iBGP 邻居学到的路由不再传给其他 iBGP 邻居(防环代价)。n 台设备需 n(n-1)/2 条会话。

RR(路由反射器)

  • RR 把 iBGP 路由"反射"给其他 Client(打破水平分割)
  • 三条反射规则:从 Client 学到的 → 发给所有 Client + 所有非 Client + EBGP;从 非 Client 学到的 → 只发给所有 Client + EBGP(不发非 Client);从 EBGP 学到的 → 发给所有 Client + 所有非 Client
  • 防环:Originator_ID(始发者 RID,收到含自己即丢)+ Cluster_List(RR 集群 ID 链,含本集群即丢)
  • Client 只需与 RR 建邻居,会话数从 O(n²) 降到 O(n)

联盟(Confederation)

  • 把大 AS 切成多个私有子 AS(私有号段,不对外可见)
  • 子 AS 间跑 eBGP 但保留内部属性(NEXT_HOP/LOCAL_PREF/MED 不变),像 iBGP
  • 对外仍是一个 AS:联盟外部只看到大 AS 号

选型

RR联盟
改动小,只配 RR大,全网 bgp confederation
扩展RR 负担集中天然分布式
适用企业/中小 SP超大规模
# RR 配置示意(client 侧无需任何 RR 特有配置)
bgp 65001
 ipv4-family unicast
  peer 2.2.2.2 reflect-client          # 2.2.2.2 成为 Client
  # rr-filter / reflect between-clients 等
4.2

路由生成与路径属性

BGP 的"基因":network / import-route / aggregate + 7 大核心属性

路由从哪来:三种注入方式

方式条件Origin典型用途
network本地路由表必须存在该前缀(精确匹配掩码)IGP(i)发布自身/互联网段(首选)
import-route直接引入进程路由(direct/static/IGP)Incomplete(?)整表引入(需配策略收敛)
aggregate明细存在(detail-suppressed 则只发聚合)聚合者定(i/?表瘦身(附 ATOMIC_AGGREGATE)
# network:路由表中必须已有
bgp 65001
 ipv4-family unicast
  network 10.1.1.0 255.255.255.0
# 聚合 + 抑制明细
  aggregate 10.1.0.0 255.255.0.0 detail-suppressed
# 引入 + 策略过滤
  import-route ospf 1 route-policy ONLY-DC
高频坑network 10.1.1.1 255.255.255.255 之前必须 ip route-static 10.1.1.1 255.255.255.255 Null0 或接口存在;掩码必须与路由表精确一致,否则一 silent 无声失败。

默认路由四种发法

  • peer x.x.x.x default-route-advertise(向指定邻居发默认)
  • network 0.0.0.0/0(本地表有默认)
  • import-route + 策略
  • 聚合 0/0(大杀器,慎用)

五大必考属性(一)

属性类型方向/规则用途
AS_PATH公认必遵eBGP 出方向追加本 AS;iBGP 不变选路(短优)+ 第一防环(含本 AS 即拒收)
NEXT_HOP公认必遵eBGP:宣告者接口 IP;传给 iBGP 默认不变→ 痛点下一跳可达性;与 IGP 联动
ORIGIN公认必遵IGP(i) < EGP(e) < Incomplete(?)选路次序;标识注入方式
LOCAL_PREF公认自决仅 AS 内传递(不传给 eBGP),出 AS 即丢;默认 100,大优控制本 AS 出口选择(出流量)
MED可选非传递传给相邻 AS 即止(不向第三方转);默认 0,小优影响邻居 AS 进入本 AS 的路径(入流量)
NEXT_HOP 三痛点① iBGP 转发 eBGP 路由时下一跳不变 → 下一跳不可达路由不生效(配 peer next-hop-local 或 IGP 带上互联段);② RR 反射同理;③ 多路访问网段第三方下一跳。
MED 冷知识默认 MED 只在来自同一相邻 AS 的路由间比较;compare-different-as-med 打开跨 AS 比较(危险选项,须慎用)。

属性(二):Community 族

COMMUNITY(可选传递)

  • 格式 AS:VAL(如 100:10),32bit
  • 标记路由分组,供对端按标记执行策略
  • 知名团体值:no-export(不向联盟外部的 eBGP 邻居发布,联盟内子 AS 间可传)、no-advertise(不传给任何邻居)、no-export-subconfed(连联盟内子 AS 间也不传)、internet

扩展团体属性

  • Route Target(RT):MPLS L3VPN/EVPN 的 VPN 成员标记(第 7 章)
  • SoO(Source of Origin):防双归属站点路由打转
# 华为团体三件套:发/收/展示
bgp 65001
 ipv4-family unicast
  peer 10.1.12.2 advertise-community   # 默认不发给peer!
route-policy SETCOM permit node 10
 apply community 100:10  additive
# 按团体接收过滤
ip community-filter 1 permit 100:10
bgp 65001
 ipv4-family unicast
  peer 10.1.12.2 as-path-acl/community-filter 1 import
# 展示需要display bgp routing-table 10.1.0.0
# (默认显示 Community 需路由表 detail 视图)
必坑Community 默认随 Update 发送——必须 peer 下 advertise-community!
4.3

选路规则

HCIE 招牌考点:11 条规则按华为设备顺序逐条背熟

华为 BGP 选路 11 条(上)

#规则比较方向常改手段
1PrefVal 首选值(华为私有)大优(默认0)peer x.x.x.x preferred-value / route-policy apply preferred-value
2Local_Pref大优(默认100)route-policy apply local-preference
3本地生成优先本地 > 邻居学来内部次序:A>S>N>I>L(手动聚合>自动聚合>network>import-route>邻居学来)
4AS_Path长度小优apply as-path 65009 65009 additive必须带 additive,否则覆盖原 AS_Path 反而破坏防环)
5OriginIGP < EGP < ?apply origin igp/…
6MED小优apply cost / default med
7eBGP > iBGP先比类型——
记忆法Pref 前世,本地源,短 AS,Origin 先,MED 小,外部亲” —— 1~7 条覆盖 90% 考题;8 条以后多为"平局裁决"。

华为 BGP 选路 11 条(下)

#规则比较方向备注
8递归到 IGP 的 cost 小小优即下一跳可达性开销;可用 bestroute igp-metric-ignore 关闭此项比较
9Cluster_List长度小优RR 场景才比;非 RR 场景通常相同
10Router ID 小小优先比 Originator_ID(存在时),否则比 RID
11对等体地址小小优建邻居所用的 IP 地址小者胜
两条易混点① 华为官方选路规则为 11 条(另有"优选非 GR 邻居路由"等可选开关项,默认不生效);等价负载分担不是选路比较项,而是选路完成后在"仍在并列"的多条路由上开启的动作(默认 maximum load-balancing 1)。② 第 8 条的 IGP cost 比较华为是默认生效的,与 Cisco 口径一致,只是可用 bestroute igp-metric-ignore 忽略。
答题模板题目给"同前缀多路径"→ 按顺序报规则号+比较值+谁胜出;先检查是否同为"本地始发 vs 学习"(第3条)再谈属性。

选路控制组合拳

  • 出流量:LOCAL_PREF(首选,简单直观)
  • 入流量:MED / AS_Path prepend(劝退)
  • 设备级特例:PrefVal(只影响本机)

选路实战:考题化模板

# 需求:R1 去 100.1.1.0/24 优先走 R3(eBGP)
route-policy TO-R3 permit node 10
 if-match ip-prefix P100
 apply local-preference 200
bgp 65001
 ipv4-family unicast
  peer 30.1.1.3 route-policy TO-R3 import
# 劝退备份路径(对端视角)
route-policy BACKUP permit node 10
 apply as-path 65009 65009  additive

三步答题法

  1. 定位:哪台设备做决策?(选路发生在"接收多条路径的设备"上)
  2. 选规则:出/入向哪个属性最合适?影响范围多大?
  3. 验证:display bgp routing-table x.x.x.x 看"选中的路径+原因对比"(华为显示 Pref/LocalPref/…全属性)
LAB 提分华为 display bgp routing-table 1.1.1.1 verbose 会逐条列出所有路径的全部属性与择优原因(best 标记)—— 排错时先看它,不要瞎猜。

防环机制总表

位置机制原理
AS 之间(eBGP)AS_PATH 检查收到含本 AS 号的路由直接丢弃
AS 内(iBGP)iBGP 水平分割iBGP 学到的路由不传给 iBGP 邻居(RR/联盟打破之)
RR 集群Originator_ID + Cluster_List含自己 Originator / 本集群 ID 的路由丢弃
联盟子 AS 号追加 AS_PATH(Confederation 段)子 AS 环路可见但不向真外泄漏

打破水平分割的代价

RR 反射引入环路可能 → 用 Cluster_List 兜底;联盟内部保留属性 → 需要 confederation 防环。每种"打破"都配"新保险"。

论述素材"RR 双集群设计":两台 RR 互为非 Client 或互为 Client 均可,Cluster_List 防环;Client 双归属两 RR → RR 故障无感。园区/DC 网络标准答案。
4.4

扩展与收敛优化

大表时代的生存技巧 + 华为特色调优

收敛与稳定性优化

邻居层面

  • BFD for BGP(毫秒级检测,替代 180s Hold)
  • GTSM(对等体 TTL 检查,防伪造报文)
  • 认证 Keychain(平滑换钥)

更新流量层面

  • ORF(出口路由过滤):把本端入口策略"推"给对端在源头就少发 —— 通过 Open 报文的独立能力项协商(RFC 5291),与 Route-Refresh 是两个独立能力
  • 自动路由聚合 / update-group 分组
  • Prefix-Limit(入向前缀数上限,防打爆)

路由稳定性

  • Dampening 抖动抑制:半衰期/抑制门限/最大抑制时间,压制震荡路由
  • Load-balancing(maximum load-balancing n)

快速切换

  • BGP FRR(等价/非等价快速重路由)
  • PIC(Prefix Independent Convergence):切换与表项数量无关,毫秒级
笔试高频ORF 的方向理解(capacity-direction both)、Dampening 四参数(half-life 15m 默认等)—— 常以"配了没用"的场景题出现(忘 peer 使能 ORF)。

BGP4+ 与 6PE(IPv6 侧写)

# IPv6 地址族
bgp 65001
 peer 2.2.2.2 as-number 65001      # 邻居仍是IPv4建
 ipv6-family unicast
  peer 2.2.2.2 enable
  network 2001:DB8:1::/64
  import-route direct
  • MP-BGP(RFC 4760)扩展:Update 携带 AFI/SAFI,v4 邻居传 v6 路由(地址族解耦)
  • NEXT_HOP 变 16/32 字节(含 v4 映射形式)

6PE:IPv6 over IPv4 MPLS

  • 核心网 IPv4/MPLS 不动,PE 向下提供 v6 接入
  • v6 路由带标签栈传给对端 PE(VPNv4 单播族的 v6 版)
  • 迁移期利器,第 10 章呼应
考试要点"同一对邻居可以只 enable ipv6-family 而 v4 不通吗?" —— 可以!地址族独立,邻居是 TCP 承载的共享底座。

排错命令包 + 三案例

display bgp peer [verbose]                      # 状态/类型/认证/收发计数
display bgp routing-table [1.1.1.1] [verbose]    # 路由与属性全览
display bgp routing-table peer 2.2.2.2 received-routes   # 从对端收到的原始路由
display bgp routing-table peer 2.2.2.2 accepted-routes   # 经入向策略过滤后接收的路由
display bgp network / import-route               # 注入统计
display ip routing-table protocol bgp            # 进系统表情况
refresh bgp all import                           # 软复位(Route-Refresh)

案例A:邻居 Idle

10 分钟起不来 → 查 peer 地址路由可达性 + AS 号。iBGP 场景九成是忘了把互联/环回放进 IGP。

案例B:Established 却无路由

received-routes 有、accepted-routes 无 → 入向策略拒了;有 accepted 但系统表无 → NEXT_HOP 不可达(next-hop-local 考点)。

案例C:路由从 R1 学到,邻居 R2 却不来

RR 只反射给 Client;检查双端 reflect-client 与集群设计。

三板斧Idle查路由、Active查TCP、Established查策略+下一跳 —— 邻居三态对三刀。

核心知识要点速记 考前 10 分钟过一遍

考点必背细节频度
承载与状态机TCP 179;Idle→Connect→Active→OpenSent→OpenConfirm→Established;Active = 听不到连接反复重试,不是"活着"★★★★
五种报文Open(协商 AS/版本/HoldTime 默认 180s)、Update(可携带撤销路由)、Keepalive(60s)、Notification(出错即断)、Route-refresh(改策略免重启)★★★
属性四分类公认必遵:AS_Path / Next_Hop / Origin;公认自决:Local_Pref;可选非传递:MED;可选传递:Community★★★★★
选路 11 条默写PrefVal → LP → 本地始发(手聚 > 自聚 > network > import)→ AS_Path 短 → Origin(I<E<?) → MED 小 → EBGP>IBGP → IGP 开销小 → Cluster_List 短 → RID 小 → 对等体地址小★★★★★
RR 三条反射EBGP 邻居→所有;客户端→非客户端+客户端;非客户端→客户端;RR 不改任何属性;防环靠 Originator_ID / Cluster_List;RR 可再当客户端形成层级 RR★★★★★
Community 大众值internet / no-export(不出本 AS)/ no-advertise(不传任何邻居)/ local-AS(不出联盟);改写须加 additive 否则覆盖★★★★
下一跳行为EBGP 学来的路由传给 IBGP 不改下一跳 → IBGP 内不可达;EBGP 邻居间 always 修改;IBGP 内用 peer next-hop-local 修复★★★★
聚合与抑制aggregate 手工聚合(as-set 保留明细属性,防环靠它);明细可通过 suppress-policy 抑制;network 要求路由表中掩码精确一致★★★
振荡抑制damping:半衰期 15min、reuse 750、suppress 2000;只对 EBGP 路由生效★★
易错陷阱① 联盟内 AS_Path(AS_CONFED_*)不计入长度比较;② RR 场景非客户端之间不反射——漏配全互联是排错题最爱;③ 聚合路由丢失明细属性导致选路异常,as-set 一把梭解决。

练习重点 笔试 × LAB 双线

笔试刷题方向

  1. 11 条选路排序:把乱序的规则拖回正确次序——送分题也是送命题
  2. 属性分类:给一个属性名判断"必遵/自决/可选传递",MED 只做同邻居 AS 比较
  3. RR 推演:给三客户端+两非客户端拓扑,问某条路由会反射给谁
  4. 状态机卡态:卡 Connect/Active 查 TCP(地址/端口/ACL),卡 OpenSent 查 AS/认证
  5. Community 生效范围:no-export vs local-AS 在联盟场景的差异
达标线11 条 90 秒默写零错;display bgp routing-table x.x.x.x 输出的属性逐项会读。

实验强化清单

  1. RR + 两级反射组网,用 Originator_ID 复现防环
  2. 四种手段各做一次选路控制:prefVal / LP / AS_Path / MED,比较效果差异
  3. 聚合 + suppress-policy:验证聚合发布、明细抑制、as-set 防环
  4. 改入向 route-policy 后用 route-refresh 刷新,观察路由重算
  5. 故障注入:iBGP 邻居间下一跳不可达,用 next-hop-local 修复
验证命令自查display bgp peer verbosedisplay bgp routing-table peer x received/advertised-routesrefresh bgp all import/export —— 三段式分诊"没收到 / 收到没生效 / 生效不通"。

本章小结

邻居Idle→Connect→Active→OpenSent→OpenConfirm→Established;eBGP 默认直连 TTL1;iBGP 用环回;认证两端一致。
防环eBGP=AS_PATH;iBGP=水平分割;RR=Originator+Cluster_List;联盟=子AS号。每打破一环必有新保险。
注入network 要求路由表精确存在(Origin i);import-route 万能但 Origin ?;aggregate 聚合控表。
属性LP 只在域内(出流量);MED 只传一跳(入流量);Community 需 advertise-community 才发。
选路PrefVal→LP→本地→AS_PATH→Origin→MED→e/iBGP→IGP→负载→Cluster→RID→peerIP;1~7 主战场。
优化BFD 检测 / ORF 源头过滤 / Dampening 防震 / FRR·PIC 快切;排错三板斧"路由、TCP、策略"。

课后思考

iBGP 水平分割的"代价"与"收益"分别是什么?RR 通过什么方式证明自己反射的路径无环?
MED 在联盟内部为什么可以跨子 AS 传递?这与"MED 是非传递属性"矛盾吗?
两条路由所有属性完全一致(同为 eBGP、同 AS_PATH 长度、同 RID),最终谁被选中?列举可能影响第 12 条规则的部署细节。
ORF 与本地配置 import-policy 相比,收敛收益体现在哪里?为什么说它"把策略推到了源头"?
BFD 联动 BGP 检测的是"邻居失效"还是"路由失效"?两者在物理链路抖动时的表现差异?

实验 4:BGP 综合大实验 LAB · 4 学时

eNSP · 8 路由器双 AS + RR 双集群对标 LAB 真题规模

任务书

  1. AS 65001:R1/R2 为 RR(互为 Client),R3-R4 为 Client,IGP 用 OSPF
  2. AS 65002:R5-R8 全互联 eBGP 邻居到 AS65001 出口
  3. AS65001 发布 10 个前缀(network),AS65002 引入 10 条静态
  4. 选路五连:① LP 控制出流量 ② MED 影响入向 ③ as-path prepend 劝退 ④ PrefVal 本机特例 ⑤ Community 联动 no-export
  5. 故障注入:拔 RR、改错 AS 号、next-hop 陷阱,逐一恢复
验证点预期
display bgp peer全部 Established;RR 显示反射计数
选路四连验证tracert 路径符合策略设计
断 R1(RR)R3 业务不中断(双 RR)
verbose 属性对比能指出每条路径落选原因
时间训练本题按 LAB 标准完成应 ≤ 90 分钟;建议全程只开记事本写增量配置,最后统一粘贴 —— 真实考场效率法。