HCIE之BGP基础概念(一)

发布时间:2024年01月24日

一、BGP的基本概述

1、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门机制来确保连接的可控性。BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
2、路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
3、BGP从设计上避免了环路的发生。AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。
4、支持CIDR 无类域间路由
5、BGP提供了丰富的路由策略;提供了防止路由振荡的机制;BGP也易于扩展

二、BGP分类

1、EBGP:运行在不同的AS之间的BGP路由器建立的邻居关系为EBGP(External BGP外部BGP邻居)。
2、IBGP:运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Interna BGP)。

三、BGP的工作原理

BGP报文类型:

Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。应用:通过TCP建立BGP连接时,发送OPEN消息。

Update消息:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。应用:连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端。

Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。应用:稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性。

Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。应用:当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体。

Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。应用:ROUTE-REFRESH消息用来通知对等体自己支持路由刷新。

BGP状态机:

  • BGP 对等体的交互过程中存在 6 种状态机
    空闲状态(Idle)
    连接状态(Connect)
    活跃(Active)
    Open报文已发送(OpenSent)
    Open报文已确认(OpenConfirm)
    连接已建立(Established)
    在 BGP 对等体建立的过程中,通常可见的 3 个状态是:Idle、 Active 和 Established。

Idle 状态是 BGP 初始状态。在 Idle 状态下, BGP 拒绝邻居发送的连接请求。只有在收到本设备的 Start 事件后, BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect状态。

②在 Connect状态下, BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。

  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态;

  • 如果 TCP 连接失败,那么 BGP 转至 Active 状态;

  • 如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进行 TCP 连接,停留在Connect 状态。

  • 如果其他事件(如BGP系统或者操作者重置时),退回到Idle状态。

③ 在 Active 状态下, BGP 总是在试图建立 TCP 连接。

  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态;

  • 如果 TCP 连接失败,那么 BGP 停留在 Active 状态;

  • 如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转至 Connect状态。

  • 如果其他事件(如BGP系统或者操作者重置时),退回到Idle状态。

④ 在 OpenSent 状态下, BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、 认证码等进行检查。

  • 如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至 OpenConfirm 状态;

  • 如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至Idle 状态。

⑤ 在 OpenConfirm 状态下, BGP 等待 Keepalive 或 Notification 报文。

  • 如果收到 Keepalive 报文,则转至 Established 状态。

  • 如果收到 Notification 报文,则转至 Idle 状态。

⑥ 在 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对等体之间的交互原则

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

① 从 IBGP 对等体获得的 BGP 路由, BGP 设备只发布给它的 EBGP 对等体。

② 从 EBGP 对等体获得的 BGP 路由, BGP 设备发布给它所有 EBGP 和 IBGP 对等体。

③ 当存在多条到达同一目的地址的有效路由时, BGP 设备只将最优路由发布给对等体。

④ 路由更新时, BGP 设备只发送更新的 BGP 路由。

⑤ 所有对等体发送的路由, BGP 设备都会接收。

解决BGP路由黑洞方法:

(1)、把EBGP的路由引入到IBGP协议OSPF中(5类LSA),比较消耗设备资源,BGP路由数量特别庞大(该方法基本被淘汰)。

(2)、引入到IGP协议中,增加计算路由的负担,BGP路由振荡,IGP路由也会产生振荡。

(3)、AS内所有路由器均运行BGP协议,IBGP全互联(主流方案)。

总结:只要能解决BGP路由黑洞问题,BGP同步检查功能,开启和关闭就不再重要了。

五、路由反射器

引入路由反射器之后存在三种角色:
RR (Route Reflector) :路由反射器
Client:客户端
Non-Client:非客户端

1、RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。

2、将一台BGP路由器指定为RR的同时,还需要指定其Client,至于Client本身,无需做任何配置,它并不知晓网络中存在RR。

路由反射规则

  • RR在接收BGP路由时:如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户

在这里插入图片描述

  • 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户
    在这里插入图片描述
  • 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体。
    在这里插入图片描述
    非非不传

路由反射器下防环

