BGP的5种报文类型

一、概述

        BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态机和5个原则。


二、BGP的5种报文格式

        BGP-4协议有5种报文:Open(建立)、Update(更新)、Notification(通知)、Keepalive(保持活跃)和Route-refresh(路由刷新),其中Keepalive报文为周期性发送,其余报文为触发式发送。

  • Open报文:用于建立BGP对等体的连接,类似于OSPF和IS-IS中通过Hello报文建立邻居关系一样。
  • Update报文:用于在对等体之间交换路由信息,类似于OSPF中的LSU报文。
  • Notification报文:用于中断BGP连接。
  • Keepalive报文:用于保持BGP对等体连接,类似于在OSPF和IS-IS中通过Hello报文维护邻居关系。
  • Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备才会发送和响应此报文。

      

        这5种BGP报文有相同的报文头部,其格式如下图所示

各字段解释如下表所示

字段说明
Marker占16字节,用于标明BGP报文边界,固定值为所有比特均为"1",相当于一个报文的头部标识符。
Length占2字节,标识BGP报文总长度(包括报头在内),以字节为单位。
Type

占1字节,标识BGP报文的类型。其取值为16进制的1~5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前4种报文在RFC1771中定义,而第5种报文在RFC2918中定义。


1、Open报文格式

        Open(建立)是TCP连接建立后发送的第一个报文,包含本地Speaker信息及用于后面与对等体间建立TCP会话的信息,用于建立BGP对等体之间的连接关系。其报文格式如下图所示。Open报文中的各字段信息必须在对等体之间进行路由信息交换之前协商确定好。

 下表格是各字段的解释

字段说明
Version表示本地设备使用的BGP版本,占1字节。对于BGP-4来说,其值为4。
My autonomous system表示本地AS号,占2字节或4字节。通过比较两端的AS号可以确定是EBGP连接(不同时)还是IBGP连接(相同时)。
Hold time标识对等体与本设备保持连接的时间,占2字节,以秒为单位。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。
BGP identifier标识BGP路由器的路由器ID,占4字节,采用点分十进制格式d的IP地址的形式,用来识别BGP路由器。
Opt Parm Len(Optional Parameters Length)可选参数的长度,占1字节,标识可选参数的总长度,如果为0则没有可选参数。
Optional parameters可选参数,长度可变,用于多协议扩展(Multiprotocol Extensions)等功能,如BGP验证信息。

2、Update报文格式

        在BGP对等体之间成功建立了BGP会话后,双方就可开始利用Update(更新)报文进行路由信息交换了,包括要向对等体通告的每条路由信息。但Update报文既可以发布可达路由信息,也可以撤销不可达路由信息。其报文格式如下图所示。

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

字段说明
Unfeasible routes length标识不可达路由(Withdrawn routes)字段的长度,占2字节,以字节为单位,包含通知对等体从它的BGP路由表中撤销的当前不可达路由的数量。如果为0则说明没有要撤销的路由,也就没有下面的Withdrawn routes字段。
Withdrawn routes不可达路由列表,长度可变,包含要从对等体BGP路由表中撤销的当前不可达路由的网络地址及前缀。
Total path attribute length标识路径属性(Path attributes)字段的长度,占2字节,以字节为单位。如果为0则说明没有下面的Path attributes字段。
Path atributes与NLRI字段相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)3元组构成,长度可变。BGP正是根据这些属性值来避免环路,进行选路、协议扩展等。
NLRI(Network Layer Reachability Information)标识网络层可达信息,包含要向对等体通告的每条可达路由的前缀,长度可变。这些可达路由信息来自本地Adj-RIB-In(Adjacent Routing Information Base,Incoming,入方向邻接路由信息库),然后又将加入到对端Adj-RIB-In中。


3、Notification报文格式

        当BGP检测到错误状态时,就会向对等体发出Notification(通知)报文,之后BGP连接会立即中断。其报文格式下图所示。

字段说明
Error code差错码,占1字节,指定错误类型。包括消息头出错、Open消息错误、Update消息错误、保持计时器超时、状态机错误、连接终止共6类,对应十六进制中的1~6。
Error subcode差错子码,占1字节,描述错误类型的详细消息。
Data错误消息内容,可变长度,用于辅助发现错误的原因。它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据。

主要Notification报文差错码、差错子码可见下表

错误代码子错误代码错误说明
11Marker错误
12报文长度错误
13报文类型错误
21不支持的BGP版本号
22Peer AS错误
23BGP Identify错误
24不支持的可选参数
25验证失败
26不可接受的保持时间
27不支持的协商能力
31畸形的属性列表(报文过大)
32不可识别的公认属性
33缺省公认属性
34属性标识错误
35属性长度错误
36无效的源属性
37AS号环路
38无效的下一跳属性
39可选属性错误
310无效的网络层信息
311畸形的AS-Path属性
40保持计时器超时
50状态机错误
61路由前缀超限
62管理员关闭
63邻居重新配置
64管理员重新连接
65拒接连接
66其他配置变更
67连接冲突
68资源不足
69BFS通知邻居Down

4、Keepalive报文格式

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


5、Route-refresh报文格式

         Route-refresh(路由刷新)报文用来要求对等体重新发送指定地址族的路由信息。其报文格式如下图所示

字段说明
AFIAddress Family Identifier,地址族标识,占2字节,用于标识所采用的地址族类型。不同类型地址族对应的AFI值可见上一章BGP概述中最后一张表格。
Res保留,占1个字节,必须置0。
SAFISubsequent Address Family Identifier,子地址族标识,占1个字节,用于标识子地址族类型。不同类型子地址族对应的SAFI值可见上一章BGP概述中最后一张表格。

以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改,文章种部分内容源自教材《华为路由器学习指南》感兴趣可购买相关书籍浏览。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fanmeang.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值