For the complete documentation index, see llms.txt. This page is also available as Markdown.

OpenBGPD

概述

本章提供在 OpenBSD 上使用基本系统守护进程 bgpd(8) 运行 BGP 的规范、面向生产的模式。内容涵盖 bgpd.conf(5) 中的配置、使用 bgpctl(8) 进行运行时操作、通过 rcctl(8) 控制服务,以及使用 rpki-client(8) 进行可选的源校验。这些模式适用于外部对等、多供应商边缘、站点或 POP 内的 iBGP,以及通过团体属性与本地优先级表达策略。

设计要点

  • 策略优先。 默认拒绝,显式放行预期的导入与通告。过滤器紧邻邻居配置,全局默认保持保守。

  • 确定性优先级。 在 AS 内为入站路径选择设置 localpref;使用团体属性进行结构化的策略信令。

  • 规模边界。 小型组网中全互联 iBGP 即可;拓扑较大时引入路由反射器,并尽量精简反射器状态。

  • RPKI。 对接收路由的源进行校验;丢弃 roa invalid。调度 rpki-client(8) 刷新 ROA。

  • 可观测性。bgpctl show summaryshow neighborshow rib {in,out} 视为每次变更与故障处置流程的必备环节。

  • 变更控制。 调整上游会话时,分阶段编辑、做语法检查,并保留回滚路径(控制台或定时回退)。

配置

1) 服务生命周期与骨架

创建包含本地 AS 与路由器 ID 的最小骨架,并启用守护进程。

## /etc/bgpd.conf — 最小骨架
AS 64512
router-id 198.51.100.2

2) 单宿 eBGP 接入上游(通告特定前缀)

前提:

  • 公共前缀:198.51.100.0/242001:db8:100::/48

  • 上游邻居:203.0.113.1,邻居 AS 64500

  • eBGP 源地址:198.51.100.2

重载并验证:

3) 双宿 eBGP(用 localpref 偏向一个上游;出站打团体属性)

前提:

  • 第二上游:198.51.100.1,AS 64496

  • 偏好:来自 ISP-A 的路由应通过更高 localpref 优先于 ISP-B

  • 出站标记:在通告的路由上设置参考团体属性(仅作示例)

验证重点:

通告要求路由已存在于路由表中(例如通过静态路由或回环分配)。在 bgpd 导出之前,须先安装确定性的始发路由(服务 IP 用主机 /32 或 /128,地址块用聚合路由)。

4) AS 内 iBGP(小型组网,全互联)

前提:

  • 两台路由器:R1(本机)与位于 10.0.0.2R2,均属 AS 64512

  • 全互联 iBGP;通过对从该 ISP 学到的路由施加更高 localpref,使 R1 作为通往 ISP-A 的出口优先

验证重点:

拓扑较大时,引入路由反射器以避免全互联。反射器应尽量简单,并将重新通告限制在必需的地址族与范围内。

5) RPKI 源校验(使用 rpki-client)

定期运行 rpki-client(8) 获取并校验 ROA,再由 bgpd 加载生成的集合。按策略拒绝 roa invalid

bgpd 配置:

观察 RPKI 状态:

6) AS 内任播服务通告

对于内部任播服务(例如解析器 10.10.255.53/32),在每个服务节点上始发该地址(lo0 别名或静态路由),并通过 iBGP 通告。随后由 ECMP 或策略引导客户端。

验证

使用 bgpctl(8) 的核心命令:

链路层与系统检查:

排障

  • 会话卡在 Idle/Active。 确认 IP 可达性、local-address,以及 PF 放行 TCP/179。验证 remote-as 与对端配置的本地 AS 一致,且 enforce neighbor-as 未阻断预期路径。

  • 无通告发出。 路由须已存在于 RIB(network 语句或静态路由)。确认有显式 match ... announce 规则指向该邻居。检查 bgpctl show rib out neighbor ...

  • 对等体发来过多路由。 提高或添加 max-prefix,配 restartwarning 阈值。用 prefix-list 或 prefix-set 过滤器收窄范围。

  • 入站路径未获偏好。 检查接收路由的 localpref。确认是否有更具体路由或 MED 覆盖了预期意图。

  • RPKI 丢弃了意外路由。 检查 bgpctl show rib roa invalid,并与上级 ROA 仓库的当前 ROA 交叉核对。放宽策略前先排查 ROA 状态。

  • 重载后抖动。 使用 bgpctl reload 进行平滑策略更新。结构性变更(增删对等体)应在维护窗口或非高峰时段执行。

另请参阅

最后更新于