【BGP】ベストパス選定(bgp always-compare-med)

 BGPのベストパス選定は、以下の優先順位で行われます。

  1. Weightが最も大きい方を優先
  2. Local Preferenceが最も大きい方を優先
  3. ローカルで生成されたプレフィックスを優先
  4. AS-PATHの最も短い方が優先
  5. Originが最も小さい方が優先(IGP < Incomplete)
  6. MEDが最も小さい方が優先
  7. 内部BGPパスよりも外部BGPパスを優先
  8. NEXT-HOP IPアドレスに到達するIGPメトリックが最小のパスを優先
  9. 先に受信したeBGP経路を優先
  10. 最小のBGPルーターIDを持つルーターから発信されたパスを優先
  11. BGPピアのIPアドレスが最小のルートを優先

 Ciscoでは、 ベストパス選定において、6. にてMEDの比較を行い、小さい方をベストパスに選定します。ただし、これは、同一ASからのルートにだけ、MEDの比較が行われます。異なるASからのルートに関しては、MEDの比較は無視されます。

 異なるASからのルートに関しても、MEDの比較を行うには、bgp always-compare-med コマンドを使用します。

 これ以降を読む前に以下の記事をはじめに参照してください。構成や設定は、以下の記事のものを使用します。(BGPの基本設定は以降割愛します)

 では、R6にbgp always-compare-medを設定しておきます。

R6(config)# router bgp 6
R6(config-router)# bgp always-compare-med

 まず、R6とR4でBGPピアリングします。

 R6のBGPテーブルを見ると、R4からBGPルート(1.1.1.1/32)を受信し,ベストパスとして認識しています。

R6# show ip bgp
BGP table version is 4, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.46.4            30             0 4 I

R6# show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 4
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 1
  4
    192.168.46.4 from 192.168.46.4 (4.4.4.4)
      Origin IGP, metric 30, localpref 100, valid, external, best

 次に、R2とBGPピアリングします。

 R6のBGPテーブルを見ると、R2への経路がベストパスとなっています。

デフォルトでは、R2とR4でASが異なるため、MEDは比較されませんが、bgp always-compare-medにより、異なるASでもMEDが比較されます。

 R2からのBGPルートはMED値10であり、R4からのMED値30より小さく、R2の方がベストパスになります。

R6#show ip bgp
BGP table version is 5, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       192.168.26.2            10             0 23 i
 *                    192.168.46.4            30             0 4 I

R6#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 5
Paths: (2 available, best #1, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 1
  23
    192.168.26.2 from 192.168.26.2 (2.2.2.2)
      Origin IGP, metric 10, localpref 100, valid, external, best
  Refresh Epoch 1
  4
    192.168.46.4 from 192.168.46.4 (4.4.4.4)
      Origin IGP, metric 30, localpref 100, valid, external

 最後にR3とBGPピアリングします。

 この場合、現在のベストパスR2と新たに広告されたR3からのルートを比較します。 R2とR3では、MED値はR2の方が小さいので、R2が引き続きベストパスとなります。

R6# show ip bgp 
BGP table version is 5, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *   1.1.1.1/32       192.168.36.3            20             0 23 i
 *>                   192.168.26.2            10             0 23 i
 *                    192.168.46.4            30             0 4 I

R6# show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 5
Paths: (3 available, best #2, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 1
  23
    192.168.36.3 from 192.168.36.3 (3.3.3.3)
      Origin IGP, metric 20, localpref 100, valid, external
  Refresh Epoch 1
  23
    192.168.26.2 from 192.168.26.2 (2.2.2.2)
      Origin IGP, metric 10, localpref 100, valid, external, best
  Refresh Epoch 1
  4
    192.168.46.4 from 192.168.46.4 (4.4.4.4)
      Origin IGP, metric 30, localpref 100, valid, external

 通常、異なるASということは、MEDの付与ポリシーが異なる可能性があります。つまり、異なるASからMED値10とMED値20が広告された場合、MED値10の方が最適であるとは限りません。同一ASであれば、MEDの付与ポリシーは同じであると考えられ、デフォルトでは同一ASからのみMED値が比較されます。

 ただし、インターネットの冗長化など、異なるASと接続するような場面が多くあり、異なるAS間相互でMEDの付与ポリシーが一貫していれば、bgp always-compare-med を使用し、MEDの比較を行うことが設計上、好ましい場合があります。

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント