BGP 笔记梳理

一、BGP 基本概念

  • 定义:边界网关协议(Border Gateway Protocol),是一种外部网关协议(EGP),用于不同自治系统(AS)之间交换路由信息。

  • 特点:

  • 基于 TCP 协议,端口号 179,可靠性高。

  • 路径矢量协议,通过 AS 路径(AS-Path)等属性避免环路。

  • 支持 CIDR(无类域间路由),能携带大量路由信息。

  • 策略性强,可通过路由属性灵活控制路由的选择和传播。

二、BGP 核心术语

  • 自治系统(AS):由同一机构管理、使用统一路由策略的网络集合,用 AS 号标识(16 位:1-65535,其中 64512-65535 为私有 AS 号)。

  • BGP 邻居:不同设备通过 TCP 建立连接后形成的对等体关系,分为:

  • IBGP 邻居:同一 AS 内的 BGP 邻居,需遵循"水平分割"原则(不转发从 IBGP 邻居学到的路由)。

  • EBGP 邻居:不同 AS 间的 BGP 邻居,默认 TTL 为 1(环回口建邻需修改 TTL)。

  • Router-ID:标识 BGP 设备的唯一 ID,通常为设备环回口 IP,需全网唯一。

三、BGP 路由属性

  • 必选属性:所有 BGP 路由必须携带。

  • Origin:表示路由来源(IGP 为 i ,EGP 为 e ,重分发为 ? ,优先级: i > e > ? )。

  • AS-Path:记录路由经过的 AS 号列表,用于防环(收到包含本地 AS 号的路由时丢弃)。

  • Next-Hop:路由的下一跳地址(EBGP 邻居发布的路由,下一跳为邻居自身接口 IP;IBGP 邻居发布的路由,下一跳默认不变)。

  • 可选属性:

  • Local-Preference:仅在 IBGP 中传递,用于优选出 AS 的出口路由(值越大越优先,默认 100)。

  • MED(Multi-Exit Discriminator):用于向 EBGP 邻居提示进入本 AS 的优选入口(值越小越优先,仅在相邻 AS 间有效)。

  • Community:路由团体属性,用于标记路由,便于批量控制路由的接收、发布等策略。

四、BGP 工作过程

  1. 建立邻居关系:通过 peer 命令配置邻居,交换 Open 报文协商参数(如 AS 号、Router-ID 等),成功后进入 Established 状态。

  2. 交换路由信息:通过 Update 报文传递路由及属性,首次交换完整路由表,后续仅更新变化的路由。

  3. 路由选路:根据 BGP 路由属性优先级(从高到低:Weight(思科私有)→ Local-Preference → 本地生成路由 → AS-Path 长度 → Origin → MED → EBGP 路由优于 IBGP 路由等)选择最优路由,加入路由表。

  4. 维护邻居关系:通过 Keepalive 报文(默认 60s 发送一次,hold time 为 180s)保持连接,超时则断开邻居。

五、常见配置要点

  • 环回口建邻:提高邻居关系稳定性,需配置 peer connect-interface 指定环回口,EBGP 邻居还需配置 peer ebgp-max-hop 调整 TTL(如 peer 1.1.1.1 ebgp-max-hop 2 )。

  • 路由宣告:通过 network 命令宣告本地路由(需在路由表中存在精确匹配的路由),或通过 import-route 引入其他协议路由(如 OSPF、静态路由)。

  • 路由反射器:解决 IBGP 水平分割问题,减少 IBGP 邻居数量。配置反射器( peer reflect-client )后,反射器会将从客户机学到的路由反射给其他客户机和非客户机。

  • 防环与优化:

  • 配置黑洞路由( ip route-static 网段 NULL 0 )防止路由泄露形成环路。

  • 通过路由策略(如 route-policy 、 prefix-list )过滤不必要的路由,减少路由条目。

六、典型应用场景

  • AS 间路由互通:不同 AS 网络通过 EBGP 邻居交换路由,实现跨 AS 通信。

  • 路由策略控制:利用 Local-Preference、MED 等属性控制流量走向(如让流量优先从带宽大的链路进出)。

  • 大规模网络路由管理:通过 Community 属性标记不同区域的路由,在骨干设备上统一控制路由的传播范围。

七、故障排查思路

  1. 邻居关系未建立:检查接口是否通、AS 号是否配置正确、是否存在 ACL 过滤 BGP 报文、TTL 是否足够等。

  2. 路由未学习到:检查是否配置路由宣告或引入、邻居是否配置 peer enable 、是否存在路由策略过滤路由、AS-Path 是否包含本地 AS 号等。

  3. 路由选路不符合预期:查看路由属性( display bgp routing-table ),检查 Local-Preference、AS-Path 等属性是否按预期配置。