BGP:边界网关协议

  • 目录

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

    BGP的分类:EGP【已淘汰】,BGP

    IGP的分类:RIP,OSPF,EIGRP,IGRP,ISIS等等

    什么要为是用BGP,重发不也可以实现不同AS之间路由共享?

    BGP之间传递路由的方式-------和RIP类似-----------------他们之间传递的是路由条目信息,不传递拓扑

    BGP的特点:

    无类别,路径矢量【不牵扯算法】,EGP协议

    BGP不产生路由,负责搬运路由

    关注点:

    IGP的特点:

    收敛快,资源少,选路佳(无环)

    选择的是UDP进行传输

    AS-BY-As规则 ---在BGP当中,我们将一个AS看作一个整体。

    IBGP对等体关系:内部,属于同一个AS

    IBGP邻居的防环机制

    EBGP对等体关系:外部,不同的AS中

    特点:

    EBGP邻居的防环机制

    BGP的数据包---BGP协议所有的数据包的传输的可靠性均由TCP协议来保证的,所有BGP的数据包均基于TCP建立的会话通道发送

    BGP邻居状态机制

    IDLE-----空闲状态-------初始化

    Connect:连接状态,该状态完成TCP的会话的建立

    Active:tcp建立没成功,反复尝试建立TCP

    Opensent:发送open报文

    Openconfirm:open报文确认状态--------对端也收到本地发送的open报文,之后根据里面的参数进行确认。如果确认无误将发生keeplive报文。对方收到后进入下一个状态。

    Established:邻居状态建立的标志----标志着BGP对等体关系的建立

    BGP的配置命令

    邻居关系的建立

    邻居间的宣告

    BGP的宣告问题:

    路由器如何打破水平分割

    1)路由反射器

    2)联邦

    BGP的选路规则


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

    • 网络范围太大,协议跑步过来,需要进行划分,因此需要进行AS区域的划分
    • 编号:
      • 16位二进制构成--------范围:0-65535;其中0和65535为保留值。所以AS的真正取值的范围是:1-65534,其中私有的AS号为:64512-65534,应为传统的不够用,因此需要进行拓展,于是又了32位构成的。
  • BGP的分类:EGP【已淘汰】,BGP

  • IGP的分类:RIP,OSPF,EIGRP,IGRP,ISIS等等

  • 什么要为是用BGP,重发不也可以实现不同AS之间路由共享?

    • 1,重发布技术本身存在缺陷,比如,由于种子度量值的问题导致的选路不佳。
    • 2,ASBR设备的归宿问题
  • BGP之间传递路由的方式-------和RIP类似-----------------他们之间传递的是路由条目信息,不传递拓扑

    • 主要是因为
      • 1,拓扑信息资源占用量比较大,而BGP传递的资源本身就比较大
      • 2,传递拓扑信息会暴露本AS内部的拓扑相连的信息
  • BGP的特点:

    • 无类别,路径矢量【不牵扯算法】,EGP协议

    • BGP不产生路由,负责搬运路由

    • 关注点:

      • 1,可控性-----AS之间需要传递大量的路由信息,所谓可控就是可以更方便的干涉选路
        • 为了保证可控,BGP舍弃了开销值。取而代之的是BGP给每条路由信息附加了很多的属性,这些属性可以进行改变
      • 2,可靠性-----采用的是TCP进行可靠的传输
        • 需要保证传输的可靠,因此在传输层直接选择了可靠的TCP协议传输---使用的是179端口进行工作的
        • 因为无法自动发现邻居关系,因此需要手动建立邻居关系
      • 3,触发更新-----因为BGP协议需要传递大量的路由信息,所以本身不可能存在周期更新机制。BGP仅存在触发更新
  • IGP的特点:

    • 收敛快,资源少,选路佳(无环)

    • 选择的是UDP进行传输

      • 原因:
        • 1,TCP的传输效率比较低下
        • 2,TCP传输占用资源较大
        • 3,TCP协议只能实现单播,所以无法通过组播或者广播的形式发送,则将导致IGP协议无法自动发现邻居关系。
  • AS-BY-As规则 ---在BGP当中,我们将一个AS看作一个整体。

    • 概念:BGP协议是不支持负载均衡的。----在BGP当中,如果到达同一个目标网段存在多条路径可以走时,BGP将会根据其中的路径属性来选择一条最优的加载到路由表中,而不会进行负载均衡。
  • IBGP对等体关系:内部,属于同一个AS

    • IBGP邻居的防环机制

      • IBGP水平分割-----从一个IBGP邻居处学习到的路由不能传递给本地的另一个IBGP邻居
        • 出现的环路的原因:--------->由于AS-BY-AS规则,一个AS为一个整体,故BGP路由在AS内部传递时,其属性默认没有任何变化;故将导致IBGP关系间的环路;
        • 缺点---->由于水平分割的限制,导致路由信息传递的时候只能传递一跳,在这种情况下可能会造成通信障碍。
          • 解决办法:
            • 联邦
            • 路由反射器
            • 构建全连的IBGP全连对等体的关系
  • EBGP对等体关系:外部,不同的AS中

    • 特点:

      • 可控性
      • 可靠性
      • 直连建邻
        • 因为EBGP之间一般使用的是直连建立邻居关系【TTL值为1】,但是如果要使用非直连建邻【比如用环回进行建立邻居】就要改变它的TTL值【将其变大即可】,但是如果是直接建立邻居的话就不需要考虑。IBGP内部一般使用的是非直连建立邻居。
        • 使用的配置命令是:
          • [r5-bgp]peer 4.4.4.4 ebgp-max-hop --- 如果后面不跟参数,则代表将TTL值修改为最大值255
      • EGP承载于IGP之上
      • 采用的是TCP协议
    • EBGP邻居的防环机制

      • EBGP水平分割-----在AS之间,EBGP间防环
        • 在BGP的路由器条目中存在各种属性用于选路,其中有一种AS-path属性,用于记录该条目经过的所有AS编号。
        • EBGP水平分割就是利用as-path属性--接收到的路由条目种,若出现本地的AS编号记录将拒绝接收该条目
  • BGP的数据包---BGP协议所有的数据包的传输的可靠性均由TCP协议来保证的,所有BGP的数据包均基于TCP建立的会话通道发送

    • OSPF的保活机制-------周期的发送hello包(发送时间为10S,死亡时间为40S)

    • open包-------------->在BGP中,发现邻居关系的过程变为人工的,所以会发送一个open来建立对等体关系------邻居间关系的建立无非就是参数的协商,进行对比协商

      • AS号-----在建立邻居关系的时候需要指定邻居所在的AS号,open报文会把这个参数携带上发送给对方,对方会进行一个AS号的对比【和本地进行对比】如果一致的话就可以正常建立邻居关系
      • 认证【设置可有可无】-----BGP的建立邻居可以做认证,认证后进行对比,一致的话就建立邻居关系

      • ROUTE-ID---------区分和标点路由器。也是由32位二进制构成
        • 1,手工配置【建立邻居的地址和收到的OPEN中的源IP地址相同才能建立邻居关系,否则建立失败】
        • 2,自动获取【先看是否有环回,以大为优先选择,如果没有的话,就选物理接口最大,和AS号一样比对一样】
      • Holdtime----保活时间---默认时间为180S,在保活时间内如果没有收到对方发送的keeplive或者update包就会断开连接
    • keeplive包----周期保活---周期发送时间等于保活时间的1/3.默认保活时间为180S,默认周期发送时间为60S。
      • 除了保活之外,该报还有充当确认包的作用。目的是为了确认认可对方发送的open报文中的参数。
    • update包-----更新包-----携带需要传递的路由信息的数据包。表示一条路由条目信息,需要携带的参数主要是目标网络号和子网掩码信息以及路径属性
      • 存在一个撤销路由条目的字段
    • notification包---一个警告机制
    • Route---refresh包----用于改变路由策略后从新发送路由信息
  • BGP邻居状态机制

    • IDLE-----空闲状态-------初始化

      • 当路由器启动了BGP的进程后,就会进入到该状态,当你指定邻居关系后,BGP就进入下一个检查环节,检查指定的IP地址是否可达,如果可达就进入下一个状态----connect。
    • Connect:连接状态,该状态完成TCP的会话的建立

      • 如果建立成功就进入到Opensent状态,发送open报文。
      • 如果没建立成功就进入到active状态尝试重新建立会话。
      • 在建立会话的过程中,因为双方都会发起TCP建立会话,会进行一个RID的比较,大的RID先进行发起TCP会话。
    • Active:tcp建立没成功,反复尝试建立TCP

    • Opensent:发送open报文

      • 发送本地的open报文。收到对端发送的open报文,查看里面的参数,之后,如果确认参数无误。则将回复keeplive报文作为确认。
    • Openconfirm:open报文确认状态--------对端也收到本地发送的open报文,之后根据里面的参数进行确认。如果确认无误将发生keeplive报文。对方收到后进入下一个状态。

    • Established:邻居状态建立的标志----标志着BGP对等体关系的建立

    • BGP的配置命令

       

      • 邻居关系的建立

        • 1)直连的EBGP邻居的建立
          • 配置命令:
            • [r1]bgp 1--------->这里不是进程号是AS号,一个AS只能有一个
            • [r1-bgp]router-id 1.1.1.1---------->这里的ROUTE-ID是可以重复的,但是两个AS建邻之间要是不同的
            • [r1-bgp]peer 12.1.1.2 as-number 2--------->要建立关系的接口的IP地址,以及AS号
            • [r1]display bgp peer--------->简单查看bgp邻居表关系
            • [r1]display bgp peer verbose--------->详细查看bgp邻居关系
        • 2)建立IBGP邻居关系:在AS内部存在大量的路径,故IBGP邻居不基于物理接口的建立,而是使用环回作为源目IP地址,这样才能利用所有的物理链路,切记:双方均使用环回地址作为建邻地址时;目标定位为对端环回地址的同时,本地的源IP地址也需要定义为本地的环回地址
          • 配置命令:
            • [r2]bgp 2
            • [r2-bgp]router-id 2.2.2.2
            • [r2-bgp]peer 192.168.3.1 as-number 2
            • [r2-bgp]peer 192.168.3.1【环回地址】 connect-interface LoopBack 0
        • 3)EGBP邻居间存在多条直连的物理链路建立BGP邻居关系也建议使用环回,才能利用上所有的物理链路
          • 步骤:
            • 1.IP可达
              • 前提:这里可以使用手写静态路由使的路由器四上的环回可以访问到路由器上5的环回
              • 目的是为了可以使路由器上的两个环回可以互相访问
            • 2.建立bgp邻居
              • [r5-bgp]router-id 5.5.5.5
              • [r5-bgp]peer 192.168.4.1 as-number 2
              • [r5-bgp]peer 192.168.4.1 connect-interface LoopBack 0
            • 3.默认EBGP邻居一般是直连建立,收发的BGP数据包,其中TTL为1;IBGP邻居间为255;故使用环回地址建立邻居时,必须修改BGP的TTL值,将其这个值变大
              • [r5-bgp]peer 192.168.4.1 ebgp-max-hop 2
              • [r5-bgp]peer 4.4.4.4 ebgp-max-hop --- 如果后面不跟参数,则代表将TTL值修改为最大值255
          • 配置命令:
            • [r5]bgp 3
            • [r5-bgp]router-id 5.5.5.5
            • [r5-bgp]peer 192.168.4.1 as-number 2
            • [r5-bgp]peer 192.168.4.1 connect-interface LoopBack 0
            • [r5-bgp]peer 192.168.4.1 ebgp-max-hop 2
      • 邻居间的宣告

        • 配置命令
        • 宣告环回:目标网段和及掩码必须和路由表完全一致
        • [r1-bgp]display bgp routing-table --- 查看BGP表的路由表
          • 解析:
            • Network --- 目标网段信息及掩码信息
            • NextHop --- BGP的一个路径属性 ---- 谁发的路由信息,下一跳就是谁,如果是自己发的,则下一跳为0.0.0.0。
              • IBGP内部之间互相宣告之后,其中的NextHop是不会改变的,继承的是前者的
                • 案例:
                  • 这个是通过查询R3的BGP的routing-table查询出来的,可以发现12.1.1.1是R1和R2之间的网段并没有在R2和R3之间的网段,说明继承了R2从R1学到的路由,就是R2从R1学过来的路由不会进行下一跳的改变
                  • 如何解决了?
                    • 可以将R2上宣告的时候将[r2-bgp]peer 192.168.3.1 next-hop-local --- 在给192.168.3.1传递路由信息是将下一跳属性改为本地
            • 状态码
              • * --- 代表可用 --- 设备每收到一跳路由信息,都会检查其下一跳的可达性。即根据下一跳在路由表中递归查询,只要可达,则该路由信息可用。
              • > --- 代表优选[唯一一条] --- 当收到到达相同网段存在多条路由信息时,BGP将在其中根据属性优选出一条加载到路由表中。这条优选路由将赋予这个标记。
              • 注意:只有一条路由条目是可用且优选的,他才能够被加到路由表中,也才能够被传递给其他的BGP对等体。
        • BGP路由优先级
          • EBGP:255
          • IBGP:255
          • local BGP:255:防止加入到路由表中顶替其他的宣告进来的路由表:比如静态,OSPF,等等
        • EBGP邻居之间传递路由最小间隔为30s
        • IBGP邻居之间传递路由最小间隔为15s
        • 查看IBGP的邻居表的信息
          • 解析:
            • I --- 状态码I --- 代表BGP路由信息是从自己IBGP对等体处学到的
            • i 1.1.1.0/24 12.1.1.1 --- 因为在AS内部存在AS-BY-AS规则,所以,默认情况下传递的属性信息是一致的,因为这个下一跳也属于路径属性之一,默认情况下也不会传递,则将可能导致路由可用性校验失败
        • 配置命令:
          • 解析:
            • [r2-bgp]peer 3.3.3.3 next-hop-local --- 在给3.3.3.3传递路由信息是将下一跳属性改为本地
            • 命令解析:路由表中的NextHop直接使用的是BGP属性中的下一跳,因为之前进行过可用性校验,所以,可以保证能够递归查找找到这个下一跳。
            • 上面修改下一跳的属性命令也可以通过下面该命令进行修改【但是该命令会出环】
            • 两者区别
              • next-hop-local ------->仅针对本地通过外部的AS-EBGP邻居学习到的路由条目才修改下一跳为本地
              • 联邦内的EBGP关系,传递的路由其属性遵循IBGP关系,传递性遵循EBGP关系
      • BGP的宣告问题:

        BGP:边界网关协议_第1张图片

      • 路由器如何打破水平分割

         

        • 1)路由反射器

          BGP:边界网关协议_第2张图片

          • 概念:路由反射器 --- RR ---- 我们可以通过配置,将某些设备在一定的条件下设置称为路由反射器,之后,该设备将可以反射所学习到的IBGP路由信息。
          • 组成部分:RR-反射器,客户端,非客户端--------->3种角色
          • 簇:RR与客户,非客户构建一个簇(组),在一个簇中存在一台RR做为中心,其中RR的RID作为簇ID,至少一台客户端【可以有多个客户端,也可以没有非客户端】
          • 反射规则
            • 1)RR从一个EBGP邻居处学习到的路由,可以传递给本地的客户端,非客户端,其他EBGP邻居关系
            • 2)RR从一台客户端学习到的路由,可以传递给本地的其他客户端,非客户端,其他EBGP邻居
            • 3)【非非不传,同一个簇中的两个非客端之间的信息不能传递】RR从一台非客户端学习到的路由,可以传递给本地的其他客户端/EBGP邻居;不能传递给其他的非客户端
            • 4)当路由器执行路由反射时,他只将自己使用的最优的BGP路由进行反射。
          • 当IBGP水平分割被打破之后必然会出现环路所以,路由反射器为了防止环路的出现,又引入了两个属性 ---Originator_ID(起源者ID),Cluster_list(簇列表)
            • Originator_ID(起源者ID)
              • 起源者ID --- O_ID --- 当一条路由信息来到路由反射器时,反射器需要将这条路由信息反射,反射前将在该路由信息中添加这个属性,这个属性的值为该反射器收到这条路由信息的通告者的RID,之后,别的路由反射器收到一条路由信息如果其中包含O_ID,则他将不会改变这个属性。如果一台设备收到一条路由条目其中起源者ID为自己本地的RID,则将不再学习这条路由信息,起到防止环路的效果。
            • Cluster_list(簇列表)
              • 如果在一个AS当中,存在多次反射,则一定存在多个反射簇,则每个RR在反射路由信息时都会在其中簇列表属性中添加本地的簇ID。当一个设备收到一条反射的路由信息后,其中的簇列表属性中包含本地簇ID,则将不再学习该路由,防止环路的产生。
          • 配置命令
            • [r3-bgp]peer 2.2.2.2 reflect-client --- 指定R2作为反射客户,则同时R3自动成为RR
        • 2)联邦

          BGP:边界网关协议_第3张图片
          • 配置命令
      • BGP的选路规则

        • BGP选路的前提条件 --- 丢弃所有不可用的路由信息
        • 选路规则BGP:边界网关协议_第4张图片

         

你可能感兴趣的:(笔记,网络,网络协议)