BGP路由协议(一):基本概念

发布于:2025-08-29 ⋅ 阅读:(19) ⋅ 点赞:(0)

###BGP概述

BGP的版本:

  1. BGP-1 RFC1105
  2. BGP-2 RFC1163
  3. BGP-3 RFC1267
  4. BGP-4 RFC1771 1994年
  5. BGP-4 RFC4271 2006年
    AS Autonomous System 自治系统:由一个单一的机构或者组织所管理的一系列IP网络及其设备所构成的集合
    根据工作范围的不同,动态路由协议可以分两类:
    a. IGP Interior Gateway Protocol 内部网关协议
    ⅰ. RIP
    ⅱ. OSPF
    ⅲ. IS-IS
    b. EGP Exterior Gateway Protocol 外部网关协议
    ⅰ. BGP

BGP Border Gateway Protocol 边界网关协议
6. BGP使用TCP作为传输层协议 TCP端口 179
7. 建立对等体关系后,只发送增量更新或者在需要时进行触发性更新
8. BGP采用认证和GTSM的方式,保证了网络的安全性
9. BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且指导邻居按策略发布路由
10. BGP提供了路由聚合和路由衰减功能,用于防止路由震荡,提高了网络的稳定性

###BGP对等体关系类型

  1. BGP的对等体关系不要求设备必须直连
  2. BGP基于TCP 179 端口建立连接

BGP两种对等体关系:

  1. EBGP External BGP Peer 如果建立对等体关系的两台路由器位于不同的AS,那么他们之间的关系被称为EBGP对等体关系
    a. EBGP对等体之间发送的BGP协议报文的TTL值默认为1,可以修改
    b. 通常情况下,EBGP对等体关系基于直连接口建立
  2. IBGP Internal BGP Peer 如果建立对等体关系的两台BGP路由器位于相同的AS,那么他们之间的关系被称为IBGP对等体关系
    a. IBGP对等体不要求路由器必须路直连

###BGP邻居建立

  1. eBGP:运行于不同AS之间的BGP称为eBGP。为了防止AS间产生环路,当BGP设备接收eBGP对等体发送的路由时,会将带有本地AS号的路由丢弃
  2. iBGP:运行在相同AS之内BGP称为iBGP,为了防止AS内产生环路,在AS内需要保持全连接的iBGP邻居

###BGP的路由标识(RouterID)

BGP的RouterID是一个用于标识BGP设备的32位的值,通常是IPv4地址的格式,在BGP会话建立时发送的Open报文携带。对等体之间会话建立,每个BGP设备都必须有唯一的RouterID,否则对等体之间无法建立连接
BGP RouterID可以通过两种方式获取:

  1. BGP自动选取
  2. 手工配置
    缺省情况下,BGP选中设备上Loopback接口的IPv4地址作为BGP设备的RouterID,如果没有配置Loopback接口,系统会选择接口中最大的地址作为BGP的RouterID。一旦选出RouterID,除非发生进程重启或者接口地址删除,否则即时配置了更大的地址,也保持原来的RuterID

###BGP有线状态机

  1. Idle
    a. BGP空闲状态,在Idle状态下,BGP拒绝邻居发送的连接请求,此时等待由BGP系统发出的Start事件
    b. Strat事件发生后,BGP会对自己的资源进行初始化,重置连接计时器(Connect Retrt 默认为32s),发起TCP连接请求,并且开始侦听远端对等体发起连接的端口,并转至Connect状态
    c. Start事件是一个由操作者配置一个BGP过程,或者重置一个已经存在的过程,或者路由器软件重置BGP过程引起的
    d. 任何状态中收到Notification报文或者TCP拆除链路通知等Error事件后,BGP都会转至Idle状态
  2. Connect
    a. 在Connect状态下,BGP启动重传定时器,等待TCP完成连接
    b. 如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态
    c. 如果TCP连接失败,那么BGP转至Active状态
    d. 如果连接重传定时器超时,BGP任没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态
    e. 如果发生其他事件(如BGP系统或者操作者人员启动的),则退回Idle状态
  3. Active
    a. 在Active状态,BGP总是在试图建立TCP连接
    b. 如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态
    c. 如果TCP连接失败,那么BGP停留在Active状态
    d. 如果重传定时器超时,任没有收到BGP对等体的响应,那么BGP转至Connect状态
    e. 如果发生其他事件 如BGP系统或者操作者人员启动的),则退回Idle状态
    f. 如果邻居状态在Connect和Active来回切花,有可能是TCP重传次数过多或者IP地址不可达造成的
  4. OpenSent
    a. 在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查
    b. 如果收到的Open报文正确,那么BGP发送Keepalive报文,且重置Keepalive定时器,并转至OpenConfirm状态
    c. 如果收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态
  5. OpenConfirm
    a. 在OpenConfirm状态下,BGP等待keepalive或Notification报文,如果收到keepalive报文,则转至Established,如果收到Notification报文,则转至Idle状态
  6. Established
    a. 在Established状态下,BGP可以和对等体交换Update、Keepalive、Router-refresh报文和Notification报文
    b. 如果收到正确的Update或keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接
    c. 如果收到错误的Update报文或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态
    d. Route-refresh报文不会改变BGP状态
    e. 如果收到Notification报文,那么BGP转至Idle状态
    f. 如果收到TCP拆除链接通知,那么BGP将断开连接,转至Idle状态

