BGP路由属性和选路

目录

一.BGP原理

1.1BGP报文类型

1.2BGP状态机

1.3路由通告原则

1.3.1BGP路由的产生方式:

1.3.2BGP路由通告原则

1.3.3BGP的防环原则

1.3.4BGP路由黑洞:

二.BGP属性

三.选路原则

3.1、如果此路由下一跳不可达,忽略此路由 

3.2、preferred-value

3.3、local-pref

3.4、优选本地生成的路由

3.5、AS路径最短

3.6、Origin起源属性

3.7、MED

3.8、EBDP学的路由优于IBGP

3.9、优选到BGP下一跳IGP Metric较小的路由

3.10、优选Cluster_ List最短的路由

3.11、优选Rouetr ID最小的路由器发布的路由

四.BGP团体属性

    4.1、公共团体属性

     4.2、自定义团体属性

     4.3、团体列表

五.BGP聚合

        5.1、自动聚合

        5.2、手动聚合


目录

一.BGP原理

1.1BGP报文类型

1.2BGP状态机

1.3路由通告原则

1.3.1BGP路由的产生方式:

1.3.2BGP路由通告原则

1.3.3BGP的防环原则

1.3.4BGP路由黑洞:

二.BGP属性

三.选路原则

3.1、如果此路由下一跳不可达,忽略此路由 

3.2、preferred-value

3.3、local-pref

3.4、优选本地生成的路由

3.5、AS路径最短

3.6、Origin起源属性

3.7、MED

3.8、EBDP学的路由优于IBGP

3.9、优选到BGP下一跳IGP Metric较小的路由

3.10、优选Cluster_ List最短的路由

3.11、优选Rouetr ID最小的路由器发布的路由

四.BGP团体属性

                  4.1、公共团体属性

                  4.2、自定义团体属性

4.3、团体列表


一.BGP原理

1.1BGP报文类型

Open报文:协商BGP参数

Updata报文:交换路由信息

Keepalive报文:保持邻居关系

Notification报文:差错通知

Route-Refresh报文:用于在改变路由策略后请求对等体重新发送路由信息

1.2BGP状态机

1.Idle状是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。也不会像邻居发送TCP syn,只有32S之后才会向邻居发送Tcp syn并且将邻居转为conrtect状态。

2.Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。
     如果TCP连接成功,那么BGP向对等体发送open报文,并转至opensent状态。
     如果TCP连接失败,那么BGP转至Active状态。
     如果TCP syn没有收到邻居的响应,将会卡在connect状态,总是尝试与BGP邻居建立TCP连接。

常见卡在connect状态的原因:

1、邻居没有启用BGP协议

2、沿途路径存在流量过滤将TCP SYN拒绝了。

3、EBGP邻居建立没有配置多跳。
 

3.在Active状态下,BGP总是在试图建立TCP连接。
如果TCP连接成功,那么BGP向对等体发送open报文,关闭连接重传定时器,并转至openSent状态。

如果TCP连接失败,那么BGP停留在Active状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态

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

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

5.在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至ldle状态。

6.在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文.

   如果收到正确的Update或Keepallie报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。

如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至ldle状态。

   Route-refresh报文不会改变BGP状态。
   如果收到Notification报文,那么BGP转至ldle状态。
   如果收到TCP拆链通知,那么BGP断开连接,转至ldle状态。

1.3路由通告原则

建立IBGP邻居关系建议使用坏回口,目的是更加稳定。

默认建立EBGP邻居关系的时候,发送报文的TTL=1.默认建立IBGP邻居关系的时候,发送报文的TTL=255。

1.3.1BGP路由的产生方式:


1、通过network的方式,将本地路由中的路由发布出去。
2、通过import-route的方式,将其他协议的路由引入到BGP协议中。

3、通过手动聚合的方式,产生一条聚合路由(汇总)

如何得到BGP路由呢?
@IBGP邻居给我传递

@EBGP邻居给我传递

@自身产生BGP路由


1.3.2BGP路由通告原则

BGP只会将有效路由中的最优的BGP路由通告给邻居。

@自身产生的BGP路由通告给所有的BGP邻居。

@从IBGP邻居收到的路由,只会传递给EBGP邻居
@从EBGP邻居收到的路由,会传递给所有邻居


