导图社区 BGP
这是一篇关于BGP的思维导图,主要内容包括:基本概念,建立邻居过程(6种状态机),停在各个状态的情况,报文(5种),路由,路由反射器,属性,优选原则,负载。
编辑于2025-10-19 15:11:54BGP
基本概念
矢量动态路由协议
IGP
RIP
OSPF
ISIS
EGP
IBGP
EBGP
工作过程
TCP 端口 179
触发式更新
基于TCP,有TCP承载,BGP对等体之间必须保证IP连通
单播建立
可以非直连,底层IP连通即可
AS
自治系统
分类
2字节
公网
1-64511
私网
64512-65535
4字节
邻居关系
IBGP
AS内部
一般使用loopbacp口建立
比较稳定
硬性要求:IP互通
需指定更新源
peer X.X.X.X connect-interface LoopBack 0
EBGP
AS之间
一般使用直连物理网口建立
Loopbacp口建立
静态路由,保证两个接口IP连通
需指定更新源
指多跳
peer X.X.X.X ebgp-max-hop X
EBGP建立邻居关系时发送的报文TTL默认为1
区分方法
peer邻居时,相同AS号识别为IBGP,不同AS识别为EBGP
建立邻居过程(6种状态机)
idle(空闲)
停留32S,预留给对方配置
拒绝邻居发送的连接请求,只有本设备配置后,才开始尝试与其他BGP进行连接
connect(连接)
启动连接重传定时器,TCP三次握手
成功,转为opensent
失败,转为active
active(活跃)
总是尝试建立TCP连接
成功,转为opensent
失败
维持active
重传定时器超时后,转为connect
opensent(报文已发送)
等待对等体的Open报文,检查报文中AS、版本、认证码等
报文正确,发送Keepalive报文,转为openconfirm
报文错误,发送notification报文,转为idle
openconfirm(报文已确认)
等待对等体的Keepalive或notification报文
收到keepalive,转为established
收到notification,转为idle
establish(连接已建立)
和对等体交换Updata、keepalive、Route-refresh及notification报文
停在各个状态的情况
idle
无路由
connect
对端未配置BGP
过滤了TCP 179的流量
跨设备EBGP未配置多跳
active
对端未peer本端
使用loopback口未指定更新源
opensent
邻居参数不一样
opconfirm
未指多跳
非同网段
报文(5种)
Type类型:1 open(建立)
用于建立对等体连接
version
标识本地设备使用的BGP版本
IPv4对应4
My autonomous[ɔːˈtɑːnəməs] system
标识本地AS,确认IBGP或EBGP
Hold time
标识对等体与本设备保持连接的时间,在这个时间内未收到对端的keepalive或update,则认为BGP连接中断
180s,双方不一致,取小值
BGP identifier
标识本地BGP路由器的路由器ID
Opt parm len
标识可选参数的总长度
Optional parameters
可选参数,用于协议扩展,如BGP验证
Type类型:2 update(更新)
交换路由信息
Unfeasible routes length
标识不可达路由,通知对等体从路由表中撤销当前路由
withdrawn routes
不可达路由,通知对等体从路由表中撤销当前路由的网络地址及前缀
Total path attribute length
表述路径属性的字段长度
path atributes
与NI RI字段相关的所有属性列表。BGP更具这些属性值避免环路,进行选路等
NI RI
标识网络可达信息,向对等体通告的每条可达路由的前缀
Type类型:3 notification(差错通知/通知)
用于中断BGP连接
error code
差错码,指定错误类型
error subcode
差错子码,描述错误详细信息
data
错误消息内容
Type类型:4 keepalive(保活)
用于保持连接
60s/次
Type类型:5 route-refresh(路由刷新)
策略发生变化后,请求对等体重新发送路由信息
报文不重要,未记录
路由
通告原则
BGP只会将有效且最优的BGP路由通告给邻居
有*>的路由
1、自身产生的BGP路由会通告给所有邻居
2、从IBGP邻居收到的路由,不会传递给IBGP邻居(水平分割/II不传)
3、从IBGP邻居收到的路由,会传递给所有的EBGP邻居
4、从EBGP邻居收到的路由,会传递给所有的IBGP邻居
5、从EBGP邻居收到的路由,会传递给EBGP邻居
6、增量更新
只有路由发生变化才更新
只更新变化路由
产生路由的方式
1、宣告(network)
宣告时,掩码和IP路由表中的掩码一致
2、引入(import)
3、聚合/汇总路由
特点
1、优化BGP设备的路由表和BGP表
2、当明细路由出现震荡之后,路由聚合不会产生影响,网络更加稳定。
3、维护较少的BGP路由,节省设备系统资源
自动聚合
仅IPv4支持
特点
聚合精确度差,比如偶数聚合
只能针对本设备import-route的路由生效
不能添加route-policy,修改路由的部分属性
手动聚合
IPv4、v6都支持
特点
只要是本地BGP表中存在的有效路由,都可以执行
会传递给所有的BGP邻居
产生聚合路由的时候,本地IP路由表中将会自动产生一条指向Null 0的聚合路由,用于防止环路的产生
路由聚合时要加上抑制命令,否则聚合会携带明细路由
路由标识
*
可达的
>
最优的
i
从IBGP邻居学到的
s
该路由被抑制了
d
路由惩罚
h
抖动历史
S
陈旧路由
防环
1、水平分割
2、AS-PATH
组
示例
对端不需要配置组,正常配置即可,用于多对等体(BGP邻居)情况
路由反射器
路由反射器介绍
备份路由反射器介绍
级联路由反射器
同级路由反射器
介绍
解决IBGP全互联的问题,BGP设备过多,全互联就会复杂化
角色
路由反射器(RR)
把IBGP邻居学到的路由反射给其他IBGP,类似OSPF中DR
客户机(client)
与RR形成反射邻居关系的IBGP设备,类似OSPF中DRother
在AS内部,客户机只需要与RR直连,客户机之间无需连接,无需交互路由信息
非客户机(Non-client)
普通IBGP设备,不在路由反射器范围内,需与RR和非客户机之间建立全连接
集群(cluster)
路由反射器及客户机的集合。通过Cluster_list属性防止集群间产生环路。
始发者(originator)
在AS内部始发IBGP路由的BGP设备。通过Originator_ID属性防止集群内环路。
RR向IBGP邻居发布路由规则
从非客户机学到路由,发布给所有客户机
从客户机学到的路由,发布给所有的非客户机及客户机(发布此路由设备除外)
从EBGP学到的路由,发布给所有的非客户机和客户机
属性
公认必遵
所有BGP路由器必须识别,必须包含在update报文中
origin(起源)
符号
i
标识来源IGP
e
标识来源EGP(已淘汰)
?
标识来源未知(基本上为引入)
优先级
i>e>?
聚合
看明细
全i为i,否则为?
AS-PATH(AS路径)
作用
记录路由在传递过程中经过的AS信息
从EBGP邻居收到的路由,若携带本地AS号则不接收
规则
传出AS时携带本地AS号,后面经过的AS依次在前面添加
IBGP之间不做AS-PATH防环检测,EBGP之间需要
Next-hop(下一跳)
标识路由的下一跳
规则
E变I不变
E变
向EBGP邻居传递路由时,下一跳要改变
防止不可达
I变
向IBGP邻居传递路由时,下一跳不变
防止次优
BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。 BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。 BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
公认任意
所有BGP路由器必须识别,不要求必须包含在update报文中
Local_Preference(本地优先级)
作用
用于控制离开AS的方向
特点
越大越优,默认为100
只在本地AS内有效
I传E不传:IBGP内携带,EBGP之间不携带
注意
对于不携带本地优先级属性的BGP路由,设备将会认为这个BGP路由的本地优先级为默认本地优先级(默认的本地优先级为100,显示为空)
Atomic_aggregate(聚合路由丢失明细路由属性)
标识汇总的明细路由有没有被抑制
可选过渡
不会被所有BGP路由器识别(可以不支持),但可以接收并传递
Aggregator(聚合路由属性)
作用
表示路由聚合是哪台设备(AS号+route-id)
产生
路由聚合时自动产生
Community(团体属性)
是一种路由标记
公认团体属性
限制路由传播范围
internet
默认路由属性,正常传递,遵循通告原则
no-advertise
邻居收到后不向任何邻居传递
no-export
邻居收到后不能传出本AS
no-export-subconfed
邻居收到后,不能传出联盟中的AS
扩展团体属性
用一组4字节为单位的列表来表示,格式为aa:nn或着团体号
团体列表
ip community-filter本质作用就是为了对BGP路由的团体属性进行匹配
基本
编号:1-99
高级
编号:100-199
默认拒绝所有
示例
团体列表: [AR1]ip community-filter 1 permit 1:1 //只要BGP路由中包含1:1,就会被匹配 [AR1]ip community-filter 1 permit 1:1 2:2 //BGP路由中必须包含1:1 2:2,才会被匹配 [AR1]ip community-filter 1 permit {no-advertise/no-export/no-export-subconfed} //此命令后面跟团体属性,可配置多个(与的关系) 调用: route-policy 1 permit node 10 if-match community-filter 1 apply cost 500 //在route-policy中调用
可选非过渡
不会被所有BGP路由器识别,接受时忽略该属性,不会将该属性传递给其他对等体和AS
MED(度量值)
作用
影响选路
控制进入本AS的方向
规则
越小越优,默认为0
只允许两个相邻的AS之间传递,收到的也不会向第三方AS传递
1、自身始发的路由,MED会通告给IBGP和EBGP邻居
2、从EBGP收到传递给IBGP时,携带MED值
3、从IBGP收到传递给EBGP时,不携带
4、从EBGP收到传递给EBGP时,不携带
Originator-ID(起源ID)
作用
用于防止集群内产生路由环路
规则
经过第一个RR添加
只在AS内传递
用客户端或非客户端的route-id填充
传递过程中不发生改变
如果存在多个RR,只会由第一个RR创建
客户端接收的路由中,若originator-id中有自己的router-id,则不接收
Cluster-List(集群列表)
作用
防止集群间RR环路
规则
由第一个RR创建
收到该属性后,检查router-id
有,丢弃
无,加入,并反射更新
优选原则
P(漂)L(亮)LAO(老)MEN(男人)
1、该路由是到达目的地的唯一路由,直接优选
2、优选协议首选值(PrefVal)最高的路由---[P]
协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效
越大越优,默认为0
3、优选本地优先级(Local_Pref)最高的路由---[L]
EBGP之间传递路由不携带,只在本地有效
越大越优,默认为100
4、优选本地生成的---[L]
手动聚合>自动聚合>network>import>邻居学习
5、优选AS-PATH短的---[A]
6、比较Origin属性:i>e>?---[O]
7、优选MED值小的---[M]
越小越优,默认为0
8、EBGP>IBGP---[E]
9、优选到BGP下一跳IGP度量值(metric)最小的路由---[N]
10、优选cluster-list短的(有RR的情况)
11、优选originator-id小的(有RR的情况)
12、优选Router_ID最小的路由器发布的路由(同时是IBGP或EBGP邻居)
13、优选具有较小IP地址的邻居学来的路由(同时是IBGP或EBGP)
负载
BGP负载配置: [AR3-bgp]maximum load-balancing 2 //配置BGP做2两条链路负载(全部,包含EBGP和IBGP)。 [AR3-bgp]maximum load-balancing ebgp 2 //配置EBGP做2两条链路负载。 [AR3-bgp]maximum load-balancing ibgp 2 //配置IBGP做2两条链路负载。 [AR3-bgp]load-balancing as-path-ignore //忽略AS-Path号必须相同,但数量还是要求一致。