BGP的5种交互报文、6种状态机、对等体关系建立与路由交互过程介绍

一、BGP的五种交互报文

BGP的五种报文,分别是:Open、Keepalive、Update、Notification、 Route-Refresh

BGP包属于应用层,所以BGP的所有报文都是被TCP封装着,依赖TCP通道进行传输。

[下图:可以看到BGP包封装于TCP之内]
在这里插入图片描述

1、各报文的作用

如何通过BGP报头判断出所发送的BGP报文类型?【通过BGP头部中的Type字段】

在这里插入图片描述

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

1-Open:用于协商参数、建立邻居,TCP三次握手正常建立之后,才会发送Open报文。

2-Update:用于更新传递路由信息。

3-Notification:报告错误信息,用于断开邻居关系。

4-Keepalive:定期发送,用于维持BGP邻居关系,Keepalive报文格式中只包含报文头,没有附加其他任何字段。

5-Route-Refresh:路由刷新报文,让对方主动给我发送最新的,我所需要的路由信息。

2、报文内部的重要字段

更多更具体的字段介绍,可自行查看报文格式大全:网络协议报文格式大全 v1.0.chm

Open

  • My AS,本地AS号
  • BGP Identifier,BGP标识符(本设备的Router-id)

在这里插入图片描述

在这里插入图片描述

Update

  • Withdrawn Routes,撤回的路由。

    1、如果该值为0,表示该Update报文用于传递BGP路由。

    2、如果该值为4,表示撤消一条BGP路由:

    (WRL=4 表示撤销4字节的路由,因为IP地址就是32bit=4字节,故表示撤销了一条路由)

  • Network Layer Reachability Information(NLRI)网络层可达信息,记录BGP路由。

    1、在WRL=0的时候,该字段的信息表示增加的路由条目信息。

    2、有NLRI就会有路由属性字段,描述该对应路由的路由属性。

  • Path attributes 路径属性

在这里插入图片描述

在这里插入图片描述

Notification

  • Error Code,错误错误代码,定义错误的类型,非特定的错误类型用零表示。
  • Data,详细的错误信息,指定错误细节编号,非特定的错误细节编号用零表示。

在这里插入图片描述
在这里插入图片描述

Keepalive

  • 只有BGP报头,其Type字段置位4。

在这里插入图片描述

在这里插入图片描述

Route-Refresh

  • AFI,地址族标识,标识需要传递的路由类型,默认是IPv4,还可以设置IPv6、VPNv4等。
  • SAFI,子地址族标识,针对NLRI网络层可达信息就分为 单播 NLRI(SAFI 1)和多播 NLRI(SAFI 2),默认为单播。
    在这里插入图片描述
    在这里插入图片描述

二、BGP的六种状态机

BGP的六种状态机分别是:

Idle、Connect、Active、OpenSent、OpenConfirm、Established

1、每个状态机的介绍

Idle:

  • 启用BGP后,开始准备建立TCP的连接时的状态。
  • 任何状态中收到Notification报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态。

在这里插入图片描述

Connect

  • 已发送TCP Syn报文,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。

    (Connect Retry 重置连接计时器,默认32S)

  • 如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。

  • 如果TCP连接失败,那么BGP转至Active状态。

  • 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试进行TCP连接,一直停留在Connect状态。

    1、即32S之后还没收到邻居回复TCP报文,将一直重复发送TCN SYN报文,状态也一直处于Connect。

    2、除非收到TCP连接失败或其它错误信息,不然一直在此状态停留尝试TCP连接。

    3、这种状态下可以判定邻居没有配置BGP或中间设备拦截了BGP报文。

Active

  • 从Connect转换到该状态下,BGP继续试图建立TCP连接:

    1、如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。

    2、如果TCP连接失败,那么BGP一直停留在Active状态不断发起TCP连接,直到重传定时器超时之后返回到Connect状态。

    要点:重传定时器从Connect状态到Active状态时不会重置会一直倒计时。

在这里插入图片描述

OpenSent

  • TCP连接建立成功,开始发送Open包并等待对等体回复Open报文。

    1、如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。

    2、如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。

在这里插入图片描述

OpenConfirm

  • 此时已经发送了Keepalive报文,正在等待对方回包。

    1、如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
    在这里插入图片描述

Established

  • 对等关系建立完毕,双向开始交互Update报文交互各自的路由信息。

  • 为了维持Established状态,需要定时发送Keepalive报文保持。

    (Keepalive报文默认发送间隔60s、超时时间180s)

  • 除了通过Keepalive报文进行保持Established状态,还通过Update等其它报文进行监测:

    1、如果收到正确的 Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。

    2、如果收到错误的 Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。

    3、如果收到Notification报文,那么BGP转至Idle状态。

    4、如果收到TCP断开通知,那么BGP也会断开连接,转至Idle状态。

2、总结每个状态之间交互的报文

(1)交互 TCP报文

  • Idle

  • Connect

  • Active

(2)交互 Open报文

  • OpenSent

(3)交互 Keepalive报文

  • OpenConfirm

(4)交互 Update、Keepalive

  • Established

3、各状态机之间的关联

(1)由左侧的Idle状态开始,发送TCP SYN请求建立报文后进入Connect状态,如果TCP failed建立失败将进入Active继续进行TCP建立,直到重传定时器超时再回到Connect状态继续重复该过程。

(2)TCP三次握手之后TCP Established建立成功进入Opensent状态并发送Open报文。

(3)当收到正确的Open报文之后进入OpenConfirm状态并发送Keepalive报文。

(4)当收到正常的Keepalive报文之后进入Established状态开始交互Update报文相互学习路由条目

在各个状态机中,如果发生了Error错误,即收到Notification报文将直接回退到Idle状态。

在这里插入图片描述

三、BGP对等体关系建立过程

1、对待体建立过程

在这里插入图片描述

2、路由交互过程

在这里插入图片描述

3、BGP邻居建立过程抓包

在这里插入图片描述
该Wireshark抓包中涵盖了BGP建立过程(TCP交互、Open交互、Keepalive交互、Update交互【含Update更新与撤消】)以及路由更新(Route-Refresh)、错误报告(Notification)

Wireshark抓包信息,下载查看更多内容:BGP建立过程抓包(wireshark版本Version 3.6.6)

更多相关笔记,观看CSDN:HCIA~HCIE个人笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hades_Ling

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

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

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

打赏作者

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

抵扣说明:

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

余额充值