AS 间路由的事实标准 · 邻居状态机 · 路径属性 · 11 条选路规则 · RR 与联盟 · 防环机制 · 收敛优化 —— HCIE 笔试最难拿分章,LAB 唯一"配置量决定通过率"的部分。
路径矢量协议 · TCP 179 · 增量更新 · 靠策略"人治"
不传"链路状态"也不传"距离",传去往目标的整条 AS 路径。
跑在 TCP 179 上:增量触发更新、确认、重传全交给 TCP,协议本身无 Hello/泛洪。
不追求"最优"而追求"可控":属性+策略覆盖一切选路。
| 维度 | IGP(OSPF/IS-IS) | BGP |
|---|---|---|
| 目的 | 域内快速收敛、无环 | 域间可控、稳定优先 |
| 更新 | 周期+触发,LSA 泛洪 | 增量(仅变化)+ Keepalive 维持 |
| 防环 | 算法/结构保证 | AS_PATH 检查 + IBGP 水平分割 + Cluster_List |
| 度量 | Cost(客观) | 多属性组合(策略主观) |
| 规模 | 百~千级 | 百万路由级(Internet) |
peer x.x.x.x ebgp-max-hop。| 报文 | 作用 | 备注 |
|---|---|---|
| Open | 协商版本(4)/本端 AS/RID/Hold Time | Hold 取双方较小值(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路由改下一跳
display bgp peer verbose 看 FSM 状态与 Timer;display tcp status 查 179 端口是否建立。IBGP 水平分割:从 iBGP 邻居学到的路由不再传给其他 iBGP 邻居(防环代价)。n 台设备需 n(n-1)/2 条会话。
| 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 等
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
ip route-static 10.1.1.1 255.255.255.255 Null0 或接口存在;掩码必须与路由表精确一致,否则一 silent 无声失败。peer x.x.x.x default-route-advertise(向指定邻居发默认)| 属性 | 类型 | 方向/规则 | 用途 |
|---|---|---|---|
| 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 的路径(入流量) |
peer next-hop-local 或 IGP 带上互联段);② RR 反射同理;③ 多路访问网段第三方下一跳。compare-different-as-med 打开跨 AS 比较(危险选项,须慎用)。# 华为团体三件套:发/收/展示 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 视图)
HCIE 招牌考点:11 条规则按华为设备顺序逐条背熟
| # | 规则 | 比较方向 | 常改手段 |
|---|---|---|---|
| 1 | PrefVal 首选值(华为私有) | 大优(默认0) | peer x.x.x.x preferred-value / route-policy apply preferred-value |
| 2 | Local_Pref | 大优(默认100) | route-policy apply local-preference |
| 3 | 本地生成优先 | 本地 > 邻居学来 | 内部次序:A>S>N>I>L(手动聚合>自动聚合>network>import-route>邻居学来) |
| 4 | AS_Path 短 | 长度小优 | apply as-path 65009 65009 additive(必须带 additive,否则覆盖原 AS_Path 反而破坏防环) |
| 5 | Origin | IGP < EGP < ? | apply origin igp/… |
| 6 | MED | 小优 | apply cost / default med |
| 7 | eBGP > iBGP | 先比类型 | —— |
| # | 规则 | 比较方向 | 备注 |
|---|---|---|---|
| 8 | 递归到 IGP 的 cost 小 | 小优 | 即下一跳可达性开销;可用 bestroute igp-metric-ignore 关闭此项比较 |
| 9 | Cluster_List 短 | 长度小优 | RR 场景才比;非 RR 场景通常相同 |
| 10 | Router ID 小 | 小优 | 先比 Originator_ID(存在时),否则比 RID |
| 11 | 对等体地址小 | 小优 | 建邻居所用的 IP 地址小者胜 |
maximum load-balancing 1)。② 第 8 条的 IGP cost 比较华为是默认生效的,与 Cisco 口径一致,只是可用 bestroute igp-metric-ignore 忽略。# 需求: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
display bgp routing-table x.x.x.x 看"选中的路径+原因对比"(华为显示 Pref/LocalPref/…全属性)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 防环。每种"打破"都配"新保险"。
大表时代的生存技巧 + 华为特色调优
# 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
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)
10 分钟起不来 → 查 peer 地址路由可达性 + AS 号。iBGP 场景九成是忘了把互联/环回放进 IGP。
received-routes 有、accepted-routes 无 → 入向策略拒了;有 accepted 但系统表无 → NEXT_HOP 不可达(next-hop-local 考点)。
RR 只反射给 Client;检查双端 reflect-client 与集群设计。
| 考点 | 必背细节 | 频度 |
|---|---|---|
| 承载与状态机 | 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 路由生效 | ★★ |
display bgp routing-table x.x.x.x 输出的属性逐项会读。display bgp peer verbose、display bgp routing-table peer x received/advertised-routes、refresh bgp all import/export —— 三段式分诊"没收到 / 收到没生效 / 生效不通"。| 验证点 | 预期 |
|---|---|
| display bgp peer | 全部 Established;RR 显示反射计数 |
| 选路四连验证 | tracert 路径符合策略设计 |
| 断 R1(RR) | R3 业务不中断(双 RR) |
| verbose 属性对比 | 能指出每条路径落选原因 |