1、BGP基础回顾:BGP协议概述、BGP路径属性、BGP选路原则
1.1 BGP协议概述:互联网的“交通总指挥”
BGP,全称是边界网关协议。说白了,它就是互联网的“交通总指挥”。
你想想看,互联网不是一台电脑,而是成千上万个网络(我们叫它AS,自治系统)连在一起。每个AS都有自己的“地盘”,比如电信、联通、阿里云。BGP干的事,就是让这些AS之间互相告诉对方:“我这里有这些IP地址,你可以通过我访问到它们。”
我个人习惯把BGP分成两类:
- EBGP(外部BGP):不同AS之间的对话。比如电信和联通之间跑的就是EBGP。
- IBGP(内部BGP):同一个AS内部的对话。比如电信内部的路由器之间同步路由信息。
嗯,这里要注意:IBGP有一个“防环”机制。BGP规定,从IBGP学到的路由,不能再传给其他IBGP邻居。所以IBGP需要全互联,或者用路由反射器。我在项目中遇到过有人忘了配路由反射器,结果全网路由不通,排查了半天才发现是IBGP没传透。
核心要点:BGP是路径矢量协议,不是链路状态协议。它不关心链路带宽、延迟,只关心“怎么走”和“走哪条路更靠谱”。
1.2 BGP路径属性:路由的“身份证”
BGP选路靠什么?靠路径属性。每个BGP路由都带着一堆属性,就像人的身份证一样,记录了这条路由的各种信息。
我整理了一下,最常用的属性有这些:
| 属性名称 | 类型 | 作用 |
|---|---|---|
| AS_PATH | 公认必遵 | 记录经过的AS编号,用于防环和选路 |
| NEXT_HOP | 公认必遵 | 告诉下一跳路由器是谁 |
| LOCAL_PREF | 公认自决 | 本地优先级,越高越优先(只在IBGP传递) |
| MED | 可选非传递 | 度量值,越低越优先(用于影响对端选路) |
| ORIGIN | 公认必遵 | 路由来源:IGP、EGP、incomplete |
| Community | 可选传递 | 打标签用的,方便做策略 |
举个例子。AS_PATH就像快递的转运记录。如果一条路由的AS_PATH是“100 200 300”,另一条是“100 400”,那BGP会优先选路径短的。但注意,AS_PATH长度是选路规则之一,不是唯一标准。
我曾经遇到过一个坑:客户想控制流量从特定出口出去,结果配了LOCAL_PREF没生效。后来发现,LOCAL_PREF只在IBGP邻居之间传递,EBGP邻居收到后会重置。嗯,这个细节很多人会忽略。
避坑指南:MED属性只能在相邻的AS之间传递,不会传给第三个AS。如果你想影响远端AS的选路,得用AS_PATH prepend或者Community属性。
1.3 BGP选路原则:路由的“十项全能”比赛
BGP选路,说白了就是一场“十项全能”比赛。当BGP收到多条到达同一目的地的路由时,它会按顺序比较这些属性,直到选出唯一胜出者。
我习惯把选路原则记成“口诀”:
- 权重(Weight):Cisco私有,越高越优先。本地有效,不传给邻居。
- LOCAL_PREF:本地优先级,越高越优先。
- 本地生成:本地通过network或aggregate生成的路由,优于学来的。
- AS_PATH长度:越短越优先。
- ORIGIN类型:IGP优于EGP,EGP优于incomplete。
- MED:越低越优先。
- EBGP优于IBGP:外部学来的路由优先于内部学来的。
- 下一跳可达性:下一跳不可达的路由直接淘汰。
- IGP度量值:到下一跳的IGP开销越小越优先。
- Router ID:最小的Router ID胜出(最后手段)。
你想想看,这十条规则就像一场淘汰赛。第一条权重就分出胜负了,后面的规则根本用不上。所以调优时,优先考虑权重和LOCAL_PREF。
我在项目中遇到过这样一个场景:两个出口分别连电信和联通,想实现电信流量走电信、联通流量走联通。我用了Community属性打标签,然后在入方向修改LOCAL_PREF。嗯,效果立竿见影。
警告:选路原则是逐条比较的,一旦某条规则分出胜负,后面的规则就不看了。所以不要指望用MED去覆盖LOCAL_PREF的效果,那是徒劳的。
1.4 知识体系框架图
下面这张图,是我自己画的BGP基础知识框架。你可以把它当作本章的“思维导图”。
1.5 实战小贴士
最后,分享几个我自己的实战经验:
- 调试命令要记牢:
show ip bgp看路由表,show ip bgp neighbors看邻居状态,debug ip bgp updates看路由更新(慎用,生产环境别开)。 - 属性修改时机:入方向用route-map改LOCAL_PREF,出方向用route-map改MED或AS_PATH。
- 不要迷信默认值:LOCAL_PREF默认是100,但不同厂商可能不一样。我建议显式配置,避免歧义。
一句话总结:BGP选路就是一场属性比较的“淘汰赛”。你掌握了属性,就掌握了流量。