BGP报文及格式(2)

2020-09-20  本文已影响0人  虽然逆风依然不羁

BGP的5种报文
1、Open报文                用于对等体参数协商;

2、Keepalive报文        用于维护对等体邻居;

3、Update报文            用于通告可达路由和不可达路由;

4、Notification报文    用于错误信息通告,断开对等体邻居;

5、Route-refresh报文    用于请求对等体重新发送路由信息;

BGP所有报文均采用单播的方式发送,因此需要手动指定对等体,不能像IGP协议通过组播方式自动发现邻居;

BGP不需要开发确认报文,通过TCP来提供重传、确认及排序功能,因此建立BGP对等体之前必须先建立TCP连接;

一、BGP报头


1、Marker

2、Length:2字节,表示BGP报文总长度;

3、Type:1字节,表示BGP报文类型:

(1)Open

(2)Keepalive

(3)Update

(4)Notificaiton

(5)Route-refresh

二、Open报文及格式


Open报文,用于对等体参数协商;

建立TCP连接后,对等体互相发送Open报文进行能力协商;

1、Version:1字节,表示BGP版本,缺省为BGP4;

2、My AS:2字节,表示发送端对等体的AS号;

3、Hold Time:2字节,表示发送端对等体的保持时间,缺省为KeepAlive时间的3倍,180s;

如果在保持时间内没有收到Keepalive或Update报文,则认为邻居失效;

如果对等体之间协商的保持时间不一致,将会采用较短的时间作为保持时间;

如果保持时间为0,对等体之间不发送Keepalive报文,BGP连接永远UP;

4、BGP identifier:4字节,表示对等体的RouterID;

RouterID优选Loopback地址大的,其次是物理接口地址大的;

5、Opt Param Len:1字节,表示可选参数字段长度;

6、Optional parameters:用于BGP能力协商,如4字节AS号、路由刷新、BGP多协议扩展等;

在向对等体发送Open消息的时候,对等体之间根据可选参数进行能力协商,如果对等体之间都支持就可以使用该能力;

如果一端对等体不支持该能力,会发送Notification报文,说明对等体不支持该能力,BGP邻居会重建;

三、KeepAlive报文及格式


KeepAlive报文,用于维护对等体邻居关系;

缺省为保持时间180s的1/3倍60s,Update报文会抑制KeepAlive报文的发送;

如果保持时间为0,那么不会发送KeepAlive消息;

KeepAlive报文只包含BGP报头;

四、Update报文


Update报文,用来通告可达路由和不可达路由;

可达路由携带路径属性;

不可达路由只携带不可达路由前缀和前缀长度;

1、Withdrawn Routes Length:2字节,表示不可达路由的长度;

2、Withdrawn Routes:表示不可达路由的前缀和前缀长度;

3、NLRI:表示可达路由的前缀和前缀长度;

4、Path Attribute Length:2字节,表示可达路由携带的路径属性长度;

5、Path Attribute :表示可达路由携带的路径属性;

五、Notification报文


Notification报文,用于错误信息通告,然后断开 BGP邻居;

Notification报文由错误代码、错误子代码以及数据字段构成;

1、Error Code:1字节,表示每个错误对应的错误码,每个错误码可以包含多个错误子代码;

2、Error SubCode:1字节,表示每个错误码对应的错误子代码;

3、Data:包含了错误相关信息,用来诊断差错原因;

六、Route-Refresh报文


Route-Refresh报文,用于请求对等体重新发送路由信息;

对等体之间发送Open报文进行能力协商时,会进行路由刷新能力协商;

当BGP的邻居入口路由策略改变后,会自动向邻居发送Refresh消息请求对等体重新发送路由信息;

当BGP的邻居出口路由策略改变后,BGP会向邻居重新发送路由信息;

上一篇下一篇

猜你喜欢

热点阅读