1.3.3BGP的防环原则


AS内的防环使用IEGP水平分割机制(只传一跳),即从IBGP邻居收到的路由不会传递给另一个IBGP邻居。

AS之问的防环原则:利用了BGP的路由属性,即BGP将路由发送给EBGP邻居的时候会将自身的AS号添加到as-path列表中;并且规定,从EBGP邻居收到的路由如果携带自身AS号则不接受该路由。
 

1.3.4BGP路由黑洞:


BGP同步:用于防止BGP路由黑洞问题。
BGP同步机制:即从IBGP邻居接收的路由,需要在IGP表中存在,才能够参加最优BGP路由的选举,如果IGP表中不存在,则不会发送给EBGP邻居。
为什么不使用BGP同步解决路由黑洞问题呢?

2、出现了更好的解决方案:
@AS内部采用全互联的IBGP邻居架构,让所有路由器都运行BGP协议,从而使每台路由器都能够学到BGP路由,防止黑洞产生。
@在ASBR上将BGP路由引入到IGP协议中。(该方法已被淘汰)

@在ASBR之间建立GRE隧道,解决路由黑洞问题。(节约成本)

@通过LSP隧道解决路由黑洞问题。
 

二.BGP属性

路径属性分类

Next_hop

EBGP邻居更新路由时,该属性值是两端建立BGP邻居时所用的地址,用的是本端地址,用于根据此属性来寻找该条路由的目的网段,

从EBGP学到的发给IBGP邻居,下一跳属性不变,但是这样不可达。可以在指定邻居的时候将下一跳属性改为建立邻居时的本端地址(peer x.x.x.x next-hop-local)

特点:
1、自身产生的路由发送给所有BGP邻居的时候,下一跳自动修改。
2、从EBGP邻居接受的路由发送给IBGP邻居的时候,下一跳不会自动修改。

3、从EBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改。

4、从IBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改。

5、从IBGP邻居接受的路由不存在发送给IBGP邻居的情况(防环)
 

Aggregator:可选过渡属性

         默认聚合路由之后,聚合路由会添加一个可选过渡属性:
         用于对汇总路由的一种标记,标识路由产生的AS,以及产聚合路由设备的router-id,表明发                   生聚合的位置
Aggregator: AS // 聚合路由产生的AS
Aggregator ID: x.x.x.x  //产生聚合路由设备的router-id。

Atomic-Aggregate:公认任意属性

           如果添加detail-suppressed,将会再次产生一个新的公认任意属性,就是本属性

           作用:用于警告聚合路由出现了属性丢失(带了这条属性就表明这条聚合路由抑制了明细路由)

Originator ID:可选非过渡属性

     用于集群内的防环
     由路由反射器(RR)产生,携带了本地AS内该路由发送者的RouteID

Cluster_List:可选非过渡属性
      用于集群间的防环
      由每个路由反射器(RR)产生,记录反射路由经过的集群。

三.选路原则

3.1、如果此路由下一跳不可达,忽略此路由 

3.2、preferred-value

    ①华为BGP私有属性。

    ②只在本地有效,不会传递给任何的BGP邻居

    ③默认等于0

    ④BGP的选路属性,越大越优

    ⑤针对发送给邻居的BGP路由,无法修改协议协议首选值,因为报文中并不携带。

    ⑥针对接收BGP邻居的路由,才可修改协议首选值。


应用场景:当不想影响其他设备的选路,只针对单台设备的选路进行控制的时候,建议使用协议首选值。

3.3、local-pref

   ①公认任意属性

   ②只在一个AS内部传递不会传递给EBGP邻居

   ③用于BGP路由的路径选择(默认100,越大越优)   

   ④ 应用在AS内,存在多个出口的时候选择一个出口访问外部网络。

EBGP路由不携带本地优先级属性,对于不携带本地优先级属性的BGP路由,设备将会认为这个BGP路由的本地优先级为默认本地优先级(默认的本地优先级为100)


修改方式:
  ① 针对接收或者发送给BGP邻居的路由进行修改(route-policy)
       EBGP邻居之间out方向不可修改
       EBGP邻居之间in方向可以修改
       IBGP邻居之间可以在in/out方向进行修改。

  ②修改默认的本地优先级。
       [AR2-bgp]default local-preferenceI/修改默认的本地优先级。

