12.BGP专题

BGP状态机和邻居建立过程

image-20250228010812455

  • BGP报文头部19byte

    image-20250219165411170

    • 类型:1-open,2-update,3-notification,4-keepalive

  • BGP消息

    image-20250219164053669

    • Open消息:TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系并进行参数协商(BGP版本号,自己所属的AS号,RID,Hold time值,认证信息等)

    • Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,主要作用是让BGP邻居直到自己的存在,保持邻居稳定性;还有一个作用是对收到的Open消息回应;其消息格式中只包含消息头,没有附加其他任何字段(标记,长度,类型,无数据域)19字节;

    • Update消息:在对等体之间交换路由信息;它既可以发布可达路由信息,也可以撤销不可达路由信息;一条update消息可以通告一类具有相同路径属性的可达路由,同时可以携带多条不可达路由;

    • Notification消息:作用为错误通知;BGP发言者如果检测到对方发过来的消息有错误或者主动断开BGP连接,都会发出Notification消息来通知BGP邻居,并关闭连接回到Idle状态;如果收到邻居发来的Notification消息,也会间状态变为Idle;消息内容包含错误信息

    • Route-refresh消息:用来要求对等体重新发送指定地址族路由信息;(BGP只在第一次建立好发送路由,后续有变化才更新,如果都没有变化就不会发送路由,特殊情况需要发送)

  • BGP协议状态机

    image-20250219162154643

  • BGP协议有限状态机共包含6个状态,他们之间转换过程关系即建立过程:

    • Idle状态(空闲)下,BGP聚合任何的连接请求,是BGP的初始状态,停留30s

      • 当BGP收到开始事件后,BGP启动到对等体的TCP连接,启动连接重传定时器,监听来自对等体的TCP消息,并且转移到connect状态;

    • Connect状态(连接)下,BGP等待TCP连接的建立完成后再决定后续操作;本端为TCP被动方等待对方和我握手;

      • 如果TCP建立成功,BGP将停止连接重传定时器,然后发送一个Open消息给对等体,并且转移到Open-sent状态

      • 如果TCP建立失败,BGP将重置连接重传定时器,监听对等体发起的TCP连接,并且转移到active状态

    • Active状态(活跃)下,BGP将尝试主动进行TCP连接的建立,主动发出握手请求,是BGP的中间状态

      • 如果TCP连接建立成功,BGP将重置连接重传定时器,然后发送一个Open消息给对等体,并且转移到Open-sent状态

      • 如果连接重传定时器超时,BGP将重新开始连接重传定时器计时,并转移到Connect状态

      • 如果BGP试图与一个未知的IP地址建立TCP会话,则TCP连接失败,连接重传定时器被重置,并且BGP保持在active状态

    • Open-sent状态(open消息已发送)状态下,BGP已经向对等体发送了一个Open消息,并且等待对等体的Open消息

      • 如果BGP收到正确的Open消息,则向对端发送一个keepalive消息,并转移到Open-confirm状态

      • 如果BGP收到的Open消息有错误,则给对等体发送一个notification消息,并且转移到Idle状态

    • Open-confirm(open消息确认):此状态下,BGP等待一个Notification消息,或keepalive消息;

      • 如果BGP收到Notification消息或者TCP连接断开消息,则转移到Idle状态

      • 如果BGP收到Keepalive消息,则转移到Established状态

    • Established状态(连接建立):BGP对等体间可以交换Update消息,Notification消息,和keepalive消息

      • 如果BGP收到update消息或者keepalive消息,则继续保持在Established状态

      • 如果BGP收到Notification消息,则转移到Idle状态

  • 除了Idle状态以外的其他5个状态出现任何错误的时候,BGP状态会退回到Idle状态

BGP是否有计算路由的能力

  • BGP没有路由计算的能力,IGP中的动态路由协议使用各自的算法进行路由计算

  • BGP主要作用是支持庞大路由条目的处理,以及非常灵活的路由选路和控制

  • BGP基于路径矢量算法进行路由选择。

  • BGP路由来源:手动宣告network,路由引入,直连

