BGP协议详解:从原理到实战,一文搞懂互联网路由的核心

详解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是网络工程师必须掌握的核心技术,建议结合实验环境多多练习。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计