NP笔记——09 BGP的路由聚合和策略

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/x503809622/article/details/82629735

路由聚合的概述:

         将具体的路由条目汇聚成一条聚合路由

         路由聚合原则采用最长相同掩码匹配的方法

BGP的路由聚合有两种:自动聚合和手动聚合

        

自动聚合:

         对BGP引入的IGP子网路由进行聚合。配置自动聚合后,生成聚合后的自然网段路由,而原引入的子网路由被抑制,不会被优选和发布给BGP邻居。

         summary automatic命令用来使能对引入的路由进行自动聚合,undo summary automatic命令用来取消对引入的路由进行自动聚合。

缺省情况下,不对引入的路由进行自动聚合。

命令:

         bgp ID

         summary automatic

 

手动聚合:

对BGP本地路由进行聚合。通常情况下,手动聚合的优先级高于自动聚合的优先级。缺省情况下手动聚合后会把明细路由和聚合路由一起发布。

         aggregate命令用来在BGP路由表中创建一条聚合路由,undo aggregate命令用来关闭该功能。

缺省情况下,不进行路由聚合。

通过“aggregate”命令把多条BGP明细路由聚合为一条汇总路由,并通告给其它对等体。与summary automatic命令不一样,aggregate命令需要手动输入指定聚合的前缀和掩码 ip-address mask [ as-set | attribute-policy route-policy-name1 | detail-suppressed | origin-policy route-policy-name2 | suppress-policy route-policy-name3 ]

         aggregate IP-ADDR MASK detail-suppressed(手动聚合,detail-suppressed是抑制明细路由)

 

路由聚合之后,聚合路由会不带原有的AS_SET属性,会导致路由环路或者路由黑洞,所有要让聚合路由带上AS_SET属性

         aggregate x.x.x.x MASK detail-suppressed as-set

         聚合路由后,会带上原有的路由条目的所有的AS_PATH,防止路由环路和路由黑洞

 

使用as-set 参数后聚合路由的 AS 信息中包含被聚合的每条具体路由的AS 信息,并随着被聚合路由的更新而变化。若其中一条路由失效,聚合路由的属性发生了变化。如果聚合路由聚合了成千上万条路由,而且具体路由有问题的话,聚合路由就会不断地发生振荡。

        

 

 

聚合路由问题:

         BGP聚合路由默认的情况下,不继承原有BGP路由的属性

         通过命令aggregate ip-address mask [ as-set | attribute-policy route-policy-name1 | detail-suppressed | origin-policy route-policy-name2 | suppress-policy route-policy-name3 ] ,配置attribute-policy参数可用于修改BGP聚合路由属性。

         命令:配置上团体属性:

                   route-policy NAME permit node 10

                   apply community no-export

                   quit

                   bgp ID

                   aggregate x.x.x.x MASK detail-suppressed as-set attribute-policy NAME

 

过滤策略:

origin-policy

使用关键字origin-policy仅选择符合route-policy的具体路由来生成聚合路由。(当某条路由存在的时候才会进行聚合)

命令:

         route-policy NAME permit node 10

         if-match acl 2000

         quit

         acl 2000

         rule 5 permit source IP网段 掩码通配符

         quit

         bgp ID

         aggregate x.x.x.x MASK detail-suppressed as-set origin-policy NAME

当在匹配的到网段路由消失,则不会路由汇聚

suppress-policy

关键字suppress-policy能产生聚合路由,但抑制指定路由的通告。可以用route-policyif match子句有选择地抑制一些具体路由,其它具体路由仍被通告。

         命令:

         route-policy NAME permit node 10

         if-match acl 2000

         quit

         acl 2000

         rule 5 permit source IP_ADDR 掩码通配符

         rule 10 permit source IP_ADDR 掩码通配符

         …..

         quit

         bgp ID

         aggregate x.x.x.x MASK  as-set suppress-policy NAME(不能加detail-suppressed,会抑制所有路由)

         抑制策略匹配到的路由条目,不匹配的不会被抑制

 

路由策略

BGP可以结合几乎所有的策略工具,过滤从邻居收到的或发送的给邻居的路由信息

 

BGP的选路参数:

根据BGP的选路原则以及BGP常用的路径属性,我们可以总结出9个影响BGP选路的重要参数,分别为:

Preferred Value

LOCAL_PREF

AS_PATH

ORIGIN

MED

邻居类别是EBGP还是IBGP(华为两个一样)

IGP内部开销值

