CCNP知识点总结——BGP

1、BGP介绍

      BGP(Border Gateway Protocol,边界网关路由协议),为路径矢量路由协议,主要作用是在AS之间传递路由信息。BGP的自治系统通过AS号区分,AS号取值范围1-65535,其中64512-65535是私有AS号。目前BGP有4个版本:V1、V2、V4、V4+(即MBGP)。

2、BGP的路径矢量特征

      路径矢量信息中包含一个BGP自治系统号列表,BGP路由器不接受路径列表中包含其AS号的路由更新,是无环路的,BGP支持对BGP自治系统路径应用路由策略,BGP路由器只能将其使用的路由通告给邻接自治系统中的对等体。

3、BGP的TCP传输

      BGP使用TCP为传输层协议, TCP端口号179。BGP路由器之间建立TCP连接,这些路由器称为BGP对等体也叫BGP邻居:EBGP、 IBGP。对等体之间交换整个BGP路由表, BGP路由器只发送增量更新。BGP通告成千上万的路由,可采用TCP滑动窗口的机制,停止并等待确认前,可以发送65576个字节。

4、BGP的三张表

      (1)BGP邻居表: 邻居列表 show ip bgp summary。
      (2)BGP表: 包含了从邻居学习所有路由,以及到达目的网段的多个路径和属性。
      (3)路由表: 列出了到达目的网段的最佳路径。 EBGP路由AD为20, IBGP路由AD为200。
      运行BGP的路由器有一个独立的表( BGP表)。
      路由器将BGP表中最佳路由提供给IP路由表。

5、BGP报文


6、BGP有限状态机

7、EBGP和IBGP

      EBGP: BGP位于不同自治系统的路由器之间,称为EBGP。建立EBGP邻接关系,必须满足三个条件:

     (1)EBGP之间自治系统号不同;

     (2)neighbor中指定的IP地址要可达;

     (3)定义邻居建立TCP会话。

     IBGP:IBGPBGP位于同一个自治系统的路由器之间运行,用于同一个AS中交换BGP信息。建立IBGP邻接关系,满足的条件:

     (1)自治系统号相同;

     (2)定义邻居建立TCP会话;

     (3)IBGP邻居可达。

8、IBGP水平分割原则

      EBGP防环是通过AS_PATH实现的,而AS_PATH仅仅在路由离开AS才会被更改。因此在AS内, IBGP就没有EBGP的防环能力,为了防止环路的出现, BGP路由器不会将从IBGP邻居学习过来的路由再通告给自己其他IBGP邻居。由于水平分割原则, BGP要求AS内,须保证IBGP全互联( 用neighbor命令指定) 。

9、EBGP和IBGP的区别

     (1)EBGP—外部边界网关协议主要作用是在不同的自治系统间交换路由信息。

              IBGP—内部边界网关协议主要作用是向内部路由器提供更多信息。

     (2)EBGP一般情况下都要求EBGP邻居之间存在物理连接。

              IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可(IGP通告路由)。

     (3)从EBGP邻居学到的路由通告给IBGP和EBGP;

              从IBGP邻居学到的路由,是否通告给自己EBGP邻居,要根据AS内的BGP和IGP路由表是否同步而定,但不会再通告给IBGP邻居(水平分割,防止环路)。

     (4)EBGP防止环路通过AS_PATH属性来实现。

             IBGP和EBGP使用的BGP属性不同,例如IBGP可以传递LOCAL_PREF(本地优先属性),而EBGP不行。

10、BGP配置




11、BGP同步

      (1)BGP同步规则意义:BGP路由器不应使用通过IBGP获悉的路由或将其通告给外部邻居,除非该路由是本地的或通过IGP获悉的。
      (2)禁用同步,则BGP可以使用IBGP邻居那里获悉的但没有出现在本地路由表中的路由,并将其通告给外部BGP邻居。Cisco IOS默认禁用同步。
      (3)BGP同步规则的目的:为防止一个AS内部(非全互联)出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由。
      (4)BGP同步规则的问题:若将BGP路由发布到IGP,那么是IGP路由器要维护数以万计的外部路由,对路由器的资源占用将带来巨大的开销。
      (5)结论:通常BGP协议的运行需要关闭同步。

      (6)路由的正常传递:1.同步问题2.下一跳问题。

      禁用同步配置:Router(config-router)#no synchronization

      启用同步配置:Router(config-router)#synchronization

