BGP协议

一、BGP基本概述

1.BGP基本作用

BGP的前身EGP设计得非常简单,只能在AS之间简单地传递路由信息,不会对路由进行任何优选,也没有考虑如何在AS之间避免路由环路等问题,因而EBP最终被BGP取代。

相比于EGP,BGP更具有路由协议的特征,如下:

@邻居的发现与邻居关系的建立;

@路由的获取,优选和通告;

@提供路由环路避免机制,并能够高效传递路由,维护大量的路由信息;

@在不完全信任的AS之间提供丰富的路由控制能力。

@使用BGP作为传递路由的协议,则用户的路由域被作为一个整体和其他路由域进行路由交换,这个路由域即AS。AS的概念是若干台路由器以及这些路由器组成的网络集合,这些路由器均属于同一个管理机构,并执行统一的路由策略。

@运行BGP协议需要一个统一的自治系统号来标识路由域,即AS编号。每个自治系统都有唯一的一个编号,这个编号由IANA分配。2009年1月之前,只能使用最多2字节长度的AS号码,即1-65535。其中1-64511为公有AS,64512-65534为私有AS。在2009年1月之后,IANA决定使用4字节长度AS,范围是65536-4294967295。

2.BGP协议特点

@因为是在AS之间传递路由,为保证数据的可靠性,BGP使用TCP作为其承载协议建立连接。因此与IGP逐跳路由器建立邻居不同,BGP可以跨越多跳路由器建立邻居关系。

@AS之间的路由器是不完全相互信任的,为实现路由按需求进行控制和优选,BGP设计了诸多属性。

二、BGP邻居关系的建立与配置

1.BGP邻居发现

BGP协议被设计运行在AS之间传递路由,AS之间是广域网链路,数据包在广域网上传递是可能出现不可预测的链路拥塞或丢失等情况,因此BGP使用TCP作为其承载协议来保证可靠性。

BGP使用TCP封装建立邻居关系,端口号为179,TCP采用单播建立连接,因此BGP协议并不像RIP和OSPF一样使用组播发现邻居。单播建立连接也使BGP只能手动指定邻居。

2.BGP邻居类型-EBGP

EBGP只用于不同AS之间传递路由。如图,AS 100内的RTB与BTC分别从AS 200与AS 300学习到不同的路由,怎么实现AS 200与AS 300之间路由在AS 100内的交换?

@在AS 100内实现将学到的AS 200和AS 300路由进行交换,可以在拓扑中的RTB与RTC路由器上将BGP的路由引入IGP协议(图中为OSPF协议),再将IGP协议的路由在RTB与RTC路由器上引入回BGP协议,实现AS 200与AS 300路由的交换。

上述方法存在以下几个缺点:

@公网上BGP承载的路由数目非常大,引入IGP协议后,IGP协议无法承载大量的BGP路由;

@BGP路由引入IGP协议时,需要做严格的控制,配置复杂,不易维护;BGP携带的属性在引入IGP协议时,由于IGP协议不能识别,可能会丢失。

@因此我们需要设计BGP在AS内部完成路由的传递。

3.BGP邻居类型-IBGP

如上图,因为BGP使用TCP作为其承载协议,所以可以跨设备建立邻居关系。如图所示,RTB与RTC之间建立IBGP邻居关系,并各自将从其他AS学到的路由传递给对端,实现BGP路由在AS内的传递。

4.BGP邻居关系配置

配置步骤:

@配置Router ID(标识路由器);

@配置EBGP邻居关系(AS之间传递路由);

@配置IBGP邻居关系(AS内部传递路由)。

配置解释:

@如果没有配置Router ID,BGP路由器会按一定规则自动选举Router ID,选举规则如下:

@路由器在它的所有LoopBack接口上选择数值最高的IP地址;

@如果没有LoopBack接口,路由器会在它的所有物理接口上选择数值最高的IP地址。

@配置命令:router id X.X.X.X

@BGP邻居关系的类型主要靠配置的AS号区别,peer关键字后面是对端邻居的接口IP地址,as-number后面是邻居路由器所在的AS号,AS号相同则为IBGP邻居关系;AS号不同,则为EBGP邻居关系。

@peer关键字后面是对端邻居的更新源IP地址,标识自己向对端邻居发起TCP连接的目的地址。该地址可以是对端邻居直连接口的IP地址,也可以是非直连LoopBack接口的IP地址(但必须保证该IP地址路由可达)。建立IBGP邻居关系时,一般使用LoopBack接口的IP地址,因为LoopBack接口开启后一直处于UP状态,只要保证路由可达,邻居关系一直处于稳定状态;而建立EBGP邻居关系时,一般使用直连接口的IP地址,因为EBGP是跨AS建立邻居关系,邻居关系建立之前非直连接口之间的路由不可达。

5.BGP协议邻居关系配置优化

建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用Loopback接口的IP地址。

6.BGP邻居关系建立

BGP通过报文的交互完成邻居建立、路由更新等操作,共有Open、Update、Notification、Keepalive和Route-refresh等5种报文类型。

1>Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系。BGP邻居在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。

2>Update报文:用于在BGP邻居之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。

@一条Update报文可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update报文里的路由属性适用于该Update报文中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)。

@一条Update报文可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚地定义了BGP路由器之间先前通告过的路由。

@一条Update报文可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。

3>Notification报文:当BGP路由器检测到错误状态时,就向邻居发出Notification报文,之后BGP连接会立即中断。

4>Keepalive报文:BGP路由器会周期性的向邻居发出Keepalive报文,用来保持连接的有效性。

5>Route-refresh报文:Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。

BGP路由器报文交互过程:

Idle状态是BGP初始状态。在Idle状态下,BGP路由器拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP路由器才开始尝试与其邻居进行TCP连接,并转至Connect状态。

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

如果TCP连接成功,那么BGP路由器向邻居发送Open报文,并转至OpenSent状态。

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

如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态。

在Active状态下,BGP路由器总是在试图建立TCP连接。

如果TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态。

如果TCP连接失败,那么BGP路由器停留在Active状态。

如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值