BGP协议报文类型

BGP报文头部

Marker:值固定为1

Length:整个BGP报文的长度,Header+Message+Data

Type:1—Open,2—Update,3—Notification,4—KeepAlive

Open报文

协商BGP参数,主要包括BGP版本,AS号等信息。试图建立BGP邻居关系的两个路由器在建立了TCP回话之后开始交换OPEN信息以确认能否形成邻居关系,是TCP建立后发送的第一个消息。

VersionBGP的版本号。对于BGPv4来说,其值为4。

My Autonomous System:本地AS编号。通过比较两端的AS编号可以确定是EBGP连接还是IBGP连接。

Hold Time:在建立对等体关系时两端要协商Hold time(180s),并保持一致。如果两端所配置的Holdtime时间不同,则BGP会选择较小的值作为协商的结果。如果在这个时间内未收到对端发来的Keepalive消息,则认为BGP连接中断。

BGP Identifier:BGP路由器的RouterID,以IP地址的形式表示,用来识别BGP路由器。在VRP5.30系统中,如果没有通过命令routerid进行配置,则按照如下规则进行选择:优选Loopback接口地址中最大的地址作为RouterID,如果没有Loopback接口配置了IP地址,则从其它配置了IP地址的物理接口中选择一个最大IP地址的作为Router ID。

Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。

Optional Parameters:是一个可选参数用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。每一个参数为一个(ParameterType-Parameter Length-Parameter Value)三元组。

对等体在接收到Open消息后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh消息的交换。

Update报文

  • 前面两部分表示路由撤销信息,后面三部分表示路由可达信息;

  • 路由可达信息携带各种属性;

  • 但是路由撤销信息就不需要携带各种属性了,因为这时候是撤销了;

UPDATE消息被用作在BGP对等体之间传递路由信息。多条可达路由信息可以被通告到相应的对等体上,或者多条不可达路由信息被撤消。UPDATE消息由以下五个部分组成:

Withdrawn Routes Length :(2字节无符号整数) 不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn RoutesLength字段数值为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 AttributeLength数值为0,则表示Path Attribute字段没有任何数据,在UPDATE消息中不会被显示。

Path Attributes :(变长) 路径属性。每个路径属性都是由三元组所组成:<attribute type, attribute length,attribute value>。

Network Layer Reachability Information :(变长)网络可达信息。包括一系列的IP地址前缀。格式与撤消路由字段一样<length, prefix>。(路由信息)

一条Update消息可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update消息里的路由属性适用于该Update消息中的NLRI(NetworkLayer Reachability Information)字段里的所有目的地(用IP前缀表示)。

一条Update消息可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚的定义了BGPSpeaker之间先前通告过的路由。

一条Update消息可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。

KeepAlive报文

KeepAlive报文主要用于对等体路由器间的运行状态以及链路的可用性确认。KeepAlive 报文的组成只包括一个BGP数据报头。 KeepAlive 消息在对等体之间的交换频率以保证对方保持定时器不超时为限。

当一台路由器与其邻居建立BGP连接之后,将以Keepalive-interval设定的时间间隔周期性地向对等体发送KeepAlive报文,表明该连接是否还可保持。

缺省情况下,发送KeepAlive 的时间间隔为 60 秒,Hold Time是180秒。每次从邻居处接收到KeepAlive 报文将重置Hold Time定时器,如果Hold Time定时器超时,就认为对等体Down掉。

Notification报文

Notification报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误码(如定时器超时等),以及错误子码和错误信息。

Errorcode:错误码。1字节长的字段。每个不同的错误都使用唯一的代码表示,而每一个错误码都可以拥有一个或多个错误子码,但如果某些错误码并不存在错误子码的话,则该错误子码字段以全0表示。

Errsubcode:错误子码。

消息头错误子码:

1 –连接非同步

2 –错误的消息长度

3 –错误的消息类型

OPEN消息错误子码:

1 –不支持的版本号

2 – 错误的对等体AS号

3 – 错误的BGP ID

4 –不支持的可选参数

5 – RFC1771里被定义为认证失败,RFC4271里则对此表示反对。具体请参考RFC1771/RFC4271

6 – 不可接受的保持时间(Hold Time)

UPDATE消息错误子码:

1 –畸形的属性列表

2 –无法识别的公认属性

3 –缺少的公认属性

4 –属性标志位错误

5 –属性长度错误

6 – 无效的ORIGIN属性

7 – RFC1771里被定义为AS路由环路,RFC4271里对此表示反对。具体请参考RFC1771/RFC4271

8 –无效的下一跳属性

9 –可选属性错误

10 –无效的网络字段

11 – 畸形的AS_PATH

Data:依赖于不同的错误码和错误子码,用于标识错误原因。是一个可变长的字段,被NOTIFICATION用作诊断错误的原因。注:Data字段的长度可以由以下公式来决定:消息长度=21+Data长度(NOTIFICATION消息最小长度为21个字节,其中已经包括消息头。)

Route-Rrefresh报文

主要字段的解释如下:

AFI(Address Family Identifier):地址族标识符(2字节)。比如,IPv4,IPv6,VPNv4,VPNv6等。

Res.(Reservedfield):保留区域(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报文了;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A_Puter

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

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

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

打赏作者

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

抵扣说明:

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

余额充值