BGP知识总结

一、BGP的特性

BGP具有一下特性:

(1)传输协议:TCP,端口号179;

(2)BGP外部路由协议,用来在AS之间传递路由信息;

(3)是一种增强的路径矢量路由协议;

(4)拥有可靠的路由更新机制;

(5)具备丰富的Metric度量方法;

(6)无环路协议设计;

(7)为路由条目附带多种属性信息;

(8)支持CIDR(无类别域间选路);

(9)丰富的路由过滤和路由策略;

(10)无需周期更新;

(11)路由更新时只发送增量路由;

(12)周期性发送keepAlive报文以保持TCP连接性;

二、BGP的工作原理

BGP时跨公网、跨自治系统的路由协议,可以在自治系统之间学习路由。BGP的动态学习路由也是基于邻居,只有邻居关系正常,BGP才可以正常的工作。

1,BGP邻居关系

运行BGP的路由器通常被称为BGPSpeaker(发言者),相互之间传递报文的Speaker之间互称为对等(Peer)。BGP邻居关系的建立、更新和删除是通过对等体之间交互的5中报文、6种状态机和5个表等信息来完成的,最终才可以形成邻居关系。

(1)BGP报文

BGP报文头中的type定义了bgp的报文类型。BGP通过5种报文进行路由信息交互。下面详细介绍5种报文的详细信息。

1)open报文

open(打开)报文是TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系,主要包含BGP的版本、本地AS编号、Holdtime(保存时间)等信息。对等体在接收到对端发过来的open报文并协商成功后,将发送keepalive报文确认并保持连接的有效性。BGP对等体关系确认后,对等体之间才可以进行发送剩下的报文,交互路由信息。

2)Update报文

Update(更新)报文用来在BGP对等体之间更新路由信息。

Update报文可以通过多条属性系统的就可达路由信息,也可以撤销多条不可达路由信息。

网络可达信息(NLRI):通过此字段发布多条具有相同属性的可达路由,这些路由信息可共享同一组路由属性,此字段由可达的目的IP地址前缀和掩码组成;

撤销多条不可达路由:通过该字段发布应经失效或者不可达的路由信息。此字段由不可达的目的IP地址和掩码组成;

Update报文可以用于只撤销路由,在仅用于撤销路由时,不需要包括路径属性或NLRI。同样,也可以用于只通告可达路由,此时则不需要携带撤销路由信息。

3)Notification报文

Notification(通知)报文的作用是当BGP检测到错误信息时,立刻向对等体发出Notification报文,之后BGP连接会立即中断。要注意的是,不管当前的BGP状态当时处于何种状态,只要收到Notification报文就会返回idle状态。换而言之,BGP是不允许错误出现的一种路由协议,在选路原则中,更优的路径往往是邻居关系最久的对等体,以此反映对等体两端经历很长的时间都没有出现错误,而之前学过的其他路由协议则是越新越好。

4)Route-Refresh

用来告知对等体本地所支持路由的刷新能力。在所有BGP路由器拥有Route-Refresh(路由更新)能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发送Route-Refresh报文,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。

5)KeepAlive

该报文在对等体之间周期性的发送,用以保持连接的有效性并维护器连接,KeepAlive(保持)报文只有一个BGP报文头。默认KeepAlive(保持)报文发送周期为60s,Holdtime(保存报文)为180s。KeepAlive报文类似于OSPF协议中的Hello报文,当收到对等体发过来的KeepAlive报文后会刷新Holdtime计时器,如果Holdtime计时器超时仍然没有收到keep alive报文,则认为对等体失效。

(2)BGP状态机

BGP状态机描述的是BGP邻居的建立过程,通过对这些不同状态的学习,可以更加深入地了解BGP的工作原理,以及排查思路。BGP状态机公有六种状态,如图:

下面详细介绍BGP的六种状态:

1)ldle状态

ldle(空闲)状态,BGP拒绝任何进入的连接请求,IdIe状态是BGP的初始状态。在ldle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件(如运行BGP协议)后,BGP才开始尝试和其他BGP对等体进行TCP连接,并转至Commect状态。任何状态中收到NOtification报文或TCP拆链通知等Error事件后,BGP都对转至ldle状态。