12、Peer Group

      将更新策略相同的邻居划分到一个对等体组中,简化配置,对等体组成员继承对等体组的所有配置选项,更新对于每个对等体组值生成一次,每个成员复制该更新。

      配置:

      Router(config-router)#neighborpeer-group-namepeer-group

      Router(config-router)#neighborip-addresspeer-grouppeer-group-name


13、身份验证

      BGP支持MD5邻居身份验证,启用身份验证后,将对通过对等体之间的TCP连接传输的所有数据等进行验证,认证都是在TCP建立连接的时候完成的。

      配置:Router(config-router)#neighbor{ip-address | peer-group-name} passwordstring

14、管理性关闭

      Router(config-router)#neighbor{ip-address|peer-group-name}shutdown 

      从管理层面暂时关闭某个邻居,而避免删除配置

      Router(config-router)#no neighbor {ip-address|peer-group-name}shutdown

      重新启用 

15、路由汇聚





16、路由反射器


17、联盟


18、硬重置和软重置

      重置BGP会话:将新策略应用于所有路由,必须触发一个更新。主要使用2种触发更新的方式:硬重置、软重置。

      硬重置:断开相应的TCP连接,通过这些会话收到的所有信息都将失效,并从BGP表中删除。
                    重置命令:clear ip bgp *,clear ip bgp{neighbor-address}

      软重置:不会重置BGP会话,创建一条新的更新,并将整个BGP表发送给指定的邻居,需要修改策略时,建议使用该命令。
                    重置命令:clear ip bgp * soft。

19、查看BGP表

      show ip bgp neighbors {address} routes

      show ip bgp

      show ip bgp neighbors {address} advertised-routes 

      debug ip bgp updates

20、BGP属性

      公认属性Well-Known:(1)公认强制属性Well-known mandatory;

                                              (2)公认自由属性 Well-known discretionary;

      可选属性 Optional:(1)可选传递的Optional transitive;

                                        (2)可选非传递的Optional non-transitive。


       (1)WEIGHT

                 在路由器本地配置,只提供本地路由策略,不会传播给任何BGP邻居,范围:0~65535,越大越优先。路由器本地通告的路径默认权重为32768,从其他BGP邻居学习到的为0

       (2)AS-path —公认强制属性

                AS-path是前往目标网络的路由经过的自制系统号列表,通告该路由的自治系统号位于列表末尾。作用:确保无环,通告给EBGP时会加上自己的AS号;通告给IBGP时不修改AS-path

       (3)Origin — 公认强制属性

               Origin指出了路径信息的源头,有下列3种可能:<1>IGP:在AS内部,用network通告路由时,用i表示;<2>EGP:路由通过EGP获悉,用e表示;<3>Incomplete:路由的源头未知或是通过其他方法获悉的,用?表示。例如重发布。路由优选顺序: lowest origin code (IGP < EGP < Incomplete) 。

       (4)NEXT_HOP —公认强制属性

               NEXT_HOP指出了用于前往目的地的下一跳IP地址,BGP中的下一跳为AS

                对EBGP会话来说, NEXT-HOP就是通告该路径的EBGP邻居的接口IP。对IBGP,起源AS内部的路由的NEXT-HOP就是通告该路径的邻居的IP。(如果有设定更新源,则为更新源地址),而从EBGP学到的路由的
