BGP
概述
边界网关协议(Border Gateway Protocol,BGP )是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1 ( RFC1105 )、BGP-2 (RFC1163 )和BGP-3 (RFC1267 ),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络使用的版本是MP-BGP ( RFC4760 )。
特点
BGP能够承载大批量的路由信息,能够支撑大规模网络。
BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导邻居按策略发布路由。. BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动、BGPTracking、BGPAuto FRR和BGP GR和NSR,提高了网络的可靠性。
BGP的路径矢量特征
每条BGP路由都携带着多种路径属性,在各种路径属性中,AS_Path属性是非常关键的一个。AS_Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一个AS号的列表。
每经过一个AS会在前面加一个经过的AS号。
AS_path是一个重要的防环机制,当AS检测到发送过来的路由信息有自己的AS号就会认为这是环路,就忽略掉这条路由信息。
BGP优选距离短的(携带的AS号最少的)。
网络拓扑有变化时触发更新,只更新变化的路由信息。
五种报文
报文名称 | 作用 | 何时发包 |
---|---|---|
open | 协商BGP邻居的各项参数,建立邻居关系 | BGP对等体之间需先建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文 |
Update | 用于发送BGP路由信息 | 连接建立后,有路由需要发送或路由变化时,发送UPDATE通告对端路由信息。 |
Notification | 报告错误,中止对等体关系 | 当BGP在运行中发现错误时,要发送NOTIFICATION报文通告BGP对端。 |
Keepalive | 维持BGP对等体关系 | 定时发送Keepalive报文以保持BGP对等体关系的有效性。 |
Route-refresh | 用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文 | 当路由策略发生变化时,触发请求对等体重新通告路由。 |
每60s发一个keepalive包,用来确认是否活着,超过180s没有接收到keepalive包的报文则判断死亡。
六个状态
Peer状态名称 | 发什么包 | 在做什么 |
---|---|---|
ldle | 尝试建立TCP连接 | 开始准备TCP的连接并监视远程peer启动TCP连接,启用BGP时,要准备足够的资源 |
Connect | 发TCP包 | 正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接。 |
Active | 发TCP包 | TCP连接没建立成功,反复尝试TCP连接。 |
OpenSent | 发Keepalive包 | 参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包。 |
Established | 发Update包 | 已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息。 |
两种对等体关系不需要直连但必须路由可达。
同AS中,对等体关系为IBGP,不通AS中,对等体关系为EBGP。
三张表
名称 | 查看命令 | 说明 |
---|---|---|
BGP邻居表 | display bgp peer | 列出本设备的BGP对等体,以及对等体的状态等信息。 |
BGP路由表 | display bgp routing-table | 列出本设备发现的所有BGP路由,如果到达同一个目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由。 |
路由表 | display ip routing-table | 设备的路由表,被优选的BGP路由会被加载到路由表中使用。 |