2022-07-07 网工进阶(十八)BGP-Router ID、报文

BGP Router ID

作用(同OSPF):用于表示设备的唯一性。

选举方式(同OSPF)

1 手动配置(最优先)

2 自动选择IP地址最大的环回接口

3 自动选择IP地址最大的物理接口

注:修改RID后需要重新建立邻接关系。

相关命令

配置RID

[R1-bgp]router-id 1.1.1.1

BGP 报文

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

报文名称

作用

发送时刻

Open

协商BGP对等体参数,建立对等体关系

BGP TCP连接建立成功之后

Update

发送BGP路由更新

BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文

Notification

报告错误信息,中止对等体关系

当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体

Keepalive

标志对等体建立,维持BGP对等体关系

BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接

Route-refresh

用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文

当路由策略发生变化时,触发请求对等体重新通告路由

BGP报文通用头部

Marker:16Byte,用于标明BGP报文边界,所有bit均为“1”。

Length:2Byte,BGP报文总长度(包括报文头在内),以Byte为单位。

Type:1Byte,BGP报文的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh 报文。

Open报文

Open报文是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系。

Open报文不维持对等体关系。

Version:BGP的版本号。对于BGP 4来说,其值为4。

My AS(autonomous system):本地AS号。通过比较两端的AS号可以判断对端是否和本端处于相同AS。

Hold Time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive报文或Update报文,则认为BGP连接中断。

BGP Identifier:BGP标识符,以IP地址的形式表示,用来识别BGP路由器。

Opt Parm Len:Optional parameters的长度。

Optional parameters:宣告自身对于一些可选功能的支持,比如认证、多协议支持。

除了IPv4单播路由信息,BGP4+还支持多种网络层协议(如IPv6、组播),在协商时BGP对等体之间会通过Optional parameters字段协商对网络层协议的支持能力。

抓包观察

1 BGP版本:4

2 本地AS号:100

3 保持时间:180秒,如果超时未收到Keepalive报文或Update报文,则认为BGP连接中断。如果两端Hold Time不一致,会协商采用最短的。

4 BGP的RID:1.1.1.1

5 可选项参数长度:16字节

6 可选项参数:能力

7 支持多协议支持能力参数

8 支持路由刷新能力参数

9 支持4字节AS号的能力参数

Update报文

Update报文用于在对等体之间传递路由信息,可以用于发布、撤销路由。

一个Update报文可以通告具有相同路径属性的多条路由,这些路由保存在NLRI(Network Layer Reachable Information,网络层可达信息)中。同时Update还可以携带多条不可达路由,用于告知对方撤销路由,这些保存在Withdrawn Routes字段中。

Unfeasible routes length:不可达路由字段的长度,以Byte为单位。如果为0则说明没有Withdrawn Routes 字段。

Withdrawn Routes Length:不可达路由的列表。标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。

Total path attribute length:路径属性字段的长度,以Byte为单位。如果为0则说明没有Path Attributes 字段。

Path attributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。

NLRI:可达路由的前缀和前缀长度二元组。

抓包观察

1 撤销路由长度:0代表没有撤销路由

2 总路径属性长度:28字节

3 路径属性

4 路径起源:IGP代表network方式宣告

5 路径AS号:empty代表本机宣告

6 路径的下一跳:相邻的下一个对等体更新源IP前缀

7 网络层可达信息:本报文包含的路由的IP地址

Notification报文

当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发生),就会向对等体发送Notification,告知对端错误原因。之后BGP连接将会立即中断。

Error Code、Error subcode:差错码、差错子码,用于告知对端具体的错误类型。

Data:用于辅助描述详细的错误内容,长度并不固定。

错误码和错误子码的含义

错误码错误子码
1:消息头错误1:连接未同步
2:错误的消息长度
3:错误的消息类型
2:Open消息错误1:不支持的版本号
2:错误的对等AS
3:错误的BGP标识符
4:不支持的可选参数
5:认证失败
6:不可接受的保持时间
7:不支持的能力
3:Update消息错误1:畸形属性列表
2:不可识别的公认属性
3:缺少公认属性
4:属性标志错误
5:属性长度错误
6:无效Origin属性
7:AS路由环路
8:无效Next_Hop属性
9:可选属性错误
10:无效网络字段
11:畸形AS_Path
4:Hold Timer溢出0:没有特别的错误子码定义。
5:有限状态机错误0:没有特别的错误子码定义。
6:终止1:前缀超过最大值。
2:管理关闭
3:删除邻居
4:管理重置
5:连接失败
6:其他配置改变
7:连接冲突
8:资源短缺
9:BFD断开连接

抓包观察

1 错误码:6(代表终止对等体关系)

2 错误子码:6(代表其他配置改变)

Keepalive报文

BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接。维持对等体关系,缺省每隔60秒发送一次。

Keepalive报文格式中只包含报文头,没有附加其他任何字段。

抓包观察

相关命令

修改keepalive报文发送间隔和保持时间

[R1-bgp]timer keepalive 80 hold 240

Route-refresh报文

Route-refresh报文用来要求对等体重新发送指定地址族的路由信息,一般为本端修改了相关路由策略之后让对方重新发送Update报文,本端执行新的路由策略重新计算BGP路由。

在Open报文协商时会协商是否支持Route-refresh,如果对等体支持Route-refresh能力,则可以通过refresh bgp命令手工对BGP连接进行软复位,BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。

对于不支持Route-Refresh能力的BGP对等体,可以配置keep-all-routes命令,保留该对等体的所有原始路由,这样不需要复位BGP连接即可完成路由表的刷新。缺省情况下未开启keep-all-routes

AFI:Address Family Identifier,地址族标识,如IPv4。

Res.:保留,8个bit必须置0。

SAFI:Subsequent Address Family Identifier,子地址族标识。

抓包观察.

1 地址族:IPV4

2 子类型:RFC2918(刷新能力)/RFC5291(出接口路由过滤能力)

3 子地址族标识:单播

相关命令

本机发送update报文给所有对等体

<R4>refresh bgp all export 

发送Route-refresh报文请求所有对等体发送update报文给本机

<R4>refresh bgp all import 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鹅一只

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

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

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

打赏作者

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

抵扣说明:

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

余额充值