BGP(Border Gateway Protocol) 边界网关协议 基础

20 篇文章 0 订阅
4 篇文章 0 订阅

BGP 概述
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的 高级路径矢量路由协议。

由来

为方便管理规模不断扩大的网络,网络被分成了不同的自治系统。1982年,外部网关协议EGP(Exterior Gateway Protocol)被用于实现在AS之间动态交换路由信息。

但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,

BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息

虽然BGP用于在AS之间传递路由信息,但并不是所有AS之间传递路由信息都需要运行BGP。比如在数据中心上行的连入Internet的出口上,为了避免Internet海量路由对数据中心内部网络的影响,设备采用静态路由代替BGP与外部网络通信。

自治系统AS(Autonomous System)

⦁    IANA(Internet Assigned Numbers Authority,因特网地址分配组织):IAB(Internet Architecture Board,因特网体系委员会)的下设组织。IANA授权NIC( Network Information Center,网络信息中心)和其他组织负责IP地址和域名分配,同时,IANA负责维护TCP/IP协议族所采用的协议标识符数据库,包括自治系统号。
⦁    在长度为16bit的AS号表示方式中:64512-65534为私有AS号,在长度为32bit的AS号表示方式中:4200000000-4294967294为私有AS号。

⦁    VPN(virtual private network,虚拟专用网):使用虚拟专业网络技术可以从逻辑上建立一个直接连接的网络。

BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性
1、BGP采用认证和GTSM的方式,保证了网络的安全性。
2、BGP提供了丰富的路由策略,能够灵活的进行路由选路。
3、BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
4、BGP使用TCP作为其传输层协议(端口号为179),并持BGP与BFD联动,提高了网络的可靠性。三次握手

 

 BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,

但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互。

BGP报文类型

⦁    不同于常见的IGP协议,BGP使用TCP作为传输层协议,端口号179,这使得BGP支持在非直连的路由器之间建立对等体关系。

BGP采用TCP作为传输层协议,两台路由器只要具备IP连通性,并且能够顺利地基于TCP179端口建立连接,就可以建立BGP对等体关系,因此BGP的对等体关系是可以跨设备建立的。

BGP报文
BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:


1、Open报文:
用于建立BGP对等体连接


2、Update报文:
用于在对等体之间交换路由信息。需要在BGP 中 network 才会有Update报文


3、Notification(通告)报文:
用于中断BGP连接


4、Keepalive报文:
用于保持BGP连接


5、Route-refresh(刷新)报文:
用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
可以抓取到  route-refresh 报文

 ⦁    Opt Parm Len:Optional parameters的长度。
⦁    Optional parameters:宣告自身对于一些可选功能的支持,比如认证、多协议支持。
除了IPv4单播路由信息,BGP4+还支持多种网络层协议(如IPv6、组播),在协商时BGP对等体之间会通过Optional parameters字段协商对网络层协议的支持能力。

⦁    Unfeasible routes length:不可达路由字段的长度,以Byte为单位。如果为0则说明没有Withdrawn Routes 字段。
⦁    Withdrawn Routes Length:标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。
Total path attribute length:路径属性字段的长度,以Byte为单位。如果为0则说明没有Path Attributes 字段。

⦁    在Open报文协商时会协商是否支持Route-refresh,如果对等体支持Route-refresh能力,则可以通过refresh bgp命令手工对BGP连接进行软复位,BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。
⦁    对于不支持Route-Refresh能力的BGP对等体,可以配置keep-all-routes命令,保留该对等体的所有原始路由,这样不需要复位BGP连接即可完成路由表的刷新。
缺省情况下未开启keep-all-routes。

BGP状态

 

  

BGP邻居建立状态:
idle:初始状态
connect:BGP等待TCP连接的建立
active:TCP连接失败,重新建立TCP连接
opensent:TCP建立成功,发送open报文
openconfirm:收到正确的OPEN报文
established:BGP邻居建立成功

1、Idle状态是BGP初始状态
在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect(连接)状态。Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。
任何状态中收到Notification(通告)报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态。
 