NEXT-HOP,在IBGP内传递时不变,始终指向的是下一个AS(本AS对端的EBGP邻居接口IP)。

       (5)LOCAL PREFERENCE —公认自由属性

                 LOCAL PREFERENCE告诉AS中的路由器,哪条路径是离开AS的首选路径。LOCAL PREFERENCE越高路径越优。默认本地优先级为100只发送给IBGP邻居,而不能传递给EBGP邻居。

       (6)MED — 可选非传递属性

                 MED用于向外部邻居指出进入AS的首选路径,即当入口有多个时,自治系统可以使用MED动态的影响其他AS如何选择进入路径。MED值越小越优先,Cisco定义的MED值默认值是0MED是在AS之间交换,MED发送给EBGP对等体,这些路由器在AS内传播MED,不传递给下一个AS。默认情况下,仅当路径来自同一个AS中的不同邻居时,路由器才比较他们的MED属性。MED影响进入AS的数据流;LOCAL PREFERENCE影响离开AS的数据流。
                 比较原则及配置注意事项
                 本地在将一条BGP路由通告给EBGP Peer时,是否携带MED,需要根据以下条件进行判断(不对EBGP Peer使用Route-map的情况下)
                 <1>如果该BGP路由是本地始发(networkredistribute),则携带MED值发送给EBGP Peer (如果MED为空,则设置为0)。
                 <2>如果该BGP路由是从其他BGP Peer学习过来的,那么将该路由通告给EBGPPeer时不携带MED。
                 <3>本地在将一条BGP路由通告给IBGP Peer时,一定会携带MED值。如果接收或产生的路由的MED为空,那么在向IBGP Peer通告时,将MED设置为0。
                  总结: MEDIBGP之间传递不会丢失,在EBGP之间传递要看路由是否起源于自己。

       (7)COMMUNITY — 可选传递属性

               COMMUNITY用于简化路由策略的执行,可以将某些路由分配一个特定的COMMUNITY属性,之后就可以基于COMMUNITY值而不是每条路由进行BGP属性的设置了。
              route-map bgp permit 10
              set community ?
              <1-4294967295> community number
              aa:nn                community number in aa:nn format //
路由所属as:nn标识
              additive            Add to the existing community
              internet             Internet (well-known community) //
默认所有路由都属于该团体
              local-AS            Do not send outside local AS (well-known community)
                                        //不把这条路由传出本AS(联邦as中的小联邦) 。

                                        //如果没有联盟,那么这个效果和no-export是一样的,都不会传递出本AS
              no-advertise      Do not advertise to any peer (well-known community) 

                                         // 不通告给任何邻居
              no-export          Do not export to next AS (well-known community)
                                        //不把这条路由传给EBGP对等体(如果配置了联邦,则针对大as

21、BGP 13条选路原则

       前提:路由下一跳不可达或没有解决同步问题,则不能参与路由选择:
       1.  选择weight值最高的路由——思科私有
       2.  选择LOCAL_PREF较大的路由
       3.  选择本AS路由器产生的路由
       4.  选择AS路径较短的路由
       5.  依次选择origin属性为IGP、 EGP和INCOMPLETE类型的路由
       6.  选择MED较小的路由
       7.  优选EBGP而不是IBGP
       8.  选择下一跳IGP度量值较小的路由
       9.  负载均衡, BGP默认不支持负载均衡。若配置负载均衡,则不比较后面的参数。( maximum-paths n)
       10.  优先选择最老的路由(即最稳定的路由) —EBGP
       11.  选择BGP Router ID小的BGP对等体通告的路由
       12.  优先选择最短的cluster-list
       13.  优先选择邻居IP地址最小的路由(neighbor指定的地址)

       补充说明:
       (1)第3点:意思是路由器本地network的,也就是下一跳为0.0.0.0的路由。
                本地发起的路由有多种方式,如在BGP进程下用network命令,或将其它路由协议重分布进BGP的,或者手工汇总的。通过命令network和重分布的优先于手工汇总的路由。
       (2)第4点:在做聚合路由时,使用as-set后产生的AS-Path列表中{ }里的AS号长度只算一个AS号的长度,在联盟内的AS-Path列表中()的AS号长度不做计算依据。
       (3)第9点:等价负载均衡,当前面8条选路原则都无法优选出最优路由时,并且在BGP进程下面配置了maximum-paths,那么将执行负载均衡。
       (4)第10条,第11条:如果BGP进程下使用bgp bestpath compare-routerid命令,则忽略第10条,进行第11条的比较。

22、Local preference 使用
       IBGP邻居之间,选择离开本AS的出口。默认为100 ,越大越优。Local preference是公认自由属性。

       Router(config-router)# bgp default local-preference value

       此命令更改默认的本地优先级,向IBGP邻居发布的所有路由都将本地优先级设置指定的值。 



23、MED使用

       EBGP之间存在多个路径时,使用MED,Cisco的默认设置0,越小越优,MED是可选非传递属性。

       Router(config-router)# default-metric number

       此命令更改默认的MED值,通告给EBGP邻居的所有路由都将设置为使用此命令指定的值。


