クイックダウンロード:
BGP属性はインターネットルーティングのポリシーエンジンであり、それらを理解することが、自律システムへのトラフィックの出入りを制御するための第一歩となります。
-
LOCAL_PREFやAS_PATHといった属性は、最適な経路を選択する際に厳密な順序で評価されるため、わずかな変更でもルーティングに大きな影響を与える可能性があります。
-
よく知られている必須属性(ORIGIN、AS_PATH、NEXT_HOP)は、すべてのBGP Updateメッセージに含まれていなければなりません。オプション属性を使用すると、ポリシーをさらに制御できます。
-
属性のスコープと推移性の誤解は、ルーティングの漏洩や意図しないトラフィックのシフトを引き起こす一般的な原因です。
-
各AS境界で各BGP属性がどのように設定され、フィルタリングされるかを示すポリシーマップを作成してください。ここにドキュメントがあれば、後々診断が困難なルーティング障害を防ぐことができます。
現代生活に不可欠な多くの活動はインターネットに依存しており、インターネットは国境の序論に依存している
ボーダーゲートウェイプロトコル(BGP)は、インターネットを介して接続された2つのエンドポイント間でデータ伝送に最適な経路を見つける役割を担っています。この記事では、ネットワークエンジニアリングにおけるよくある疑問である「BGP属性はどのように機能するのか?」に答えるため、BGPの内部動作を詳しく解説します。
説明に入る前に、この記事全体を通して参照するいくつかの基本的な概念をまず確認しておきましょう。
文脈のための定義
- 自律システム自律システム(AS)とは、ネットワークに属し、単一の組織によって管理されるIPプレフィックスの集合を表します。各ASには、ネットワーク固有の自律システム番号(ASN)が割り当てられます。
- 内部および外部BGP: ボーダーゲートウェイプロトコル(BGP)は、インターネットを支えるプロトコルです。インターネット上のAS間でルーティング情報と到達可能性情報を交換するルーティングプロトコルです。小規模企業は、ISP(1つ以上のISPがあり、各ISPは冗長性のために少なくとも1つのルーターに接続されています)に接続されているエッジ部分でのみBGPを実行します。大規模企業は、単一のAS内での通信を円滑にするために内部BGPを利用します。
- ピアASへの接続: ASを所有する企業または組織は、1つ以上のアップストリームに接続できます。各アップストリームに対しては、1つ以上の接続が存在し、これらの接続はすべて同じデバイスに接続することも、複数のデバイスに分散させることも可能です。
BGP属性カテゴリ
BGP属性には4つのカテゴリがあります。
- よく知られている必須すべてのBGPピアによって認識され、すべてのピアに渡され、すべてのアップデートメッセージに含まれます。よく知られている必須属性には以下が含まれます。
- ネクストホップ
- Origin
- ASパス
- 有名な裁量権すべてのルーターで認識され、すべてのピアに渡され、オプションで更新メッセージに含まれます。よく知られている任意属性には以下が含まれます。
- ローカルプリファレンス
- 原子集合体
- オプションの推移的BGPルーターによって認識され、BGPピアに渡される可能性があります。オプションの推移属性は、認識されない場合は部分的としてマークされます。オプションの推移属性には以下が含まれます。
- アグリゲーター
- コミュニティ
- オプションの非推移的BGPルーターによって認識される可能性はあるが、ピアには渡されない。オプションの非推移的属性には以下が含まれる。
- 多出口弁別器 (MED)
- 発信者ID
- クラスターID
各ネットワーク機器ベンダーは、自社のルーターが認識する独自のBGP属性を作成できます。ただし、認識されない属性は無視されます。とはいえ、Ciscoルーターを使用せずにBGPを実行しているネットワークはまずないでしょう(Cisco製品を使用していない企業もあるかもしれませんが、その数はごくわずかです)。
ベンダー固有の属性について触れたついでに、この記事の後半で言及する、重要ではあるもののシスコ独自の属性である「重み」についても触れておきましょう。重みは優先ルート選択においてローカルな意味を持ち、値が大きいほど優先されます。
BGP更新メッセージ
Updateメッセージは、BGPネイバー間でルーティング情報を転送するために使用され、ルートのアドバタイズと撤回を可能にします。Updateメッセージにおける最も重要なBGPフィールドは以下のとおりです。
- パス属性の合計長: パス属性フィールドの全長を示します。
- パス属性: の形式に従います
そして、以下の2つのサブフィールドが含まれています。 - 属性フラグ: 属性が既知か、オプションか、推移的か、非推移的かを定義します。更新からの情報が部分的か完全かを示します。
- 属性タイプコード: 属性を識別します(例えば、ORIGIN属性のタイプコードは1です)。
BGP最適パス選択アルゴリズム
最適な経路を決定するために、各BGPルーターには「最適経路選択」アルゴリズムが搭載されており、類似した2つの経路の情報を比較します。これは、BGPスピーカーが複数のピアから同じ経路を受信することは珍しくないためです。実際、複数のアップストリームまたはピアが存在する場合、これはごく一般的なことです。
BGPの最適パス選択アルゴリズムの仕組みを説明する前に、受信したBGPルートのすべてが最適ルートとして選択される候補となるわけではないことを理解しておくことが重要です。これには多くの理由がありますが、よくある理由の一つは、ルートの属性としてアドバタイズされたネクストホップにアクセスできないことです。
それでは、CiscoルーターのBGP選択アルゴリズムを使用して最適なルート候補を選択する際に考慮すべき要素(およびそれらが考慮される順序)を見ていきましょう。
- 重み属性が最も高いパスが優先されます(他のベンダーはこの属性を無視します)。
- 「ローカル優先度」が最も高いパスが優先されます(通常は100に設定されています)。
- 「network」または「aggregate」コマンドを使用してローカルで生成されたパス、あるいはIGPからの再配布を使用したパスが推奨されます。
- 最短のASパスを持つパスが優先されます(ルーターの設定でスキップ可能)。
- 起点タイプが最も低いパスが優先されます。起点タイプの優先順位は以下のとおりです。
- IGP
- EGP
- 不完全
- MED値が最も低いパスが優先されます。デフォルトでは、比較対象となるパスの隣接ASが同じ場合にのみMED値が比較されます(これは設定可能です)。パスのMED値をどのように、いつ処理するかに関するコマンドは複数ありますが、その複雑さから、この記事では説明しません。
- 外部BGPパスが(内部BGPパスよりも)優先されます。
- BGPネクストホップのIGPメトリックが最も低いパスが優先されます。この時点で、マルチパスが設定されている場合は、ルータがルートをインストールします。設定されていない場合は、アルゴリズムは次のステップに進みます。
- 両方のルートが外部ルートの場合、最も古いルートが優先されます。BGPがルーターIDを比較するように設定されている場合、またはパスのルーターIDが同じ場合は、この手順はスキップされます。
- ルーターIDが最も小さいパスが優先されます。ルーターIDは手動で設定することも、設定されている最大のIPアドレスを使用して自動的に設定することもできます(最初にループバックインターフェースが考慮され、次に物理インターフェースが考慮されます)。
- クラスタリストの長さが最も短いパスが優先されます。この手順は、ルートリフレクタ環境でのみ適用されます。そうでない場合は、この手順はスキップされます。
- 最も低い隣接アドレスからの経路が優先されます。この時点で、少なくとも1つの経路が最適経路として選択されるはずです(ステップ8の後では複数選択される場合もあります)。
例
ルーターがさまざまなBGP属性を比較して最適なルートを選択する例をいくつか見てみましょう。
重量
以下のシナリオでは、R1 は R12 から来るプレフィックス (AS 12 ~ 200) の重み値を設定し、R11 から来るプレフィックス (AS 11 から来る) の属性はデフォルト値のままにします。
R1が最適なパス選択アルゴリズムを実行する際(R1はCisco製デバイスであるため)、プレフィックスにローカルに設定されている重み値を比較します。いずれかのパスの重み値が他のパスの値よりも高い場合、そのパスが選択され、アルゴリズムは停止します。
次の例を考えると、R1 は R12:PKI から受信したパスを優先する必要があります。これらのテクノロジーは、インターネット ルーティングに対するハイジャックや悪意のある攻撃を軽減するのに役立つメカニズムを導入します。

