22

BGP的13条选路原则-栗子老师的博客

 3 years ago
source link: https://blog.51cto.com/13817711/2496468
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

BGP的13条选路原则

 BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况
① 该路由是到达目的地的唯一路由,直接优选
② 对到达同一目的地的多条路由,优选优先级最高的
③ 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的
 一般来说,BGP计算路由优先级的规则如下
① 丢弃下一跳不可达的路由
② 优选Preference_Value值最高的路由(私有属性,仅本地有效)
③ 优选本地优先级(Local_Preference)最高的路由
④ 优选手动聚合>自动聚合>network>import>从对等体学到的
⑤ 优选AS_Path短的路由
⑥ 起源类型IGP>EGP>Incomplete
⑦ 对于来自同一AS的路由,优选MED值小的
⑧ 优选从EBGP学来的路由(EBGP>IBGP)
⑨ 优选AS内部IGP的Metric最小的路由
⑩ 优选Cluster_List最短的路由
⑪ 优选Orginator_ID最小的路由
⑫ 优选Router_ID最小的路由器发布的路由
⑬ 优选具有较小IP地址的邻居学来的路由

1.Preferred-Value数值

Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference_Value值越大,越优先,默认缺省值为0 只能改变自己的入向选路

BGP的13条选路原则

默认情况下华为这边会选择router ID小的作为自己的最优下一跳

<R1>display bgp routing-table 
 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 8
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
*>i  44.44.44.44/32     2.2.2.2         0          100        0      200i
  * i                     3.3.3.3         0          100        0      200i

① 匹配44.44.44.44的条目 ---方法就是acl或者前缀列表(建议用它)

[R1]display ip ip-prefix 44
Prefix-list 44
Permitted 0
Denied 0
index: 10               permit  44.44.44.44/32
[R1]

② 创建路由策略

#
route-policy 44 permit node 10  ---这个就是我们需要进行关联的方式
if-match ip-prefix 44       ---这个就是我们的条件
apply preferred-value 200       ---这个就是我们动作
#

③ 在BGP视图下面进行调用

[R1-bgp]peer 3.3.3.3 route-policy 44 import     只能调用在入方向

④ 验证(现象就是R1到达我们44.44.44.44的路由下一跳指向的就是R3)

[R1]display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 7
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  44.44.44.44/32     3.3.3.3         0          100        200    200i
  * i                     2.2.2.2         0          100        0      200i
[R1]

小结:Pre-Value最大,Preference_Value值越大,越优先,默认缺省值为0

2. Local_Preference

Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。一般用来控制我本区域流量怎么出去,默认情况下Local-Pref值为100 该数值越大 优先级越高

BGP的13条选路原则

① 匹配44.44.44.44的条目 ---方法就是acl或者前缀列表(建议用它)

[R3]display ip ip-prefix 44
Prefix-list 44
Permitted 0
Denied 0
index: 10               permit  44.44.44.44/32
[R1]

② 创建路由策略

#
route-policy 44 permit node 10  ---这个就是我们需要进行关联的方式
if-match ip-prefix 44       ---这个就是我们的条件
apply local-preference 200      ---这个就是我们动作
#

③ 在BGP视图下面进行调用

[R3-bgp]peer 1.1.1.1 route-policy 44 export

此时在BGP里面调用的时候,可以调用在我们3个方向上面
 第一个方向:在R3的G0/0/0接口上进行调用,但这个调用的话,只能在G0/0/0的import方向
 第二个方向:在R3的G0/0/1接口的进行调用,但这个调用的话,只能在G0/0/1的export方向
 第三个方向:在R1的G0/0/1接口的进行调用,但这个调用的话,只能在G0/0/1的import方向
 不能调用在R4的export方向上面(因为Local-preference只能在本AS内进行传递的)

3.路由聚合

 聚合路由的优先级:手动聚合>自动聚合
 自动聚合
只能对引入import-route的BGP路由进行聚合 如果说通过import-route到BGP的话,此时它的属性是 ?
 手动聚合
