BGP笔记+BGP基础实验

本文详细介绍了BGP协议的概念、AS的划分、两种运行方式IBGP和EBGP,以及BGP的高可控性和高可靠性特性。重点讨论了BGP的路由传递、状态机、路由黑洞问题及其解决方法,包括水平分割和BGP联邦/反射器的应用。
摘要由CSDN通过智能技术生成

BGP笔记

概念

边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议。

  • AS(Autonomous system):自治系统,指在一个(有时是多个)组织管辖下的所有IP网络和路由器的全体,它们对互联网执行共同的路由策略。也就是说,对于互联网来说,一个AS是一个独立的整体网络。而BGP实现的网络自治也是指各个AS自治。每个AS有自己唯一的编号。

  • IGP(Interior Gateway Protocol):内部网关协议,在一个AS内部所使用的一种路由协议。一个AS内部也可以有多个路由器管理多个网络。各个路由器之间需要路由信息以知道子网络的可达信息。IGP就是用来管理这些路由。代表的实现有RIP和OSPF。

  • EGP(Exterior Gateway Protocol):外部网关协议,在多个AS之间使用的一种路由协议,现在已经淘汰,被BGP取而代之

为了区分不同的AS,网络世界提出了AS号---0-65535

0和65535一般做完保留AS号

1-65534

1-64511---公有AS号

64512-65534---私有AS号

拓展AS号:将原本16位AS号拓展到32位

BGP有两种运行方式,当BGP运行于同一AS内部时,被称为IBGP(Internel BGP,内部边界网关协议);当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)

BGP特性

高可控性---BGP设计了很多路径属性,可以通过路由策略关联这些属性达到路由控制的效果

BGP传递一定是路由条目信息

BGP没有使用周期更新传递路由信息

BGP存在触发更新

BGP建邻BGP在传输层使用TCP进行传输 :179

BGP建邻时必须指定建邻的对象,BGP支持非直连建邻

BGP--无类别的路径矢量协议

BGP在传递路由条目信息时携带子网掩码

BGP默认情况下不支持负载均衡,BGP会根据传递过来的路由信息中携带的路径属性,选择最优的路由信息加载到路由表中。

BGP把一个AS看作一个整体

RIP(IGP)实际上是一个算法的概念,BGP不是一个算法的概念,BGP也不需要计算路由信息,只负责转发路由信息

高可控性--路径属性

高可靠性---TCP

两个规则

EBGP对等体---一般建议采用直连建立对等体关系