2)Connect状态

Connect(连接)状态下,BGP等待TCP连接的建立完成后再决定后续操作。在Connect状态下,BGP启动连接重传定时器(通常计时器为30s),等待TCP完成连接。如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent(开放)状态;如果TCP连接失败,那么BGP转至Active(活跃)状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态。

3)Active状态

Active(活跃)状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。在Active状态下,BGP总是在试图建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态;如果TCP连接失败,那么BGP停留在Active状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。

4)OpenSent状态

在OpenSent(开放集)状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、Holdtime等进行检查。如果收到的Open安博文正确,那么BGP发送KeepAlive报文,并转至OpenConfirm(打开确认)状态;如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至IdIe状态。

5)OpenConfirm状态

OpenConfirm(打开确认)状态下,BGP等待KeepAlive或Notification报文。如果收到KeepAlive报文,则转至Established(确认)状态;如果收到Notification报文,则转至ldle状态。

6)Established状态

在Established(确认)状态下,BGP可以在对等体之间交换Update、KeepAlive、Route-refresh报文和Notification报文。如果收到正确的Update或KeepAlive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接;如果收到错误的Update或KeepAlive报文,那么BGP发送Notification报文通知对端,并转至ldle状态。

注意:Route-refresh报文不会改变BGP状态。如果收到Notification报文,那么BGP转至ldle状态。如果收到TCP拆链通知(FIN),那么BGP断开连接,转至ldle状态。

在BGP对等体建立的过程中,通常可见的三种状态是ldle、Active、Established。BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

(3)BGP数据库

BGP数据库是BGP正常工作所需要的存储空间,基于保存的内容不同,可分为如下几种:

1)IP路由表

全局路由信息库,包括所有最优的IP 路由信息。

2)BGP路由表

BGP路由信息看,包括本地BGP Speaker 通告的路由信息,将其中最优路由添加到IP路由表中。

3)邻居表

对等体邻居清单列表,包括对等体两端的邻居信息及邻居列表。

4)adi-RIB-IN

对等体宣告给本地speaker的未处理的路由信息库

5)adj-rib-out

本地speaker宣告给指定对等体的路由信息库。

(4)BGP邻居关系类型

在BGP中大致可分为两种邻居关系:

IBGP:同一个AS内部的BGP邻居关系,IBGP邻居通常是指运行BGP协议的对等体两端均在同一个 AS域内,属于同于一个BGP AS内部;

IBGP:同一个AS内部的BGP邻居关系,IBGP邻居通常是指运行BGP协议的对等体两端均在同一个AS域内,属于同一个BGP AS内部;

EBGP:AS之间的BGP邻居关系,EBGP邻居通常是指运行BGP协议的对等体两端分别在不同的AS内;

注意:IGP协议建立邻居一般要求三层直连,并且通过广播或组播建立邻居。而BGP的邻居关系是基于TCP的,也就是说只要TCP/IP可达,无论是否直连,BGP对等体彼此之间就可以建立邻居关系。所以BGP建立邻居之前首先要考虑的就是对等体之间的路径可达(是否存在路由)。务必要通过IGP或者静态路由使对等体两端互通。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BGP中的Keepalive是一种定期发送的报文,用于维持BGP邻居关系。如果收到正确的Update或Keepalive报文,BGP就认为对端处于正常运行状态,并保持BGP连接。Keepalive报文的格式只包含报文头,没有附加其他任何字段。该报文的目的是确保BGP会话的连通性,并及时检测到邻居的异常情况。如果收到错误的Update或Keepalive报文,BGP将发送Notification报文通知对端,并转至Idle状态。而Route-refresh报文不会改变BGP状态。如果收到Notification报文,BGP会转至Idle状态。另外,如果收到TCP拆链通知,BGP会断开连接并转至Idle状态。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [BGP的5种交互报文、6种状态机、对等体关系建立与路由交互过程介绍](https://blog.csdn.net/qq_45443704/article/details/129895505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [BGP基础](https://blog.csdn.net/zljszn/article/details/124732057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值