Skip to content

0. 课件来源

BGP(Border Gateway Protocol,边界网关协议)是互联网的**"骨干路由协议"** ——IGP(OSPF/IS-IS)负责 AS 内部可达,BGP 负责 AS 之间的路由传递。本节从 BGP 的设计思想出发,讲解邻居建立的全流程。


1. BGP 为什么存在?

1.1 AS 之间运行 IGP 的问题

text
AS 之间用 IGP(OSPF/IS-IS)有什么问题?

单链路:默认路由即可(但单点故障)
多链路:需要多点双向注入 → 环路/次优 → tag+过滤/preference 配置量巨大

IGP 的设计目标是 AS 内可达,不适合跨 AS 的场景。
→ 需要一个专门为 AS 间路由设计的协议 → BGP

1.2 路由协议家族

按算法分类代表协议特点
DV(距离矢量)RIP传路由,资源小,可能环路和次优
PV(路径矢量)BGP传路由+路径属性,按 AS 防环
LS(链路状态)OSPF、IS-IS最短无环,资源消耗大
按 AS 范围协议
IGP(内部网关协议)RIP、OSPF、IS-IS、EIGRP
EGP(外部网关协议)BGP

1.3 AS(自治系统)

定义:在同一个管理域下,运行相同 IGP 的路由器集合。

text
AS 是逻辑概念:小到一个公司,大到一个国家或洲
AS 号:2 字节(1-65535)或 4 字节(BGPv4 支持)
公有 AS 号必须全球唯一

2. BGP 核心特性

特性说明
运行在 TCP 上端口 179,单播建立邻居,需先有 TCP 连接(IGP 支撑)
稳定性长计时器避免路由抖动;路由惩罚机制
丰富属性10 个属性,13 条选路原则,选路灵活
按 AS 跳数AS-by-AS,一个 AS 算一跳

3. BGP 的三张表与报文

3.1 三张表

text
1. Peer 表:邻居(对等体)表   ← dis bgp peer
2. BGP Routing Table:BGP 路由表 ← dis bgp routing-table
3. RIB(全局路由表)

3.2 五种报文

报文作用
Open建立邻居,协商参数(AS号、Router-ID、hold-time、能力)
Keepalive邻居保活(默认 60s)
Update通告/撤销路由,携带 NLRI + 属性
Notification报错、断开邻居
Route-Refresh请求对方重新发送路由(能力协商后)

3.3 Update 报文结构

text
Update = NLRI(Network Layer Reachability Information)+ Path Attributes

NLRI:路由网段(Prefix + Mask)
Path Attributes:属性列表(AS-PATH、Next-Hop、Local-Pref、MED、Community…)

4. EBGP 与 IBGP

对比项EBGPIBGP
定义不同 AS 间的 BGP 邻居同一 AS 内的 BGP 邻居
修改下一跳默认修改默认不修改(保持最优路径下一跳)
防环机制AS-PATH(收到自己 AS 号的路由丢弃)IBGP 水平分割(从 IBGP 学来的不传其他 IBGP)
TTLEBGP=1(直连保护)IBGP=255
非直连peer x.x.x.x ebgp-max-hoppeer x.x.x.x connect-interface LoopBack0

💡 IBGP 水平分割的后果

从 IBGP peer 学到的路由不能再传给其他 IBGP peer → 导致路由传递不过去 → 需要全互联、RR 或联邦解决(详见第 3 篇)。


5. 邻居状态机

text
     ┌─────────┐
     │  Idle   │  初始状态 / 报错后返回
     └────┬────┘
          │  检查是否有路由去往 Peer IP
     ┌────▼────┐
     │ Connect │  TCP 3 次握手发起方(计时器 32s)
     │ Active  │  TCP 3 次握手接收方
     └────┬────┘
          │  TCP 连接建立
     ┌────▼────┐
     │OpenSent │  收到 Open 包,检查参数
     └────┬────┘
          │  ① AS 号一致  ② hold-time 协商  ③ RID 不冲突
          │  ④ 协议能力匹配(AFI/SAFI)⑤ Route-Refresh 能力一致
          │  ⑥ 4 字节 AS 号能力匹配
     ┌────▼────┐
     │OpenConfirm│ 发送 Keepalive,等待对方 Keepalive
     └────┬────┘
          │  收到 Keepalive
     ┌────▼────┐
     │Established│ ✅ 邻居建立,可交换路由
     └─────────┘

5.1 Open 包中协商的关键参数

参数说明
AS 号必须与 peer 配置的 AS 号一致,否则 notification
hold-time协商取两端较小值;keepalive ≤ 1/3 hold
Router-ID冲突则 notification(华为自动恢复)
CapabilityAFI/SAFI(协议族能力)、Route-Refresh、4 字节 AS 号

5.2 常见 AFI/SAFI

协议AFISAFI
IPv4 单播1 (ipv4)1 (unicast)
IPv4 组播1 (ipv4)2 (multicast)
VPNv41 (ipv4)128 (vpn)
IPv6 单播2 (ipv6)1 (unicast)
EVPN25 (layer2)70 (evpn)

6. IBGP 邻居配置

6.1 直连 IBGP

text
AR2:
bgp 234
 router-id 2.2.2.2
 peer 10.1.23.3 as-number 234

