searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

BGP协议学习

2023-09-01 10:07:33
36
0

1. 什么是BGP?

边界网关协议(Border Gateway Protocol,BGP)是一种路由选择协议,用于在路由选择域之间交换网络层可达性信息。路由选择域经常被称为自治系统AS(Autonomous System)。

2. 为什么需要BGP?

与BGP相对的路由选择协议是IGP(Interior Gateway Protocol,内部网关协议),用于在路由选择域内交换网络层可达性信息。

IGP有:

  • 距离矢量协议,例如路由信息协议(Routing Information Protocol, RIP)。
  • 链路状态协议,例如开放式最短路径优先(Open Shortest Path First, OSPF)协议和中间系统到中间系统(Intermediate System to Intermediate System, IS-IS)协议。

上述协议的共同目标是解决路由选择域内路径最优化的问题,而不同的域通常需要不同的路由选择策略和管理策略,BGP的目标是提供策略控制能力和可扩展性。

根据BGP作用域的不同可分为IBGP和EBGP,当BGP运行于同一AS内部时,为IBGP(Internel BGP,内部边界网关协议),当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)。

3. BGP的工作方式

Speaker角色发送BGP报文的路由设备称为BGP发言者(Speaker),主要工作为接收或产生新的路由信息,并发布(Advertise)给其它BGP Speaker。

BGP的运行方式是通过报文实现的,共有五种报文类型。

  • Open:TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系;
  • Update:用于在对等体之间交换路由信息。
  • Notification:检测到错误状态时,就向对等体发出Notification报文,之后BGP连接会立即中断。
  • Keepalive:BGP会周期性地向对等体发出Keepalive报文,用来保持连接的有效性。
  • Route-refresh:Route-refresh报文用来请求对等体重新发送所有的可达路由信息。

整体流程图:

  1. BGP传输层协议是基于TCP实现的,在建立BGP对等体之前,会进行TCP连接;
  2. BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。
  3. 建立连接后,BGP邻居之间交换整个BGP路由表。
  4. BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。
  5. 当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。

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报文交换路由信息。

0条评论
0 / 1000
贰拾画生
13文章数
0粉丝数
贰拾画生
13 文章 | 0 粉丝