BGP 与广域网速查
BGP 邻居与选路、路由策略与过滤、MPLS 专线、IPsec VPN 对接、广域网链路排错:广域网路由与互联速查。
BGP 基础与邻居
对等体建立、状态机与报文要点
BGP 是什么:路径向量协议
BGP 是运行于 AS 之间的域间路由协议(EGP):用 AS_PATH 记录路径、按策略而非纯度量选路,是互联网与多运营商互联的事实标准。
EBGP 与 IBGP 的区别
同 AS 内为 IBGP、跨 AS 为 EBGP:IBGP 不改变下一跳、不修改属性、需要全互联或 RR;EBGP 每跳改 AS_PATH 与下一跳。
BGP 状态机六状态总览
BGP 会话经历 Idle → Connect → Active → OpenSent → OpenConfirm → Established:排障时先看卡在哪个状态,再对应排查方向。
BGP 邻居基础配置(IOS 风格)
EBGP 直连对等最简配置:router bgp + neighbor remote-as,两端 AS 号必须互相匹配才能进入 Established。
Active 状态:反复尝试建立连接
Active 表示本地在主动尝试(并监听)连接:最常见的「假活跃」状态,几乎总指向 TCP 层建不起来。
Established:会话建立后的检查点
Established 只是起点:还要核对前缀收发数量、下一跳可达性与选路结果,避免「会话正常但路由不通」。
AS 号:16 位与 32 位(asdot)
AS 号标识自治系统:传统 16 位(1~65535),32 位 ASN 常用 asdot(高位.低位)格式显示,配置时可两种写法。
Idle 状态:会话根本没起来
Idle 是最初/重试等待状态:常见于缺路由、被 shutdown、回环口未配置或认证失败后重回 Idle。
BGP 五类报文
BGP 会话依赖五类报文:Open(协商)、Update(更新路由)、Notification(错误通知)、Keepalive(保活)、Route-Refresh(请求重发)。
Connect 状态:TCP 正在连接
Connect:本地已发起 TCP 179 连接等待完成:长时间停留通常说明 SYN 无响应(被丢弃/无路由/对端未监听)。
Hold Time 与 Keepalive 定时器
Hold Time 是「多久收不到报文算超时」:默认 180s,Keepalive 默认 60s(取 1/3);调小加速故障感知但增加开销。
EBGP 多跳(ebgp-multihop)
EBGP 默认 TTL=1 只允许直连:非直连建立需要 ebgp-multihop 指定跳数与可达路由(或直接配合环回口对等)。
路由反射器(RR)的作用
IBGP 要求全互联的替代方案:RR 把客户端路由反射给其他客户端与客户端之间的路由需求,规模化 IBGP 靠 RR + 客户端层级。
next-hop-self 的使用场景
IBGP 场景把下一跳改为自身:避免因下一跳不在 IGP/不可达导致路由无效,边界设备对 IBGP 邻居常用。
BGP 邻居基础配置(华为 VRP 风格)
华为设备 BGP 配置结构:bgp <as> 视图内 peer 指定对端与 AS,功能开关与策略同样基于 peer 配置。
OpenSent:已发出 Open 等待对端
OpenSent:TCP 已建立、Open 报文已发出:卡在该状态说明对端未回 Open 或 Open 参数不被接受。
Router ID 的作用与常见坑
Router ID 是 BGP 的身份标识:参与 Open 协商与选路 tie-breaker;手工指定可避免地址变动引发的隐性变化。
update-source:用环回口建邻
用环回口作为 BGP 源地址:接口级故障不会导致会话源地址变化,配合 IGP 实现路径冗余下的稳定对等。
BGP 认证:TCP MD5 与 TCP-AO
BGP 支持 TCP MD5 摘要与更新的 TCP-AO:两端密钥必须一致,否则会话建立失败且日志多只显示建连问题。
RR 反射规则速记
RR 反射三条规则:客户端→客户端、客户端→非客户端、非客户端→客户端;非客户端→非客户端不反射(防环)。
Open 报文字段要点
Open 报文携带版本、本地 AS、Hold Time、BGP Identifier 与可选能力:两端协商后按较严结果运行。
TCP 179:端口与监听行为
BGP 用 TCP 179 建会话:双方都可主动发起也可监听;中间设备需双向放行 179,含返回流量与大规模会话性能。
MP-BGP:多协议扩展机制
MP-BGP 在同一会话上承载多地址族(IPv6、VPNv4/v6、EVPN 等):每个族独立激活、独立策略、独立前缀计数。
邻居重置:clear ip bgp 的几种用法
重置会话影响面可控:清邻居、软重置、按地址族刷新;先用最小影响手段,避免全表硬重置引发收敛风暴。
软重置原理与 Route-Refresh
软重置不拆会话:通过 Route-Refresh(或保存的 Adj-RIB-In)对已有路由重跑策略,避免重建邻居。
BFD 与 BGP 联动
BFD 提供毫秒级链路检测并联动 BGP 会话撤换:比等 Hold Timer 超时快得多,是亚秒收敛的关键组件。
OpenConfirm:等待 Keepalive 确认
OpenConfirm:双方 Open 已互认,等待 Keepalive 完成最终确认:此时参数已定,问题多在报文级(丢弃/超时)。
邻居状态变化的日志与观察
开启邻居状态变化日志(或事件日志)记录 Up/Down 与原因:排查震荡会话时先看时间线,再决定抓包或调试。
Peer Group 批量管理邻居
多个邻居共用相同策略时用 peer group:统一改策略一次生效,减少配置量与漏配风险。
优雅重启(Graceful Restart)概念
GR 让控制面重启期间数据面继续转发:邻居侧保留路由一段时间(Rib/Forwarding State),缩短收敛中断。
能力协商:MP-BGP、ASN4、Route-Refresh
Open 阶段协商能力决定可用特性:4 字节 ASN、MP-BGP 地址族、Route-Refresh、GR、Add-Path 都依赖双方同时支持。
Cluster ID 与反射防环
Cluster ID 标识反射器集群(默认取 router-id):多 RR 冗余时同一集群用相同 cluster-id,反射路径经 cluster-list 判环。
EBGP 的下一跳改写行为
EBGP 默认把下一跳改为自身接口地址(第三方下一跳场景例外):多跳 EBGP 与共享媒体场景需要特别核对。
TCP MSS 与建邻问题
BGP 建邻依赖 TCP:路径 MTU 异常时大尺寸 Open/Update 可能受阻,MSS 钳制与 PMTUD 是常见修复手段。
Adj-RIB-In、Loc-RIB 与 Adj-RIB-Out
BGP 路由数据分三个视图:入策略前的原始数据(Adj-RIB-In)、最优结果(Loc-RIB)与发往各邻居的集合(Adj-RIB-Out)。
看懂 show ip bgp summary
summary 输出包含邻居、版本、AS、收发表项数与状态:PfxRcd 为数字即 Established;字母状态对应中间态。
network 命令宣告路由的两个条件
IOS 的 network 命令需要两条同时满足:配置的前缀与掩码精确存在,且被成功选入路由表;否则不会宣告。
maximum-prefix:邻居前缀保护
对每个邻居设前缀上限:超限时告警或断开,防止误配/泄漏把路由表撑爆,是域间运维的基本护栏。
会话震荡的常见原因清单
邻居反复 Up/Down 的排查清单:从物理/链路、底层路由、定时器、前缀超限、认证、CPU 到对端行为逐项核对。
抓包观察 BGP 建邻过程
用抓包观察 TCP 握手与 BGP 报文序列:建邻卡壳时能看到 SYN 重传、Open 参数与 Notification,是定位最快的手段之一。
动态邻居(Listen Range)
对大量分支/同类设备(如 CPE、RR 客户端)可用动态邻居:按网段监听,加策略模板自动建邻,减少逐台配置。
被动模式(passive)的取舍
passive 让本端只监听不主动发起:用于单向可达或安全加固场景,但两端都 passive 会导致会话永远建不起来。
优雅关闭邻居(Graceful Shutdown)
维护窗口时礼貌下线:发送低优先级提示或设置 GR shutdown 社区,让对端提前选好备路,减少切换损失。
GTSM:TTL 安全防护
GTSM 校验 BGP 报文的 TTL 必须在预期范围:阻止远处伪造的 179 报文,多跳对等需同步调整 hop 数。
show ip bgp neighbors 关键段落
邻居详情页面信息量大:重点看能力协商、定时器、地址族、报文计数与最后错误,排障时按段落快速定位。
前缀计数与变化监控
监控入/出前缀数量与变化率:数量骤降常见于策略误配或对端撤销,骤增常见于泄漏或攻击,两者都值得告警。
RPKI 起源验证(ROA)入门
RPKI 用签名的 ROA 宣告「某前缀属于某 AS」:设备侧做起源验证可阻断部分前缀劫持,是域间安全的基础手段。
EBGP 会话基础健康检查清单
对等上线前的检查清单:底层可达、ACL 放行、两端 AS/地址匹配、认证一致、版本与能力兼容,一次核对能省去大量反复。
allowas-in:允许 AS_PATH 含本 AS
默认 AS_PATH 中出现本 AS 号会丢弃(防环):特殊拓扑(如双重归属、备份环路场景)需要 allowas-in 放宽。
EBGP 环回口对等的配置步骤
跨设备 EBGP 环回对等四步:两端环回+路由、更新源、多跳、邻居指向环回地址,缺一不成。
IBGP 环回口对等的配置要点
IBGP 环回对等更简单(TTL 255 默认):关键是两端环回在 IGP 中互相可达,且注意下一跳可达性问题。
send-community:社区属性默认不发
多数平台默认不向邻居传递 COMMUNITY 属性:需要显式 send-community(按标准/扩展分别配置)才能让对端收到。
VRF 中的 BGP 邻居基础
多 VRF 场景 BGP 按 VRF 实例运行(address-family vpnv4 与每 VRF 的 vrf-target):邻居定义在哪个 VRF 决定路由导入哪张表。
状态机排障速查表
把「卡在哪一态」与「查什么」做成速查表:Idle 查可达与配置,Active 查 TCP,OpenSent 查参数,Established 后查路由与策略。
default-originate:向邻居下发默认路由
边界设备向内部/对端邻居下发 0/0:让下游无需持有全表即可上网,需配合严格的出向策略避免误泄漏。
remote-as 写错的表现与核对
remote-as 与对端实际 AS 不一致:Open 阶段报错(AS 不匹配 Notification),出现「配置都在但会话起不来」的经典场景。
连接冲突(Collision)处理
双方同时发起 TCP 连接时进入冲突处理:BGP 按 Router ID 较大的连接获胜规则收敛,正常完成无需干预。
BGP 联盟(Confederation)
联盟把大 AS 切成多个子 AS:子 AS 内 IBGP、子 AS 间用联盟 EBGP,对外呈现一个 AS,减少全互联需求。
路由抖动抑制(Dampening)
对反复上下线的路由做惩罚抑制:减少不稳定前缀在域内传播的更新风暴,调参不当会延迟合法恢复。
Add-Path:同前缀多路径通告
默认同一前缀只通告最优路径:Add-Path 允许通告多条候选(含 path-id),用于快速备份路径和流量工程场景。
BMP:BGP 监控协议
BMP 把 BGP 会话的路由信息镜像给监控平台:不改动转发、不依赖设备日志,是路由监控分析(抖动、泄露、劫持)的高效手段。
AFI/SAFI:地址族与子地址族
BGP 用 AFI(IPv4/IPv6)与 SAFI(单播/组播/VPN)组合标识路由类型:配置 address-family 时理解二者可避免张冠黎戴。
标签单播(LU)与 BGP 分发标签
BGP 标签单播用 BGP 分发 MPLS 标签(RFC 3107):LU 与 LDP/SR 是不同实现路线,选型先统一技术栈。
未编号对等(Unnumbered BGP)
接口不配地址建 BGP:借接口(borrow)方式用接口引用替代邻居地址,适合点到点链路与IP 地址节省场景。
同步规则:历史机制与现状
老式同步规则要求 IBGP 路由须在 IGP 中可见才可用:现代网络默认关闭(no synchronization),理解它是为了读懂老配置。
自动汇总:默认行为的坑
BGP 自动汇总会按主类网络汇总(如 10.1.0.0/24 汇成 10.0.0.0/8):现代默认关闭,老配置里出现时要警惕。
disable-connected-check 使用注意
环回口建 EBGP 时若跳数实为 1,可用 disable-connected-check 免配 multihop,但语义与 multihop 不同,混用易出错。
AS_TRANS(23456)现象解读
32 位 AS 设备与旧设备对等时:旧设备用 23456 代替真实 32 位 AS 写入 AS_PATH,看到 23456 不必惊慌,查能力协商即可。
邻居描述(description)的运维价值
给每个邻居写清晰描述(运营商名、链路编号、联系人):排障与审计时不用翻台账,降低误操作风险。
Router ID 变更的影响与操作
手工改动 Router ID 通常需重置会话生效:RR/联邦场景影响反射行为,变更要按流程与窗口执行。
Update Groups:出向更新优化
策略相同的邻居共享出向更新计算:Update Groups 减少重复计算开销,策略差异化会让分组细分(了解其对性能与行为的意义)。
remove-private-as:剥离私用 AS
把私用 AS 号从 AS_PATH 中剥离后再通告:用于私用 AS 网络对接公网,避免对端看到私用段或长度异常。
maxas-limit:AS_PATH 长度护栏
限制可接受的 AS_PATH 最大长度:过滤异常长的路径(常与泄漏/攻击相关),超长路径被丢弃并告警。
BGP 管理距离与被覆盖保护
eBGP 管理距离 20、iBGP 200:静态路由常优先于 eBGP、IGP 优先于 iBGP,实操中用管理距离保护关键路由不被动学习覆盖。
在隧道上跑 BGP 的注意点
VPN/隧道上建立 BGP(GRE/IPsec/Overlay):MTU、隧道稳定性与地址规划三项决定会话质量,MTU 是最常见坑。
邻居配置最佳实践小结
邻居配置的稳健惯例:环回对口、手工 router-id、描述清晰、认证+GTSM、前缀护栏、变更留档——把经验固化成清单。
路由来源标记(B/I/O 等)速读
show ip route 中 B= BGP、B*=有资格、i=IGP、O=OSPF:快速判断某前缀是否经 BGP 学到及其信任级别。
VRF Lite 场景的 BGP 邻居
VRF Lite(无 MPLS 的虚拟路由转发):各 VRF 用子接口/物理隔离建 BGP 邻居,跨 VRF 用额外链路或路由泄漏,不依赖 MPLS 标签。
报文计数与停滞的判断
MsgRcvd/MsgSent 长期不变而状态 Up:可能对端已失去更新能力;结合 Last 变化与探测手段判断「假活」。
双会话设计:v4/v6 分离与共载
IPv4/IPv6 双栈网络可「双会话分离」或「单会话多族共载」:分离便于分权与故障隔离,共载省会话但单点影响大。
环回地址的宣告实践
业务/管理环回常以 /32 宣告进 BGP:注意与 network 命令的掩码匹配,以及是否需要聚合控制规模。
邻居健康度的观察组合
单看状态不够:把「状态+时长+失败计数+前缀数+计数增长」组成观察组合,才能完整判断邻居健康度。
验证工具组合:从流量到路由
邻居排障的验证组合:ping/trace(可达性)、抓包(协议层)、设备命令(会话层)、对端核对(协作)——四类证据互相印证。
GR 配置与验证要点
启用 GR:两端能力协商 + 地址族级配置 + 时间参数匹配;验证时重点看协商结果与重启场景演练。
IPv6 链路本地地址建邻要点
IPv6 EBGP 可直接用 link-local 建邻(需指定接口/zone):省地址简洁,但接口与对端地址组合要严格对应。
TTL 与可达性的组合核对
多跳对等的 TTL 设定与路由可达性是两个独立检查项:两者都过才会话建立,排查时分开验证避免混因。
会话重建节奏与抖动观察
会话断开后的重建节奏(重试计时)决定收敛观察窗口:在窗口期内看到反复切换属预期,记录节奏是判断「未收敛 vs 持续坏」的依据。
BGP 报文头部与常见计数含义
报文头部含长度、类型与标记:抓包最常见的异常是长度异常与类型序列不符,看懂头部结构能快速识别伪造与错帧。
GTSM 与 multihop 的组合选择
多跳对等的两种安全取向:纯 multihop(放宽 TTL)或 TTL Security/GTSM(收紧校验);现代实践倾向 GTSM 思路。