详解BGP是什么、工作原理、四种消息类型、路由属性、选路规则,以及在企业、IDC和云服务中的实际应用
前言
“BGP是什么?”
“为什么BGP被称为互联网的核心协议?”
“运营商和云服务商说的BGP线路是什么意思?”
“企业需要用BGP吗?”
如果你对网络有一定了解,但搞不清楚BGP是什么,这篇文章就是为你准备的。我会用最通俗的方式,讲解这个支撑整个互联网运行的协议。
一、BGP到底是什么?
1.1 通俗理解BGP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP是什么? │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 想象一个快递系统: │ │
│ │ │ │
│ │ 🏠 城市A (你的公司) ──需要寄件──▶ 城市B (客户) │ │
│ │ │ │
│ │ 问题: 路线怎么走? │ │
│ │ ├── 直线走? 中间有条河,过不去 │ │
│ │ ├── 绕道C? C不合作,快递被退回 │ │
│ │ └── 绕道D? D太慢了,3天后才到 │ │
│ │ │ │
│ │ 解决方案: │ │
│ │ ├── 每个城市告诉别人: "我能送到哪些地方" │ │
│ │ ├── 每个城市告诉别人: "经过我到各地最快的路线" │ │
│ │ └── 大家汇总信息,找到最优路线 │ │
│ │ │ │
│ │ BGP = 城市间的"快递路线协调协议" │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
1.2 BGP的定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP官方定义 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ BGP = Border Gateway Protocol (边界网关协议) │ │
│ │ │ │
│ │ 核心作用: │ │
│ │ 在不同的自治系统(AS)之间交换路由信息 │ │
│ │ 决定数据包在互联网中应该怎么走 │ │
│ │ │ │
│ │ 关键特点: │ │
│ │ ├── 🔷 路径向量协议 (Path Vector) │ │
│ │ ├── 🔷 运行在TCP 179端口 │ │
│ │ ├── 🔷 支持路由策略和控制 │ │
│ │ └── 🔷 专门用于大型网络互联 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 一句话总结: │ │
│ │ │ │
│ │ BGP就是互联网的"地图导航" │ │
│ │ 告诉你数据包应该走哪条路才能到达目的地 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
1.3 为什么需要BGP?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
┌─────────────────────────────────────────────────────────────────┐
│ 不用BGP行不行? │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 内网路由协议 (RIP/OSPF/IS-IS) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 适用场景: 同一个组织内部的网络 │ │
│ │ │ │
│ │ 公司路由器A ──OSPF──▶ 路由器B │ │
│ │ │ ↑ │ │
│ │ └──── 同一公司 ────────────────┘ │ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 只知道内部的网络拓扑 │ │
│ │ ├── 不关心外部网络 │ │
│ │ └── 路由器数量有限,管理简单 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 互联网路由 (BGP) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 适用场景: 不同组织之间的网络 │ │
│ │ │ │
│ │ 中国电信 ───────┐ │ │
│ │ │ BGP │ │
│ │ 中国联通 ───────┼── 交换路由信息 ──▶ 全球互联网 │ │
│ │ │ │ │
│ │ 中国移动 ───────┘ │ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 需要处理海量路由 (全球80万+条) │ │
│ │ ├── 涉及多个不同组织 │ │
│ │ ├── 需要复杂的路由策略 │ │
│ │ └── 稳定性和安全性要求极高 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
二、核心概念:自治系统 (AS)
2.1 什么是AS?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
┌─────────────────────────────────────────────────────────────────┐
│ 自治系统 (AS) 通俗解释 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ AS = Autonomous System (自治系统) │ │
│ │ │ │
│ │ 通俗理解: │ │
│ │ 就像一个独立的小区 │ │
│ │ │ │
│ │ 🏘️ 小区内部: │ │
│ │ ├── 有自己的物业管理系统 │ │
│ │ ├── 住户之间自由走动 │ │
│ │ └── 内部事务自己说了算 │ │
│ │ │ │
│ │ 🌍 小区外部: │ │
│ │ ├── 进出小区要走大门 │ │
│ │ ├── 和其他小区打交道要按规矩 │ │
│ │ └── 每个小区有自己的"门牌号"(AS号) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ AS号码 (ASN): │ │
│ │ │ │
│ │ ├── 就像身份证号一样,全球唯一 │ │
│ │ ├── 1-64511: 公有AS号 (可自行申请) │ │
│ │ ├── 64512-65535: 私有AS号 (仅内部使用) │ │
│ │ └── 65536+: 32位AS号 (支持更多AS) │ │
│ │ │ │
│ │ 例子: │ │
│ │ ├── 中国电信: AS4134, AS4809 │ │
│ │ ├── 中国联通: AS4837, AS9929 │ │
│ │ ├── 中国移动: AS9808, AS24093 │ │
│ │ └── 阿里云: AS45102, AS37943 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
2.2 AS之间的关系
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
┌─────────────────────────────────────────────────────────────────┐
│ AS之间的关系类型 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ AS之间有三种关系: │ │
│ │ │ │
│ │ 1️⃣ Provider (提供商) ← Customer (客户) │ │
│ │ 客户花钱买带宽,服务商提供服务 │ │
│ │ │ │
│ │ 2️⃣ Peer (对等体) ↔ Peer (对等体) │ │
│ │ 互相免费交换流量,节省带宽费用 │ │
│ │ │ │
│ │ 3️⃣ Shared Cost (共享成本) │ │
│ │ 双方共同承担流量成本 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 运营商关系示例 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ┌─────────┐ │ │
│ │ │ Tier-1 │ 全球骨干网络运营商 │ │
│ │ │ 运营商 │ │ │
│ │ │ 如AT&T │ │ │
│ │ │ 中国电信 │ │ │
│ │ └────┬────┘ │ │
│ │ │ │ │
│ │ ┌─────────────┼─────────────┐ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Tier-2 │ │ Tier-2 │ │ Tier-2 │ 二级运营商│ │
│ │ │ 运营商 │◀│ 运营商 │◀│ 运营商 │ │ │
│ │ │ (ISP) │ │ (ISP) │ │ (ISP) │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ 企业/ │ │ 企业/ │ │ 企业/ │ 企业用户 │ │
│ │ │ 网站 │ │ 网站 │ │ 网站 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ │ │
│ │ Tier-1: 不花钱买带宽,全球互联 │ │
│ │ Tier-2: 花钱买Tier-1的带宽,贩卖服务 │ │
│ │ Tier-3: 末端ISP,给用户提供接入服务 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
三、BGP工作原理
3.1 BGP邻居建立过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP邻居建立过程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 两个BGP路由器要交换路由,需要先建立邻居关系: │ │
│ │ │ │
│ │ 邻居路由器A 邻居路由器B │
│ │ (AS 65001) (AS 65002) │
│ │ │ │ │
│ │ │ │ │
│ │ │ 1. TCP三次握手建立连接 │ │
│ │ ├──────────────────────────────────────────────┤ │
│ │ │ │ │
│ │ │ 2. Open消息 (协商参数) │ │
│ │ │ ├── 我的AS号是65001 │ │
│ │ │ ├── 我的BGP ID是1.1.1.1 │ │
│ │ │ └── 我支持的特性... │ │
│ │ ├──────────────────────────────────────────────┤ │
│ │ │◀────────────────────────────────────────────│ │
│ │ │ 3. Open消息回应 │ │
│ │ │ ├── 我的AS号是65002 │ │
│ │ │ └── 我的BGP ID是2.2.2.2 │ │
│ │ │ │ │
│ │ │ 4. Keepalive消息 (保持连接) │ │
│ │ ├──────────────────────────────────────────────┤ │
│ │ │ │ │
│ │ │ ✅ BGP邻居建立成功! │ │
│ │ │ │ │
│ │ │ 5. 开始交换路由信息 │ │
│ │ │ │ │
│ │ └──────────────────────────────────────────────┘ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ BGP邻居类型: │ │
│ │ │ │
│ │ 🔵 IBGP (Internal BGP) - 同一个AS内的邻居 │ │
│ │ ├── 不需要直接相连 │ │
│ │ ├── 通过IGP (OSPF/ISIS) 可达就行 │ │
│ │ └── TTL=255,跳数限制大 │ │
│ │ │ │
│ │ 🟢 EBGP (External BGP) - 不同AS间的邻居 │ │
│ │ ├── 通常需要直接相连 │ │
│ │ ├── 跳数限制TTL=1 (可修改) │ │
│ │ └── 用于不同运营商之间交换路由 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.2 BGP消息类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP四种消息类型 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 1. OPEN - 建立邻居关系 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 邻居建立后发送的第一条消息 │ │ │
│ │ │ │ │ │
│ │ │ 内容: │ │ │
│ │ │ ├── 版本号 │ │ │
│ │ │ ├── AS号 │ │ │
│ │ │ ├── BGP ID (路由器ID) │ │ │
│ │ │ ├── 保活时间 │ │ │
│ │ │ └── 可选参数 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 2. KEEPALIVE - 保持连接 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 周期发送,证明自己还活着 │ │ │
│ │ │ │ │ │
│ │ │ ├── 默认60秒发送一次 │ │ │
│ │ │ ├── 3次没收到则认为邻居down │ │ │
│ │ │ └── 消息很小,不占用带宽 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 3. UPDATE - 更新路由信息 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 核心消息!用于通告/撤回路由 │ │ │
│ │ │ │ │ │
│ │ │ 内容: │ │ │
│ │ │ ├── 撤销的路由 (Withdrawn Routes) │ │ │
│ │ │ ├── 新增的路由 (Path Attributes + NLRI) │ │ │
│ │ │ └── 路由属性 (AS_PATH, NEXT_HOP, MED等) │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 4. NOTIFICATION - 通知错误 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 发现错误时发送,然后关闭BGP连接 │ │ │
│ │ │ │ │ │
│ │ │ 内容: │ │ │
│ │ │ ├── 错误代码 │ │ │
│ │ │ ├── 错误子码 │ │ │
│ │ │ └── 具体错误信息 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.3 BGP路由传递过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP路由如何传递? │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 场景: 企业A (AS 65001) 要让全世界能访问它的网站 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 步骤1: 企业A向运营商宣告自己的网段 │ │ │
│ │ │ │ │ │
│ │ │ 企业A路由器 │ │ │
│ │ │ │ │ │ │
│ │ │ │ BGP UPDATE (宣告) │ │ │
│ │ │ ▼ │ │ │
│ │ │ 运营商路由器 (AS 4809) │ │ │
│ │ │ │ │ │
│ │ │ 宣告: 203.0.0.0/24, AS_PATH: 65001 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 步骤2: 运营商之间交换路由 │ │ │
│ │ │ │ │ │
│ │ │ 中国电信 (AS 4809) ◀───BGP───▶ 中国联通 (AS 4837)│ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ │ │ 交换路由: │ │ │
│ │ │ │ 203.0.0.0/24 │ │ │
│ │ │ │ AS_PATH: 4809, 65001 │ │ │
│ │ │ │ │ │ │
│ │ │ │ 交换路由: │ │
│ │ │ │ 203.0.0.0/24 │ │
│ │ │ │ AS_PATH: 4837, 4809, 65001│ │
│ │ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 步骤3: 路由传遍互联网 │ │ │
│ │ │ │ │ │
│ │ │ 全球所有运营商都知道: │ │ │
│ │ │ "203.0.0.0/24 在AS 65001" │ │ │
│ │ │ │ │ │
│ │ │ 数据包去这个网段,就找AS_PATH中的下一跳 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
四、BGP路由属性
4.1 路由属性详解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP路由属性 (上) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 1. AS_PATH - 途经的AS列表 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ BGP UPDATE: │ │ │
│ │ │ 203.0.0.0/24 │ │ │
│ │ │ AS_PATH: 4809, 65001 │ │ │
│ │ │ │ │ │
│ │ │ 作用: │ │ │
│ │ │ ├── 防止环路 (看到自己的AS就丢弃) │ │ │
│ │ │ └── 影响选路 (AS越短越优先) │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 2. NEXT_HOP - 下一跳地址 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ BGP UPDATE: │ │ │
│ │ │ 203.0.0.0/24 │ │ │
│ │ │ NEXT_HOP: 192.168.1.1 │ │ │
│ │ │ │ │ │
│ │ │ 作用: │ │ │
│ │ │ └── 告诉邻居: "去这个网段,先找我" │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 3. LOCAL_PREF - 本地优先级 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 作用: 告诉AS内部路由器 "走这条路优先" │ │ │
│ │ │ │ │ │
│ │ │ 例子: │ │ │
│ │ │ ├── 出去: 优先走电信 (LOCAL_PREF=200) │ │ │
│ │ │ └── 备用: 走联通 (LOCAL_PREF=100) │ │ │
│ │ │ │ │ │
│ │ │ ⚠️ 仅在AS内部传递,不传出AS │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 4. MED (Multi-Exit Discriminator) - 多出口鉴别器 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 作用: 告诉其他AS "我从哪个口子进最优" │ │ │
│ │ │ │ │ │
│ │ │ 例子: (电信收到联通的路由) │ │ │
│ │ │ ├── 从上海入口: MED=100 (优先) │ │ │
│ │ │ └── 从北京入口: MED=200 │ │ │
│ │ │ │ │ │
│ │ │ ⚠️ 仅影响进入AS的路径选择 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
4.2 路由属性 (下)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP路由属性 (下) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 5. ORIGIN - 路由来源 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 三种来源: │ │ │
│ │ │ │ │ │
│ │ │ IGP (最高优): │ │ │
│ │ │ └── 通过network命令宣告进BGP │ │ │
│ │ │ │ │ │
│ │ │ EGP: │ │ │
│ │ │ └── 通过EGP协议学到的 (基本淘汰) │ │ │
│ │ │ │ │ │
│ │ │ Incomplete: │ │ │
│ │ │ └── 通过redistribute引入 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 6. COMMUNITIES - 团体属性 │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 作用: 给路由打标签,方便批量控制 │ │ │
│ │ │ │ │ │
│ │ │ 常用团体值: │ │ │
│ │ │ ├── no-export: 不要传给其他AS │ │ │
│ │ │ ├── no-advertise: 不要传给任何邻居 │ │ │
│ │ │ ├── no-export-subconfed: 不要传给子AS │ │ │
│ │ │ └── 65001:100 自定义团体值 │ │ │
│ │ │ │ │ │
│ │ │ 例子: │ │ │
│ │ │ route-map SET_COMM permit 10 │ │ │
│ │ │ set community no-export │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
五、BGP选路规则
5.1 选路原则 (12条)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP选路原则 (按优先级从高到低) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 当有多条路由到达同一目的地时,BGP按以下顺序选择最优路由: │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1️⃣ 最高权重 (Weight) - Cisco私有属性 │ │
│ │ └── 本地生效,不传递给任何人 │ │
│ │ │ │
│ │ 2️⃣ 最高LOCAL_PREF │ │
│ │ └── AS内生效 │ │
│ │ │ │
│ │ 3️⃣ 本地优先级路由 (Local Preference) │ │
│ │ └── 优先选择本AS起源的路由 │ │
│ │ │ │
│ │ 4️⃣ 最短AS_PATH │ │
│ │ └── AS路径越短越优先 │ │
│ │ │ │
│ │ 5️⃣ 最低ORIGIN类型 │ │
│ │ └── IGP > EGP > Incomplete │ │
│ │ │ │
│ │ 6️⃣ 最低MED值 │ │
│ │ └── 告诉对方自己的优先级 │ │
│ │ │ │
│ │ 7️⃣ EBGP > IBGP │ │
│ │ └── 外部邻居学来的优先于内部邻居 │ │
│ │ │ │
│ │ 8️⃣ 最低IGP metric到NEXT_HOP │ │
│ │ └── 到下一跳的IGP开销最小 │ │
│ │ │ │
│ │ 9️⃣ 是否有多路径 (BGP Multipath) │ │
│ │ └── 如果配置了等价多路径,则都加入路由表 │ │
│ │ │ │
│ │ 🔟 最老的EBGP路由 │ │
│ │ └── 如果都相同,选最稳定的 │ │
│ │ │ │
│ │ 1️⃣1️⃣ 最低Router-ID │ │
│ │ └── 路由器的Router-ID越小越优先 │ │
│ │ │ │
│ │ 1️⃣2️⃣ 最短Cluster-List │ │
│ │ └── RR (路由反射器) 场景 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
5.2 选路实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP选路实例 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 场景: 企业要访问 8.8.8.8 │ │
│ │ │ │
│ │ 电信 (AS 4809) 联通 (AS 4837) │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ └──────────┬─────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 企业路由器 │ │
│ │ (AS 65001) │ │
│ │ │ │
│ │ 收到的路由: │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 路由1: 从电信学来 │ │ │
│ │ │ ├── NEXT_HOP: 202.96.1.1 │ │ │
│ │ │ ├── AS_PATH: 4809, 15169 │ │ │
│ │ │ └── LOCAL_PREF: 100 │ │ │
│ │ │ │ │ │
│ │ │ 路由2: 从联通学来 │ │ │
│ │ │ ├── NEXT_HOP: 218.2.1.1 │ │ │
│ │ │ ├── AS_PATH: 4837, 15169 │ │ │
│ │ │ └── LOCAL_PREF: 200 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 选路过程: │ │
│ │ ├── 权重(Weight): 都是0,继续 │ │
│ │ ├── LOCAL_PREF: 200 > 100,路由2胜出! │ │
│ │ └── 结果: 走联通出去! │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 配置实现: │ │
│ │ │ │
│ │ router bgp 65001 │ │
│ │ ! 设置从联通学来的路由优先级更高 │ │
│ │ route-map PREFER_CTC permit 10 │ │
│ │ match neighbor 218.2.1.1 │ │
│ │ set local-preference 200 │ │
│ │ ! 应用到邻居 │ │
│ │ neighbor 202.96.1.1 route-map PREFER_CTC in │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
六、BGP实际应用场景
6.1 企业多线BGP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
┌─────────────────────────────────────────────────────────────────┐
│ 企业多线BGP接入 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 问题: 单线接入的问题 │ │
│ │ │ │
│ │ 移动用户 ──▶ 电信线路 ──▶ 企业服务器 │ │
│ │ │ │ │
│ │ └── 绕路! 延迟高,体验差 │ │
│ │ │ │
│ │ 解决: 多线BGP接入 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 电信 (AS 4809) │ │ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ │ ┌────┴────┐ │ │ │
│ │ │ │ 企业 │ │ │ │
│ │ │ │ 路由器 │ │ │ │
│ │ │ └────┬────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ │ 联通 (AS 4837) 移动 (AS 9808) │ │ │
│ │ │ │ │ │
│ │ │ 效果: │ │ │
│ │ │ ├── 电信用户走电信线路 │ │ │
│ │ │ ├── 联通用户走联通线路 │ │ │
│ │ │ └── 移动用户走移动线路 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 配置示例: │ │
│ │ │ │
│ │ router bgp 65001 │ │
│ │ ! 宣告企业网段 │ │
│ │ network 203.0.0.0 mask 255.255.255.0 │ │
│ │ │ │
│ │ ! 连接电信 │ │
│ │ neighbor 202.96.1.1 remote-as 4809 │ │
│ │ neighbor 202.96.1.1 description Telecom │ │
│ │ │ │
│ │ ! 连接联通 │ │
│ │ neighbor 218.2.1.1 remote-as 4837 │ │
│ │ neighbor 218.2.1.1 description ChinaUnicom │ │
│ │ │ │
│ │ ! 连接移动 │ │
│ │ neighbor 120.1.1.1 remote-as 9808 │ │
│ │ neighbor 120.1.1.1 description ChinaMobile │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
6.2 数据中心BGP架构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
┌─────────────────────────────────────────────────────────────────┐
│ 数据中心BGP架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 大型互联网公司典型架构: │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 互联网 │ │ │
│ │ │ │ │ │
│ │ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │
│ │ │ │ 电信 │ │ 联通 │ │ 移动 │ │ │ │
│ │ │ └──┬───┘ └──┬───┘ └──┬───┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ └────┬────┴────┬────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ │ ▼ ▼ │ │ │
│ │ │ ┌──────────┬──────────┐ │ │ │
│ │ │ │ Border │ Border │ 边界路由器 │ │ │
│ │ │ │ Router 1 │ Router 2 │ (BGP) │ │ │
│ │ │ └────┬─────┴────┬─────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ │ └────┬─────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌──────────────────┐ │ │ │
│ │ │ │ Core Network │ 核心网络 │ │ │
│ │ │ └────────┬─────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ┌─────────┼─────────┐ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ ▼ ▼ ▼ │ │ │
│ │ │ ┌─────┐ ┌─────┐ ┌─────┐ 接入交换机 │ │ │
│ │ │ │ ToR │ │ ToR │ │ ToR │ │ │ │
│ │ │ └──┬──┘ └──┬──┘ └──┬──┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ ▼ ▼ ▼ │ │ │
│ │ │ ┌─────┐ ┌─────┐ ┌─────┐ 服务器 │ │ │
│ │ │ │ SVR │ │ SVR │ │ SVR │ │ │ │
│ │ │ └─────┘ └─────┘ └─────┘ │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 每个Pod/机架都是独立的BGP宣告点 │ │
│ │ ├── 服务器直接运行BGP (服务器BGP) │ │
│ │ ├── 任意两台服务器之间只有1-2跳 │ │
│ │ └── 流量可以智能调度到最优路径 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
6.3 云服务商BGP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
┌─────────────────────────────────────────────────────────────────┐
│ 云服务商BGP应用 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 传统托管 vs 云服务商BGP: │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 传统托管: │ │ │
│ │ │ │ │ │
│ │ │ 机房只接电信 │ │ │
│ │ │ │ │ │ │
│ │ │ │ 所有人访问都要走电信 │ │ │
│ │ │ ▼ │ │ │
│ │ │ 服务器 │ │ │
│ │ │ │ │ │
│ │ │ 问题: 联通/移动用户访问很慢 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 云服务商BGP: │ │ │
│ │ │ │ │ │
│ │ │ 电信 ──┐ │ │ │
│ │ │ │ │ │ │
│ │ │ 联通 ──┼──▶ 云网络 ──▶ 你的云服务器 │ │ │
│ │ │ │ │ │ │
│ │ │ 移动 ──┘ │ │ │
│ │ │ │ │ │
│ │ │ 效果: 每个运营商的用户都走自己的线路 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ BGP高防实例: │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 攻击流量 │ │ │
│ │ │ │ │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌──────────────┐ │ │ │
│ │ │ │ DDoS清洗 │ │ │ │
│ │ │ │ 中心 │ │ │ │
│ │ │ └──────┬───────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ │ 正常流量 │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌──────────────┐ │ │ │
│ │ │ │ 云服务器 │ │ │ │
│ │ │ └──────────────┘ │ │ │
│ │ │ │ │ │
│ │ │ 原理: │ │ │
│ │ │ ├── 清洗中心和云服务器都在同一AS │ │ │
│ │ │ ├── 清洗后把干净流量路由过来 │ │ │
│ │ │ └── 攻击者IP被DROP │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
七、BGP配置实战
7.1 基础配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP基础配置 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 基本配置步骤 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ # 1. 启用BGP进程 │ │
│ │ router bgp 65001 │ │
│ │ bgp router-id 1.1.1.1 │ │
│ │ ! AS号是你自己公司的AS号 │ │
│ │ │ │
│ │ # 2. 宣告自己的网段 │ │
│ │ ! 方式1: network命令 │ │
│ │ network 203.0.0.0 mask 255.255.255.0 │ │
│ │ network 10.0.0.0 mask 255.255.0.0 │ │
│ │ │ │
│ │ ! 方式2: 聚合宣告 │ │
│ │ aggregate-address 203.0.0.0 255.255.0.0 summary-only │ │
│ │ │ │
│ │ # 3. 配置邻居 │ │
│ │ neighbor 202.96.1.1 remote-as 4809 │ │
│ │ neighbor 202.96.1.1 description Telecom-BJ │ │
│ │ neighbor 202.96.1.1 password MySecretPass │ │
│ │ │ │
│ │ neighbor 218.2.1.1 remote-as 4837 │ │
│ │ neighbor 218.2.1.1 description ChinaUnicom-SH │ │
│ │ │ │
│ │ # 4. 查看邻居状态 │ │
│ │ show ip bgp summary │ │
│ │ show ip bgp neighbors │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 查看BGP路由 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ show ip bgp # 查看所有BGP路由 │ │
│ │ show ip bgp 8.8.8.8 # 查看特定路由 │ │
│ │ show ip bgp neighbors # 查看邻居详情 │ │
│ │ show ip bgp regexp _4809_ # 按AS号过滤 │ │
│ │ │ │
│ │ # 输出示例: │ │
│ │ # Network Next Hop Metric LocPrf Weight Path │ │
│ │ # *> 8.8.8.0/24 202.96.1.1 100 0 4809 i │ │
│ │ # * 8.8.8.0/24 218.2.1.1 200 0 4837 i │ │
│ │ # ↑ │ │
│ │ # *> = 被选中 * = 可用但未选中 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
7.2 路由策略配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP路由策略配置 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 路由过滤 (Route Map) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ # 只接收特定网段的路由 │ │
│ │ ip prefix-list ALLOW_SUBNET permit 203.0.0.0/8 le 24 │ │
│ │ ip prefix-list ALLOW_SUBNET permit 10.0.0.0/8 le 16 │ │
│ │ │ │
│ │ route-map FILTER_IN permit 10 │ │
│ │ match ip address prefix-list ALLOW_SUBNET │ │
│ │ route-map FILTER_IN deny 999 │ │
│ │ │ │
│ │ neighbor 202.96.1.1 route-map FILTER_IN in │ │
│ │ │ │
│ │ # 不把自己的路由传给某个邻居 │ │
│ │ neighbor 202.96.1.1 route-map FILTER_OUT out │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 设置LOCAL_PREF (选路) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ! 设置从电信来的路由优先级更高 │ │
│ │ route-map SET_LOCAL_PREF permit 10 │ │
│ │ match neighbor 202.96.1.1 │ │
│ │ set local-preference 200 │ │
│ │ route-map SET_LOCAL_PREF permit 20 │ │
│ │ match neighbor 218.2.1.1 │ │
│ │ set local-preference 100 │ │
│ │ │ │
│ │ ! 应用到所有入站流量 │ │
│ │ bgp default local-preference 150 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 添加AS_PATH (影响他人选路) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ! 给路由添加AS_PATH,影响别人选路 │ │
│ │ route-map ADD_AS_PATH permit 10 │ │
│ │ set as-path prepend 65001 65001 │ │
│ │ │ │
│ │ neighbor 202.96.1.1 route-map ADD_AS_PATH out │ │
│ │ │ │
│ │ ! 效果: 这条路由的AS_PATH变长,别人会优先走别的路 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 设置团体属性 (Community) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ! 给路由打上团体标签 │ │
│ │ route-map SET_COMM permit 10 │ │
│ │ set community 4809:100 │ │
│ │ │ │
│ │ ! 发送团体属性给邻居 │ │
│ │ neighbor 202.96.1.1 send-community │ │
│ │ │ │
│ │ ! 常见团体值: │ │
│ │ ! no-export: 不传出本AS │ │
│ │ ! no-advertise: 不传给任何邻居 │ │
│ │ ! 4809:100: 自定义标签(运营商:编号) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
7.3 BGP认证配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP安全配置 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ MD5认证配置 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ # 两端配置相同的密码 │ │
│ │ router bgp 65001 │ │
│ │ neighbor 202.96.1.1 password MySecret123 │ │
│ │ neighbor 218.2.1.1 password MySecret456 │ │
│ │ │ │
│ │ # 作用: 防止非法BGP邻居接入 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ TTL安全 (EBGP多跳) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ! EBGP默认TTL=1,需要多跳时设置 │ │
│ │ neighbor 202.96.1.1 ebgp-multihop 2 │ │
│ │ │ │
│ │ ! 允许TTL检查 │ │
│ │ neighbor 202.96.1.1 ttl-security hops 1 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 路由 flap damping (抑制震荡) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ! 当路由频繁震荡时,抑制一段时间不发送 │ │
│ │ router bgp 65001 │ │
│ │ bgp dampening │ │
│ │ │ │
│ │ ! 或者自定义参数 │ │
│ │ bgp dampening 15 750 2000 60 │ │
│ │ ! 半衰期 重新使用阈值 最大抑制时间 惩罚值 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
八、BGP故障排查
8.1 常见问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP常见问题与排查 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 问题1: BGP邻居起不来 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 检查项: │ │
│ │ ├── ✅ TCP 179端口是否可达 (telnet测试) │ │
│ │ ├── ✅ AS号是否配置正确 │ │
│ │ ├── ✅ 认证密码是否一致 │ │
│ │ ├── ✅ IP地址是否正确 │ │
│ │ └── ✅ 是否有ACL阻塞BGP │ │
│ │ │ │
│ │ 排查命令: │ │
│ │ ping 202.96.1.1 # 测试连通性 │ │
│ │ telnet 202.96.1.1 179 # 测试179端口 │ │
│ │ show ip bgp neighbor 202.96.1.1 # 查看邻居状态 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 问题2: 没有学到对方路由 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 检查项: │ │
│ │ ├── ✅ 邻居是否 Established │ │
│ │ ├── ✅ 对方是否宣告了该网段 (show ip bgp) │ │
│ │ ├── ✅ 路由策略是否过滤了该路由 │ │
│ │ ├── ✅ 是否有route-map拒绝 │ │
│ │ └── ✅ AS_PATH是否被检查 │ │
│ │ │ │
│ │ 排查命令: │ │
│ │ show ip bgp neighbor 202.96.1.1 advertised-routes │ │
│ │ show ip bgp neighbor 202.96.1.1 routes │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 问题3: 路由优选不对 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 检查项: │ │
│ │ ├── ✅ 查看每条路由的路径属性 │ │
│ │ ├── ✅ 确认选路规则是否生效 │ │
│ │ ├── ✅ 检查weight/local-pref/MED等属性 │ │
│ │ └── ✅ 确认route-map顺序是否正确 │ │
│ │ │ │
│ │ 排查命令: │ │
│ │ show ip bgp 8.8.8.8 # 查看路由详情 │ │
│ │ show ip bgp 8.8.8.8 longer-prefixes │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 问题4: 路由震荡/不稳定 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 检查项: │ │
│ │ ├── ✅ 是否配置了dampening │ │
│ │ ├── ✅ 上游是否在频繁修改路由 │ │
│ │ └── ✅ 链路是否稳定 │ │
│ │ │ │
│ │ 排查命令: │ │
│ │ show ip bgp dampening dampened-paths │ │
│ │ show ip bgp 8.8.8.8 │ │
│ │ ! 查看dampening信息 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
九、总结
9.1 核心知识点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP核心知识点速记 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. BGP是什么? │ │
│ │ 互联网的核心路由协议,用于AS之间交换路由 │ │
│ │ │ │
│ │ 2. AS是什么? │ │
│ │ 自治系统,每个AS有唯一编号(ASN) │ │
│ │ │ │
│ │ 3. BGP邻居类型 │ │
│ │ ├── IBGP: 同AS内部 │ │
│ │ └── EBGP: 不同AS之间 │ │
│ │ │ │
│ │ 4. BGP消息类型 │ │
│ │ ├── OPEN: 建立邻居 │ │
│ │ ├── KEEPALIVE: 保活 │ │
│ │ ├── UPDATE: 更新路由 │ │
│ │ └── NOTIFICATION: 报错 │ │
│ │ │ │
│ │ 5. 核心路由属性 │ │
│ │ ├── AS_PATH: 防环+选路 │ │
│ │ ├── NEXT_HOP: 下一跳 │ │
│ │ ├── LOCAL_PREF: 出口选路 │ │
│ │ └── MED: 入口选路 │ │
│ │ │ │
│ │ 6. 选路原则 (按优先级) │ │
│ │ Weight > LOCAL_PREF > 本地 > AS_PATH > Origin > MED > ...│ │
│ │ │ │
│ │ 7. 应用场景 │ │
│ │ ├── 多线BGP │ │
│ │ ├── 数据中心 │ │
│ │ └── 云服务商 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
9.2 BGP vs 其他协议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
┌─────────────────────────────────────────────────────────────────┐
│ 路由协议对比 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 对比项 │ BGP │ OSPF/ISIS │ RIP │ │ │
│ │ ├─────────────────────────────────────────────────┤ │ │
│ │ │ │ │ │
│ │ │ 作用域 │ AS间 │ AS内 │ AS内 │ │ │
│ │ │ ───────────────────────────────────────────────│ │ │
│ │ │ 路由数量 │ 80万+ │ 几百 │ 几十 │ │ │
│ │ │ ───────────────────────────────────────────────│ │ │
│ │ │ 收敛速度 │ 慢 │ 快 │ 慢 │ │ │
│ │ │ ───────────────────────────────────────────────│ │ │
│ │ │ 路径选择 │ 丰富 │ 开销最小 │ 跳数 │ │ │
│ │ │ ───────────────────────────────────────────────│ │ │
│ │ │ 配置复杂度│ 高 │ 中 │ 低 │ │ │
│ │ │ ───────────────────────────────────────────────│ │ │
│ │ │ 适用场景 │ 运营商 │ 企业内网 │ 小网络 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
希望这篇教程能帮助你理解BGP协议!BGP是网络工程师必须掌握的核心技术,建议结合实验环境多多练习。