BGPのベストパス選定は、以下の優先順位で行われます。
- Weightが最も大きい方を優先
- Local Preferenceが最も大きい方を優先
- ローカルで生成されたプレフィックスを優先
- AS-PATHの最も短い方が優先
- Originが最も小さい方が優先(IGP < Incomplete)
- MEDが最も小さい方が優先
- 内部BGPパスよりも外部BGPパスを優先
- NEXT-HOP IPアドレスに到達するIGPメトリックが最小のパスを優先
- 先に受信したeBGP経路を優先
- 最小のBGPルーターIDを持つルーターから発信されたパスを優先
- 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)まとめ << より参照できます。
コメント