BGP减少对等体的方法有哪些

  • BGP对等体过多的问题?

    • CPU内存消耗过大,影响路由器性能

    • 会话建立时间长,收敛慢(TCP179建立,大量的TCP连接)

    • 配置复杂,维护难度大,扩展性差

  • 1.使用路由反射器(RR)

    • 在路由反射器的场景,客户端只需要跟RR之间建立对等体关系即可,无需对整个环境的AS重新规划,配置更加精简,实际应用中比较常见;

    • RR:能够将从IBGP邻居学习的路由反射给其他IBGP邻居,客户机只需要和路由反射器建立IBGP连接;

    • 反射规则:

      • 从非反射客户端接收的路由仅反射给客户端;

      • 从反射客户端收到的路由,反射给所有客户端和非客户端,(始发者除外)

      • 从EBGP接收的路由,反射给所有客户端和非客户端

        image-20250219202129311

  • 注意:反射器由无法使用策略去更改路由属性

  • 2.使用BGP反射集群:Cluster

    • 一个RR及其所有客户端组成一个反射集群

    • 一个集群可以配置多个的反射器增加可靠性

    • 缺省情况下使用自己的RID作为集群ID,如果存在多个反射器配置相同的Cluster-id防止环路

  • $防环机制:

    • RR打破了BGP水平分割规则,可能使某个集群发出的路由在经过多次反射后回到该群,需要添加originator_id,和cluster_list属性防止环路

      • Originator_id属性:

        • 由路由反射器反射的一条路由添加时产生,使用AS内路由始发者的Router-id来标识

        • 当路由器收到BGP路由时,对比本机Router-id和该路由的Originator-id,一致则丢弃路由

        • Originator_id还用于路由优选,小的优先

      • Cluster_list属性:

        • 路由传递过程中,把经过的反射器的Cluster_id一次记录在Cluster_list中

        • 当反射器收到BGP路由时,如果本机的Cluster_id出现在Cluster_list中,则丢弃该路由,Cluster_list用于路由优选,短的优先

  • 3.使用联盟的方式

    • 在使用联盟的场景中,将一个大的AS分出多个小的AS,小AS内建立联盟内的全互联IBGP对等体关系,小AS之建立联盟的EBGP关系,联盟内的结构对外部网络不可见

    • 但是使用联盟需要进行小AS的规划,以及需要将原有的BGP配置删除,进行重新配置,比较麻烦,应用比较少见

    • image-20250219203057971

    • 需要注意:子AS使用私有AS编号,内部路由器的BGP运行在子AS中,其他真实AS的路由器仍然和联盟AS建立EBGP邻居,跨越子AS的EBGP邻居仍然需要更改下一跳为本机

      (64512-65534)

  • 4.使用MPLS标签的方式

    • 在PE之间建立IBGP关系,在AS内部启用MPLS

    • 在PE之间建立隧道,在隧道上建立BGP邻居关系

用什么机构分发的AS号

  • AS是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合;通常AS指的是运营商或大型机构

  • BGP网络中每个AS都被分配一个唯一的AS号,用于区分不同的AS

  • 由IANA(互联网数字分配机构)复制AS号的分发

什么是BGP路由黑洞以及BGP同步

  • 路由黑洞是指路由器收到数据包时,查找路由表,因为没有前往目标的相应路由信息,导致将数据包丢弃的现象称为路由黑洞

  • BGP路由黑洞产生的原因:

    • BGP路由和IGP不同步

      • image-20250220104305996

        • AS34567内部署OSPF,R4R5R6不运行BGP,R3,R7建立IBGP连接; R1将AS100内的1.0.0.0/8的路由发布到BGP,将该路由通告给了R3,R3通过IBGP连接直接通告给R7(R3下一跳已改),R7再将该路由通告给R2; R2将其加入到自己路由表中,去往该路由下一跳R7,R7查表下一跳R3,非直连,递归查询R3路由,假设下一跳R4,R4因为没有运行BGP,没有该目的网段的路由;产生路由黑洞

    • 在MPLS VPN场景,MPLS域的某些设备接口没有正确的启用MPLS

  • BGP同步:

    • BGP同步指的是IGP和BGP表的同步,BGP在收到IBGP路由发送给外部EBGP对等体之前,要先判断发送的路由更新,在IGP表中是否存在,存在则发送,如果IGP表中不存在,则不发送,用来避免路由黑洞的产生

    • 现在的设备默认是关闭同步,即使IGP和BGP表不同步,BGP在收到IBGP路由更新时可以直接发送给EBGP对等体;

  • 解决路由黑洞方案:

    • 将BGP引入到IGP,因为BGP可以处理庞大的路由条目,而IGP不支持,所以对于大规模网络,不建议将BGP引入到IGP

    • 建立全互联的 IBGP 对等体关系,全互联IBGP 对等体只 AS内的所有路由两两之间都建立IBGP 对等体关系,对于大规模的网络环境,会导致需要消耗大量的资源去维护众多的IBGP 对等体关系,并且不利于网络的维护和扩展,可以采用路由反射器或联盟的方式进行优化。

    • 可以采用 MPLS,只需要在 PE之间建立IBGP 对等体关系,在 AS 内采用基于标签交换处理,通过这种方式可以无需启用 BGP 同步。

    • 也可以在 PE之间采用隧道技术,基于隧道建立IBGP 关系,来传递 BGP 路由更新。

  • 场景题目:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值