当前位置: 首页 > news >正文

BGP路由协议(二):报文的类型和格式

###BGP报文结构

BGP是承载在TCP之上的协议,建立一个BGP对等体之前,必须建立标准的TCP三次握手,并且在目标端打开一个端口为179的连接,TCP能够提供可靠的传输方式,可以进行重传、确认、以及排序功能。
BGP不需要开发确认报文,因为所有的确认都有TCP层提供,从而可以减少BGP报文数量
BGP所有报文均采用单播方式发送,因此不能自动发现邻居
BGP的五种报文类型:

  1. Open
  2. Keeplive
  3. Update
  4. Notification
  5. Route-refresh

###BGP报文头部

所有BGP报文都一个相同格式的头部,共19byte

  1. 标记 16字节 Market 该字段被保留用于协议兼容性,用于检测BGP对等体之间的同步丢失情况,并且在支持验证功能的情况下进行消息验证。如果消息类型为Open或Open消息中未包含验证消息,标志字段将被设置为全1,否则,标识字段值通过某些计算得到(作为验证进程的一部分)
  2. 长度 Length 2字节 表示该BGP报文的长度
  3. 类型 Type 表示该BGP报文的类型
    a. Open报文
    b. Update报文
    c. Notification报文
    d. Keepalive报文
    在这里插入图片描述

###Open报文

BGP路由建立对等体关系后,TCP正确连接,双方开始交互Open报文,Open报文包含以下信息:

  1. 设备所处的AS号
  2. BGP版本号
  3. Router-ID
  4. 可选参数
    报文字段:
  5. 版本 Version BGP协议的版本 BGPv4版本的字段为4
  6. My AS号 2|4 Bytes BGP报文发送方所处的AS号
  7. 保留时间 Hold Time 2Bytes (默认180s,一般为keepalive的3倍) 多长时间(s)内必须收到对方Keepalive报文或Update报文,否则该对等体视为无效(保活时间需要双方协商,双方配置的值可以不同,但是最终双方均只认可值更小的保活时间)。最小为0,表示BGP连接被认为永远为UP。对等体之间不会发送Keepalive报文来检测邻居是否失效
  8. 路由器标识符 Router-ID 32bit的BGP路由器标识符
  9. 选参数长度 Optional Parameters Length 指示了BGP报文中,可选参数字段的长度(字节数),字段值为0表示该消息中没有包含的可选参数字段
  10. 可选参数 Optional Parameters Open报文可以包含多个可选参数,每个可选参数使用类型(Type)、长度(Length)、值(Value)的三元组格式描述

###Update报文

BGP路由器使用Update报文向其对等体通告路由信息:

  1. 一个Update报文中通告一条或多条拥有相同路径属性的路由
  2. 拥有不同路径属性的BGP路由需要不同的Update报文来通告
  3. 用于撤销一条或多条BGP路由
    Update报文字段:
  4. 撤销路由的长度 Withdrawn Routes Length
  5. 撤销的路由条目 Withdraw Routes
  6. 总路径属性长度 Total Path Attribute Length
  7. 路径属性 Path Attributes
  8. 网络层可达信息 Network Layer Reachability Information

###Keepalive报文

BGP基于TCP工作,但是不依赖TCP的保活机制,而是使用周期性发送Keepalive报文来了解对等体的存活情况。

  1. BGP会为对等体维护一个保活计时器(Hold Timer)。华为产品保活计时器时间默认为180s,Keepalive报文周期默认为保活计时器的1/3,60s
  2. Keepalive报文用于确认对方发送的Open报文

###Notification报文

当BGP检测到一个错误时,它可以使用Notification报文来告知对等体
Notification报文字段:

  1. 错误代码 Error Code
  2. 错误子代码 Error Subcode
  3. 数据 Data

###查看BGP对等体

当两台需建立对等体关系的BGP路由器完成配置后,双方需首先建立TCP连接,TCP连接建立完成后双方开始交换Open报文,如果一方认可对方发送过来的Open报文,则使用Keepalive报文进行回应。如果路由器收到了BGP对等体发来的、用于确认自己先前发送的Open报文的Keepalive报文,这意味着对方已经认可了自己所发的Open报文中的相关参数,则该路由器认为已经与对方完成了BGP对等体关系建立,此时双方便可以开始交互Update报文,而Update报文中便包含路由器所通告的路由信息

#查看BGP对等体
display bgp peer

###BGP路由表

    • 表示可用的路由
  1. 表示优选路由

  2. i 表示从IBGP对等体学习到的路由
#查看BGP路由表
display bgp routing-table
#查看某条路由的完整信息
display bgp routing-table 10.1.1.1

###将路由发布到BGP

三种方法发部路由到BGP

  1. network
  2. import-route
  3. aggregate
    关于BGP中的network与import-route命令,还存在另一个差异。在BGP的众多路径属性中,有一个属性是所有BGP路由都必须携带的,那就是Origin属性,该属性用于描述一条路由是如何被发布到BGP的(路由的来源),使用以上两个命令将路由发布到BGP时,路由的Origin属性是不同的
    与众多动态路由协议一样,BGP同样支持路由的手工汇总,在BGP配置视图中,使用aggregate命令,可执行BGP路由手工汇总。该命令生效的前提是,设备已经通过BGP学习到了明细路由,之后再使用该命令,则可使设备向BGP发布指定的汇总路由
http://www.xdnf.cn/news/1390681.html

相关文章:

  • OpenAI宣布正式推出Realtime API
  • 网络_协议
  • Qt事件_xiaozuo
  • 快速深入理解zookeeper特性及核心基本原理
  • Replay – AI音乐伴奏分离工具,自动分析音频内容、提取主唱、人声和伴奏等音轨
  • rust打包增加图标
  • 常见视频编码格式对比
  • 【3D入门-指标篇下】 3D重建评估指标对比-附实现代码
  • 哈希算法完全解析:从原理到实战
  • Python OpenCV图像处理与深度学习
  • 网页提示UI操作-适应提示,警告,信息——仙盟创梦IDE
  • 【贪心算法】day4
  • 实现自己的AI视频监控系统-第二章-AI分析模块5(重点)
  • 【开题答辩全过程】以 基于SpringBootVue的智能敬老院管理系统为例,包含答辩的问题和答案
  • 为什么特征缩放对数字货币预测至关重要
  • 克隆态驱动给用户态使用流程
  • Python 异步编程:await、asyncio.gather 和 asyncio.create_task 的区别与最佳实践
  • 【DeepSeek】公司内网部署离线deepseek+docker+ragflow本地模型实战
  • 软考-系统架构设计师 办公自动化系统(OAS)详细讲解
  • 【C语言】深入理解指针(2)
  • [打包压缩] gzip压缩和解压缩介绍
  • webservice在进行run maven build中出现java.lang.ClassCastException错误
  • C++基础(⑤删除链表中的重复节点(链表 + 遍历))
  • 【C++闯关笔记】STL:vector的学习与使用
  • Spring Security 传统 web 开发场景下开启 CSRF 防御原理与源码解析
  • CorrectNav:用错误数据反哺训练的视觉语言导航新突破
  • Apache服务器IP 自动跳转域名教程​
  • electron-vite 配合python
  • UPDF for mac PDF编辑器
  • JAVA:Spring Boot 集成 Easy Rules 实现规则引擎