在这里插入图片描述

###BGP邻居无法建立的因素

处于Idle、Connect、Active状态,说明BGP会话没有建立成功,处于OpenSent、OpenConfirm则说明邻居协商出现问题:

  1. 两边BGP Peer地址不可达,一般是因为底层原因或者缺少可达的路由
  2. 对等体AS配置错误
  3. eBGP跳数问题
  4. 更新源问题
  5. BGP的认证错误
  6. Open报文协商失败,Open报文需要协商BGP版本,Holdtime、RouterID以及可选项参数等
  7. BGP的RouterID冲突
  8. 联盟与非联盟之间的BGp连接配置错误
  9. 错误报文导致连接中断,比较少见的比如BGP的Marker值出现错误

###BGP对等体之间交互原则

BGP设备将最优路由加入BGP路由表,形成BGP路由,BGP设备与对等体建立邻居关系后,采取以下交互原则

  1. 从iBGP对等体收到的路由,BGP设备只发布给他的eBGP对等体
  2. 从eBGP对等体收到的路由,BGP设备发布给它所有的eBGP和iBGP对等体
  3. BGP设备只将最优路由发布给对等体
  4. 路由更新时,BGP设备只发送跟新的BGP路由
  5. 所有对等体发送的路由,BGP设备都会接收

BGP水平分割

IBGP水平分割用于解决BGP路由在一个AS内传递时,发生环路的问题
IBGP水平分割:BGP规定,当路由器从一个IBGP对等体学习到某条BGP路由时,他将不能再把这条路由通告给任何IBGP对等体

路由黑洞问题以及BGP同步规则

为了避免路由黑洞问题,BGP引入了同步规则(BGP Synchronization)
BGP同步规则:当一台路由器从自己的IBGP对等体学习到一条BGP路由时,它将不能使用该条路由或者把这条路由通告给自己的EBGP对等体,除非他又从IGP(ospf、静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步

解决路由黑洞的三种方案:

  1. AS内所有路由器都运行BGP
  2. 开启BGP同步规则(华为设备默认关闭同步规则)
  3. MPLS

路由通告

BGP路由在对等体之间交互路由时,有以下几个原则:

  1. 只将最优的路由加载到路由表中使用(激活了负载分担功能的情况下除外),而且只会将最优的路由通告给BGP对等体
  2. 当一台路由器从自己的EBGP对等体学习BGP路由时,默认会将这些路由通告给所有IBGP对等体以及EBGP对等体
  3. 当一台路由器从自己的IBGP对等体学习到BGP路由时,他不会将这些路由通告给其他IBGP对等体–水平分割使然
  4. 当一台路由器从自己的IBGP对等体学习到BGP路由时,如果BGP同步规则被激活,则路由器只有从IGP协议也学习到相应的路由时,才会将这些BGP路由通告给EBGP对等体;如果BGP同步规则被关闭,则即使没有从IGP协议学习到相应的路由,他也会将这些BGP路由通告给EBGP对等体
    注意:华为路由器默认关闭BGP同步规则

AS号

BGP私有AS号的范围是64512-65534。这些AS号可以由私人组织自行使用。


网站公告

今日签到

点亮在社区的每一天
去签到