BGP报文类型

BGP报文头部格式

BGP报文由BGP报文头和具体报文内容两部分组成。(RFC4271)

BGP的运行是通过消息驱动的,共有5种消息类型,这些消息有相同的报文头。这些消息通过TCP协议进行传播(端口号是179)。消息最长为4096字节,最短为19字节(只包含报文头)。

BGP报文头包括三的部分,总长19字节。各个部分的格式和功能如下:

这里写图片描述

图:BGP报文头部格式
  • **Marker:**占16字节,用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时所有比特均为1(十六进制则全“FF”)。

  • **Length:**占2个字节(无符号位),BGP消息总长度(包括报文头在内),以字节为单位。长度范围是19~4096。

  • **Type:**占1个字节(无符号位),BGP消息的类型。Type有5个可选值,表示BGP报文头后面所接的5类报文(其中,前四种消息是在RFC4271中定义的,而Type5的消息则是在RFC2918中定义的):

  • TYPE值报文类型
    1OPEN
    2UPDATE
    3NOTIFICATION
    4KEEPALIVE
    5REFRESH(RFC2918)

BGP报文头部格式抓包示例:

这里写图片描述

图:BGP报文头部抓包示例

BGP Open报文格式

如果BGP报文头中的TYPE为1,则该报文为OPEN报文。报文头后面所接的报文内容如下,OPEN报文用于建立BGP连接:

这里写图片描述

图:Open报文格式
  • version:表示协议的版本号,现在BGP的版本号为4。
  • My autonomous System:发送者自己的AS域号
  • Hold Time:发送者自己设定的hold time值(单位:秒),用于协商BGP对等体间保持建立连接关系,发送KEEPALIVE或UPDATE等报文的时间间隔。BGP的状态机必须在收到对等体的OPEN报文后,对发出的OPEN报文和收到的OPEN报文两者的hold time时间作比较,选择较小的时间作为协商结果。Hold Time的值可为零(不发KEEPALIVE报文)或大于等于3,我们系统的默认为180。
  • BGP Identifier:发送者的router id。
  • Opt Parm Len:表示Optional Parameters(可选参数)的长度。如果此值为0,表示没有可选参数。
  • Optional Paramters:此值为BGP可选参数列表,每一个可选参数是一个TLV格式的单元(RFC3392)。

Open报文抓包示例:

这里写图片描述

图:Open报文抓包示例

BGP Update报文格式

如果BGP报文头中的TYPE为2,则该报文为UPDATE报文。报文头后面所接的报文内容如下(RFC 4271),UPDATE报文用于通告路由。

这里写图片描述