24、BGP路由过滤

       neighbor 1.1.1.1 prefix-list 1 {in | out}
       用前缀列表来过滤,这个是BGP的标准过滤方法,可以用in和out方向。
       neighbor 1.1.1.1 distribute-list access-list-number {in | out}
       用访问控制列表来过滤,支持扩展访问控制列表。建议用prefix-list来过滤。
       neighbor 1.1.1.1 route-map XX {in | out}
       用route-map来过滤,一般用在前缀有属性改变的时候。
       neighbor 1.1.1.1 filter-list as-path-access-list-number {in | out}
       用as-path-access-list所定义的正则表达式表示的AS-path来过滤。


       例:
             ^123$ 表示只匹配AS 123
             ^100 表示匹配以100打头的字符串。
             100$ 表示以100结尾的字符串。
             ^$ 表示没有经过任何AS,即本地AS的路由。
             ^12[0-3]$ 表示匹配120 121 122 123
             ^12. 表示匹配12120 – 129开始的AS号。
             .* 表示匹配任意。

             (1)只接收起始于AS5044的路由:
                      router bgp 65022
                            no synchronization
                            neighbor 172.16.0.1 remote-as 4
                            neighbor 172.16.0.1 filter-list 1 in
                            no auto-summary
                      ip as-path access-list 1 permit _5044$
            (2)只通告起始于本地( AS100)的前缀:
                      router bgp 100
                            neighbor 10.1.1.1 remote-as 65535
                            neighbor 10.1.1.1 route-map map1 out
                      route-map map1 permit 10
                            match as-path 1
                      ip as-path access-list 1 permit ^$

25、移除私有AS号

       Remove private AS:过滤私有的AS号

       neighbor{ip-address|peer-group-name}remove-private-as

26、限制BGP路由数目

       (1)Maximum-Prefix:用来限制路由器最多只能从邻居处接收多少条路由:
                 neighbor 10.10.1.1 maximum-prefix 100
                 neighbor 10.10.1.1 maximum-prefix 100 85(百分比)
                 neighbor 10.10.1.1 maximum-prefix 100 85 warning-only
       (2)限制路由经过的AS的数目:
                 bgp maxas-limit {1-2000}
       (3)条件路由:
                 neighbor 10.10.1.1 advertise-maproute-map-Aexist-maproute-map-B
                 当route-map-B里面匹配的路由存在于路由表,则向邻居10.10.1.1通告route-map-A匹配的路由 (必须要network进BGP)。
                 neighbor 10.10.1.1 advertise-map
route-map-Anon-exist-maproute-map-B
                 当route-map-B里面匹配的路由不存在于路由表,则向邻居10.10.1.1通告route-map-A匹配的路由 (必须要network进BGP)。

27、BGP Dampening

        BGP利用Dampening机制,将频繁抖动的路由有条件的加以抑制。
        router bgp 1
             bgp dampening


        Half-life Time : 15 m 半衰期
        Reuse : 750 降到这个值以下,重新开始启用路由
        Start Suppress : 2000 升到这个值以上,开始抑制
        Max Suppress Time : 60 m (4×15) 最大抑制时间


        BGP默认不启用Dampening,且仅对EBGP邻居传来的路由起效。

28、4字节AS号

       2字节AS号:1-65535,其中,1-64511为公有AS号,64512-65535为私有AS号。

       4字节AS号:最大为4,294,967,295。

       4字节AS号分为asplain和asdot两种写法:

                asplain:2-byte 和 4-byte 都使用十进制来表示,

                asdot:2-byte 使用十进制表示, 4-byte 用点号分隔,

                             如65536=1.0,65,536,005 =1000.5,123=0.123

       启用asdot格式:Router(router-config)# bgp asnotation dot

       禁用asdot格式:Router(router-config)# no bgp asnotation dot
       硬重置BGP会话:clear ip bgp *
       AS 23456作为4字节AS号路由器到2字节AS号路由器的替代写法。

       neighbor 10.3.4.2 remote-as 23456 

       可选传递属性:NEW_AGGREGATOR 和 NEW_ASPATH

       当R2#show ip bgp neighbors 12.1.1.1 中出现Four-octets ASN Capability: advertised and received时,代表该路由器支持4字节AS号。