BGP入门科普:互联网的"大江大河"是如何选路的?

先说句题外话:IGP的”天花板”在哪?

在学习BGP之前,我们先看看它的”前辈”们——内部网关协议(IGP)。

RIP和OSPF是我们最熟悉的两个IGP。IGP的工作特点是:快速收敛、拓扑发现、周期性更新、环路避免。但它们有一个共同的”天花板”——只看得见AS内部

IGP承载的路由前缀是本AS内的,数量不会特别庞大。但是,如果一个大型、高冗余性、多宿主的网络涉及AS之间交互路由,继续用IGP就会非常吃力。这就是为什么我们需要BGP。

从一个问路的故事开始

想象你开车要从上海到拉萨。没有导航的话你会怎么走?

你会打开一张全国高速公路地图——先上G2京沪高速到南京,转G42沪蓉高速到成都,再转G318。你不需要知道每个城市内部的街道怎么走,你只需要知道城市与城市之间的高速公路怎么连

互联网的”城市”叫做自治系统(Autonomous System,AS)——由同一个管理机构控制、使用相同路由策略的一组网络设备。比如中国联通是一个AS,Google也是一个AS。不同AS通过AS号(ASN)区分,取值范围165535,其中6451265535是私有AS号,在组织内部随意使用。

城市内部的道路是IGP(内部网关协议)的地盘,而城市之间的高速公路就是BGP的天下

BGP到底是什么?——互联网的”高富帅”

BGP(Border Gateway Protocol,边界网关协议)是互联网的”骨干路由协议”。简单说:

它告诉全世界的路由器:”要去Google,走AS 15169;要去阿里云,走AS 45102。”

没有BGP,就没有我们今天看到的互联网。它运行在TCP端口179上,是唯一被广泛使用的外部网关协议(EGP)。当前版本是BGP-4

BGP之所以被称为路由协议中的”高富帅”,是因为这些特征:

  • 🔗 使用TCP确保可靠传输(不像OSPF跑在IP上,也不像RIP用UDP)
  • 🌍 BGP邻居可以跨路由器建立,不要求直连
  • 📊 邻居建立时交换整个BGP路由表,后续只发增量/触发更新
  • 🎨 拥有丰富的路径属性和强大的策略工具
  • 🏋️ 能承载大批量路由前缀(全球约100万条)

BGP和其他路由协议的区别

协议 类型 适用范围 选路依据
RIP IGP 小型网络 跳数
OSPF IGP 企业网 链路带宽/开销
IS-IS IGP 运营商内部 链路开销
BGP EGP 全球互联网 路径属性+策略

关键区别:OSPF关心”哪条路最短”,BGP关心”哪条路应该走”——它在最短路径之外还加了策略(policy)。

BGP的核心概念:用五个问题理解

① 什么是AS(自治系统)?

AS是在同一个组织管理下、使用相同策略的设备的集合。

可以把AS理解为一个独立的机构或企业。比如中国联通就是一个AS。另一家大企业在网络规划上,可能把全球各区域划分为不同的AS:中国区是一个AS,南美区是另一个AS。

AS号由IANA(互联网号码分配机构)统一管理。使用公有AS号需要向IANA申请。AS内部用IGP(OSPF/IS-IS)搞定路由,AS之间用BGP交换信息。

② EBGP和IBGP有什么区别?

类型 连接对象 建立条件
EBGP 不同AS之间 ①AS号不同 ②IP路由可达 ③TCP 179能通
IBGP 同一AS内部 ①AS号相同 ②IP路由可达 ③TCP 179能通

注意,两种邻居关系都不要求设备直连——因为BGP跑在TCP之上,只要能建立TCP连接就行。这是BGP和OSPF/RIP最大的不同之一。

关键规则:IBGP邻居之间不转发从IBGP学到的路由(这叫”IBGP水平分割”)。为什么?防止路由环路。解决方案:要么全互联(full mesh),要么用路由反射器(Route Reflector)。这个话题在后续系列中会详细展开。

