BGP 报文格式

BGP 报文格式


BGP 报文由 BGP 报头(BGP Header)BGP 负载(BGP Payload) 两部分组成。

+-----------------------------------------------------+
|   BGP Header (19 bytes)                             |
+-----------------------------------------------------+
|   BGP Payload (variable)                            |
+-----------------------------------------------------+

其中 BGP 报头由 16 字节的 标记(Marker)、2 字节的 **长度(Length)**和 1 字节的 **类型(Type)**组成:

  • 标记字段是 16 个连续的 0xFF 字节,用于在 BGP 邻居之间同步和识别 BGP 报文。
  • 长度字段标明 BGP 报文总长度,包括 BGP 报头和 BGP 负载。
  • 类型字段用于指定 BGP 报文的类型,包括 OPEN、UPDATE、NOTIFICATION、KEEPALIVE
BGP Header:
+-----------------------------------------------------+
|   Marker (16 bytes)                                 |
+------------------------+----------------------------+
|   Length (2 bytes)     |   Type (1 byte)            |
+------------------------+----------------------------+

而 BGP 负载是根据 BGP 报文类型而不同。

BGP Payload:
+-----------------------------------------------------+
|   Message-specific contents                         |
+-----------------------------------------------------+

其中最常见的是更新报文(UPDATE)。更新报文包含了路由信息,其格式如下:

+-----------------------------------------------------+
| Withdrawn Routes Length (2 bytes)                   |
+-----------------------------------------------------+
| Withdrawn Routes (variable)                         |
+-----------------------------------------------------+
| Total Path Attribute Length (2 bytes)                |
+-----------------------------------------------------+
| Path Attributes (variable)                          |
+-----------------------------------------------------+
| Network Layer Reachability Information (variable)   |
+-----------------------------------------------------+

更新报文包含了三个部分:撤销路由路径属性 ​网络层可达性信息:

  • 撤销路由用于撤销已被 BGP 路由器之前学习的路由信息
  • 路径属性包含了路由器需要使用的各种属性信息,包括 AS_Path、Router ID、下一跳地址、前缀长度等等
  • 网络层可达性信息包含了目标路由的 IP 前缀和前缀长度。

其他 BGP 报文的格式也类似,但负载部分的内容会有所不同。

OPEN 报文用于建立 BGP 邻居关系,其格式如下:

+-----------------------------------------------------+
| Version (1 byte)                                    |
+----------------------+------------------------------+
| My Autonomous System (2 bytes) | Hold Time (2 bytes)|
+----------------------+------------------------------+
| BGP Identifier (4 bytes)                            |
+-----------------------------------------------------+
| Optional Parameters Length (1 byte)                 |
+-----------------------------------------------------+
| Optional Parameters (variable)                      |
+-----------------------------------------------------+

OPEN 报文的内容包括 BGP 版本号本地自治系统号保活时间本地 BGP 标识符以及可选参数。可选参数用于传递一些扩展功能,例如支持多个地址族、MD5 认证等

KEEPALIVE 报文用于维持 BGP 邻居关系的存活状态,其格式如下:

+-----------------------------------------------------+
| Message Length = 19 (2 bytes)                       |
+-----------------------------------------------------+
| Type = KEEPALIVE (1 byte)                           |
+-----------------------------------------------------+
| (empty)                                             |
+-----------------------------------------------------+

保持报文没有负载部分,只包括 BGP 报头和一个类型字段。

NOTIFICATION 报文用于通知邻居BGP路由器出现的错误情况,其格式如下:

+-----------------------------------------------------+
| Error Code (1 byte)                                 |
+----------------------+------------------------------+
| Error Subcode (1 byte) | Data (variable)            |
+-----------------------------------------------------+

通知报文包含了 错误代码错误子代码 ​和一些 数据信息。常见的错误代码包括:报文头部格式错误、不支持的可选参数、不支持的 BGP 版本号、路由环路等。该报文的接收方会根据错误代码和子代码,进行相应的处理,例如关闭 BGP 邻居关系或重新连接等操作。

简单来说,BGP 报文包括头部与负载两部分,其中负载根据报文类型的不同而变化,包括 OPEN、UPDATE、NOTIFICATION、KEEPALIVE,不同类型的 BGP 报文在 BGP 协议的运行过程中扮演着不同的角色,例如建立和维护 BGP 邻居关系,交换路由信息和处理异常情况等。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值