前言
BGP是一种路由协议,它运行在TCP协议之上,用于在自治系统(AS)之间进行路由选择,实现不同AS之间的路由可达。自治系统是网络中一组相互连接的路由器,这些路由器使用BGP协议来决定数据包在网络中的最佳传输路径。BGP协议通过交换路由信息来维护和更新路由表,以确保数据包能够正确地到达目标位置。
AS是指在同一组织管理下,使用统一选路策略设备的集合。就是你可以把一个网络中的不同的设备划分到不同的组(AS)中,或者都划分在一个组中,那么一个组中的这些设备具备相同的路由协议。
BGP的路由器号(Router ID)
BGP 的 Router ID 是一个用于标识 BGP 设备的 32 位的值,通常是 IPv4 地址的形式,在 BGP 会话建立时发送的 Open 报文中携带。对等体之间建立 BGP 会话时,每个 BGP 设备都必须有唯一的Router ID,否则对等体之间不能建立 BGP 连接。
BGP 的 Router ID 在 BGP 网络中必须是唯一的,可以采用手动配置,也可以让 BGP 自己在设备上选取。缺省情况下, BGP 选择设备上的 Loopback 接口的 IPv4 地址作为 BGP 的 Router ID。如果设备上没有配置 Loopback 接口,系统会选择接口中最大的 IPv4 地址作为 BGP 的 Router ID。一旦选出 Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的 Router ID。
BGP发言者(Speaker):运行BGP路由协议的路由器称为BGP发言者(BGP路由器);
BGP对等体(Peer):两个建立BGP会话(BGP的会话是基于TCP建立的)的路由器互为BGP对等体,BGP对等体之间可以交换路由表;若干相关的对等体可以构成对等体组(Peer Group)。
BGP路由协议基本特点:
1、BGP是一种外部网关协议,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由;(BGP有个好处就是不产生路由,只传递路由,并且具备丰富的路由策略)
2、BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性;
3、BGP是一种距离矢量路由协议,在设计上就避免了环路的发生;
4、BGP提供了丰富的路由策略,能够实现路由的灵活过滤和选择;
5、BGP采用触发式增量更新,而不是周期性的更新;
协同流程
首先,BGP协议通过TCP三次握手条件建立TCP会话。在TCP三次握手过程中,BGP协议首先尝试通过目标端口为179的TCP连接建立会话。一旦TCP会话建立成功,BGP协议将进入邻居关系建立阶段。
在邻居关系建立阶段,BGP协议将通过发送Open报文来用于建立对等体的参数协商。Open报文是TCP连接建立后发送的第一个消息,用于建立BGP邻居间的连接关系。参数协商正常后双方相互发送keepalive报文,收到对方的keepalive报文后对等体建立成功,同时后续定期发送keepalive报文用于保持连接。邻居间将开始共享路由条目。
OPEN报文参数:
- 自身AS号;
- hold time:用于协商后续keepalive报文发送时间;
- BGP identifier:自身router id;
发送keepalive报文保持TCP连接
在路由条目共享阶段,BGP协议将通过Update报文来共享路由信息。Update报文用于在BGP邻居之间交换路由信息,包括新增、更新和删除的路由条目。通过接收和发送Update报文,BGP协议能够更新和维护路由表。
在路由表更新完成后,BGP协议将把最优路径加载到路由表中。这个最优路径可能不一定是最佳选路,但一定是BGP参数最佳的路径。加载完成后,BGP协议进入保活状态,仅通过Keepalive报文保持TCP会话的连接。
如果在保活状态下出现结构突变(如新增网段或断开网段),BGP协议将发送Update报文告知所有邻居。如果无法与邻居进行通信,将在3分钟时断开邻居关系和TCP会话,并删除从该邻居处学习到的所有信息。
总之,BGP协议和TCP协议在协同工作时,需要遵循一定的规则和流程。BGP协议通过TCP三次握手条件建立TCP会话,并通过Open报文、Update报文等与邻居进行通信。同时,TCP协议提供可靠的连接,确保数据包的顺序和完整性。通过结合这两个协议,可以确保数据在因特网上的可靠传输。