③ BGP怎么建立邻居?

BGP使用TCP 179端口,先建立TCP连接,再交换路由信息。

建立邻居的六个状态(理解这个很重要):

1
IdleConnectActiveOpenSentOpenConfirmEstablished
  • Idle:初始状态,等待触发
  • Connect:正在尝试TCP连接
  • Active:Connect失败,重试中
  • OpenSent:TCP通了,发了Open报文,等对方回复
  • OpenConfirm:收到对方的Open,等Keepalive确认
  • Established:邻居建立成功,开始交换路由 ✨

④ BGP怎么选路?——AS_PATH的魔法

BGP是一个路径矢量协议。在某些层面上,它和RIP很像——同样更新路由表,同样有”距离”概念。但区别在于:在BGP眼里,一跳不是一个路由器,而是一个AS。

举个例子(来自华为论坛的一篇经典教程):

1
2
3
4
5
6
7
8
9
  AS500 里有条路由 10.1.1.0/24

┌───────┴───────┐
R1 (AS100) R3 (AS300)
│ │
R2 R4 (AS200)
│ │
└───────┬───────────┘
R5 (AS400)

10.1.1.0/24 从 AS500 传出时,边界路由器给它加上 AS_PATH = 500

  • R1 收到后传给 R2(iBGP),AS_PATH 不变,仍是 500
  • R2 传给 R5(eBGP),因为是跨AS传递,R2 在AS_PATH前面插入自己的AS号 → 100, 500
  • R4 也传给了 R5,路径是 300, 200, 500

现在 R5 同时收到两条去往 10.1.1.0/24 的路由:

来源 AS_PATH AS跳数
从R2走 100, 500 2跳
从R4走 300, 200, 500 3跳

AS_PATH越短越优先,所以 R5 选 R2 的路。

更重要的是,AS_PATH 还是天然的防环机制:如果 R3 从别人那收到一条路由,AS_PATH 里包含自己的 AS 号(300),它会直接丢弃——“这条路由曾经从我这出去过,不能再收回来”。

⑤ BGP的四种报文是什么?

报文 作用 类比
Open 建立邻居,”你好我是AS 4134” 握手
Update 撤销旧路由,发布新路由 送快递
Keepalive 维持邻居关系(默认60秒一次) 心跳
Notification 出错时通知,”出问题了,断开!” 报警

一个快递员的比喻(总结)

把BGP想象成全球快递的干线调度:

  • 每个AS是一个省的分拣中心
  • EBGP是省际干线:广东→湖南→湖北→河南→北京
  • IBGP是省内地市调度:广州→深圳→东莞
  • AS-Path就是快递单上的中转记录
  • AS_PATH在跨AS时会加自己的章,省内传递时就原样传
  • 选路时先看中转次数(AS_PATH长短),再看其他条件
  • 如果中转记录里出现了”自己省”的章→说明绕圈了→直接丢掉

2025年全球BGP路由表大约有100万条前缀。这意味着每台互联网骨干路由器要在100万条路中找出最佳路径——而且要在网络拓扑变化(光纤断了、路由器挂了)时秒级更新。

下一步学什么?

读到这里你已经理解了BGP的核心思想。下一步你可以:

  • 认证备考版:13条选路原则每条配上配置命令和排错
  • 工程实战版:状态机卡死怎么排、路由震荡怎么治、常见的坑有哪些
  • 动手做实验:GNS3/EVE-NG搭一个多AS拓扑,亲手配EBGP和IBGP

本文是”网络工程”系列的第一篇(入门科普),参考了华为企业互动社区 NE路由器官方教程。下一篇将深入BGP的13条选路原则和认证考点。


BGP入门科普:互联网的"大江大河"是如何选路的?
https://yilx.top/2026/05/19/BGP入门科普:互联网的大江大河是如何选路的/
作者
Nick
发布于
2026年5月19日
许可协议