HCIP(初识BGP协议)

编程入门 行业动态 更新时间:2024-10-12 12:31:42

HCIP(初识BGP<a href=https://www.elefans.com/category/jswz/34/1771197.html style=协议)"/>

HCIP(初识BGP协议)

BGP 边界网关路由协议:无类别 路径矢量 EGP协议

AS:自治系统:由单一机构或组织管理的一系列 IP网络及设备的集合

  • 为了方便区分和标定不同的AS,给每个自治系统设计了一个编号
    • 标准AS号长度为16位二进制 0-65535 其中0-64511公有 64512-65535私有
    • 扩展长度AS号:32位二进制,目前大多数设备已经支持拓展版本的AS号

在目前IP v4环境下,使用最广泛的的BGP版本是BGPv4,目前市场上已经存在BGPV4+,可以支持多种地址组的应用

在没有BGP协议的情况下,仅使用重发布技术,也可以实现AS之间的路由共享,但是不建议采取这种方案:

  • 重发布本身存在缺陷,再多点重发布中,因为种子度量值等问题,必然存在选路不佳问题
  • ASBR设备的归属问题

BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目,之所以不传递拓扑信息有两点原因:

  • 拓扑信息资源占用量太大,而BGP传递的数量是巨大的
  • 传递拓扑信息将会暴露AS内部的拓扑连接情况

AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径,,因此在BGP协议中需要管理员进行策略来进行干涉选路

EGP协议

  • 可控性:AS之间需要传递大量的路由信息,可控就是可以更加方便的干涉选路,更容易做路由策略;为了保障可控性,BGP舍弃了开销值,取而代之的是BGP给每条路由信息增加了很多路径属性,可以通过这些属性来进行选路,因为多种属性的存在,导致我们的选路变得更加的灵活方便,使得BGP协议具有强大的可操控性
  • 可靠性:TCP;增量更新,仅触发,无周期
    • 只能单播
    • 非直连建立邻居关系
    • EGP承载与IGP之上,两个非直连的BGP邻居,需要先IP可达,依赖IGP协议

在BGP中,我们将邻居关系称为对等体关系

  • EBGP对等体:如果建立对等体的两台路由器位于不同的AS中,则它们的关系被称为EBGP对等体关系
  • IBGP对等体:如果建立对等体的两台路由器位于相同的AS中,则它们的关系被称为IBGP对等体关系

EBGP对等体之间一般使用直接建邻,所以EBGP对等体之间发送的数据包中TTL值设置为1,如果遇到EBGP对等体之间需要非直连建邻,则需修改TTL值。IBGP对等体关系在AS内部一般都是非直连建邻所以TTL值设置为255

BGP的特点:

  • 无类别路径矢量:距离矢量的升级版——AS——BY——AS
  • 使用单播更新来发送所有信息L基于TCP179号端口
  • 增量更新:仅触发,吴周期
  • 具有丰富的熟悉来取代IGP中的度量值来进行选路;多个参数控制协议
  • 可以在进项和出项上对流量实施强大的策略:可控性
  • 默认不被用于负载均衡:通过各种选录规则仅仅产生一条最佳选路
  • BGP支持认证和聚合(汇总)

BGP的数据包

基于TCP的179端口工作,所以BGP协议中所有的数据包均需在TCP会话建立后,基于TCP的会话来进行传输及可靠性保障

首先,通过TCP的三次握手来寻找邻居

  • OPEN包:建立BGP对等体关系;邻居关系的建立就是参数协商的过程,BGP建立邻居关系需要通过open来携带参数,进行对比协商
    • AS号:在创建邻居关系时,需要指定邻居所在的AS号,这个参数将被携带的在open报文中发送给对方,对方将对比这个AS号和本地的AS号是否一致,如果一致,则可以正常建立邻居关系
    • 认证:BGP邻居也可以作认证,做认证后将携带认证口令,认证口令双方需要进行对比,一致则可以正常建立邻居关系
    • route id:区分和标定路由器,由32位二进制构成,按照IP地址的格式来表示
    • hold time:保活时间,默认时间为180s,在保活时间内,如果没有收到对方的keep alive包或者update包,则将断开BGP邻居关系,这个参数在open报文中携带,双方不影响邻居关系的建立,但是在执行时,这个时间必须是一致的,则将采用双方中较小的保活时间来使用
  • keep alive:保活,周期1min查询邻居关系是否存在,实际保活TCP会话,hold time默认3min
    • 除了保活之外,keep alive包还将在open报文协商参数时临时充当确认包的作用
    • TCP协议进行确认的目的时为了保证数据传输的可靠性,而keep alive报文确认的目的是为了确认认可对方发送的open报文在的参数
  • update:携带路由条目 目标网络号+各种属性,在更新包中存在一个撤销路由条目字段,在这个字段下的路由条目需要对端删除,而不再需要通过带毒传输的方式来表达
  • Notification:出现错误数据时收发

BGP的状态机(6种):BGP的状态机描述的是BGP对等体建立过程中状态的变化,因为BGP协议将邻居的建立过程和路由转发过程分开进行

  • IDLE:空闲状态,在路由器启动BGP协议后将先处于idle状态,当手工指定邻居关系后,BGP将进入一个检查环节,检查指定的路由器在本地路由表中是否可达,如果可达,则将进入到下一个状态
  • connect:连接状态,该状态完成TCP会话的建立
    • 如果TCP会话建立成功,则将进入到opensent状态,发送open报文
    • 如果TCP会话建立失败,则将进入ACTIVE状态,尝试重新建立TCP会话
    • 在TCP会话建立的过程中因为双方都会主动的发起建立会话的过程,而最终建立的都是一个双向的会话,所以最终只需要保持一个会话通道即可,选择方式是通过后续open报文在的RID进行比较,选择保留较大RID的设备发起TCP会话
  • open sent:发出本地的open报文,收到对端发送的open报文,查看里面的参数,如果参数确认无误,则将回复keep alive报文作为确认
  • open confirm:open报文确认状态,对端收到本地发送的open报文,之后根据里面的参数进行确认,如果确认无误则将发送keepalive报文,本端收到对方发送的keep alive报文之后将进入下一个状态
  • Established:建立状态,标志着BGP对等体关系的建立

BGP的工作过程:

  • 配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话,之后所有的BGP协议数据包基于该会话进行传输;会话建立完成后,邻居间正常收发一次Open报文建立BGP的邻居关系,生成邻居表;BGP协议的open报文中携带本地的RID,生成方式与OSPF一致,仅需本地及本地所有邻居唯一即可;邻居关系建立后,默认1min使用keep alive周期保活邻居关系(周期保活TCP会话)
  • 邻居关系建立后,管理员选择性将本地路由表在通过任意来源获取的路由条目,向BGP协议中进行宣告,使用update数据包进行邻居间路由共享之后生成BGP表–装载本地发出及接收到的所有路由条目;默认将最优路径加载到路由表中(最优仅仅基于BGP的选路原则,不一定为最佳路径,NGP默认不支持负载均衡)
  • 收敛完成后,进keep alive周期保活即可
  • 若出现错误信息,邻居间使用noti报文进行报错操作
  • 结构突变:
    • 新增:本地使用update像本地所有邻居告知,前提该路由不被已经发出的聚会路由包含
    • 断开:本地使用update像本地所有邻居告知,前提该路由不被已经发出的聚会路由包含,只有到聚合条目中包含的所有明显路由均在本队失效,才告知邻居删除聚合条目
    • 无法沟通:hold time为3min,连续三次未收到邻居的keep alive,断开邻居关系,TCP会话,删除从该邻居学学习到的所有路由

BGP路由黑洞:

  • 在同一AS中,由于成本问题,不会所有设备都运行BGP协议,且BGP协议支持非直连邻居建邻,故可能出现BGP协议,所以可能会出现BGP协议跨越未运行BGP协议的路由器。导致BGP路由传递后,控制层面可达,但是数据层面在经过未运行BGP协议的路由器上无法通过,形成路由黑洞

  • 解决方案:

    • 物理或逻辑链路全连
    • 邻居关系全连(所有的路由器均运行BGP协议)
    • 将BGP协议的路由信息重发布到IGP网络中
    • MPLS

BGP的防环:

  • BGP使用的防环机制:

    • EBGP的水平分割:专门应用在EBGP对等体之间,用来解决EBGP对等体之间可能出现的环路问题

      • BGP协议将在路由条目中记录所经过的AS编号,AS-path:记录AS路径的一个属性,(这个属性除了可以完成EBGP的水平分割外,还可以作为选路的依据);接收到的BGP路由条目中,其中的AS-PATH属性中,若存在本地的AS号,则将拒绝接受
    • IBGP的水平分割:专门应用在IBGP对等体之间,用来解决IBGP对等体之间可能出现的环路问题

      • 当一个路由器从一个IBGP对等体处学习到某条BGP路由时,不能将这条路由信息通告给其他的IBGP对等体关系

      • 因为IBGP水平分割的限制,导致IBGP对等体之间的路由信息只能传递一跳,在这种情况下会造成通信障碍

        解决方案:

        • 构建全连的对等体关系,但是会造成资源消耗的增加、网络的可拓展性降低
        • 路由反射器
        • 联邦

BGP的基本配置:

  • BGP建邻的基本配置

    • EBGP对等体关系直接建邻

      [R1]bgp 1  //启动BGP进程,后面的1不是进程号,而是配置路由器所在AS的AS号
      [R1-bgp]router-id 1.1.0.1   //配置RID
      [R1-bgp]peer 12.0.0.2 as-number 2   //手工指定对等体关系
      [R1-bgp]dis bgp peer   //查看BGP邻居表
      
    • IBGP对等体之间的环回建邻

      由于IBGP邻居处于同一个AS中,一般情况下,一个AS中存在大量的备份路径时,若使用物理接口建立邻居关系,将浪费这些备份或者负载均衡资源,所以使用环回接口来进行IBGP对等体关系的建立

      [R2]bgp 2
      [R2-bgp]peer 3.3.3.3 as-number 2
      [R2-bgp]peer 3.3.3.3 connect-interface LoopBack 1   //指定在给3.3.3.3发包时使用的源IP地址为环回接口1的IP地址
      

      在使用环回接口建立对等体关系时,一定要修改发送接口

    • EBGP对等体之间的非直连建邻

      在EBGP对等体关系之间一般是不具备非直连建邻的基础的,所以先保证地址可达才行

      [R4]bgp 2
      [R4-bgp]peer 5.5.5.5 as-number 3
      [R4-bgp]peer 5.5.5.5 connect-interface LoopBack 1
      [R4-bgp]peer 5.5.5.5 ebgp-max-hop 2 //假如后面不跟参数,表示将TTl值修改为255
      

      因为在EBGP之间一般都是直连建邻,数据包中的TTl值设置为1,要想非直连建邻,需要将这个值改大

  • 发布路由

    • network:在BGP中只能用来发布路由条目信息,只要是路由表中存在的路由条目信息,BGP都可以通过network来进行发送

      • [r1-bgp]network 1.1.1.0 24 目标网段信息及掩码必须和路由表

        中的完全一致才行

      • dis bgp routing-table 查看BGP表

        • network:目标网段信息及掩码信息

        • netxhop:BGP的一个路径属性;谁发的路由信息,下一跳就是谁,如果是自己发的,则为0.0.0.0

        • 状态码:

          • *:代表可用,设备每收到一跳路由信息,都会检查其下一跳的可达性。即根据下一跳在路由表中递归查询,只要可达,则改路由信息可用。

          • > :代表优选 , 当收到到达相同网段存在多条路由信息时,BGP将在其中根据属性优选出一条加载到路由表中。这条优选路由将赋予这个标记(注意:只有一条路由条目是可用且优选的,他才能够被加到路由表中,也才能够被传递给其他的BGP对等体)

          • I — 状态码I — 代表BGP路由信息是从自己IBGP对等体处学到

            i 1.1.1.0/24 12.0.0.1 — 因为在AS内部存在AS-BY-AS规

            则,所以,默认情况下传递的属性信息是一致的,因为这个下一

            跳也属于路径属性之一,默认情况下也不会传递,则将可能导致

            路由可用性校验失败。

            [r2-bgp]peer 3.3.3.3 next-hop-local — 在给3.3.3.3传递路由信息是

            将下一跳属性改为本地

            1.1.1.0/24 IBGP 255 — 通过IBGP对等体学到的BGP路由信

            息,其标记为IBGP,默认的优先级为255。

            路由表中的NextHop直接使用的是BGP属性中的下一跳,因为之前

            进行过可用性校验,所以,可以保证能够递归查找找到这个下一

更多推荐

HCIP(初识BGP协议)

本文发布于:2024-03-10 11:52:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727890.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:协议   HCIP   BGP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!