AR3:
bgp 234
 router-id 3.3.3.3
 peer 10.1.23.2 as-number 234

6.2 非直连 IBGP(Loopback 邻居)

多链路场景下,直连 IBGP 需要每条链路都建邻居 → TCP 连接太多。改用 Loopback 建邻居:一条 TCP 连接,物理链路冗余后自动切换。

text
AR2:
bgp 234
 router-id 2.2.2.2
 peer 10.1.4.4 as-number 234
 peer 10.1.4.4 connect-interface LoopBack0    # 用 Loopback 作为 TCP 源 IP

AR4:
bgp 234
 router-id 4.4.4.4
 peer 10.1.2.2 as-number 234
 peer 10.1.2.2 connect-interface LoopBack0

⚠️ connect-interface 的原理

  • BGP 建立 TCP 连接时,检查对端源 IP 是否为 peer 配置的 IP(源检测)
  • 不用 connect-interface → TCP 源 IP = 出接口 IP → 可能与 peer 配置不一致 → 被 RST 拒绝
  • 建议两边都配 connect-interface,确保双向都能建立 TCP

7. EBGP 邻居配置

7.1 直连 EBGP

text
AR2:
bgp 234
 router-id 2.2.2.2
 peer 10.1.23.3 as-number 70000

AR3:
bgp 70000
 router-id 3.3.3.3
 peer 10.1.23.2 as-number 234

7.2 非直连 EBGP(TTL 问题)

EBGP 默认 TTL=1,非直连时数据包经过中间路由器 TTL 会减到 0 → 邻居建不起来。

text
AR2:
bgp 234
 peer 10.1.4.4 as-number 80000
 peer 10.1.4.4 connect-interface LoopBack0
 peer 10.1.4.4 ebgp-max-hop          # 默认 255,修改 EBGP TTL

8. BGP 三种组网

8.1 组网一:全互联(Full Mesh)

text
AS 234 内所有运行 BGP 的路由器两两建立 IBGP 邻居

优点:路由和数据转发都没有问题
缺点:n 台设备需要 n(n-1)/2 条 IBGP 连接,资源消耗大

8.2 组网二:RR(Route Reflector)

text
通过路由反射器打破 IBGP 水平分割,详见第 3 篇

适用于互联网骨干网(IPv4/IPv6)

8.3 组网三:MPLS VPN / GRE 隧道

text
部分互联场景:AR2 和 AR4 运行 BGP,但 AR3 不运行
→ 数据平面出现"黑洞"(AR3 没有 BGP 路由)

历史方案:BGP 同步(将 BGP 注入 IGP)— 因路由膨胀已废弃
现代方案:MPLS(LSP 动态隧道)或 GRE 隧道

💡 BGP 同步的历史

BGP 同步(Sync)指"BGP 路由同时在 IGP 中存在时才算最优"。目的是确保没有数据黑洞。但随着互联网路由表膨胀(几十万条),把 BGP 全部注入 IGP 是不可行的 → 同步机制已取消。现代方案用 MPLSRR 解决。


9. 易混淆点与考前速记

对比项结论
BGP 本质PV(路径矢量),运行在 TCP 179 上
EBGP vs IBGPEBGP:不同 AS,修改下一跳,AS-PATH 防环,TTL=1
IBGP:同 AS,不修改下一跳,水平分割防环,TTL=255
邻居 5 态Idle → Connect/Active → OpenSent → OpenConfirm → Established
Open 协商AS 号、hold-time(取最小)、RID(不冲突)、AFI/SAFI、能力
connect-interface指定 TCP 源 IP,非直连 IBGP 必配(建议两边)
ebgp-max-hop修改 EBGP TTL,非直连 EBGP 必配
IBGP 水平分割IBGP 学到的不传其他 IBGP → 需全互联/RR/联邦
BGP 同步历史机制,已废弃

考前速记 8 条

  1. BGP 是路径矢量(PV),TCP 179,EGP
  2. EBGP 改下一跳 + AS-PATH 防环;IBGP 不改下一跳 + 水平分割防环
  3. 5 态:Idle→Connect/Active→OpenSent→OpenConfirm→Established
  4. Open 协商:AS 号、hold-time、RID、AFI/SAFI、能力
  5. IBGP 非直连:connect-interface 两边配
  6. EBGP 非直连:ebgp-max-hop + connect-interface
  7. IBGP 水平分割 → 全互联 / RR / 联邦
  8. BGP 同步已废弃;现代用 MPLS/RR 解决数据黑洞

🤖 AI 伴学

让 AI 帮你建立 BGP 的直觉理解:

"请把 BGP 想象成'国家之间的外交官':每个 AS 是一个国家,BGP 是外交官,TCP 是加密通信专线(可靠)。IGP(OSPF/IS-IS)在国内传递邮件,BGP 在国家间传递外交照会。EBGP 是跟邻国大使对话——出于安全距离(TTL=1)必须面对面;IBGP 是跟本国其他外交官对话——默认只能传一次,不能'传话'(水平分割),所以要么全员互相认识(全互联),要么设一个外交部发言人(RR 路由反射器)。Open 包就像外交官的证件交换:确认国籍(AS 号)、确认身份(Router-ID)、确认会谈话题(AFI/SAFI 能力)。"

真人撰写written by human