BGP 属性(アトリビュート)とカテゴリ
BGP では UPDATE メッセージで広報するルート (NLRI) に対して属性 (Path Attribute) が付随します。
例えば以下のパケットキャプチャでは『192.168.50.0/24』というルートに対して『ORIGIN=IGP, AS_PATH=65001, NEXT_HOP=192.168.10.1』という属性が付与されていることが分かります。
BGP の属性 (パスアトリビュート) は、以下 4 つのカテゴリに分類されます。
- Well-known Mandatory : 全ての BGP ルータが認識すべき必須属性 (この属性に値が無いとエラーになる)
- Well-known Discretionary : 全ての BGP ルータで認識すべき任意属性 (この属性に値が無くてもエラーにならない)
- Optional Transitive : BGP ルータは認識できなくてもよいが、相手から受信したら他の BGP ルータにも伝える属性
- Optional Non-transitive : BGP ルータは認識できなくてもよいが、相手から受信しても他の BGP ルータには伝えない属性
なお、属性のパケットフォーマットを詳細に見ると、Well-known か Optional を示すフラグ、Transitive か Non-transitive かを示すフラグがありますが、Mandatory か Discretionary かを示すフラグはありません。
Well-known については BGP ルータ自体が「この属性は Mandatory か Discretionary か」を判断できるため、パケット内で識別させる必要が無いからです。
例えば ATOMIC_AGGREGATE という属性は Discretionary、NEXT_HOP 属性は Mandatory ですが、下図の通り、フラグ上は区別はありません。
BGP 属性一覧
BGP には様々な属性 (パスアトリビュート) が定義されています。一覧を以下に示します。
タイプ コード | 属性名 | カテゴリ | RFC | 説明 |
---|---|---|---|---|
1 | ORIGIN | Well-known Mandatory | 4271 | 生成元がAS内か不明か |
2 | AS_PATH | Well-known Mandatory | 4271 | 経由したASの順列 |
3 | NEXT_HOP | Well-known Mandatory | 4271 | 広報元ルータの IP |
4 | MULTI_EXIT_DISC | Optional Non-transitive | 4271 | メトリック |
5 | LOCAL_PREF | Well-known Discretionary | 4271 | AS内での優先度 |
6 | ATOMIC_AGGREGATE | Well-known Discretionary | 4271 | ルート集約により情報が欠けたことを示す |
7 | AGGREGATOR | Optional Transitive | 4271 | ルート集約をしたルータのAS番号とルータIDを示す |
8 | COMMUNITIES | Optional Transitive | 1997 | ルートのタグ付けを行い、コミュニティ単位で経路制御 や属性付与等の処理を行う 4 Bytes の情報 |
9 | ORIGINATOR_ID | Optional Non-transitive | 4456 | ルートリフレクタのループ防止で利用 |
10 | CLUSTER_LIST | Optional Non-transitive | 4456 | ルートリフレクタのループ防止で利用 |
11 | DPA | 廃止 | draft | RFC6938により廃止 |
12 | Advertiser | 廃止 | 1863 | RFC6938により廃止 |
13 | RCID_PATH/CLUSTER_ID | 廃止 | 1863 | RFC6938により廃止 |
14 | MP_REACH_NLRI | Optional Non-transitive | 4760 | MP-BGPやFlowSpecで利用 |
15 | MP_UNREACH_NLRI | Optional Non-transitive | 4760 | MP-BGPやFlowSpecで利用 |
16 | Extended Communities | Optional Transitive | 4360 | コミュニティを 4 Bytes から 6 Bytes に拡張したもの 特殊用途としてMP-BGP (MPLS-VPNのRoute-Target) 等で利用 |
17 | AS4_PATH | Optional Transitive | 6793 | 4 Bytes AS番号に対応していないBGPルータにAS_PATHを通知するためのもの |
18 | AS4_AGGREGATOR | Optional Transitive | 6793 | 4 Bytes AS番号に対応していないBGPルータにAGGREGATORを通知するためのもの |
32 | LARGE_COMMUNITY | Optional Transitive | 8092 | コミュニティを 4 Bytes から 8 Bytes に拡張したもの |
より詳細については IANA の BGP パラメーターズを参照下さい。
BGP Best Path Selection Algorithm
BGP では受信した宛先ルートをまず『BGP テーブル (RIB: Route Information Base)』に格納します。同じ宛先ルートが複数のルータから受信した場合、『ベストパス』を決め、ベストパスのみをルーティングテーブルに格納します。
まれに RIB=ルーティングテーブルと記載している箇所がありますが (Cisco の記事でも見られますが)、RFC 4271 の Section 3.2 には以下のように「RIB」と「Routing Table」を使い分けて記載されています。
BGP テーブルは show ip bgp で確認し、ルーティングテーブルは show ip route で確認します。
Cisco の場合、BGP のベストパスは以下の優先順位で決まります。
- WEIGHT 属性 (Cisco 独自属性) の値が最大のもの
- LOCAL_PREF 属性の値が最大のもの
- ローカルルータで (network や aggregate-address コマンドで) 生成したルート
- AS_PATH 属性が最短のもの (経由した AS の数が少ないもの)
- ORIGIN 属性の値が最小のもの
0 (IGP) = networkコマンドや aggregate-addressで生成されたルート (リモートルータ含む)
1 (EGP) = EGPで受信したもの
2 (Incomplete) = redistributeで再配布されたもの - MED 属性が最小のもの
- iBGP よりも eBGP が優先 (もしベストパスが決まった場合であっても ⑨ でマルチパス選択へ)
- NEXT_HOP 属性への IGP (RIP/OSPF/EIGRP) メトリックが最小のもの (ここでベストパスが決まっても⑨でマルチパス選択へ)
- maximum-paths (デフォルト=1) が 2 以上である場合はマルチパスとして複数ルートをルーティングテーブルに掲載。
- eBGPから受信した最古のもの (フラッピングが発生しにくい)
- ネイバーのルータID が最小のもの (ルートリフレクタを含む場合、ORIGINATOR_ID が最小のもの)
- CLUSTER_LIST 属性が最短のもの
- ネイバーのIPアドレスが最小のもの
③について
network コマンドは Connected のネットワークアドレスだけでなく、RIP/OSPF/EIGRP で学習したネットワークアドレスに対しても有効です。なので例えば同一 AS 内で OSPF にて 1.1.1.0/24 を広報し、それを BGP の network コマンドで R1 と R2 の両ルータで取り込む場合、各々で自身の network コマンドで取り込んだルートが優先されます。
⑤について
EGP とは BGP の前身であるプロトコルです。RFC 827 で定められていますが、現在では使われていませんので、表示されることはないでしょう。
⑦~⑨について
⑦でベストパスが決まったとしても、もし⑨で maximum-paths が 2 以上であったらその数だけ等コスト(ECMP)/不等コストマルチパスとして採択されます。
⑦でベストパスが決まらない場合、⑧にてベストパスを決め、同様に⑨によるチェックとマルチパス採択が行われます。
⑩以降はパスは 1 つだけに決まります。
ECMP/不等コストマルチパスの設定は以下のように行います。(3 経路をルーティングテーブルに載せる例)
(config)# router bgp 65001 (config-router)# maximum-paths 3
ただし、maximum-paths コマンドは同一 AS に対する eBGP ネイバーに対して負荷分散をするコマンドです。異なる AS に対する eBGP ネイバーや iBGP ネイバーに対する負荷分散の設定については以下をご参照下さい。
コメント