图:Update报文格式
  • Unfeasible Routes Length:标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。

  • Withdrawn Routes:包含要撤销的路由列表,列表中的每个单元包含1字节的Length域和可变长度的Prefix域。

  • Total Path Attribute Length:标明Path Attributes部分的长度。其值为零时,表示没有路由及其路由属性要通告。如下图所示:TPAL 24bytes = Path arrtibutes的总长度,4 + 13 + 7 = 24 (https://www.ietf.org/rfc/rfc4271.txt )

  • rf4217解释

  • 在这里插入图片描述

  • Path Attributes:含要更新的路由属性列表,按其类型号从小到大的顺序排序,填写更新的路由的所有属性。每一个属性单元包括属性类型,属性长度,属性值三部分。其编码采用TLV格式。

这里写图片描述

图:BGP TLV格式

其中,Attr.TYPE占2个字节(无符号位),包括1字节的Flags(无符号位)和1字节的Type Code(无符号位)。

这里写图片描述

图:TLV-Type结构

**Attr.Flags:**占1个字节(8个bit),表示属性的标记,其每个bit位的意义如下显示:

  1. O: Optional bit, 属性的可选性。决定属性是否为必携带属性。带可选属性(optional)设为1,公认属性(well-known)设为零。
  2. T: Transitive bit 属性的可传递性。对于可选属性,是可传递的设为1,非可传递的设为0。对于公认属性必须设为1。
  3. P: Partial bit 属性的局部性。对于可传递的可选属性是局部的设为1,是完全的设为零。对于非可传递的的可选属性和公认属性,必须设为零。
  4. E: Extended Length bit 决定该属性的长度的字段(即Attr. Length)是否需要扩展。不需要扩展则设为零,Attr. Length占1个字节;需要扩展则设为1,Attr. Length占2个字节。
  5. U: Unused bits 低4位没有使用,发送时必须全部设为零,并且在接收时被忽略。
  6. Attr.Type Code:占1个字节(无符号位),表示属性的类型号。
  7. Attr.Value:**根据不同属性的类型填写不同内容。
  • Network Layer Reachability Information(NLRI):含要更新的地址前缀列表,每一个地址前缀单元由一个LV二元组(prefix length, the prefix of the reachable route)组成,其编码填写方法与Withdrawn Routes的填写方法相同。

BGP Update报文抓包示例:

这里写图片描述

图:Update报文抓包示例

BGP Notification报文格式

如果BGP报文头中的TYPE为3,则该报文为NOTIFICATION报文。报文头后面所接的报文内容如下(RFC 4271),NOTIFICATION报文用于处理BGP进程中的各种错误。

这里写图片描述

图:Notification报文格式
  • **Error code:**占1个字节(无符号位),定义错误的类型,非特定的错误类型用零表示。
  • **Error subcode:**占1个字节(无符号位),指定错误细节编号,非特定的错误细节编号用零表示。
  • **Data:**指定错误数据内容。

Notification报文抓包示例:

这里写图片描述

图:Notification报文抓包示例

BGP Keepalive报文格式

如果BGP报文头中的TYPE为4,则该报文为KEEPALIVE报文。KEEPALIVE报文用于保持BGP连接。

KEEPALIVE报文只有BGP报文头,没有具体内容,故其报文长度应固定为19个字节。

Keepalive报文抓包示例:

这里写图片描述

图:Keepalive报文抓包示例

BGP Refresh报文格式

如果BGP报文头中的TYPE为5,则该报文为REFRESH报文。报文头后面所接的报文内容如下(RFC 2918),REFRESH报文用于动态的请求BGP路由发布者重新发布UPDATE报文,进行路由更新。

这里写图片描述

图:Refresh报文格式
Field字段Length长度Description描述
AFI2字节(无符号位)表示地址族id,与UPDATE报文中的定义相同。
Res.1字节(无符号位)所有为应全为零,在接收报文时,此位被忽略。
SAFI1字节(无符号位)与UPDATE报文中的定义相同

Refresh报文抓包示例:

这里写图片描述

图:Refresh报文抓包示例

参考文档:华为HedEx文档


已标记关键词 清除标记
相关推荐
<p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> <span style="color:#E53333;"><strong>【课程介绍】</strong></span>  </p> <p style="text-align:left;">      Pytorch项目实战 垃圾分类 课程从实战的角度出发,基于真实数据集与实际业务需求,结合当下最新话题-垃圾分类问题为实际业务出发点,介绍最前沿的深度学习解决方案。 </p> <p style="text-align:left;">     从0到1讲解如何场景业务分析、进行数据处理,模型训练与调优,最后进行测试与结果展示分析。全程实战操作,以最接地气的方式详解每一步流程与解决方案。 </p> <p style="text-align:left;">     课程结合当下深度学习热门领域,尤其是基于facebook 开源分类神器ResNext101网络架构,对网络架构进行调整,以计算机视觉为核心讲解各大网络的应用于实战方法,适合快速入门与进阶提升。 </p> <p style="text-align:left;"> <strong><span style="color:#E53333;">【课程要求】</span></strong> </p> <p style="text-align:left;"> (1)开发环境:python版本:Python3.7+;<span style="color:#E53333;"> torch 版本:1.2.0+; torchvision版本:0.4.0+</span> </p> <p style="text-align:left;"> (2)开发工具:Pycharm; </p> <p style="text-align:left;"> (3)学员基础:需要一定的Python基础,及深度学习基础; </p> <p style="text-align:left;"> (4)学员收货:掌握最新科技图像分类关键技术; </p> <p style="text-align:left;"> (5)学员资料:内含完整程序源码和数据集; </p> <p style="text-align:left;"> (6)课程亮点:专题技术,完整案例,全程实战操作,徒手撸代码 </p> <p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> <span style="color:#E53333;"><strong>【课程特色】</strong></span> </p> 阵容强大 <p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> 讲师一直从事与一线项目开发,高级算法专家,一直从事于图像、NLP、个性化推荐系统热门技术领域。 </p> <p style="text-align:left;"> 仅跟前沿 </p> <p style="text-align:left;"> 基于当前热门讨论话题:垃圾分类,课程采用学术届和工业届最新前沿技术知识要点。 </p> <p style="text-align:left;"> 实战为先 </p> <p style="text-align:left;"> 根据实际深度学习工业场景-垃圾分类,从产品需求、产品设计和方案设计、产品技术功能实现、模型上线部署。精心设计工业实战项目 </p> <p style="text-align:left;"> 保障效果 </p> <p style="text-align:left;"> 项目实战方向包含了学术届和工业届最前沿技术要点 </p> <p style="text-align:left;"> 项目包装简历优化 </p> <p style="text-align:left;"> 课程内垃圾分类图像实战项目完成后可以直接优化到简历中 </p> <p style="text-align:left;"> <strong><span style="color:#E53333;">【课程思维导图】</span></strong> </p> <p style="text-align:left;"> <img src="https://img-bss.csdn.net/201912081323318969.png" alt="" /> </p> <p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> <strong><span style="color:#E53333;">【课程实战案例】</span></strong> </p> <p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> <img src="https://img-bss.csdn.net/201912081326184463.png" alt="" /> </p> <p style="text-align:left;"> <br /> </p> <p style="text-align:left;"> <br /> </p>
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页