bgp协议常用的有哪些(BGP报文介绍)(1)

BGP 报文

1. 消息头格式

BGP有5种消息类型:Open、Update、Notification、Keepalive和Route-refresh。这些消息有相同的报文头。主要字段的解释如下:

Marker:16字节,用于BGP验证的计算,不使用验证时所有比特均为“1”。

Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位。

Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前四种消息是在RFC 1771中定义,而Type为5的消息则是在RFC 2918中定义的。

2. Open

Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。主要字段的解释如下:

Version:BGP的版本号。对于BGP-4来说,其值为4。

My Autonomous System:本地AS号。通过比较两端的AS号可以确定是EBGP连接还是IBGP连接。

Hold Time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。

BGP Identifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。

Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。

Optional Parameters:可选参数。用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。

3. Update

Update消息用于在对等体之间交换路由信息。它可以发布一条可达路由信息,也可以撤销多条不可达路由信息。

一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中,Path Attributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选择,同时还可以携带多条不可达路由,被撤销的路由放在Withdrawn Routes字段中。

主要字段的解释如下:

Unfeasible Routes Length:不可达路由字段的长度,以字节为单位。如果为0则说明没有Withdrawn Routes字段。

Withdrawn Routes:不可达路由的列表。

Total Path Attribute Length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。

Path Attributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。

NLRI(Network Layer Reachability Information):可达路由的前缀和前缀长度二元组。

4. Notification

当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。主要字段的解释如下:

Error Code:差错码,指定错误类型。

Error Subcode:差错子码,错误类型的详细信息。

Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。

5. Keepalive

BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。其消息格式中只包含报文头,没有附加其他任何字段。

6. Route-refresh

Route-refresh消息用来要求对等体重新发送指定地址族的路由信息。

主要的字段解释如下:

AFI:Address Family Identifier,地址族标识。

Res:保留,必须置0。

SAFI:Subsequent Address Family Identifier,子地址族标识

,