ルーター入力
R1#sh ip bgp 10.10.10.0
BGP routing table entry for 10.10.10.0/24, version 2
Paths: (2 available, best #1, table default)
Advertised to update-groups:
2
Refresh Epoch 2
12 111
1.1.2.2 from 1.1.2.2 (1.1.4.1)
Origin IGP, localpref 100, weight 200, valid, external, best
rx pathid: 0, tx pathid: 0x0
Refresh Epoch 2
11 111
1.1.1.2 from 1.1.1.2 (1.1.3.1)
Origin IGP, localpref 100, valid, external
rx pathid: 0, tx pathid: 0
R1#ローカルプリファレンス
ローカルプリファレンスは、よく知られた任意属性です。つまり、アップデートにローカルプリファレンスが含まれている場合、すべてのルーターによって認識されます。
このシナリオでは、R1はすべてのBGPピアからのプレフィックスに対してWeightを200に設定します。Weight属性が等しい場合、最適なパス選択アルゴリズムはLocal preference属性の値を比較します。
次のシナリオを考えてみましょう。

R1 は R11 からの経路を選択します。これは、R11 からの経路のローカル優先度が 110 に設定されており、R12 からの経路に設定されているデフォルト値 100 よりも高いためです。
ルーター入力
R1#sh ip bgp 10.10.10.0
BGP routing table entry for 10.10.10.0/24, version 2
Paths: (2 available, best #1, table default)
Advertised to update-groups:
3
Refresh Epoch 2
11 111
1.1.1.2 from 1.1.1.2 (1.1.3.1)
Origin IGP, localpref 110, weight 200, valid, external, best
rx pathid: 0, tx pathid: 0x0
Refresh Epoch 2
12 111
1.1.2.2 from 1.1.2.2 (1.1.4.1)
Origin IGP, localpref 100, weight 200, valid, external
rx pathid: 0, tx pathid: 0
R1#ASパス
AS_PATH属性はよく知られた必須属性であり、プレフィックスが通過したASのリストを表します。各ASは、現在のAS PATHの前に追加されます。
次の例では、R11 から R1 が受信したルートの AS_PATH は 11 111 であり、R12 から受信したルートの AS_PATH は 12 22 111 です。

AS_PATHは短い方が長いよりも優れているため、アルゴリズムのこれまでのすべてのステップで最適なルートを選択できなかった場合、AS_PATHが最短のルートが最適なルートとして選択されます。
ルーター入力
R1#sh ip bgp 10.10.10.0/24
BGP routing table entry for 10.10.10.0/24, version 2
Paths: (2 available, best #2, table default)
Advertised to update-groups:
4
Refresh Epoch 4
12 22 111
1.1.2.2 from 1.1.2.2 (1.1.4.1)
Origin IGP, localpref 110, weight 200, valid, external
rx pathid: 0, tx pathid: 0
Refresh Epoch 3
11 111
1.1.1.2 from 1.1.1.2 (1.1.3.1)
Origin IGP, localpref 110, weight 200, valid, external, best
rx pathid: 0, tx pathid: 0x0
R1#Origin
最適な経路選択アルゴリズムのステップ5では、ルーターはOrigin属性の値を比較します。Origin属性には、次の3つの値(またはコード)があります。
- i – IGP
- e – EGP
- ? – 未完了
次のシナリオでは、R1 は R11 からの経路のうち発信元が「IGP」であるものと、R12 からの経路のうち発信元が「incomplete」であるものを認識します。最適な経路選択アルゴリズムのこれまでのすべてのステップでは最適な経路を選択できなかったため (すべての値が等しかったため)、発信元値を比較する必要があります。

Origin IGPはOrigin Incompleteよりも優れているため、R11からのルートが最適なルートとして選択されます。
ルーター入力
R1#sh ip bgp 10.10.10.0/24
BGP routing table entry for 10.10.10.0/24, version 2
Paths: (2 available, best #2, table default)
Advertised to update-groups:
4
Refresh Epoch 3
12 111
1.1.2.2 from 1.1.2.2 (1.1.4.1)
Origin incomplete, localpref 110, weight 200, valid, external
rx pathid: 0, tx pathid: 0
Refresh Epoch 2
11 111
1.1.1.2 from 1.1.1.2 (1.1.3.1)
Origin IGP, localpref 110, weight 200, valid, external, best
rx pathid: 0, tx pathid: 0x0マルチ出口識別器(MED)
MEDは、オプションの非推移的BGP属性です。AS間で交換され、AS内のすべてのルーターに伝播されますが、他のASにはアドバタイズされません。
次のシナリオでは、R111は異なるMED値でR11ルーターとR12ルーターにルートをアドバタイズします。R11とR12は両方ともR1にルートをアドバタイズし、R1はBGP最適パス選択アルゴリズムを実行する必要があります。
これまでの手順では最適な経路を選択できなかったため、MEDを評価し、MED値が最も低い経路を選択します。

R1から、R11とR12から受信した経路はR111によって設定されたMED値を維持しており、選択された経路はMED値が最も低いものであることがわかる。
ルーター入力
R1#sh ip bgp 10.10.10.0/24
BGP routing table entry for 10.10.10.0/24, version 7
Paths: (2 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
111
1.1.1.2 from 1.1.1.2 (1.1.3.1)
Origin IGP, metric 11, localpref 110, weight 200, valid, internal, best
rx pathid: 0, tx pathid: 0x0
Refresh Epoch 1
111
1.1.2.2 from 1.1.2.2 (1.1.5.1)
Origin IGP, metric 12, localpref 110, weight 200, valid, internal
rx pathid: 0, tx pathid: 0
R1#コミュニティ
BGPコミュニティは、AS間を伝播できるオプションの推移的BGP属性です。BGPコミュニティは、選択的に設定、削除、または変更できます(たとえば、コミュニティを追加できます)。BGPコミュニティは、ルーティングポリシーを適用する目的でルートにタグ付けするために使用できます。たとえば、受信したルートに特定のBGPコミュニティが付加されている場合、ルータはそのルートの他のBGP属性に対してさまざまな操作を実行できます。
よく知られているBGPコミュニティは4つあります。
- インターネットプレフィックスはすべてのBGPネイバーにアドバタイズできます。
- 広告なしプレフィックスはどのBGPネイバーにもアドバタイズしてはなりません。
- 輸出禁止: プレフィックスは外部の BGP ネイバーにアドバタイズしてはなりません。
- ローカルAS: プレフィックスは、サブASの外部に公開すべきではありません。
BGPコミュニティは、最適なルートを選択するために評価されるBGP属性ではありませんが、オペレータがBGPの最適パス選択アルゴリズムの結果に影響を与えることを可能にします。
次のシナリオでは、R11とR12は、R111から送信される際に添付されているコミュニティに基づいて、ルートに特定のローカルプリファレンス値を設定します。R1は同じルートを2回受信するため、BGPの最適パス選択アルゴリズムを実行する必要があります。

そこで、R1はLOCAL_PREFが110のパスとLOCAL_PREFが105のパスのどちらかを選択しなければなりません。
ルーター入力
R1#sh ip bgp 10.10.10.0/24
BGP routing table entry for 10.10.10.0/24, version 12
Paths: (2 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 2
111
1.1.1.2 from 1.1.1.2 (1.1.3.1)
Origin IGP, metric 0, localpref 110, valid, internal, best
rx pathid: 0, tx pathid: 0x0
Refresh Epoch 2
111
1.1.2.2 from 1.1.2.2 (1.1.5.1)
Origin IGP, metric 0, localpref 105, valid, internal
rx pathid: 0, tx pathid: 0
R1#前述のとおり、このアルゴリズムはコミュニティ自体を評価するものではありません。しかし、特定のコミュニティとの一致によって変更された属性の1つを評価します。
製品概要
これで、ルータがUPDATEメッセージに含まれるBGP属性をどのように評価して、ルーティングテーブルにインストールする最適なパスを選択するのかが分かりました。ベンダーは独自のBGP属性評価方法を定義できますが、ほとんどのルータはシスコ製であるため、シスコの最適パス選択アルゴリズムを使用しています。
BGPの可視性をルーティングの信頼性につなげる
LogicMonitorは、ネットワークチームがBGP属性の変更、パス選択の変動、ルーティング異常をリアルタイムで監視するのに役立ち、問題が深刻化する前に対応するために必要な情報を提供します。
よくあるご質問
BGP属性とは何ですか?
BGP属性とは、ルーティングアドバタイズメント(アップデートメッセージ)に付加される情報であり、ルータが経路選択の判断を行う際に使用します。属性は、経路の発信元、自律システムを通過する経路、経路に割り当てられた優先度など、経路の特性を定義します。属性は、既知の必須属性、既知の任意属性、オプションの推移的属性、またはオプションの非推移的属性に分類されます。
BGPにおけるLOCAL_PREFとMEDの違いは何ですか?
LOCAL_PREFは、単一のAS内で優先アウトバウンドパスを決定するために使用され、iBGPピア間でのみ共有されます。LOCAL_PREFの値が大きいほど、優先ルートとなります。一方、MED(Multi Exit Discriminator)は、隣接ASからの受信トラフィックに影響を与え、どのエントリポイントを使用すべきかを指示するために使用されます。MEDの値は小さいほど優先されます。これら2つの属性は、異なるトラフィックエンジニアリング上の問題を解決します。LOCAL_PREFはアウトバウンドトラフィックを整形し、MEDは受信トラフィックに影響を与えます。
AS_PATHはBGPパス選択にどのように影響しますか?
AS_PATHは、経路が通過したすべての自律システムを一覧表示する、よく知られた必須属性です。経路選択の際、BGPは他の条件が同じであれば、AS_PATHの長さが短い経路を優先します。ネットワークエンジニアは、AS_PATHに独自のAS番号を付加することで、意図的にAS_PATHを長くし、経路の優先度を下げることができます。これは、一般的なトラフィックエンジニアリングの手法です。
BGP属性がネットワークセキュリティにとって重要なのはなぜですか?
ORIGINやAS_PATHといったBGP属性は、ルートハイジャックやリークを示す異常を明らかにする可能性があります。所有するプレフィックスのAS_PATHに予期しないASが現れた場合、ハイジャックの試みを示している可能性があります。属性の変更、特に予期しないORIGINの変更や、プレフィックスの発信元となる新しいASを監視することは、BGPセキュリティの重要な要素です。