IBGP[对等体---一般建议采用非直连建邻

BGP为了实现这两个规则:BGP规定EBGP对等体之间发送的数据包中携带的TTL值为1

而IBGP对等体之间传递的数据包TTL值为255

BGP报文

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

  • Update报文:用于在对等体之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。

  • Notification报文:当BGP检测到错误状态时,就向对等体发出Notification报文,之后BGP连接会立即中断。

  • Keepalive报文:BGP会周期性地向对等体发出Keepalive报文,用来保持连接的有效性。

  • Route-refresh报文:Route-refresh报文用来请求对等体重新发送所有的可达路由信息。

BGP状态机

BGP有限状态机共有六种状态,分别是Idle、Connect、Active、Open-Sent、Open-Confirm和Established。

在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。

  • Idle状态下,BGP拒绝任何进入的连接请求,是BGP初始状态。

  • Connect状态下,BGP等待TCP连接的建立完成后再决定后续操作。

  • Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。

  • Open-Sent状态下,BGP等待对等体的Open报文。

  • Open-Confirm状态下,BGP等待一个Notification报文或Keepalive报文。

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

BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息

过程

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 状态。

BGP路由黑洞

背景

建立BGP传递路由的路由器被称为BGP对等体,而根据双方所处AS域是否为同一个可以将BGP对等体分为IBGP和EBGP。

对于EBGP而言,当其收到一条路由时,它会检查该路由中路径属性中的AS_PATH值,如果发现含有自己AS号的AS_PATH,就代表自己已经从别的地方学习到这条路由,为了防止环路,那么它就不会将这条路由放入自己的路由表中。

而对于IGP而言,为了防止AS内出现环路,IBGP设计了水平分割规则。该规则是指:从IBGP学习到的路由,无法传递给其他的IBGP。这样,就避免了IBGP环路的出现。 此外,由于BGP基于TCP建立,因此并不要求IBGP之间必须直线链接,只要IBGP路由器之间互相存在对方的路由,那么他就可以建立IBGP关系。这种模式,既使得BGP建立更加灵活,但是同时也使得在路由信息的传递与数据包的实际路线之间不完全吻合,即路由黑洞问题。

问题

实际上就是BGP在路由传递过程中跨过中间路由器,从而导致了在数据包发送的时候中间的路由器无法收到路由信息,从而导致数据包转发失败的现象

img

在上图中,用不同颜色的背景表示不同的AS域,黑线表示EBGP关系,白线表示IBGP关系,现在如果要实现AS200和AS300之间的通信,则必须要跨越AS100。建立如上的BGP关系,AS200的路由会传递给AR1,而AR1又会将AS200的路由传递给AR3,AR3又将其传递给AR5,AS300也会采取类似的行为传递给AS200。这样,AS200和AS300之间就有互相的路由了。但是这样AS200和AS300之间就能够正常通信了吗?有兴趣的同学可以实际做一下这个实验,发现AS200和AS300之间不能正常通信。究其原因,就在于AR2和AR6没有AS200和AS300的路由。BGP路由是在AR1和AR3之间直接进行传递的,因此并没有告知AR2和A6。这样一来,AS200和AS300之间就不能正常通信了。 因此,BGP路由黑洞问题,是基于BGP协议路由传递特点产生的,在配置BGP相关内容时容易出现的数据包不通问题。并不是BGP协议的内部缺陷,也是可以通过一些方法和手段来解决和克服的。

解决方法

1、将BGP路由引入IGP 这是一种很直观的解决思路,但是IGP的路由表大小是有限制的,而BGP路由一般又有很多,因此这种办法虽然可以解决问题,但是不适合与实际情景。 2、建立IBGP关系 除了这种方法之外,还能够直接想到的就是R2和R6也建立IBGP邻居关系,这样R2和R6就能够有AS200 和AS300 的路由了。但是,这样做也会出现问题。如果R2和R6之间IBGP关系这样构建(在下图中,白线代表IBGP关系):

在这里插入图片描述

由于我们前面介绍的,BGP水平分割问题,R1会把AS200的路由传递给R2和R3,但是R2不会将从IBGPR1学习到的路由传递给R6。同理,R2也学习不到AS300的路由,因此,该建立方式还是不能解决问题。那么应该如何建立呢?

在这里插入图片描述

这种建立方式,就可以解决上述问题了,但是我们反过来看一下这种结局问题的方式,AS100只有4个路由器,但是IBGP对等体却足足建立了6条,如果AS100内路由器数量继续增多,那么就要建立更多的IBGP对等体,实现起来也比较困难。 3、BGP联邦和BGP反射器 为了简化上述方案的配置,BGP引入了联邦和反射器的配置概念,通过合理的配置BGP联邦和反射器,可以使得一些从IBGP学习到的路由传递给IBGP,这样,就可以由上述方案的第二种IBGP建立方式转换成第一种IBGP建立方式了,这样就可以节省下一部分路由了。 4、MPLS 除了上述解决方案之外,还可以用MPLS来解决路由黑洞问题,通过在AS100上运行MPLS,AS100内在转发AS200和AS300的流量时,会通过标签进行转发,这样就不用担心R2和R6的路由表上是否有AS200和AS300的路由了。

BGP的的防环--水平分割

EBGP

bgp为了解决EBGP路由环路问题,设计了一个AS-PATH属性,设备在发出AS时会携带本AS的AS号,当路由信息携带该AS号,那么对于该AS的设备不会接收该路由。后转发的AS号在前面。同时AS-Path属性也是BGP的一个选路依据,当其他属性一致时,会选择AS-path属性更短的路径

IBGP的水平分割

现象;当运行BGP的设备从IBGP对等体处学习到一条IBGP路由,那么将不在转发给其他IBGP对等体

解决方案---在IBGP对等体之间构建全连的IBGP对等体关系

缺点;

1.增加拓扑的复杂性导致网络可拓

展性变差,

2.增大了资源占用

基础配置

1,实验目的

通过bgp实现全网可达,as200用ospf连通

2,实验步骤

1,配置ip

例如r1的配置

最终结果如图所示

2,配置ospf

R2配置
ospf 1 
 area 0.0.0.0 
  network 2.2.2.2 0.0.0.0 
  network 23.0.0.0 0.0.0.255 
R3配置
ospf 1 
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 23.0.0.0 0.0.0.255 
  network 34.0.0.0 0.0.0.255 
R4配置
ospf 1 
 area 0.0.0.0 
  network 4.4.4.4 0.0.0.0 
  network 34.0.0.0 0.0.0.255 

3,配置BGP

所有设备均运行BGP,防止路由黑洞

4,发布路由

[r1-bgp]network 1.1.1.0 24
[r2-bgp]network 1.1.1.0 24
[r2-bgp]peer 3.3.3.3 next-hop-local
[r2-bgp]peer 4.4.4.4 next-hop-local
[r5-bgp]network 5.5.5.0 24
[r5-bgp]network 100.0.0.0 24
[r4-bgp]network 5.5.5.0 24
[r4-bgp]network 100.0.0.0 24
[r4-bgp]peer 2.2.2.2 next-hop-local
[r4-bgp]peer 3.3.3.3 next-hop-local
[r2-bgp]import-route ospf 1 
[R1]ip ip-prefix aaa permit 172.16.0.0 16 greater-equal 24 less-equal 24
[R1]route-policy aaa permit node 10
[R1-route-policy]if-match ip-prefix aaa
[R1-bgp]import-route direct route-policy aaa

5,检测

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值