手动聚合可以在BGP路由表中的路由进行聚合 如果说通过我们network宣告到我们BGP当中的话 此时它的属性是 i(可以对引入路由和network宣告路由都生效)
 如果BGP路由表中既有引入的路由又有network宣告的路由时,只能采用手动聚合实现
 验证手动聚合大于自动聚合
R4上面的44.44.44.44的路由条目他是network宣告的 此时自动聚合识别不了,我可以在R4上面进行修改我们44网段的起源属性,通过我们前缀列表和router-policy,应用在我们R4的一个出方向上面 R2就可以对44.44.44.44路由进行自动聚合 R3上面开启的是手动聚合(手动聚合可以对network宣告的路由和通过路由引入宣告的路由进行聚合)因为R1这边收到从R2这边自动聚合的条目和R3这边手动聚合条目,所以说 R1这边到达这条聚合路由的下一跳就是R3

BGP的13条选路原则

① 默认情况下,BGP是没有开启自动聚合的
② 自动聚合只对引入的路由生效,对network路由不生效
③ 配置自动聚合后,成员明细路由将被抑制掉
④ 发现这些明细前面打了一个S(Suppressed)
⑤ 其他路由器学习到的就是自动聚合的路由

BGP的13条选路原则

① 在R1设备上创建loopback接口,用前缀列表匹配R1的loopback接口,将其引入到BGP协议中

[R1]display ip ip-prefix 1
Prefix-list 1
Permitted 3
Denied 10
        index: 10               permit  100.100.2.0/24          
        index: 20               permit  100.100.3.0/24          
        index: 30               permit  100.100.4.0/24  

② 创建路由策略

[R1]display route-policy 1
Route-policy : 1
  permit : 10 (matched counts: 16)
    Match clauses : 
      if-match ip-prefix 1

③ 在BGP视图下面进行调用

#
bgp 100
import-route direct route-policy 1
  summary automatic    开启我们自动聚合(注意啊,一定是对引入的路由进行聚合,network进来的路由是不生效的)
# 
return

④ 在R1查看实验现象

[R1]display bgp routing-table 
 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 9
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   100.0.0.0          127.0.0.1                             0      ?
  s>   100.100.2.0/24     0.0.0.0         0                     0      ?
  s>   100.100.3.0/24     0.0.0.0         0                     0      ?
  s>   100.100.4.0/24     0.0.0.0         0                     0      ?
 [R1]

所以R2这边学习到的路由就是我们聚合的路由

<R2>display bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  100.0.0.0          1.1.1.1                    100        0      ?
<R2>

在R1设备在自动手动聚合路由 删除自动聚合的命令

BGP的13条选路原则
BGP的13条选路原则

① detail-suppressed
注意:后面的detail-suppressed参数是把明细给抑制,如果不加的话,会把明细路由和聚合路由都传过去

[R1-bgp]aggregate 100.100.0.0 16 detail-suppressed

② as-set
as-set信息在避免路由环路时很重要,因为它记录了被聚合路由所经过的AS

[R1-bgp]aggregate 100.100.0.0 16 as-set 

③ Suppress-policy
关键字suppress-policy能产生聚合路由,但抑制指定路由的通告,可以使用route-policy和if-match子句有选择的抑制一些具体路由,其他具体路由仍被通告(抑制聚合中的某些路由)
④ Origin-policy
使用关键字origin-policy仅选择符合route-policy的具体路由来生成聚合路由(只要有这条路由信息,我才能产生聚合路由)

路由聚合产生的问题

如果路由聚合后携带所有明细路由经过的AS信息,当明细路由发生频繁震荡时,聚合路由也可能受其影响频繁刷新。因此,聚合路由是否携带丢失的AS_Path信息,需要设计者综合考虑网络环境

BGP的13条选路原则

4.Network大于import引入