Cluster List /ROUTER_ID

COMMUNITY

以上参数都能直接地影响BGP的路径选择,其中我们常用的参数分别为LOCAL_PREF, AS_PATH和MED属性。对于这些参数的配置以及使用方法,我们会在后面的课程里给大家详细介绍。

 

BGP路径选择:

  1. 如果此路由的下一跳不可达,忽略此路由
  2. preferred-value值数值高的优先
  3. local-preference值最高的路由优先
  4. 聚合路由优先于非聚合路由
  5. 本地手动聚合的路由优先于自动聚合的路由
  6. 本地通过network命令引入的路由优先于本地通过import-route命令引入的路由
  7. AS路由的长度最短的路由优先
  8. 比较origin属性,igp优于EGP,EGP优于incomplete
  9. 选择MED最小的路由
  10. BGP优先选择到BGP下一跳的IGP度量最低的路径

当以上全部相同的时候,则为等价路由,可以实行负载分担

注:AS_PATH必须一样

当负载分担时,以下3步骤无效

  1. 比较cluster list长度,短者优先
  2. 比较originator_ID(如果没有,则使用Router_ID进行比较),选择数值最小的路径
  3. 比较对等体的IP地址,选择IP地址数值最小的路径

 

修改preferred-value:

         直接修改:

                   bgp ID

                   peer x.x.x.x preferred-value 100 ( 从x.x.x.x学习到的路由修改为100)

 

 

Local-Preference

LOCAL_PREF属性通常用于影响AS内部出流量的路径选择。当AS内部的BGP Speaker存在多条到达同一外部目的地的路径时,LOCAL_PREF就变得相当有用。

default local-preference命令用来配置BGP的缺省本地优先级,该值越大则优先级越高。华为设备LOCAL_PREF数值的范围是0-4294967295,默认值为100。

本地优先级属性只在IBGP对等体至今传递,不通过给其他AS

命令:

直接修改:

                  bgp ID

                  default local-preference NUMBER

         通过策略修改:

                  acl 2000

                   rule 5 permit source 匹配的IP  通配符

                   quit

                   route-policy NAME1 permit node 10

                   if-math acl 2000                          若匹配到ACL2000

                   apply local-preference 2000   将local-preference修改为2000

                   quit

                   route-policy NAME1 permit node 20  若在节点10没有匹配到会匹配节点20

                   apply local-preference 1000             将local-preference修改为1000

                   quit

                   bgp ID

                   peer x.x.x.x route-policy NAME1 import 从邻居x.x.x.x入方向路由匹配NAME1策略

策略工具:route-policy,节点号node类似acl的编号,当有多个节点时,即使第一个匹配到,也会继续向后查表

         策略中的if-match和apply类似”如果”和”就”

         若在写如果是,不写如果,则是匹配剩下的所有的,去执行apply的操作

         route-policy默认是拒绝所有的,当没有条件匹配会执行deny操作

 

6、network和import

         network高于import

         通过引入试验查看

 

7、AS,每经过一个AS,会携带该AS号,经过的AS越少越优先

         修改AS_PATH

         通过route-policy

         命令:

                   acl 2000

                   rule 5 permit source IP_ADDR 掩码通配符

                   quit

                   route-policy NAME2 node 10

                   if-math acl 2000

                   apply as-path AS_NUM  ——使用的AS_PATH使用修改IP的AS号

                   quit

                   route-policy NAME2 node 20

                   quit(什么都不写表示什么都不做,不会拒绝)

                   bgp ID

                  peer x.x.x.x route-policy NAME2 import

         做完之后使用refresh bgp all import,入方向的刷新            

         也可以在出方向做

        

8、比较起源的属性Origin属性,IGP优于BGP,BGP优于incomplete

         i通过network,?通过import-route,

    

9、选择MED较小的路由(入方向,)

         缺省情况下,MED值为0

          MED值越小越优先,当存在到某个网络有多个出口的时候,以MED作为度量值指明最佳入口路径。MED属性相当于我们平常熟悉的COST值,取值范围0-4284967295,数值越小越优先,默认值为0。

         MED属性仅在相邻两个AS之间传递,收到此属性的AS不会再通告给任何其他第三方AS。

         命令:

                   bgp ID_NUM

                   default med MED_NUM

              该命令只对引入的路由生效

          策略匹配:

                   acl 2000

                   rule 5 permit source x.x.x.x 掩码通配符

                   quit

                   route-policy NAME3 permit node 10

                   if-match acl 2000

                   apply cost 100

                   quit

                   route-policy NAME3 permit node 20

                   quit

                   bgp ID

                   peer x.x.x.x route-policy NAME3 export

                   end

                   refresh bgp all export

        