RR的设定使得IBGP水平分割原则失效,这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路:

  • Originator_ID
  • Cluster_List

RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器RouterID。
若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR (若有)所更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的RouterID相同,则它会忽略关于该条路由的更新。

路由反射族包括反射器RR及其Client。一个AS内允许存在多个路由反射族。
每一个簇都有唯一的簇ID (Cluster_ID,缺省时为RR的BGP RouterID )。
当一条路由被反射器反射后,该RR (该族)的CIuster ID就会被添加至路由的Cluster list属性
当RR收到一条携带Cluster list属性的BGP路由,且该属性值中包含该族的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新。

联邦

联邦已被淘汰,IE考试中不会涉及,若需要学习可在其他资源进行补充。

六、BGP属性特点

  • BGP路由属性 是一套参数,它是对路由的进一步描述
  • 公认必遵 ORIGIN AS-PATH NEXT-HOP
  • 所有BGP路由器都可以识别,且必须存在于Update消息中
  • 缺少这种属性,路由信息就会出错
  • 公认任意 Local-preference Atomic-aggregate
  • 所有BGP路由器都可以识别,且不要求必须存在于Update消息中
  • 缺少这种属性,路由信息也不会出错
  • 可选过渡 Aggregator Community
    • 在AS之间具有可传递性
    • BGP路由器可以不支持此属性,但他仍然会接收这类属性,并传递给其他对等体
  • 可选非过渡 MED Originator-ID Cluster-List
  • 如果BGP路由器不支持此属性,则相应的这类属性会被忽略,且不会传递给其他对等体
    注:属性均是为做防环和选路,以及做过滤

优选协议首选值(PrefVal)最高的路由

  • 本地有意义,不会离开本路由器,default=0(从IBGP/EBGP/本地) 越大越优
  • HUAWEI特有

优选本地优先级(Local_Pref)最高的路由

  • 在BGP路由中,LP属性是公认任意,任何一条路由都是可选携带
  • 通过IBGP/EBGP/本地注入的,LP分别具备:
  • LP是一个内部值,从EBGP PEER传递的update不会携带LP属性(本地赋予default=100的LP属性值,如果需要更改属性值,需要单独配置default local-preference *),本地也是一样。
  • 只在IBGP PEER传递(只在一个AS内起作用)。
  • 越大越优

优选本地生成的路由

  • 依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由。

优选AS路径(AS_Path)最短的路由

- BGP设备对AS-PATH的计算方法如下:
1、本AS内注入的路由,其AS-PATH为空,仅当该路由器离开本AS,会打上自己的AS号。且AS号出现在AS-PATH属性列表的最左边。
2、在AS内通告,AS-PATH属性不变。(其余可查找相关资料进行详细了解)

比较Origin属性

  • 定义路径信息的来源

  • Origion只是用来描述BGP路由的获悉来源方式,并不描述BGP路由的优劣

  • 依次优选Origin类型为IGP、EGP、Incomplete的路由,

  • “i”:通过路由始发AS的IGP(RIP、OSPF、ISIS等 )学习到的路由信息

    • “e”:通过EGP(BGP)学习到的路由信息
  • “?”:通过其他方式学习到的路由信息

  • 注:i>e>?

优选MED值最低的路由

  • MED值相当于IGP的代价值,用于判断流量在进入AS时的最佳路由,即用MED来影响邻居AS流量进入本AS的最佳路径

  • 越小越优,default=0

优选从EBGP邻居学来的路由(EBGP路由优于IBGP路由)

优选到下一跳IGP Cost较小的路由

优选Cluster_List最短的路由

PS:有RR环境先比较Cluster_List

  • Cluster List一样长时,比较起源ID。

  • 如果二条路径,一个带cluster-list,一个不带,也是需要比较的。不带按0算。

优选邻居Router-ID小的

当有RR的环境时,不比较RR的Router-ID,比较Originator-ID

  • 优选Router ID或Origin ID最小的路由器发布的路由

比较对等体的IP Address

  • 优选从具有较小IP Address的对等体学来的路由

总结:

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_45331873/article/details/135715111
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。