• BGP学习笔记


    这里写自定义目录标题

    BGP

    BGP基础

    1. BGP是什么:BGP是一种在自治系统AS之间传递并选中最佳路由的高级矢量路由协议,共有四个版本,现在使用的是BGP-4
    2. BGP将AS视为一个节点,以TCP作为底层传输机制
    3. AS内运行iBGP,AS之间运行eBGP
    4. AS_path中会记录报文经过的AS号,且当AS号改变时才会记录
    5. AS_path可以防止环路,出现环路时,数据报会被丢弃
    6. BGP和IGP之间区别
    区别IGPBGP
    使用范围AS内使用AS间使用
    收敛速度迅速,只在邻居间工作
    功能发现和计算路由控制路由的传播和选中最佳路由
    适用网络中小心企业网大型,超大型运营网络
    其他路由选择实施复杂支持CIDR
    只发送更新路由,减少带宽,适用于在互联网上传播大量路由信息
    解决环路问题
    下一跳地址可以是非直连路由器的接口IP
    1. 无需用到BGP场景

      • 单宿主自治系统: 用户和ISP之间只有一条线连接,直接用静态路由(缺省路由)就行
      • 多宿主到单一的自治系统:一条主用链路,一条备用链路
        在这里插入图片描述
    2. 需要用到BGP场景:跨运营商传递路由,且需要路由协议进行自动选路

    邻居建立

    1. 邻居关系:eBGP和iBGP邻居关系

    2. eBGP:不同AS之间的BGP,可防止AS间产生环路。

    3. iBGP:AS内的BGP,为了防止AS内产生环路,在AS内需要保持全连接的iBGP邻居

    4. 邻居建立的属性

      • 路由器标识(router-id):可手动设置,缺省情况下,选择loopback地址作为router-id
    5. BGP状态:
      在这里插入图片描述

    状态描述接收事件动作备注
    idle空闲状态startstart事件之后
    1.对资源初始化
    2.重置连接计时器
    3.发起TCP连接请求
    4.开始侦听远端对等体发起连接的端口,并转至connect状态
    start状态由操作者配置/重启BGP过程
    connect启动连接重传定时器,等待TCP完成连接1.如果TCP连接成功,BGP向对等体发送Open报文,并转至OpenSent状态
    2.如果连接失败 转至Active状态
    3.如果连接重传定时器超时,继续尝试进行TCP连接
    4.其他事件,退回Idle状态
    Acitve1.试图建立TCP连接1.如果连接成功,发送Open报文,并转至OpenSent状态
    2.如果连接失败,停留在Active状态
    3.连接重传定时器超时,转至Connect状态
    4.其他事件,退回Idle
    OpenSent1.等待对等体的Open报文
    2.对收到Open报文中的AS号,版本号,认证码进行检查
    1.如果收到报文正确,发送Keepalive报文,并重置Keepalive定时器,转至OpenConfirm状态
    2.如果收到报文有误,发送Notification状态,并转至Idle状态
    OpenConfirm等待Keepalive报文或Notification报文1.收到Keepalive报文,转至Established状态
    2.收到Notification报文,Idle状态
    Established与对等体交换Update,Keepalive,Route-refresh报文和Notification报文1.收到正确的Update或Keepalive报文,保持BGP连接
    2.错误的Update或Keepalive报文,发送Notification报文并转至Idle状态
    3.Route-refresh报文不会改变BGP状态
    4.Notification报文,转至Idle状态
    5.TCP拆除通知,BGP断开连接,转至Idle状态
    1. BGP邻居无法建立的原因(未处于Established状态)

      • 地址不可达
      • AS配置错误
      • eBGP跳数问题
      • 更新源问题
      • BGP认证错误
      • 报文协商失败
      • Router_ID冲突
      • 联盟和非联盟之间BGP连接配置错误
      • 错误报文导致连接中断,如BGP的Marker值错误
    2. BGP对等体之间交互原则

      • BGP将最优路由加入BGP路由表
      • 从iBGP对等体收到的路由,只发布给eBGP对等体
      • eBGP收到的路由,发给所有对等体
      • 只发送最优路由给对等体
      • 只发送更新路由
      • 接收所有对等体发送的路由

    路径属性

    1. 属性分类
      在这里插入图片描述

      • 公认必遵(Well-known Mandatory):必须存在Update报文中,且所有BGP设备都可识别的
      • 公认任意(Well-known Discretionary):都可以识别,但不一定存在在报文中
      • 可选过渡(Optional Transitive):可以不识别,1.如果识别则转发该属性的更新,2.如果不识别,如果放置了过渡标记,则把该属性转发并通告给下游设备
      • 可选非过渡(Optional Non-transitive):可以不识别,如果设备不识别,且过渡标记没有被设置,则更新中不通告该属性
    2. 属性

    属性描述类型备注
    origin表示BGP路由起源1.IGP:从内部网关协议学习到的
    2.EGP:通过EGP学习到的
    3.incomplete:未知源,一般通过import引入路由表中
    1.聚合路由可以是IGP,也可以是incomplete,这依赖于聚合路由的成员路由的origin属性。若有些成员路由是IGP,有些成员路由是incomplete,则生成的聚合路由是incomplete
    2.优先顺序 IGP>EGP>incomplete
    AS_PATH记录路由沿途经过的AS
    1. BGP路由信息库:存放用于决策的BGP路由

      • Adj-RIB-In:对等体接收到的更新,但没有经过处理
      • Loc-RIB:经过BGP的输入策略引擎,运行策略之后存储的信息库,用于本地路径选择
      • Adj-RIB-Out:经过BGP输出策略引擎,用于通告给其他对等体
    2. 决策过程

    在这里插入图片描述

    • 1.收到更新数据包,存储在RIB(Routing Information Base),并指明是来自哪个对等体的(Adj-RIB-In)
    • 2.经过BGP输入策略引擎修改属性或路由过滤
    • 3.路径选择算法,为每一条前缀确定最佳路径
    • 4.最佳路径存储在Loc-RIB中,并加载到IP-RIB,用于路由选择
    • 5.输出策略引擎,存储在Adj-RIB-Out,通告给其他对等体
    1. 选路规则

      • PrefVal 大优
      • Local_Pref 大优
      • 手动聚合路由 > 自动聚合路由 > network通告路由 > import-route引入路由 > 对等体学习路由
      • AS_PATH 短优
      • Origin:IGP > EGP > incomplete
      • MED 小优
      • eBGP>iBGP
      • Metric 小优
      • Cluster_List 短优
      • Router_ID 小优
      • 邻居IP 小优
    2. 负载分担

      • BGP路由等价条件:前八个属性相同,且AS_Path也相同
      • 负载分担两种形式:1.BGP路由负载分担, 2.下一跳路由负载分担
    3. BGP负载分担

      • 若最优路由为iBGP,则只有iBGP形成负载分担,若最优路由为eBGP,则只有eBGP形成负载分担。
      • 负载分担只对本设备有效,给其他对等体发送时会发送最优路由
    4. 下一跳路由负载分担

      • 当BGP依赖下一跳转发数据,且下一跳是负载分担的,则也能算得上是BGP负载分担

    5. 路由聚合:手动聚合和自动聚合

      • aggregate:手动聚合,对BGP本地路由表中路由进行聚合
      • summary automatic:自动聚合

    路由控制

    1. 介绍:定义路由器如何接收路由以及如何通告路由,选择合适的路径
    2. BGP最大优势:通过调整路由属性进行选路控制
  • 相关阅读:
    聊聊 QianKun JS 沙箱的那些事
    【Vue】通过Axios实现异步通信(简单案例)
    dp练习2
    Python---while循环的执行流程 解释
    【面试系列】后端开发工程师 高频面试题及详细解答
    【Android11】在内置的Tvsettings的界面中显示以太网Mac地址
    一文浅入Springboot+mybatis-plus+actuator+Prometheus+Grafana+Swagger2.9.2开发运维一体化
    Vue中的MVVM模型
    【数据结构入门_链表】 Leetcode 83. 删除排序链表中的重复元素
    偏爱BI的他们,率先实现“业务+品牌”共进双赢
  • 原文地址:https://blog.csdn.net/lanyanzhiji123asd/article/details/126571352