BGPの経路制御を深く理解するうえで、パスアトリビュート(経路属性)の種類と役割を把握することは非常に重要です。
BGPはパスアトリビュートをもとに経路の優劣を判断し、最適な経路を選択する仕組みになっています。
この記事では、BGPのアトリビュートの分類・AS Path・Next Hop・MED・Local Preferenceなど代表的なアトリビュートの種類と役割についてわかりやすく解説していきます。
BGPの設計・運用・トラブルシューティングに携わるネットワークエンジニアの方にぜひ参考にしていただきたい内容です。
BGPのアトリビュートとは「経路情報に付随する属性情報」のこと
それではまず、BGPのアトリビュートとは何かについて解説していきます。
BGPのパスアトリビュートとは、BGPのUPDATEメッセージで経路情報とともに伝達される属性情報のことで、経路の選択・制御・ポリシーの適用に使われます。
BGPルーターは受信した経路に付随するアトリビュートの値をもとにベストパスを選択し、そのアトリビュートを次のBGPピアに伝達します。
アトリビュートの種類によって伝達範囲・必須かどうか・隣接ASへの伝播の有無が異なるため、それぞれの特性を理解することがBGPの経路制御の基本です。
BGPアトリビュートの4つの分類:
①Well-known Mandatory:必須・すべてのピアに伝達
②Well-known Discretionary:任意・すべてのピアに伝達
③Optional Transitive:任意・認識できなくても伝達する
④Optional Non-transitive:任意・認識できない場合は破棄
Well-known MandatoryとWell-known Discretionaryの違い
Well-known(ウェルノウン)アトリビュートとはすべてのBGP実装が認識・サポートしなければならないアトリビュートの総称です。
そのうちWell-known MandatoryはすべてのUPDATEメッセージに必ず含まれなければならない必須属性で、AS Path・Next Hop・Originが該当します。
Well-known Discretionaryは認識は必須ですが含めることは任意の属性で、Local Preferenceと Atomic Aggregateが該当します。
Well-knownアトリビュートはBGP実装間での相互運用性を保証するための基盤として非常に重要な役割を担っています。
Optional TransitiveとOptional Non-transitiveの違い
OptionalアトリビュートはすべてのBGP実装がサポートする必要はなく、任意で使用される属性です。
Optional Transitiveは認識できないルーターでもそのまま次のピアに転送する属性で、BGP CommunityやAggregatorが該当します。
Optional Non-transitiveは認識できないルーターが受信した場合にその属性を破棄する属性で、MEDやOriginatorIDなどが該当します。
transitiveかnon-transitiveかによって属性の伝播範囲が変わるため、経路制御設計において重要な違いとなります。
代表的なBGPアトリビュートの種類と役割を確認しよう
続いては、代表的なBGPアトリビュートの種類と役割を確認していきます。
| アトリビュート名 | 分類 | 役割 | 優先方向 |
|---|---|---|---|
| AS Path | Well-known Mandatory | 経路が通過したASのリスト・ループ防止 | 短い方優先 |
| Next Hop | Well-known Mandatory | 次のホップのIPアドレスを示す | 到達可能であること |
| Origin | Well-known Mandatory | 経路の起源を示す | IGP > EGP > Incomplete |
| Local Preference | Well-known Discretionary | AS内部の出口経路の優先度 | 高い方優先 |
| MED | Optional Non-transitive | 隣接ASへの入口経路の優先度 | 低い方優先 |
| Community | Optional Transitive | 経路へのタグ付け・グループ制御 | ポリシー依存 |
| Aggregator | Optional Transitive | 経路集約を行ったルーターの情報 | 参照のみ |
| Originator ID | Optional Non-transitive | Route Reflector環境でのループ防止 | 参照のみ |
AS Pathの役割と仕組み
AS PathはBGPの経路制御において最も重要なアトリビュートのひとつで、経路がどのASを経由してきたかを記録したリストです。
eBGPピアに経路を広報する際に自ASのAS番号がAS Pathの先頭に追加されるため、経路が伝播するにつれてAS番号のリストが長くなっていきます。
BGPルーターはAS Pathに自分のAS番号が含まれている経路を受信した場合、ルーティングループとして経路を破棄します。
ベストパス選択においてAS Pathが短い経路が優先されるため、AS Pathプリペンド(AS番号を意図的に繰り返し追加する手法)を使って経路の優先度を下げることができます。
AS Pathはループ防止と経路選択の両方に機能する非常に重要な属性です。
Next Hopの役割と注意点
Next HopアトリビュートはBGP経路の次のホップとなるIPアドレスを示すもので、パケットを実際に転送する先のアドレスを指定します。
eBGPで経路を広報する場合、Next Hopは広報するルーター自身のIPアドレスに設定されます。
iBGP環境では受信したNext HopアドレスがそのままiBGPピアに伝達されるため、そのアドレスへの到達性がないとルーティングが機能しない問題が発生します。
iBGPでのNext Hop問題の解決方法:
・next-hop-selfコマンドの使用(Cisco)
→ iBGPピアへの広報時にNext Hopを自分のアドレスに変更する。
・IGPでNext Hopアドレスへの到達性を確保する
→ eBGPで学習したNext HopアドレスをIGPで再配送して到達可能にする。
iBGP環境でのNext Hop問題はBGP設定の落とし穴として非常によく遭遇するトラブルのひとつであるため、next-hop-selfの設定を適切に行うことが重要です。
Route Reflector環境では特にNext Hopの到達性確認が重要な設計要件となります。
Originアトリビュートの役割
OriginアトリビュートはBGP経路がどのような方法でBGPに投入されたかを示す属性で、3種類の値が定義されています。
IGP(i)はnetworkコマンドなどでIGPから直接BGPに投入された経路・EGP(e)は旧EGPプロトコルから学習した経路・Incomplete(?)はredistributeコマンドなどで再配送された経路を示します。
ベストパス選択においてOriginの優先順位はIGP > EGP > Incompleteとなっており、同じ宛先への経路でOriginが異なる場合はIGPが最も優先されます。
show ip bgpコマンドの出力でステータスコードとして表示されるため、経路の投入方法を確認する際にも役立ちます。
BGP Communityアトリビュートの仕組みと活用
続いては、BGP Communityアトリビュートの仕組みと活用方法を確認していきます。
Communityは柔軟な経路制御を実現するための強力な仕組みです。
BGP Communityとは
BGP Communityとは経路にタグ(識別子)を付与することで、グループ単位での経路制御を可能にするアトリビュートです。
通常は「AS番号:任意の値」という形式(例:65001:100)で表現され、受信側のルーターはCommunity値に基づいてLocal Preferenceの変更・経路フィルタリング・MEDの設定などのポリシーを適用できます。
ISPが顧客に対してCommunity値を通知し、顧客がそのCommunity値を付与することでISP側の経路制御ポリシーを呼び出すという活用方法が広く普及しています。
Communityを活用することで、個別のプレフィックスごとにポリシーを設定する手間を大幅に削減できます。
Well-known Communityの種類
BGPにはいくつかのWell-known Community値が定義されており、特定の動作を指示するために広く使われています。
代表的なWell-known CommunityとしてNO_EXPORT・NO_ADVERTISE・LOCAL_ASの3つが挙げられます。
Well-known Communityの主な種類:
NO_EXPORT(65535:65281):eBGPピアには広報しない
NO_ADVERTISE(65535:65282):どのBGPピアにも広報しない
LOCAL_AS(65535:65283):同一AS内のiBGPピアにのみ広報
NO_EXPORTを付与することで経路をAS内部に留めることができるため、プライベートな経路情報がインターネットに漏れることを防ぐ手段として活用されます。
Well-known CommunityはすべてのBGP実装が認識する値であるため、異なるベンダーのルーター間でも同じ動作が期待できます。
Extended Communityの活用
Extended Community(拡張コミュニティ)はRFC 4360で定義された拡張版のCommunityアトリビュートで、通常のCommunityより多くの情報を格納できます。
MPLS-VPNのRouteDistinguisher(RD)・RouteTarget(RT)の伝達に使われるなど、VPNサービスや高度なネットワーク設計において重要な役割を果たしています。
MP-BGP(マルチプロトコルBGP)環境ではExtended Communityの理解が不可欠であり、VPN設計を行うエンジニアには必須の知識となっています。
通常のCommunityとExtended Communityを使い分けることで、複雑なネットワーク要件に対応した柔軟な経路制御が実現できます。
アトリビュートを活用したBGP経路制御の設計ポイント
続いては、アトリビュートを活用したBGP経路制御の実践的な設計ポイントを確認していきます。
アトリビュートの組み合わせによる経路制御
実際のネットワーク設計では複数のアトリビュートを組み合わせることで、インバウンド・アウトバウンド双方の経路を意図通りに制御することができます。
アウトバウンドはLocal Preference・インバウンドはMEDまたはAS Pathプリペンドという基本的な役割分担を理解したうえで設計することが重要です。
Communityを組み合わせることでより細かい粒度のポリシー制御が可能になり、大規模ネットワークでの運用効率が向上します。
複数のアトリビュートが競合する場合はベストパス選択の優先順位を正確に把握したうえで設計することが、意図しない経路選択を防ぐポイントです。
アトリビュートのトラブルシューティングへの活用
BGPの経路が意図通りに動作しない場合、アトリビュートの値を確認することが原因特定への近道になります。
show ip bgpコマンドの出力でAS Path・Next Hop・Local Preference・MEDなどのアトリビュート値を確認し、意図した値が設定されているかどうかを検証することがトラブルシューティングの基本手順です。
特にNext Hopの到達性問題・Local Preferenceの伝達漏れ・MEDの比較条件の誤解は頻繁に発生するトラブルのため、優先的に確認すべき項目です。
BGP Looking Glassなどの外部ツールを活用して、自AS外部からのアトリビュートの見え方を確認することも有効なトラブルシューティング手法です。
アトリビュートの設定変更時の注意点
BGPアトリビュートの設定変更はAS全体または隣接ASのトラフィックに影響するため、変更前の十分な影響確認と変更後の動作検証が必須です。
特にAS PathやLocal Preferenceの変更は広範なトラフィックへの影響が生じる可能性があるため、メンテナンスウィンドウ内での変更と段階的な適用が推奨されます。
変更内容をドキュメント化し、変更前後の経路情報を記録しておくことで、問題発生時のロールバックをスムーズに行えます。
定期的なBGPアトリビュートの見直しと最適化が、長期的なネットワーク品質の維持につながります。
まとめ
この記事では、BGPのアトリビュートの分類・代表的なアトリビュートの種類と役割・Communityの活用・実践的な設計ポイントについて解説しました。
BGPのアトリビュートはWell-known MandatoryからOptional Non-transitiveまで4つに分類され、AS Path・Next Hop・Origin・Local Preference・MED・Communityなどがそれぞれ異なる役割を担っています。
アウトバウンドはLocal Preference・インバウンドはMEDまたはAS Pathプリペンドという基本的な役割分担を理解し、Communityと組み合わせることで柔軟な経路制御ポリシーの設計が実現できます。
トラブルシューティングでは各アトリビュートの値を確認することが原因特定への近道であり、Next HopやLocal Preferenceの問題は特に頻繁に発生するため優先的に確認することが重要です。
BGPアトリビュートの仕組みをしっかり理解して、ネットワーク設計・運用の品質向上にぜひ役立てていただければ幸いです。