BGP 路由协议详解-2

BGP工作流程

  1. 通过 TCP 建立 BGP 连接时,发送 Open 消息
  2. 连接建立后,如果有路由需要发送或者路由变化时,发送 Update 消息通告对端
  3. 稳定后要定时发送 Keepalive 消息以保持 BGP 连接的有效性
  4. 当本地 BGP 在运行发生错误时,要发送 Notification 消息告诉 BGP 对等体
  5. Route-refresh 消息用来通知对等体自己支持路由刷新



BGP 邻居状态机

  1. Idle:BGP连接的第一个状态。在空闲状态,BGP在等待一个启动事件。启动事件出现以后,BGP初始化资源,复位连接重试计时器,发送一条 TCP 连接,同时转入 Connect 连接状态


  2. Connect:在此状态,BGP发起第一个TCP连接,如果连接重试器超时,就重新发起TCP连接,并继续保持在 Connect 状态,如果TCP连接成功,发送 Open 消息转入OpenSent 状态,如果TCP连接失败,就转入Active状态,如果在 Active 状态一直连接不成功,退回到 Connect 状态之后,计时器超过之后会退回到 Idle 状态
    BGP发送第一个TCP连接成功之后会发送一个Open消息进入Opensent状态


  3. Active:在此状态,BGP总是在试图建立TCP连接,如果连接重试器超时,就退回到 Connect 状态,如果TCP连接成功,就会发送一个 Open 消息转入OpenSent 状态,如果TCP连接失败,就继续保持在 Active 状态,并继续发起 TCP 连接


  4. OpenSent:在此状态,TCP连接已经建立,BGP已经发送了第一个 Open 报文,剩下的工作,BGP就在等待其他对等体发送 Open 报文。并对收到的 Open 报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到 Idle 状态,如果没有错误,BGP就开始发送 Keepalive 报文,之后进入Open Confirm 状态


  5. OpenConfirm:在此状态,已经发送了 Keepalive 报文,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 Adj-in/out

当路由器R1给对端更新一条路由,路由器R2不会立马放入路由表

R2首先会放到 Adj-RIB-in 方向的数据库,之后在这里执行策略,Route-policy

执行完策略之后,加入R2的路由表 这是在 In 方向

当路由器R1给对端更新一条路由,先运行一个策略 Route-policy

之后放入 Adj-RIB-out,之后到RIB 这是在 Out 方向




BGP 路由黑洞问题

控制层面有路由,转发层面无路由(出现黑洞)

在这里插入图片描述

华为设备默认关闭同步,而且不能开启

思科设备可以通过命令开启同步完美解决问题

同步:收到的IBGP路由要不要转发给EBGP主要是看本地对于这条IBGP路由是否IGP可达,如果可达就会把这条IBGP路由发送给EBGP




BGP 路径属性

BGP 的策略属性工具最精华


公认必遵

所有BGP路由器都可以识别,且必须存在于Update消息中,如果缺少这种属性,路由信息就会报错

  • Origin
  • AS_Path
  • Next-Hop

公认任意

所有的BGP路由器都可以识别,但不要求必须存在于 Update 消息中,可以根据具体情况来决定是否添加到 Update 消息中

  • Local-Pref
  • Atomic_Aggregate 聚合

可选过渡

BGP路由器可以选择是否在 Update 消息携带这种属性,接受的路由器如果不识别这种属性,可以转发给邻居路由器,邻居路由器可能会识别这种属性(不认识 但会携带,会传递)

不能被所有的BGP路由器识别,如果无法识别会传递给邻居

  • Aggregator 聚合
  • Community 团体属性

可选非过渡

BGP路由器可以选择是否在 Update 消息携带这种属性,在整个路由发布的路径上,如果部分路由器不能识别这种属性,可能会导致该属性无法发挥作用,因此接受的路由器如果不识别这种属性,将丢掉这种属性,不必转发给邻居路由器(不认识,会携带,邻居不认识,直接丢弃)

不能被所有的BGP路由器识别,如果无法识别则丢弃该属性

  • MED
  • Originator ID
  • Cluster List

作者:DC

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值