把4.4.4.4的路由在RT4发布给RT2的时候,把属性更改为incomplete(也就是引入的方式)看下RT1到达4.4.4.4的路径选择
R1默认情况下根据13条选路原则,会选择router id较小的进行选路,我们让前3条选路原则不变,我可以改变第四条选路原则,因为默认情况下,R4的44.44.44.44/32通过network方式发布到我们的BGP里面的,它的默认起源属性是network(也就是我们的i) 我可以改变R2发往R1的起源属性 那R1变成通过import学习到的路由

BGP的13条选路原则

1.匹配44.44.44.44的条目 ---方法就是acl或者前缀列表(建议用它)

[R2]display ip ip-prefix 44
Prefix-list 44
Permitted 2
Denied 1
        index: 10               permit  44.44.44.44/32   

2.创建路由策略

[R2]display  route-policy
Route-policy : 44
  permit : 10 (matched counts: 1)
    Match clauses : 
      if-match ip-prefix 44
    Apply clauses : 
      apply origin incomplete 

3.在BGP视图下面进行调用

#
bgp 100
 router-id 2.2.2.2
 peer 1.1.1.1 as-number 100 
 peer 1.1.1.1 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  peer 1.1.1.1 enable
  peer 1.1.1.1 route-policy 44 export
#
return
[R2-bgp]

 注意:
① 可以调用在R2的export出方向(G0/0/0)
② 可以调用在R2的import方向(G0/0/1)
③ 可以调用在R1的import方向(G0/0/0)
④ 可以调用在R4的export方向上(G0/0/1)

5.AS_Path

 收到同一条路由里面AS路径最短的优先
RTA从RTB收到100.0.0.0/24的路由时,AS_Path为(2,4),RTA从RTC收到100.0.0.0/24的路由时,AS_Path为(3,5,4)。规定AS_Path越短(记录的AS编号越少),路径越优,因此RTA会优选从RTB收到的100.0.0.0/24的路由
 AS路径属性可以防止BGP环路
以RTE为例,通过BGP发布100.0.0.0/24的路由,路由可能通过RTE->RTB->RTC->RTD->RTE形成环路。为了防止环路的产生,RTE在收到RTD发来的路由时会检查AS_Path(该路由携带的)属性,如果发现该路由的AS_Path中包含自己的AS号,则丢弃该路由

BGP的13条选路原则

 R1这边默认情况下根据13条选路原则,会选择router id较小的进行选路,我们让前4条选路原则不变,改变第5条选路原则,在R2发往R1的44.44.44.44网段路由的时候 我可以增加一些AS-path属性进来,可以通过一下两种方式进行增加
① Additive:Append to original As Number追加as-path属性 在原有的基础上进行增加
② Overwrite:Overwrite original As Number覆盖as-path属性 把原有的AS-path给直接弄没