2、在Connect(连接)状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。


如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
如果TCP连接失败,那么BGP转至Active(活跃)状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。

3、在Active状态下,BGP总是在试图建立TCP连接。


如果TCP连接成功,那么BGP向对等体发送Open报文,关闭重传定时器,并转至OpenSent状态。
如果TCP连接失败,那么BGP停留在Active状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
 


4、在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查


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


5、在OpenConfirm状态下,BGP等待Keepalive或Notification报文。

如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
 


6、在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。


如果收到正确的Update或Keepalive报文,BGP就认为对端处于正常运行状态,将保持BGP连接。
如果收到错误的Update或Keepalive报文,BGP发送Notification报文通知对端,并转至Idle状态。
Route-refresh报文不会改变BGP状态。
如果收到Notification报文,那么BGP转至Idle状态。
如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。

常见的 三种状态 Idle, Active,Established

BGP邻居建立不成功的原因

BGP邻居建立不成功的原因

1.AS号或peer邻居地址出错;
2.BGP的router ID是否有冲突;
3.BGP对等体两端是否均采用环回口创建邻居;
4.物理上非直连的EBGP邻居是否配置多跳;
5.用于创建底层TCP的路由是否可达;
6.创建BGP对等体两端认证配置是否一致;
7.BGP对等体是否配置了peer x.x.x.x ignore
8.是否配置了禁止TCP端口179的ACL。

ignore的应用


需要短暂中断邻居会话且该邻居配置量较大时,通过执行命令peer ignore可以避免重新配置的工作量。

例如,在一段时间内,对端升级或调整链路导致邻居频繁建立连接时,为了避免路由或邻居关系频繁震荡,需要暂时中断BGP邻居,则可以在较稳定的一端使用该命令。


使用该命令可以停止与指定对等体(组)之间的会话,并且清除所有相关路由信息。对于一个对等体组,这就意味着大量与对端的会话突然终止。
R1:
bgp 100
peer 192.168.12.2 ignore
邻居关系会变成 idle

 

 

⦁    BGP对等体表的作用为列出本设备的BGP对等体,以及对等体的状态等信息。
⦁    MsgRcvd 、MsgSent:从对等体收到的报文个数,向对等体发送的报文个数。
OutQ:out queue,对外发送报文队列中排队的个数,一般为0。

 列出本设备发现的所有BGP路由,如果到达同一个目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由。

 通过display bgp routing-table ipv4-address { mask | mask-length } 可以显示指定IP地址/掩码长度的路由信息,在其中有关于该BGP路由的详细信息,如:路由始发者、下一跳地址、路由的路径属性等。

 

⦁    执行聚合之后,在本地的BGP路由表中除了原本的明细路由条目之外,还会多出一条聚合的路由条目。
⦁    如果在执行聚合时指定了detail-suppressed,则BGP只会向对等体通告聚合后的路由,而不通告聚合前的明细路由。
⦁    在聚合时配置了抑制明细路由的参数,R3上查看路由表,将只能看到BGP路由:10.1.0.0/22,无法看到聚合前的明细路由。

 

 

 

 

⦁    产生该问题根本原因为AS200域内未运行BGP的路由器并无从BGP学习到的路由条目,查找路由失败,导致R1丢弃报文

为此制定了BGP同步原则:
当BGP的路由条目也存在于IGP路由表时才对外发送,以图中场景为例,当R3查看IGP路由表,OSPF路由表中并无路由10.0.4.0/24,因此并不会向R5发送该路由,自然也不会产生后续的访问失败问题。
⦁    解决该问题的方式有:
⦁    将BGP路由重分发到IGP中,基本不会使用该方式。

建立全互联的IBGP对等体关系,让全网所有路由器都拥有BGP路由。

 如果没有配置Router ID,则BGP会自动选取系统视图下的Router ID作为BGP协议的Router ID。系统视图下的Router ID选择规则,请参见命令router-id中的描述。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奔跑的小迪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值