关键点:在只会对没有本地优先级属性的路由生效。

哪些BGP路由没有本地优先级呢?
    ① 自身产生的: network和import-route指令变成的BGP路由没有本地优先级。

    ②邻居传递的:EBGP邻居传递的路由默认没有本地优先级

3.4、优选本地生成的路由

      手动聚合>自动聚合>network>import>从其他对等体学习到的

      如何判断路由是否是自己产生的?

     ①  路由下一跳地址为127.0.0.1即为聚合产生的

     ②下一跳地址为0.0.0.0即为netwoke和import产生的

3.5、AS路径最短

     ①公认必遵属性
     ②用于AS之间的防环属性

     ③用于BGP路由的路径选择。
    AS之间防环:

       1、BGP设备将路由发送给EBGP邻居的时候,将会在路由的AS-PATH属性中添加自身的AS号。
       2、BGP设备从EBGP邻居接受路由的时候,将会检查路由的AS-PATH属性列表,如果存在自身的AS号,那么将忽略这条BGP路由。
      3、IBGP邻居之间不会做AS-PATH的防环检测。

修改方式:AS-PATH在任何BGP邻居之间的in/out方向都可以进行修改。
     apply as-path 100 additive       //在原有的AS-PATH列表中添加新的AS号。

     apply as-path 100  overwrite    /使用指定的AS-PATH覆盖原有的AS-PATH
 

3.6、Origin起源属性

       选路规则:I>E>?(network>e>import)

       ①公认必遵属性   

       ②描述了这条路由怎么成为BGP路由的
       ③ I表面该路由是netwoke进来的   

       ④ ?表示该路由是import进来的
       ⑤e表示是从EBGP邻居学来的    

3.7、MED

     也叫作BGP的COST值,或者说叫做BGP的度量值,主用影响邻居AS的选路
    ①可选非过渡属性
    ②用于BGP路由的路径选择(越小越优)
    ③如果报文中不携带MED值,默认认为MED为0。


如何产生MED呢:

      当一条路由变为BGP路由的时候,这个路由在IP路由表中的Cost为多少,那么变为BGP路由                  之后MED为多少。


华为MED通告原则:
     1、自身始发的路由,MED会通告为IBGP和EBGP邻居。
     2、从IBGP邻居接受的路由,传递给EBGP邻居的时候,不携带MED。

     3、从EBGP邻居接受的路由,传递给IBGP邻居的时候,携带MED值

     4、从EBGP邻居接受的路由,传递给EBGP邻居的时候,不携带MED。

MED的修改方式:
     在所有BGP邻居之间in/out方向均可修改。(routing-policy)


什么时候才会比较MED值?
     ①默认情况下,只有当两条BGP路由as-path列表中,最左边的AS号相同的时候,才会进行                    MED的比较

     ②compare-different-as-med    //命令用来配置允许比较来自不同自治系统中的邻居的路由的                  MED值。
 

3.8、EBDP学的路由优于IBGP

3.9、优选到BGP下一跳IGP Metric较小的路由

P  L  L   A   O  M  E  N(漂亮老男人)

当这些都满足了,就可以做负载了(经过的AS-PATH必须数量顺序完全一致才可以做负载)

BGP负载

 maximum load-balancing ?
   INTEGER<1-8>   //针对IBGP和EBGP路由都开启负载

   ebgp                    //针对EBGP路由开启负载
   ibgp                     //针对IBGP路由开启负载

load-balancing as-path-ignore //配置了这条命令就不会比较AS-PATH属性了,只要上面几条选路                                                      原则都满足了就可以直接负载
负载是在IP路由表中负载,BGP路由表不会负载


无论BGP设备是否开启负载功能,都会选取出一条最优的BGP路由传递给邻居。
 

3.10、优选Cluster_ List最短的路由

       用于路由反射器的防环机制

       该属性为可选非过渡

       用于集群间的防环
       由每个路由反射器(RR)产生,记录反射路由经过的集群。
 

3.11、优选Rouetr ID最小的路由器发布的路由

.

