IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> BGP报文详细解释 -> 正文阅读

[系统运维]BGP报文详细解释

BGP报文

BGP Packet 存在5种类型的报文,不同类型的报文拥有相同的头部(header)

报文名称作用出现时刻
Open(建立)用于协商参数(BGP版本、AS号)+建立邻居BGP TCP建立成功之后的第一个消息
Update(更新)更新报文交换路由信息,发送+撤销BGP对等体关系建立之后有路由需要发送或路由变化时
Notification(通知)差错报文,用于中断BGP连接当BGP在运行中发现错误时
Keepalive(保持活跃)确定邻居关系+维持邻居(刷新TCP连接,不让TCP连接断开)1、BGP路由器收到对端发送的Keepalive报文
2、对等体状态置为已建立,同时后续定期发送保持连接
router-refresh(路由刷新)用于在改变路由策略后请求对等体重新发送路由信息
前提是bgp路由器支持要支持路由刷新功能当路由策略发生变化时

BGP报文具体应用

  1. BGP使用TCP建立连接,本地监听端口为179。和TCP连接建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本、BGP连接保持时间、本地的路由器标识(Router ID)、授权信息等。这些信息都在Open消息中携带
  2. BGP连接建立后,如果有路由需要发送,则发送Update消息通告对端。Update消息发布路由时,还要携带此路由的路由属性,用以帮助对端BGP协议选择最优路由。在本地BGP路由变化时,要通过Update消息来通告BGP对等体。
  3. 经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定状态。此时要定时发送Keepalive消息以保持BGP连接的有效性。对于本地BGP,如果在保持时间内,未收到任何对端发来的BGP消息,就认为此BGP连接已经中断,将断开此BGP连接,并删除所有从该对等体学来的BGP路由。
  4. 当本地BGP在运行中发现错误时(如对端BGP版本本地不支持、本地BGP收到了结构非法的Update消息等),要发送Notification消息通告BGP对等体。本地BGP退出BGP连接时,也需发送Notification报文。

BGP报文头部

在这里插入图片描述

Marker(标记):16Byte,该标记字段用于检测BGP对等体之间的同步丢失情况,并且在支持验证功能的情况下进行消息验证。如果消息类型为Open或Open消息中未包含验证消息,标志字段将被设置为全1,否则,标志字段值通过某些计算得到(作为验证进程的一部分)
Length(长度):2Byte无符号整数,指定了消息的全长,包括头部,BGP报文总长度在19~4096Byte之间。整个BGP报文的长度,Header+Message+Data。
Type(类型):1Byte,标识BGP的报文类型,有以下几种消息类型。

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

OPEN Message

Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh消息的交换。
Version(版本):1Byte,标识BGP的对等体在使用的版本,缺省版本都为BGP-4,如果邻居运行的是较早的版本,那么它将会拒绝Version4的消息,于是路由器的版本将改为Version3并且再发送一个Open消息,直到两边的邻居协商一致。
My Autonomous System(本地自治系统):2Byte,BGP路由器的AS号,它用来决定该BGP会话是EBGP还是IBGP,范围从165535(目前也有4Byte的AS号,范围从14294967295)。
Hold Time(保持时间):2Byte,对等体之间相互协商的最大保持时间,一般为Keepalive时间的3倍,缺省情况下保持时间为180s。保持时间是一个计数器,从0一直增加到该值,等待接收Keeplive(每隔60s发送一次)或者Update报文,收到后将保持时间清零,如果保持时间内没有收到则认为邻居失效。如果BGP对等体之间协商的保持时间不一致,将会采取较短的时间作为保持时间。最小可以为0,这种情况下BGP连接被认为永远是UP,对等体之间不会发送Keeplive报文来检测邻居是否失效。
BGP Identifier(BGP标识):4Byte,BGP路由器的Router ID,以IP地址的形式表示,用来识别BGP路由器。在VRP5.30系统中,如果没有通过命令router id进行配置,则按照如下规则进行选择:优选Loopback接口地址中最大的地址作为Router ID,如果没有Loopback接口配置了IP地址,则从配置了IP地址的物理接口中选择一个最大的IP地址作为Router ID。
Opt Parm Len(Optional Parameters Length):1Byte,可选参数的长度。如果为0则表示该消息中没有可选参数
Optional Parameters:可变长的字段,用于BGP邻居会话协商过程中所使用的可选参数列表。每一个参数为一个(参数类型,参数长度,参数值)三元组,这个字段用于公布一些可选功能的支持,如多协议拓展功能,路由刷新能力,四字节AS号等功能。

