BGP(Border Gateway Protocol)は、インターネットや広域ネットワークにおいて経路情報を交換するための標準的なルーティングプロトコルです。BGPが複数の経路を学習した際に、どの経路を「ベストパス」として選択するかは非常に重要なポイントです。
BGPのベストパス選定は、以下の優先順位で行われます。
- Weightが最も大きい方を優先
- Local Preferenceが最も大きい方を優先
- ローカルで生成されたプレフィックスを優先
- AS-PATHの最も短い方を優先
- Originが最も小さい方を優先(IGP < Incomplete)
- MEDが最も小さい方を優先
- 内部BGPパスよりも外部BGPパスを優先
- NEXT-HOP IPアドレスに到達するIGPメトリックが最小のパスを優先
- 先に受信したeBGP経路を優先
- 最小のBGPルーターIDを持つルーターから発信されたパスを優先
- BGPピアのIPアドレスが最小のルートを優先
- BGPにおけるMEDの役割
BGPにおけるMEDの役割
BGPのパス選定におけるMED(Multi-Exit Discriminator)は、経路の優先順位を示すための指標の一つであり、同一のASから送信された複数の経路を比較する際に使用されます。しかし、異なるASからの経路に関してはデフォルトでMEDは比較されません。
bgp always-compare-medの必要性
bgp always-compare-med コマンドを使用すると、異なるAS間の経路でもMEDを比較することができるようになります。これにより、たとえばISP同士の接続や、異なるデータセンターとの冗長化構成において、より細かくトラフィック経路を制御できるようになります。
bgp always-compare-med の設定例
これ以降を読む前に以下の記事をはじめに参照してください。構成や設定は、以下の記事のものを使用します。(BGPの基本設定は以降割愛します)
bgp always-compare-medの設定手順
R6にbgp always-compare-medを設定します。このコマンドを使うことで、異なるAS間でもMED値を比較することが可能になります。通常、BGPのベストパス選定では、MEDの比較は同じAS内に限られますが、この設定により、異なるAS間の経路でもMED値を考慮できるようになります。
R6(config)# router bgp 6 R6(config-router)# bgp always-compare-med
BGPピアリングの設定と確認
ステップ1: R6とR4のBGPピアリング
次に、R6とR4でBGPピアリングを行います。これにより、R6はR4からBGPルートを受信します。
R6のBGPテーブルを確認すると、R4からのルート(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
上記の例では、R4からのルートがベストパスとして選定され、MED値は「30」となっています。
ステップ2: R2とのBGPピアリング
次に、R6をR2ともBGPピアリングします。これでR6は、R2とR4の両方からルートを受信し、比較します。
通常、R2とR4が異なるASに属しているため、デフォルトではMED値は比較されません。しかし、bgp always-compare-medを有効にしているため、異なるASでもMED値を比較することができます。
R2からのルートにはMED値「10」が設定されており、R4のMED値「30」と比較して、R2のルートがより良いものとして選定されます。
デフォルトでは、R2とR4でASが異なるため、MEDは比較されませんが、bgp always-compare-medにより、異なるASでもMEDが比較されます。
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
R2からの経路がベストパスとして選定されていることが確認できます。
R3とのBGPピアリングと経路比較
最後に、R6とR3もBGPピアリングします。この時点で、R6はR2、R3、R4の3つのASから同じ経路(1.1.1.1/32)を受信しています。
この場合、現在のベストパス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の付与ポリシーが異なる場合があります。そのため、必ずしもMED値が小さいからといって、最適な経路であるとは限りません。同一AS内であれば、MEDポリシーは統一されていることが多いため、比較が信頼できますが、異なるAS間では注意が必要です。
- トラフィックのルーティングの制御: bgp always-compare-medを使うことで、複数のASにまたがるルーティングでも、より柔軟にトラフィック制御が可能になります。ただし、適用する前に十分なテストが必要です。
まとめ
bgp always-compare-medは、異なるAS間の経路比較において、MED値を使用して最適なルートを選定するための有効なコマンドです。特に、異なるISPやデータセンターとの冗長化構成を行う際に役立ちますが、設定時には各ASのポリシーを確認し、慎重に適用することが重要です。
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント