BGP 経由で学習されたルートはBGP属性が付与され、特定の宛先に複数のパスが存在する場合に、宛先への最適なルートを決定するために使用します。 BGP属性により経路選択がどのように行われるか決まりがあり、これをBGPベストパス選定アルゴリズムと呼ばれます。
ベストパスは以下の優先順位により決定されます。
- Weightが最も大きい方を優先
- Local Preferenceが最も大きい方を優先
- ローカルで生成されたプレフィックスを優先
- AS-PATHの最も短い方が優先
- Originが最も小さい方が優先(IGP < Incomplete)
- MEDが最も小さい方が優先
- 内部BGPパスよりも外部BGPパスを優先
- NEXT-HOP IPアドレスに到達するIGPメトリックが最小のパスを優先
- 先に受信したeBGP経路を優先
- 最小のBGPルーターIDを持つルーターから発信されたパスを優先
- BGPピアのIPアドレスが最小のルートを優先
それでは、この優先順位を上から確認していきます。
無視されるルート
ベストパス選定の前に、以下条件のルートの場合、そもそもBGPルートとして無視されます。
ネクストホップへの到達性がない
ネクストホップアドレスに対して、IGP(直結経路、スタティックルート含む)で到達できないルートは無視されます。
>> 参考記事 : 初心者わかりやすく: BGPをスッキリ理解する第1歩AS-PATH ループ
AS-PATH属性に自身のAS番号が含まれている場合、そのルートはループしていると判断し、そのルートは無視されます。
BGPベストパス選択
BGPルータが、同じ宛先への複数のパスを受信したとします。その場合、以下のBGPベストパス選択に従って、トラフィック転送に使用するベストパスを決定します。
Weight属性の比較
Cisco独自の機能で、最もWeight値が大きいパスが優先されます。Weight属性は、ルータローカルでのみ有効です。Weight値の変更をしても、AS内外の他のルータには影響しません。Weightが同じ場合、Local Preferenceを比較します。
>> 参考記事 : Weight属性Local Preference属性を比較
Local Preferenceが最も高いパスが優先されます。Local Preference属性はAS内のルータに広告されます。Local Preferenceが同じ場合は、ローカル生成のルートがないか比較されます。
>> 参考記事 : Local Preference属性ローカルで生成されたプレフィックスかどうか。
network、aggregate-address、redistributeコマンドにより、ローカルルータから生成されたルートを優先します。例えば、OSPF等で学習したルートをnetworkコマンドで生成したようなルートを指します。
ローカルルータから生成されたルートはネクストホップが0.0.0.0となり、かつ、Cisco IOSでは、ローカルルータ上で生成されたルートのWeightは32768 が割り当てられます。
ローカル生成されたルートの例を以下に示します。
R6# show ip bgp 23.23.23.23 BGP routing table entry for 23.23.23.23/32, version 2 Paths: (1 available, best #1, table default) Local 192.168.26.2 from 0.0.0.0 (6.6.6.6) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best
ローカルルータから生成されたルートがない場合は、AS-PATH属性の長さが比較されます。
AS-PATH属性の長さを比較
AS-PATH属性の長さが短い方が優先されます。AS-PATHの長さが同じ場合、Origin属性が比較されます。
>> 参考記事 : AS-PATH属性Origin属性の大きさを比較
学習したBGPルートがどこから発生したものかを記録されるOrigin属性を比較します。
IGPは、networkコマンドにより発生したルート、Incompleteは、BGPへ再配布され発生したルートを示し、同じBGPプレフィックスに対しては、IncompleteよりIGPが優先パスとされます。
Origin属性が同じ場合、MED属性が比較されます。
>> 参考記事 : Origin属性MED属性を比較
MULTI_EXIT_DISC(MED)はメトリックとも呼ばれ、MED値が低いパスが優先されます。
AS-PATH属性のリストの最初のASが同じである場合のみ比較されます。異なるASから同じBGPルートを学習して、MEDを比較する場合は、bgp always-compare-med コマンドを使用します。
>> 参考記事 : MED属性その他
MED属性が同じ場合、次の順番で、ベストパスを選択します。
- 内部BGPパスよりも外部BGPパスを優先します
- NEXT-HOP IPアドレスに到達するIGPメトリックが最小のパスを優先します。
- 先に受信したeBGP経路を優先します。
- 最小のBGPルーターIDを持つルーターから発信されたパスを優先します。
- BGPピアのIPアドレスが最小のルートを優先します
次の記事では、実際にBGP属性を順番に比較しながら、ベストパスをどのように選択するのか、動作を確認していきます。
>> 参考記事 : BGPベストパス選定(PART2 動作確認)>> 関連記事 : BGPルータ間通信をキャプチャしてみた
>> 関連記事 : 外部BGP
>> 関連記事 : Next-Hop-Self
>> 関連記事 : 属性(アトリビュート)
>> 関連記事 : BGPベストパス選定(bgp bestpath as-path ignore )
>> 関連記事 : BGPベストパス選定(bgp bestpath compare-routerid )
>> 関連記事 : BGPベストパス選定(異なるASからのルートはMEDを比較しない)
>> 関連記事 : BGPベストパス選定(bgp always-compare-med)
コメント