网络基础知识简易急速理解---BGP边界网关协议
一、 BGP 的角色和定位:国际快递联盟
- 自治系统 (AS): 这就是一个“独立的快递公司”。每个公司有自己的内部管理规则(比如用OSPF或RIP),有自己统一的对外编号(AS号,如 AS100,AS200)。整个世界就是由成千上万个AS互联而成的。 
- BGP 的职责: BGP不负责计算AS内部的具体路线(那是OSPF的事),它的核心工作是在不同的AS之间“搬运”和“通告”路由信息。比如,AS100(中国快递)告诉AS200(美国快递):“我能送达所有中国境内的地址(如 - 10.0.0.0/8)”,而AS200则告诉AS100:“我能送达所有北美境内的地址”。
- 核心特点: - 基于TCP: 它使用可靠的TCP连接(端口179)来传递信息,就像快递公司之间用加密电话线沟通,确保信息不丢失。 
- 路径矢量协议: 它通告的不仅仅是一个目的地,而是一条“路径”。它会说“去往 - 10.0.0.0/8可以从我 -> AS300 -> AS400 到达”,这条路径记录了所有经过的AS,这是它防环和选路的基础。
- 触发更新,无周期更新: 只有路线发生变化时才通知,不像RIP那样定时“广播”,非常高效。 
- 可控性强: 它有极其丰富的“路径属性”(可以理解为快递标签),让我们能非常精细地控制流量的进出口。 
 
二、 BGP 的“人际关系”:对等体
BGP路由器之间建立的关系叫做“对等体”关系,分为两种:
- EBGP对等体: - 关系: 属于不同AS的BGP路由器之间的关系。 
- 比喻: 中国快递公司的国际部负责人和美国快递公司的国际部负责人直接建立的业务联系。 
- 特点: 默认情况下,它们通常是直连的。 
 
- IBGP对等体: - 关系: 属于相同AS的BGP路由器之间的关系。 
- 比喻: 中国快递公司内部,北京国际部、上海国际部、广州国际部之间建立的内部协调联系。 
- 特点: 它们通常非直连,跨越整个AS内部网络。为了保证联系不断,通常使用最稳定的环回接口地址来建立连接。 
 
三、 BGP 的工作过程:建立合作与传递路由
- 内部先打通(IGP): 在建立BGP之前,AS内部必须先保证网络是通的(比如通过OSPF),这样IBGP对等体之间才能建立起TCP连接。这是合作的基础设施。 
- 建立TCP连接: 两台想建立BGP关系的路由器之间,先建立起一条可靠的TCP连接通道。 
- 协商参数,建立对等体关系: 通过发送 - Open报文和- Keepalive报文,互相确认AS号、版本、认证等信息。成功后,它们就成了BGP对等体,邻居表就生成了。
- 交换路由信息: 使用 - Update报文来传递具体的路由信息。这些信息会被记录在BGP路由表中。
- 维护和更新: 使用 - Keepalive报文保活连接,用- Update报文进行增量更新,用- Notification报文报告错误。
四、 BGP 的核心防环机制

- EBGP防环(AS_PATH属性): - 机制: 当一个路由器将一条BGP路由通告给它的EBGP对等体时,会把自己的AS号添加到 - AS_PATH属性的最前面。
- 防环: 如果一台路由器在收到的BGP路由的 - AS_PATH属性中看到了自己的AS号,它就认为这条路由信息是从自己这里发出去的,现在又绕回来了,于是丢弃这条路由,防止环路。
- 比喻: 一个国际包裹的传送单上记录了所有经过的国家海关盖章。如果中国海关发现这个包裹的传送单上已经有中国海关的章了,就知道它绕地球一圈又回来了,会直接扣下。 
 
- IBGP防环(水平分割): - 规则: 从一个IBGP对等体学来的路由,绝不会再传递给另一个IBGP对等体。 
- 原因: 在AS内部,所有运行BGP的路由器被认为拥有相同的“全局视野”,不需要在内部重复传递。 
- 问题与解决方案: 这个规则要求AS内部所有IBGP路由器之间必须全互联,否则路由无法传递全。这在大网络中不现实。因此引入了两个解决方案: - 路由反射器 (RR): 指定一个(或几个)路由器作为“信息中转站”(RR),它可以打破水平分割规则,将从IBGP对等体学来的路由反射给其他IBGP对等体。 
- 联盟 (Confederation): 将一个大的AS划分成几个小的“成员AS”,成员AS之间使用特殊的EBGP连接,这样就不受水平分割限制。 
 
 
五、 BGP 的选路规则:“漂亮老男人”法则
当BGP路由器收到多条去往同一目的地的路由时,它会根据一套非常严格的规则来选择最优路径。这套规则可以简记为 “PL LAO MEN”(漂亮老男人),它代表了前几条关键规则的英文首字母。
以下是核心的选路规则(数值越大或越小越优,依属性而定):
| 顺序 | 规则 (属性) | 通俗解释 | 优选标准 | 
|---|---|---|---|
| 1 | Preferred-Value (PV) | 权重。这是我的“个人偏好”,只在本设备上有效。 | 越大越优 | 
| 2 | Local-Preference (LP) | 本地优先级。这是在我整个AS内部的统一意见,告诉所有设备从哪个出口出去更好。 | 越大越优 | 
| 3 | Local Origin (自产) | 优选本地起源的路由(我自己发布的)。 | 本地 > 从EBGP学来 > 从IGP重发布来 | 
| 4 | AS_PATH (路径) | AS路径。走的快递公司越少,路径越短。 | 越短越优 | 
| 5 | Origin Code (起源码) | 路由来源的可靠性。 | IGP(i) > EGP(e) > 不完全(?) | 
| 6 | MED (度量值) | 邀请别人进来时的建议。我告诉其他AS:“从我这个入口进来,到我内部目的地的成本更低。” | 越小越优 | 
| ... | ... | 后续还会比较路由器ID等。 | ... | 
比喻理解:
假设你的包裹要从中国发到美国的一个地址,有两条路:
- 路径A: 中国 -> 日本 -> 美国 (PV=100, LP=200, AS_PATH长度=3) 
- 路径B: 中国 -> 直接美国 (PV=100, LP=100, AS_PATH长度=2) 
BGP的选路过程:
- 比PV(权重): 都是100,分不出。 
- 比LP(本地优先级): 路径A的200 > 路径B的100,所以选择路径A。因为公司内部统一认为从日本中转的线路更稳定。 
六、 BGP 的路径属性:快递标签
这是BGP强大可控性的核心。就像快递包裹上有各种标签(加急、易碎、到付)一样,BGP路由也有各种属性来控制其行为。
- 公认必遵: 所有BGP设备都必须识别和携带的属性。 - ORIGIN: 这条路由是哪来的(IGP/EGP/Incomplete)。
- AS_PATH: 记录路径,用于防环和选路。
- NEXT_HOP: 下一跳地址。
 
- 公认任意: 所有设备都识别,但不要求必须存在。 - LOCAL_PREF: AS内部的优先级。
 
- 可选传递: 即使设备不识别,也会继续传递该属性。 - COMMUNITY: 社团属性,像给路由打上一个“标签”(如:- No_Export),所有看到这个标签的设备都会执行相应动作(如:不把这条路由传出AS)。这是实现路由策略的强大工具。
 
- 可选非传递: 如果设备不识别,就忽略它,不继续传递。 - MED: 用于影响其他AS的入向流量。
 
总结
BGP 的核心就是:
一个运行在不同自治系统(AS)之间,通过可靠的TCP连接建立对等体关系,使用路径矢量(AS_PATH) 来防环,并依靠一套复杂而精确的路径属性进行精细化的选路和控制的外部网关协议。
它不像OSPF追求绝对的最短路径,而是高度强调策略和控制,是互联网的“骨架协议”,真正实现了全球网络的互联互通。
