BGP

  • BGP概述
  • AS
  • BGP特点
  • BGP分类
  • BGP工作原理
  • 5种报文:
  • 6种状态
  • 建立对等体注意点
  • 配置


BGP概述

AS

1、AS是指有同一个技术管理机构管理、使用统一选路策略的一些路由器的集合
2、BGP网络中的每个AS都是被分配一个唯一的AS号,用于区分不同的AS

BGP特点

1、BGP能够承载大批量的路由信息,能够支撑大规模网络。
2、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性。
3、BGP是外部路由协议,用来在AS之间传递数据,对稳定性要求非常高。因此用Tce协议的高可靠性来保证BGP协议的稳定性。
4、BGP的对等体之间必须逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
5、BGP对等体和TGP对等体不同,BGP对等体(Peer)是指使用TcP建立连接的两端,而非与IcP同概念的直连邻居,只要nc能够建立连接并不一定需要直连。
6、BGP本身只负责控制路由,数据转发依然靠静态或IGP路由。
9、BGP是一种增强的距离矢量路由协议,从设计上避免了环路的发生。
10、AS之间:BGP通过携带As_Path信息标记途经的AS,带有本地As号的路由将被丢弃,从而避免了域间产生环路。
11、AS内部:BGP在AS内学到的路由不会再通告给As内的BGP邻居,避免了AS内产生环路。

BGP分类

BGP按照运行方式分为EBGP、IBGP
●EBGP:运行于不同As之间的BGP称为EBGP。为了防止AS间产生环路,当BCP设备接收EBGP对等体发送的路由时,会将带有本地x号的路由丢弃。
●IBGP:运行于同一AS内部的BGP称为IBGP。为了防止As内产生环路,BC设备不将从IEGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。

BGP工作原理

BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态和9个原则

5种报文:

Open报文:用于协商BGP对等体的各项参数,主要包括BGP版本(V4)、AS号等信息,建立BCP对等体连接。Open是TCP连接建立后发送的第一个报文
Update报文:用于在对等体之间交换路由信息,连接建立后,有路由需要发送或者路由变化时,发送Update通告对端可达或者撤销路由信息及路径属性。
Notification报文:用于中断BGP连接,当BGP在运行中发现错误时,发送Notification报文通告BGP对端,随后与之相关的邻居关系将被关闭。
Keepalive报文:用于保持BGP连接 (保活),定时发送Keepalive报文以保持BGP对等体关系的有效性。响应收到的正确的Open报文
Route-refresh报文:用于在改变路由策略后软复位BGP路由表请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文

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

6种状态

1、Idle状态:是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求只有在收到本设备的start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。

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

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

●如果TCP连接失败,那么BGP转至Active状态,反复尝试连接。

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

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

●如果TCP连接成功,那么BGP向对等体发送0pen报文,关闭连接重传定时器,并转至OpenSent状态。●如果TCP连接失败,那么BGP停留在Active状态。

●如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。

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

●如果收到的open报文正确,那么BGP发送Keepalive报文,并转至0penConfirm状态。

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

5、在openConfirm状态:Bc等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Bstablished状态,如果收到Notification报文,则转至Idle状态。

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

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

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

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

●如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。·Route-refresh报文不会改变BGP状态。

●Route-refresh报文不会改变BGP状态。

bgp对等体关系建立命 bgp对等体组什么作用_TCP

建立对等体注意点

一、建立IBGP对等体需要注意的点:
建立IBGP对等体时要让下一跳可达,处于边界的 IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体
二、用回环口建立邻居需要注意的点:
需要修改更新源,默认更新源是物理口,需要修改成回环口。建立IBGP对等体时要保障下一跳可达,处于边界的IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体
建立EBGP对等体时有无EBGP只能传一跳,因而,在建立EBGP对等体时,需要修改EBGP多条的跳数为2以上(自己环回到对端环回是两跳,默认一跳)
三、为什么要用环回口建邻居
因为环回口稳定,只要路由器启动着,环回口就不DOWN,而物理链路可能会收到线路或者接口等因素的影响导致对等体关系有问题,因而一般BGP建立对等体都是环回口来建

配置

bgp对等体关系建立命 bgp对等体组什么作用_TCP_02


拓扑图中,左右两侧分别有两个路由是使用RIP协议通信,中间三个路由是用OSPF进行通信,要实现图中任意两个路由器都可以互通。

首先在路由器的接口都配上IP并退出配上回环接口配上IP

然后将左右两侧的RIP协议的路由器配置完成,实现AS100里的两个路由器可以互通,AS300里的两个路由器可以互通

bgp对等体关系建立命 bgp对等体组什么作用_重传_03


bgp对等体关系建立命 bgp对等体组什么作用_重传_04

右侧AS 300也是如此,实现AS 300 内两个路由器可以互通

bgp对等体关系建立命 bgp对等体组什么作用_重传_05


下面配置AS 200里的三个路由器,实现AS 300里的三个路由器可以两两互通

bgp对等体关系建立命 bgp对等体组什么作用_TCP_06


下面两个路由器也是如此宣告,实现AS 200内路由器可以两两互通,可以找AS 200内的两个路由器ping一下看看能否ping通

bgp对等体关系建立命 bgp对等体组什么作用_重传_07


下面紧接着在EGBP上做静态路由,让这三个区域可以相连,后面在此基础上做BGP。此图应有四条静态路由。

bgp对等体关系建立命 bgp对等体组什么作用_bgp对等体关系建立命_08


紧接着配置BGP,因为此图中R2为外界IGBP所以需要指定R1的下一跳为自己

bgp对等体关系建立命 bgp对等体组什么作用_路由器_09


R2还是EBGP,使用还需要与AS 200的建立通信,配置时注意修改TTL

bgp对等体关系建立命 bgp对等体组什么作用_网络_10


AS200 和AS 300也是如此配置

bgp对等体关系建立命 bgp对等体组什么作用_重传_11


bgp对等体关系建立命 bgp对等体组什么作用_路由器_12


最后宣告网段,每个BGP都要宣告所有网段(如不想让外界ping通一些网段也可以保留)

bgp对等体关系建立命 bgp对等体组什么作用_bgp对等体关系建立命_13


bgp对等体关系建立命 bgp对等体组什么作用_路由器_14


bgp对等体关系建立命 bgp对等体组什么作用_TCP_15


bgp对等体关系建立命 bgp对等体组什么作用_路由器_16


最后查看路由表,看看有没有学到其他路由的IP

bgp对等体关系建立命 bgp对等体组什么作用_TCP_17