10、BGP优先选择到BGP下一跳的IGP度量最低的路径(通过ospf cost NUM修改接口cost)

         都一样的时候开启负载分担的,但是默认是不开启的

         开启负载分担:

                   bgp ID_NUM

                   maximum load-balancing ibgp 2

                   查看bgp路由表的时候不会显示,要查看IGP路由表

 

11、

12、(routeID一样的时候可能是两路由器之间有俩条链路连接)

 

过滤:

AS-PATH Filter:

          在同一个列表编号下,可以定义多条过滤规则(permit或deny)。在匹配过程中,这些规则之间是“或”的关系,即只要路由信息通过其中一项规则,就认为通过由该列表编号标识的这组AS路径过滤列表。

         AS-PATH Filter 通过正则表达式过滤AS_PATH属性信息。

         正则表达式只是BGP过滤的一种方法。

         正则表达式是按照一定的规则来匹配字符串的公式。基于这些字符串对BGP路由的AS_PATH属性做出判断(接收或者拒绝)。实际上可以认为它是一个AS_PATH的ACL。

         正则表达式可以定义多个permit或deny的语句,语句与语句之间是“或”的关系。

 

例子:

                  ip as-path-filter 1 permit ^12.*74$

                  匹配AS-path中字符串,最左边为12,中间可以有任意多个字符,以74结束

逻辑或

         ip as-path-filter 1 permit 23|43

         匹配到有23或43的AS号,只要AS-PATH中的所有AS号字符串能匹配到,

表达式:

         ip as-path-filter 1 permit [1-3][47]

         匹配有14,17,24,27,34,37的AS号,只要AS号中有该字符串,就能匹配

_匹配一个符号,

         ip as-path-filter 1 permit _34512 170$

         匹配AS34512与AS170直接相连的

 

 

.匹配任意字符

         ip as-path-filter 1 permit [1-3].[47]

         匹配字符:1X4,1X7,2X4,2X7,3X4,3X7,.也可以匹配到空格,还有多种可能

*和+

         ip as-path-filter 1 permit _621 .+ 170$

         接收AS170实发的路由,但是要经过AS621

常用的正则表达式;

 

配置命令:

                   ip as-path filter 1 permit 正则表达式

                   bgp ID

                   peer x.x.x.x as-path-filter 1 import

                  只接收符合正则表达式的匹配的AS-PATH的路由信息

        

BGP Community:团体属性:

         当传来的路由加上团体属性

         通过识别团体属性,从而对不同方向传来的路由做策略,

         配置命令:

                   RTA:

                   route-policy set_community permit node 10

                   apply community 100:1

                   quit

                   bgp 100

                   peer 10.1.1.2 route-policy set_community export \\在出方向上应用路由策略set_community

                   peer 10.1.1.2 advertise-community        \\用来配置将团体属性发布给对等体(组),缺省情况下,不将团体属性发布给任何对等体(组)

                   RTD:

                   route-policy set_community permit node 10

                   apply community 100:2

                   quit

                   bgp 100

                   peer 10.3.3.1 route-policy set_community export \\在出方向上应用路由策略set_community

                   peer 10.3.3.1 advertise-community        \\用来配置将团体属性发布给对等体(组),缺省情况下,不将团体属性发布给任何对等体(组)

中间经过的路由也要能发送团体属性:peer x.x.x.x advertise-community

                   RTC:

                   ip community-filter 1 permit 100:1

                   ip community-filter 2 permit 100:2

                   route-policy set_local_pref permit node 10

                   if-match community-filter 1

                   apply local-preference 200

                   quit

                   route-policy set_local_pref permit node 10

                   if-match community-filter 2

                   apply local-preference 50

                   quit

                   bgp 300

                   peer 10.2.2.1 route-policy set_local_pref import

                   peer 10.2.2.1 advertise-community

                   peer 10.3.3.2 route-policy set_local_pref import

                   peer 10.3.3.2 advertise-community

 

ip ip-prefix 1 index 10 permit 192.168.3.0 24 greater-equal 24 less-equal 24     \\通过ip-prefix列表定义地址范围为192.168.3.0/24

 

猜你喜欢

转载自blog.csdn.net/x503809622/article/details/82629735