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

###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 边界网关协议

  1. BGP使用TCP作为传输层协议 TCP端口 179

  2. 建立对等体关系后,只发送增量更新或者在需要时进行触发性更新

  3. BGP采用认证和GTSM的方式,保证了网络的安全性

  4. BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且指导邻居按策略发布路由

  5. 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号可以由私人组织自行使用。

相关推荐
会员源码网5 分钟前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1211 小时前
已有安全措施确认(上)
大数据·网络
Fcy6481 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9031 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
ManThink Technology2 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技3 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt3 小时前
未授权访问漏洞
网络·安全·web安全
释怀不想释怀3 小时前
Linux环境变量
linux·运维·服务器