BGP的13条选路原则
  1. 匹配44.44.44.44的条目 ---方法就是acl或者前缀列表(建议用它)
    [R2]display ip ip-prefix 44
    Prefix-list 44
    Permitted 4
    Denied 2
        index: 10               permit  44.44.44.44/32    

    2.创建路由策略

    [R2]display route-policy 44
    Route-policy : 44
    permit : 10 (matched counts: 2)
    Match clauses : 
      if-match ip-prefix 44
    Apply clauses : 
      apply as-path 1000 2000 3000 additive

    3.在BGP视图下面进行调用

    #
    bgp 100
    router-id 2.2.2.2
    peer 1.1.1.1 as-number 100 
    peer 1.1.1.1 connect-interface LoopBack0
    peer 3.3.3.3 as-number 100 
    peer 3.3.3.3 connect-interface LoopBack0
    peer 24.1.1.4 as-number 200 
    #
    ipv4-family unicast
    undo synchronization
    network 22.22.22.22 255.255.255.255 
    peer 1.1.1.1 enable
    peer 1.1.1.1 route-policy 44 export
    peer 1.1.1.1 next-hop-local 
    peer 3.3.3.3 enable
    peer 3.3.3.3 next-hop-local 
    peer 24.1.1.4 enable
    #
    return
    [R2-bgp]

     注意:
    ① 可以调用在R2的export出方向(G0/0/0)
    ② 可以调用在R2的import方向(G0/0/1)
    ③ 可以调用在R1的import方向(G0/0/0)
    ④ 可以调用在R4的export方向上(G0/0/1)

    6.Origin

     Origin属性定义路径信息的来源,标记一条路由是怎么成为BGP路由的
     Origin的3种属性
    ① i 表明BGP路由通过network命令注入
    ② e 表明BGP路由是从EGP学来的,EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e
    ③ ? 即Incomplete表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由
     3种Origin属性的优先级为:i>e>Incomplete(?)所以network宣告的路由大于通过import-router引入的路由

    BGP的13条选路原则

    7.MED

    MED(Multi-Exit-Discriminator)属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由
    当一个运行BGP的路由器通过不同的EBGP邻居获得目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由,其默认值为0。 MED值较小者作为最佳路由,其默认值为0

    BGP的13条选路原则
  2. 匹配44.44.44.44的条目 ---方法就是acl或者前缀列表(建议用它)
    [R2]display ip ip-prefix 44
    Prefix-list 44
    Permitted 5
    Denied 2
        index: 10               permit  44.44.44.44/32     

    2.创建路由策略

    [R2]display  route-policy 44
    Route-policy : 44
    permit : 10 (matched counts: 3)
    Match clauses : 
      if-match ip-prefix 44
    Apply clauses : 
      apply cost 1000 
    #

    3.在BGP视图下面进行调用

    bgp 100
    router-id 2.2.2.2
    peer 1.1.1.1 as-number 100 
    peer 1.1.1.1 connect-interface LoopBack0
    peer 3.3.3.3 as-number 100 
    peer 3.3.3.3 connect-interface LoopBack0
    peer 24.1.1.4 as-number 200 
    #
    ipv4-family unicast
    undo synchronization
    network 22.22.22.22 255.255.255.255 
    peer 1.1.1.1 enable
    peer 1.1.1.1 next-hop-local 
    peer 3.3.3.3 enable
    peer 3.3.3.3 next-hop-local 
    peer 24.1.1.4 enable
    peer 24.1.1.4 route-policy 44 import
    #
    return
    [R2-bgp]

     注意:
    ① 可以调用在R2的export方向(G0/0/0)
    ② 可以调用在R2的import方向(G0/0/1)
    ③ 可以调用在R1的import方向(G0/0/0)
    ④ 可以调用在R4的export方向(G0/0/1)

    8.EBGP优于IBGP路由

    根据选路原则,RTA会优选从EBGP邻居学来的路由

    BGP的13条选路原则
    因为R2可以从R4收到44网段ebgp的路由条目 R2也可以从R3收到IBGP的条目(因为我R2和R3建立的是IBGP的BGP关系)如果说前面7条选路原则是一样的话 会比较我们的第8条选择的原则 所以R2到达44网段的路由要的是EBGP传递过来的
    BGP的13条选路原则
[R2]display bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   44.44.44.44/32     24.1.1.4        0                     0      200i
    * i                     3.3.3.3         0          100        0      200i
 [R2]

9.IGP的开销值

通过调整OSPF Cost,使RTA选择R3路径访问44.44.44.44/32

BGP的13条选路原则

将R1的G0/0/0接口的ospf开销修改为2

#
interface GigabitEthernet0/0/0
 ip address 12.1.1.1 255.255.255.0 
#
return
[R1-GigabitEthernet0/0/0]ospf cost 2
[R1]display ip routing-table 44.44.44.44
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

    44.44.44.44/32  IBGP    255  0          RD   3.3.3.3         GigabitEthernet
0/0/1

查看R1得BGP路由表

[R1]display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  44.44.44.44/32     3.3.3.3         0          100        0      200i
  * i                     2.2.2.2         0          100        0      200i

10.Router-ID值

默认情况下 如果前面所有的选路原则都不变的话 那么会选择一个router ID较小的作为自己的选路方式

BGP的13条选路原则
<R1>display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  44.44.44.44/32     2.2.2.2         0          100        0      200i
  * i                     3.3.3.3         0          100        0      200i
<R1>

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK