BGP基础

BGP概述

BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议

BGP的特点:

  1. 使用TCP作为其传输层协议(端口号为179),使用触发式路由更新
  2. 能够承载大批量的路由信息,能够支撑大规模网络
  3. 提供了丰富的路由策略,能够灵活的进行路由选路,并能指导邻居按策略发布路由
  4. 能够支撑MPLS/VPN的应用,传递客户VPN路由
  5. 提供了路由聚合和路由衰减功能用于防止路由振荡,能有效地提高网络稳定性

BGP特征1

使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立

运行BGP的路由器被称为BGP发言者(BGP Speaker)或BGP路由器

两个建立BGP会话的路由器互为邻居(Peer),BGP邻居间交换BGP路由表

BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)

BGP能够承载大批量的路由前缀,可以在大规模网络中应用

BGP特征2

BGP被称为路径矢量路由协议

每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过这些路径属性控制路径选择,而不像IS-ISOSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式。

BGP对等体关系

BGP的会话是基于TCP建立的,建立BGP对等体关系的两台路由器并不要求必须直连

BGP存在两种对等体关系类型:EBGPIBGP

EBGPExternal BGP):位于不同自治系统的BGP路由器之间BGP对等体关系。两台路由器之间要建立EBGP对等体关系,必须满足两个条件

两个路由器所属 AS 不同(即 AS 号不同)。
在配置 EBGP 时, 要求两端的IP路由可达,并且 TCP 连接能够正确 建立
IBGP(Internal BGP ):位于相同自治系统的 BGP 路由器之间的 BGP 邻接关系



BGP对等体关系建立

先启动BGP的一端先发起TCP连接

首先R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立

三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接。

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

BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体。

TCP连接源地址

AS 内部,网络具备一定的冗余性。在 R1 R3 之间,如果采用直连接口建 IBGP 邻居关系,那么一旦接口或者直连链路发生故障, BGP 会话也就断了,但是事实上,由于冗余链路的存在, R1 R3 之间的 IP 连通性其实并没有 DOWN (仍然可以通过 R4 到达 彼此)
BGP 使用报文出接口作为 TCP 连接的本地接口
在建立IBGP对等体关系时,建议使用Loopback地址作为更新源地址。 Loopback 接口非常稳定,而且可以借助 AS 内的 IGP 和冗余拓扑来保证可靠性
在建立EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题

BGP报文类型

BGP存在5种类型

报文名称

作用

发送时刻

Open

协商BGP对等体参数,建立对等体关系

BGP TCP连接建立成功之后

Update

发送BGP路由更新

BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文

Notification

报告错误信息,中止对等体关系

BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体

Keepalive

标志对等体建立,维持BGP对等体关系

BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接

Route-refresh

用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文

当路由策略发生变化时,触发请求对等体重新通告路由

BGP状态

 

Peer状态名称

用途

Idle

开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源

Connect

正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接

Active

TCP连接没建立成功,反复尝试TCP连接

OpenSent

TCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立

OpenConfirm

参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive

Established

已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息

Idle状态

没有去往BGP对等体的路由,导致BGP路由器状态一直处于idle状态

Connect状态

BGP启动连接重传计时器,等待TCP连接成功

TCP连接成功,BGP向邻居发送open报文,转至opensent

TCP连接失败,转至Active

重传连接计时器超时,如果还没收到邻居的回应,继续和别的邻居进行TCP连接,停在connect

配置完BGP邻居并成功查找到去往邻居地址的路由之后,会发起TCP三次握手,TCP三次握手建立过程中处于Connect状态,如果TCP连接长期无法建立则进入Active状态。

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

TCP连接成功,BGP向邻居发送open报文,关闭重传计时器,转至opensent

TCPl连接失败,BGP会停留在Active

重传计时器超时,仍然没有收到邻居的回应,回到connect

OpenSent状态

BGP路由器等待邻居的open报文,并对收到open报文中的AS号,版本号,认证码等信息检查

当收到的open报文正确,对邻居发送keeplive,转至openconfirm

当收到错误的open报文,对邻居发送notification,回到idle

openconfirm状态

BGP路由器等待keep live或者notification报文,收到keep live报文转至established,收到notification报文,回到idle

establish状态

收到正确的update或者keep live,BGP路由器认为邻居处于正常状态,保持tcp连接

收到错误的update或者keep live,BGP路由器会向邻居发送notification报文,回到idle

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

收到Notification报文,BGP转至Idle状态

如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态

BGP通告原则

1.只发布最优且有效(即下一跳地址可达)路由。

2.从EBGP对等体获取的路由,会发布给所有对等体

如上图,R2EBGP邻居(R1)获取的BGP路由,会发布给所有EBGPIBGP对等体。

3.从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体

如图所示,如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体:

R2将一条路由传递给了IBGP对等R3

R3收到路由之后传递给IBGP对等R1

R1继续传递给IBGP对等R2

这种情况已经产生了路由环路,所以从IBGP对等体获取的BGP路由,不能发送给其他IBGP对等体

,否则产生路由环路

第三条原则可能会带来新的问题

上图,当BGP路由器R2路由传递给BGP路由器R1由于第三条原则限制,R1无法将BGP路由传递给R3R3无法学习到路由

方法:采用ASIBGP全互联

R2R3之间建立非直连的IBGP邻居关系

BGP同步

当一台路由器从自己的IBGP邻居学习到一条BGP路由时(IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(OSPF,静态路由)学习到这条路由

AS200域内未运行BGP的路由器并无从BGP学习到的路由条目,查找路由失败,导致R1丢弃报文

BGP的路由条目也存在于IGP路由表时才对外发送

如上图,当R3查看IGP路由表,OSPF路由表中并无路由10.0.4.0/24,因此并不会向R5发送该路由,也不会产生后续的访问失败

解决方法:

将BGP路由重分发到IGP(已经淘汰)

建立全互联的IBGP对等体关系,让全网所有路由器都拥有BGP路由(推荐方案)

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值