UPDATE Message

Update消息被用作在BGP对等体之间传递路由信息。多条可达路由信息可以被通告到相应的对等体上,或者多条不可达路由信息被撤销。Update消息由以下五部分组成:
Withdrawn Routes Length(撤销路由长度):(2字节无符号整数)不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据,在Update消息中不会被显示。
Withdrawn Routes(撤销路由):(可变长)撤销路由。该字段包括一系列的IP地址前缀信息,以<length,prefix>的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络。
Path Attribute Length(路径属性长度):(2字节无符号整数)路由属性长度,表示Path Attribute字段的数据长度。如果Path Attribute数值为0,则表示Path Attribute字段没有任何数据,在Update消息中不会被显示
Path Attributes(路径属性):(可变长字段)路径属性。每个路径属性都是由可变长的三元组所组成:<attribute type属性类型,attribute length属性长度,attribute value属性值>,为BGP提供选择最短路径,检查路由环路以及决定路由策略的信息,属性类型是一个2Byte的长度,包括1Byte的属性标记,1Byte的属性类型代码字段。

NOTIFICATION Message

Notification报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误码(如定时器超时等),以及错误子码和错误信息。
Errorcode:错误子码。1Byte长度,提供了与错误种类有关的具体信息。
Data:依赖于不同的错误码和错误子码,用于标识错误原因。是一个可变长的字段,被Notification用作诊断错误的原因。注:Data字段的长度可以由以下公式来决定:消息长度=21+Data长度(Notification消息最小长度为21个字节,其中一家包括消息头。)
** 消息头错误子码:

a连接非同步
b错误的消息长度
c错误的消息类型
** Open消息错误子码:

a不支持的版本号
b错误的对等体AS号
c错误的BGP ID
d不支持的可选参数
eRFC1771里被定义为认证失败,RFC4271里则对此表示反对。
f不可接受的保持时间(Hold Time)
** Update消息错误子码:

a畸形的属性列表
b无法识别的公认属性
c缺少的公认属性
d属性标志位错误
e属性长度错误
f无效的Origin属性
gRFC1771里被定义为AS路由环路,RFC4271里对此表示反对。
h无效的下一跳属性
i可选属性错误
j无效的网络字段
k畸形的AS_Path
** 保持时间超时:0
状态机错误:0
终止:0

KEEPALIVE Message

  1. Keepalive报文主要用于对等体路由器间的运行状态以及链路的可用性确认。
  2. Keepalive报文的组成只包括一个BGP数据报头。
  3. Keepalive消息在对等体之间的交换频率以保证对方保持定时器不超时为限
  4. 当一台路由器与其邻居建立BGP连接之后,将以Keepalive-Interval设定的时间间隔周期性地向对等体发送Keepalive报文,表明该连接是否还可保持。
  5. 缺省情况下,发送Keepalive的时间间隔为60秒,Hold Time是180秒。每次从邻居处接收到Keepalive报文将重置Hold Time定时器,在发送消息的时间间隔内,如果BGP发送过Update消息,就会抑制Keepalive消息的发送。如果Hold Time定时器超时,就认为对等体Down掉。

REFRESH Message

主要字段的解释如下:
AFI(Address Family Identifier):地址族标识符(2字节)。比如IPv4,IPv6,VPNv4,VPNv6等。
Res(Reserved Field):保留区域(1字节),发送方应将其设置为0,接收方应当忽略该区域的信息。
SAFI(Subsequent Address Family Identifier):子地址族标识符(8字节)。比如,单播,组播。
在所有BGP路由器使能Route-refresh能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发布Route-refresh消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。
使用refresh bgp peer_address import即可以触发该报文的发送,对等体收到该报文后,就会发送Update报文,发送完整路由消息。
如果使用命令refresh bgp peer_address export,则会在该路由器上直接发送Update完整路由信息,此时就不需要route refresh报文了。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:34:08  更:2022-06-18 23:34:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:00:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码