四.BGP团体属性

  作用:
         1、用于限制BGP路由的传递范围。
         2、类似于IGP协议中的tag值,用于对BGP路由实现标记。

分类:


    4.1、公共团体属性


                  Internet:默认所有路由都有该属性,具有该属性BGP路由发送给所有的BG邻居,
                              但是依然要满足BGP路由的通告原则。
                  No_Advertise:收到有这个属性的路由,自身不会发送给任何BGP邻居。

                  No_Export:收到了有这个属性的路由,会发给IBGP邻居但是不会发送给EBGP邻居。


@团体属性,不会自动传递给BGP邻居,需要在邻居之间配置开启团体属性的传递功能。

peer x.x.x.x advertise-community  //开启传递团体属性的功能

必须逐跳开启,比如1传给2,需要在1上开启,2传给3需要在2上开启,否则传递的不会携带团体属性

@团体属性可以携带多个,当存在冲突的时候,传递范围小的生效

     4.2、自定义团体属性

                         一共四个字节,用于对BGP路由实现标记。
            aa:nn : aa占用2个字节,nn占用两个字节,取值都是0~65535。一般使用路由器所在的AS                          号表示。

           团体号:4个字节全部使用十进制数进行表示,其中存在一些私有的范围,具体查看华为说                            明。


     4.3、团体列表

                 ip community-fiter本质作用就是为了对BGP路由的团体属性进行匹配。
       类型:1、基本:编号范围1-99,直接配置团体属性,匹配BGP路由。
               2、高级:编号100-199,通过正则表达式匹配BGP路由。
               3、默认拒绝所有。
 

五.BGP聚合

     聚合优势:
            1、优化BGP设备的路由表和BGP表。
            2、当明细路由出现震荡之后,聚合路由不会产生影响,网络更加稳定。

            3、维护较少的BGP路由,节省设备系统资源。
            4、当所有明细路由失效时候,聚合路由才会失效。


        5.1、自动聚合

             IPV4支持
            @默认关闭状态。
            @自动聚合只能聚合成为有类网络,聚合的精确度非常差。

            @只能针对本设备import-route的路由生效,灵活性较差。
            @执行自动聚合时,不能添加route-policy,修改路由的部分属性。

            [AR1-bgp]summary automatic   //开启自动聚合功能。

        5.2、手动聚合

              IPV4和 IPV6同时支持。
             @只要是在本地BGP表中存在的有效路由,就可以执行聚合,灵活度较强。

             @聚合路由属于本地始发的路由,会通告给所有的BGP邻居。
             @产生聚合路由的时候,本地IP路由表中将会自动产生一条指向Nullo的聚合路由,用于                     防止环路产生。

聚合路由属性生成如下:
          1、协议首选值:默认为0。

          2、本地优先级:默认为空。

          3、as-path:默认为空。(聚合路由的as-path不会继承明细路由的as-path,使用AS_SET可以继承明显路由的as-path)
          4、orgin属性 ﹔如果明细路由的origin属性相同,则聚合路由取值与明细相同。
                                   如果明细路由的origin属性不同,则聚合路由按照?>e>i进行选择。
          5、MED属性:默认为空。


默认聚合之后,聚合路由会添加一个可选过渡属性:Aggregator
         用于对汇总路由的一种标记,标识路由产生的AS,以及产聚合路由设备的router-id,方便找           到产生此聚合路由的位置。


           Aggregator: AS     //聚合路由产生的AS
           Aggregator ID: 10.0.12.1    //产生聚合路由设备的router-id。

如添加detail-suppressed,将会再次 产生一个新的公认任意属性

              Atomic-aggregate :用于提示管理员,聚合路由出现了路径的丢失|
 

AS_SET:由一系列AS号无序地组成,包含在UPDATE消息里。
             当网络发生聚合时,可通过适当策略使AS_PATH使用类型AS_SET来避免路径信息丢失。


AS_SEQUENCE:由一系列AS号顺序地组成,包含在UPDATE消息里。

                            一般情况下,AS_PATH类型为AS_SEQUENCE。(用z中括号包含)
                aggregate 192.168.0.0 22 detail-suppressed  //执行路由聚合的时候抑制明细路由。
                aggregate 192.168.8.0 22 as-set                    //使聚合路由,包含明细路由的as号。
 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值