BGPにおける最適パスの選択は,「ポリシーベースルーティング」と呼ばれます。IGPの「メトリック」を使った経路選択とは違うしくみを使います。今回はBGPの「ポリシーベースルーティング」について学びましょう。
BGPが使うポリシーベースルーティング
通常,IGPのメトリックによる最適パス選択はメトリックがもっとも小さいパスが選択されます。IGPのメトリックは便利なしくみですが,異なるASで使うとなると,異なる管理者が別々にメトリックの設定(帯域や遅延など)を設定していると,統一したルールでルーティングができません。このようなIGPのメトリックでパス選択を行う方式を「あて先ベースルーティング(DBR:Destination-Based Routing)と呼びます。一方,BGPは複数の属性を使って最適パスを選択します。この属性を「パスアトリビュート」と呼びます。パス方法は,AS間で異なる管理者による設定にも対応しており,柔軟にパスを選択できます。このようなアトリビュートを使ったルーティングは「ポリシーベースルーティング(PBR:Policy-Based Routing)」と呼びます。
BGPが使うパスアトリビュートは,経路情報を通知するUPDATEメッセージで,あて先ネットワークアドレスとともにBGPピアに転送されます。ただし,UPDATEメッセージに必ず含まれるアトリビュートと,そうでないアトリビュートがあります。これは,アトリビュートの特性によって異なります。
特性 | 意味 |
---|---|
Well-Known Mandatory | すべてのUPDATEに含まれ,BGPスピーカはサポートしていなければならない |
Well-Known Discretionary | UPDATEに含まれなくてもよいが,BGPスピーカはサポートしていなければならない |
Optional Transitive | サポートしていなくてもよいが,他BGPスピーカには伝えなければならない |
Optional Nontransitive | サポートしていなくてもよいし,他BGPスピーカに伝える必要もない |
つまり,必ず通知しなければならないWell-Known Mandatory特性のアトリビュートと,通知してもしなくてもよいWell-Known Discretionary特性のアトリビュートは,ルーターは必ず利用できなければなりません。そのほかの二つのOptional特性のアトリビュートは,ルーターが使えなくてもよいアトリビュートで,べンダー独自のアトリビュートとして使われています。
Ciscoルータは,次の11個のパスアトリビュートを使うことができます。
タイプ コード | アトリビュート名 | 特性 |
---|---|---|
1 | Origin | Well-known Mandatory |
2 | AS_Path | Well-known Mandatory |
3 | Next_Hop | Well-known Mandatory |
4 | Multi_Exit_Discriminator(MED) | Optional Nontransitive |
5 | Local_Preference | Well-known Discretionary |
6 | Atomic_Aggregate | Well-known Discretionary |
7 | Aggregator | Optional Transitive |
8 | Community | Optional Transitive |
9 | Originator | Optional Nontransitive |
10 | Cluster_list | Optional Nontransitive |
- | Weight | - |
このなかで特に重要なのは,タイプコード1~5までの5つのパスアトリビュートです。
三つあるWell-known Mandatoryアトリビュート
タイプコード1~3のアトリビュートは,BGPスピーカが送信するすべてのUPDATEに含められます。iBGP,eBGP関係なくUPDATEに含められてアドバタイズされます。Originは,ルートを最初に通知したBGPスピーカの種類を示します。これには3種類あり,以下の表の優先度の値の小さいものが優先されます。
優先度 | 値 | 意味 |
---|---|---|
0 | IGP | ルートは通知してきたAS内部にある networkコマンドによりBGPで配布 |
1 | EGP | EGP(EGPsではない)によって再配送された |
2 | INCOMPLETE | それ以外で配布された(ルート再配布など) redistributeコマンドによりBGPで再配布 |
AS_Pathは,UPDATEに通過するAS番号を追加していくアトリビュートです。BGPスピーカは,AS_PathのAS番号リストが短いものをベストパスとして採用します(図1)。
図1 AS_Pathアトリビュート
このように,AS_Pathアトリビュートの扱いは,iBGPとeBGPで異なります。他のアトリビュートが設定されていないデフォルトの場合,AS_Pathアトリビュートが最適パスの選択基準として使われます。
Next_Hopアトリビュートは,特定のネットワークに到達するための次のホップ先を示すアトリビュートです。Next_Hopはアトリビュートの値に優劣はありません。Next_Hopアトリビュートに示されたBGPピアに接続できているかどうかをチェックするために使います。
Next_HopアトリビュートはiBGPとeBGPでは異なります。iBGPはAS内のルートを通知する場合と,eBGPからの通知の場合で動作が異なります。また,eBGPではネットワークの形態によって値が異なります(図2)。
図2 Next_Hopアトリビュート
Next_Hopアトリビュートは,通常の「次のホップ先」という意味合いよりも,「あて先ネットワークへの次のASの入り口」という意味になります。
経路情報の伝達を柔軟に操作できるMEDとLocal_Preference
Multi_Exit_Discriminator(MED)アトリビュートは,Optional Nontransitive特性を持つアトリビュートで,サポートは必須ではありませんが,使用する場合は必ず他のBGPスピーカに通知する必要があります。基本的にはCiscoルータで使われます。
MEDは,Ciscoルータでは「メトリック」として表現されています。つまり,IGPのメトリックと似た概念のもので,低い方の値が優先されます。ただし,MEDは直接接続されているAS間だけでやりとりされ,それ以外のASへは伝わりません(図3)。
図3 Multi_Exit_Discriminatorアトリビュート
このようにMEDは「メトリック」として他ASに通知されるアトリビュートです。MEDは他ASに対し,「使ってほしいパス」を設定したいときに使われます。
一方,Local_Preferenceアトリビュートは,Well-known Discretionary特性です。サポートはされていなければいけませんが,UPDATEに必ず含める必要はありません。これは,AS内でのiBGPでのみ使われるアトリビュートです。eBGPで通知する際は含まれません。
Local_PreferenceアトリビュートはちょうどMEDアトリビュートの逆の意味になります。Local_Preferenceが高いアトリビュートが優先されます(図4)。
図4 Local_Preferenceアトリビュート
Local_Preferenceアトリビュートは,iBGPだけで通知され,AS内にのみ伝わります。Local_PreferenceはAS内で「あて先ネットワークへの出口」を決定するアトリビュートになります。
BGPでは,これらのアトリビュートを使ってベストパスを選択することになります。