1、Open报文 用于对等体参数协商;
2、Keepalive报文 用于维护对等体邻居;
3、Update报文 用于通告可达路由和不可达路由;
4、Notification报文 用于错误信息通告,断开对等体邻居;
5、Route-refresh报文 用于请求对等体重新发送路由信息;
BGP所有报文均采用单播的方式发送,因此需要手动指定对等体,不能像IGP协议通过组播方式自动发现邻居;
BGP不需要开发确认报文,通过TCP来提供重传、确认及排序功能,因此建立BGP对等体之前必须先建立TCP连接;


①Marker:占16字节,用于标明BGP报文边界,固定值为所有比特均为“1”,相当于一个报文的头部标识符。
②Length:占2字节,标识BGP报文总长度(包括报头在内),以字节为单位。
③Type:占1字节,标识BGP报文的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。





报文格式以及参数解析:


一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer ReachableInformation,网络层可达信息)字段中,PathAttributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选择;同时Update报文还可以携带多条不可达路由信息,被撤销的路由放在WithdrawnRoutes字段中,用来通知对等体要撤销的路由。
①Withdrawn routes length:撤销路由的长度,Update报文中可以包含0条、1条或者多条准备撤销的BGP路由。该字段是一个无符号整数,它指示了Update报文中所包含的“撤销的路由条目”字段的长度(字节数)。
②Withdrawn routes:不可达路由列表,长度可变,包含要从对等体BGP路由表中撤销的当前不可达路由的网络地址及前缀。
③Total path attributelength:标识路径属性(Path attributes)字段的长度,占2字节,以字节为单位。如果为0则说明没有下面的Path attributes字段。
④Path attributes:与NLRI字段相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成,可变长度。BGP正是根据这些属性值来避免环路,进行选路、协议扩展等。
⑤NLRI(Network LayerReachability Information):标识网络层可达信息,包含要向对等体通告的每条可达路由的前缀,长度可变。这些可达路由信息来自本地Adj-RIB-In(AdiacentRouting Information Base,Incoming,入方向邻接路由信息库),然后又将加入到对端Adj-RIB-In中。


1、Route-Refresh报文,用于请求对等体重新发送路由信息;
2、对等体之间发送Open报文进行能力协商时,会进行路由刷新能力协商;
3、当BGP的邻居入口路由策略改变后,会自动向邻居发送Refresh消息请求对等体重新发送路由信息;
4、当BGP的邻居出口路由策略改变后,BGP会向邻居重新发送路由信息;

Route-refresh(路由刷新)报文用来要求对等体重新发送指定地址族的路由信息。
①AFI:Address FamilyIdentifier,地址族标识,占2字节,用于标识所采用的地址族类型。
②Res:保留,1字节,必须为0。
③SAFI:subsequentAddress Family Identifier,子地址族标识,1字节,用于标识子地址族类型。