30 Minutes NetWorking
No.RT20

30Minutes NetWorking

BSCI

第20回BGP4(5) ベストパス選択

■ MED

スーパーインター博士

前回説明すると言った残りのパスアトリビュートを説明する。まず、MED

タイプコードアトリビュート名特性
1OriginWell-known Mandatory
2AS_PathWell-known Mandatory
3Next_HopWell-known Mandatory
4Multi_Exit_Discriminator(MED)Optional Nontransitive
5Local_PreferenceWell-known Discretionary
6Atomic_AggregateWell-known Discretionary
7AggregatorOptional Transitive
8CommunityOptional Transitive
9OriginatorOptional Nontransitive
10Cluster_listOptional Nontransitive
-Weight-

[TableRT19-03:パスアトリビュート]

ハイパーネット助手

まるち いくじっと でぃすくりみねーたー?
Discriminatorってなんです?

スーパーインター博士

Discriminatorは「識別するもの」だな。つまりMEDは「複数の出入り口を識別するもの」という意味になる。
このパスアトリビュートは前回までのWell-known MandatoryではなくOptional Nontransitiveになる。

ハイパーネット助手

ピアがMEDをサポートしていなくてもいいし、他ピアに伝える必要もない、ですよね。

スーパーインター博士

そうだ。何故かと言うと、名前が示す通りちょっと特殊だからだ。
MEDのMulti Exitつまり「複数の出入り口」とは何を意味する?

ハイパーネット助手

複数の出入り口?
出入り口が複数ある? なんの出入り口が複数あるんですか?

スーパーインター博士

おいおい、発想力が貧困だな。

ハイパーネット助手

発想力が香港って、どんな発想力ですか?

スーパーインター博士

豪快な聞き間違いをするな、キミは。香港な発想力がどんなかは私が知りたいよ。
ともかく、この図を見てもらおう。

マルチホームAS

[FigureRT16-03:シングルホーム・マルチホーム]

ハイパーネット助手

複数の出入り口…マルチホームAS

スーパーインター博士

そういうことだ。MEDはマルチホームASで使われるパスアトリビュートということだ。
図で説明しよう。

[FigureRT20-01:MED]

スーパーインター博士

マルチホームASで、隣接ASからどのパスを使ってもらうか決定できるのがMED、ということになる。

ハイパーネット助手

どのパスを使ってもらうかを決定…。上の例ですと、AとC間のパスを使ってもらうために、AからのアドバタイズのMEDを100、BからのアドバタイズのMEDを200にしたってことですか?

スーパーインター博士

そういうことだ。MEDだけが他ASのパス選択に影響を及ぼすことができるアトリビュートだ。
他のアトリビュートは基本的に自AS内での話だからな。

ハイパーネット助手

ははぁ、すごいアトリビュートなんですねぇ。

スーパーインター博士

だが、MEDは後で話すがベストパス選択の優先順位が低いのだよ。
やはり自ASの都合(他のアトリビュート)が隣接ASの都合(MED)よりも優先する、ということだな。

ハイパーネット助手

ふむふむ。身内に甘いのですね、BGPは。

スーパーインター博士

ヤな言い方だな、それは。
ちなみにCiscoルータでは、MEDは「メトリック」として表現される

ハイパーネット助手

めとりっく? あのメトリックですか?

スーパーインター博士

そうだ。ベストパス選択の仕組みを見てもらえばわかるが、MEDは事実上IGPのメトリックと同じ役割を果たすのだよ。

ハイパーネット助手

そうなんですか?
…MEDが低いパスをベストパスとして選択する…、うん、確かにIGPのメトリックっぽいですよね。

スーパーインター博士

うむうむ、そういうことだ。
あとは、MEDはOptional Nontransitiveなので、送られる範囲が限定される、ということも覚えておくことだな。

MEDがアドバタイズされる範囲

[FigureRT20-02:MEDがアドバタイズされる範囲]

ハイパーネット助手

1つ向こうのASにはアドバタイズされないわけですね。
AS1とAS2の間でのアトリビュートだから、AS3は関係ない、と。

■ Local_Preference

スーパーインター博士

さて、次はLocal_Preferenceだが。
名前からもわかるとおり、IBGPでしか使われないアトリビュートだ。

ハイパーネット助手

ろーかる、だからAS内のIBGPってことですね。

スーパーインター博士

そうだ、Local Preference、「ローカルでの選択」とでも訳すのがいいだろう。

ハイパーネット助手

ローカルでの選択。何をですか?

スーパーインター博士

他のASへ行くためのBGPスピーカを選択するのだ。
つまり、以下の図のような形になる。

[FigureRT20-03:Local_Preference]

ハイパーネット助手

他ASの出口を決定する…。

スーパーインター博士

そうだ。宛先へ行くとき、どのBGPスピーカを経由していくかを決定するものだ。
もちろん、マルチホームASで有効なアトリビュートだ。

ハイパーネット助手

へへぇ、なんか、さっきでてきたMEDの逆みたいなアトリビュートですね。

スーパーインター博士

そうだな。MEDがどのパスでASに入ってくるかを選択する(してくれるよう隣接ASに頼む)アトリビュートなのに対し、Local_Preferenceはどのパスで出て行くかを選択するアトリビュートということになるな。

ハイパーネット助手

ですよね、似てますよね。
でも、MEDは低い方がベストパスなのに、Local_Preferenceは大きい方がベストパスなんですね。

スーパーインター博士

うむ。逆なので間違えないように。
Local_Preferenceのポイントはまず、IBGP専用アトリビュートであること。

ハイパーネット助手

そりゃそうですよね。どのスピーカで出て行くかなんて、他ASはしったこっちゃないですよね。

スーパーインター博士

それと、Local_Preferenceは宛先ネットワークごとに変更ができる。

Local_Preferenceによるパス選択

[FigureRT20-04:Local_Preferenceによるパス選択]

スーパーインター博士

このように、AS単位でなく、ネットワーク単位でLocal_Preferenceを設定して、ベストパスを変えることも可能だ。

ハイパーネット助手

ははぁ、細かい制御ができるんですねぇ。

■ Weight

スーパーインター博士

パスアトリビュートの説明として、最後にWeightというアトリビュートを説明しよう。

ハイパーネット助手

うぇいと? 重さ?

スーパーインター博士

そうだな、重さだな。これはCiscoルータ独自のアトリビュートだ。
これはピアにアドバタイズされない、そのスピーカ専用のアトリビュートだ。

ハイパーネット助手

え〜っと、つまりそのルータでしか使われないアトリビュートってことですか?

スーパーインター博士

そうだ。
役割的にはLocal_Preferenceの逆になる。使用するネクストホップを自分で決定するためのアトリビュートだ。

ハイパーネット助手

使用するネクストホップを自分で決定する…。Local_Preferenceは、ピアがアドバタイズした値を使うから、自分で決定するわけではない、ですね。

スーパーインター博士

そういうことだ。

[FigureRT20-05:Weight]

スーパーインター博士

つまり「そのBGPスピーカの都合」がWeightだ。

ハイパーネット助手

ははぁ、確かにそのBGPスピーカがピアに設定した値でベストパスが決まるわけですから、そのスピーカの都合、ってことになりますよね。

スーパーインター博士

うむ。デフォルト値は他からのアドバタイズには0、自身が接続されているルートには32768が使われる。

ハイパーネット助手

ははぁ。デフォルトでは自身が接続されているルートがベストパスなんですね。当たり前と言えば当たり前ですけど。
…、ということは、ピアのWeightを32768より大きくすれば、直接接続じゃなくて、他のルータを経由していくこともありうるってことですか?

スーパーインター博士

まぁ、そういうこともありえるかもしれんが、基本的に直接接続は管理距離が最小だから、そちらが普通選ばれるな。

ハイパーネット助手

あ〜、そういわれればそうかも。

■ ベストパス

スーパーインター博士

さて、これで重要なパスアトリビュート、Origin、AS_Paht、Next_hop、MED、Local_Preference、Weightを説明したわけだ。他のアトリビュートは機会があったら紹介しよう。

ハイパーネット助手

はい。

スーパーインター博士

ネット君、いままでの説明から言えることはなんだね?

ハイパーネット助手

はぁ、なんか覚えることが一杯ですね。

スーパーインター博士

そういう事を聞いてるんじゃなくてだな……、ネット君。君はほんとに手ごわいな。

ハイパーネット助手

そうですか? いや面と向かって言われると照れますね。

スーパーインター博士

褒めてねぇ

ハイパーネット助手

はぅっ。

スーパーインター博士

ともかくだ。パスアトリビュートによってベストパスが選択されるわけだ。
だが、アトリビュートの優先順位が必要じゃないか? というネット君の返答を期待していたのだが。

ハイパーネット助手

あぁ、そうそうそう。それですよ、そう。

スーパーインター博士

まったく。ネット君は本当に発想力が…。

ハイパーネット助手

香港ですか?

スーパーインター博士

いや、蓮根(レンコン)だな。穴だらけ。
ともかく、どのアトリビュートから比較していって、ベストパスを決定するかを説明しよう。

ハイパーネット助手

はい。

スーパーインター博士

1つのネットワークに対し、複数のパスがBGPテーブルに存在する場合、ベストパス選択の第一歩は…。

Step.1
  • Next_HopアトリビュートのBGPスピーカへ到達できないパスは削除します。
ハイパーネット助手

Next_Hopへ到達できないパスは使わない…。
なんかものすごく当たり前なんですけど。

スーパーインター博士

まぁ、当たり前といえば当たり前のことだが、BGPではNext_Hopに指定されているからといって、必ずそこへ到達できるとは限らないからな。

ハイパーネット助手

前回出てきた、NBMAネットワークのようにですか?

スーパーインター博士

うむ、そういうことだ。なお、Next_HopがIBGPピアだった場合、BGP同期がされていないパスも削除される。
そして次は…。

Step.2
  • Weightが最も大きいパスをベストパスとする。
スーパーインター博士

さきほど出てきたWeightだな。Cisco独自のアトリビュートということを忘れないように。

ハイパーネット助手

自分の都合が最優先ってことですね。

Step.3
  • Weightが同じ場合、Local_Preferenceが最も大きいパスをベストパスとする。
ハイパーネット助手

次は身内の都合ですか。

スーパーインター博士

そういうことだ。ここでの注意点はLocal_PreferenceはWell-known Discretionaryなので、パスによってはLocal_Preferenceが設定されていない場合があるということだ。

ハイパーネット助手

Well-known Discretionaryは、サポートは必ずしなければならないが、UPDATEに必ずしも含まれる必要はない、でしたよね。
Local_Preferenceがあるパスとないパスがあることがあるってことですよね。

スーパーインター博士

うむ。そういう場合は、Ciscoルータの場合保留して、次のStepに進むことになる。

Step.4
  • Local_Preferenceが同じ場合、自身が生成したパスをベストパスとする。
スーパーインター博士

自分がアドバタイズするように設定したパスを優先するということだ。

Step.5
  • 自身が生成したパスがなく、Local_Preferenceが同じ場合、AS_Pathが最短のパスをベストパスとする。
Step.6
  • AS_Pathが同じ場合、Originが小さいパスをベストパスとする。
ハイパーネット助手

AS_PathとOriginは前回出てきましたよね。AS_Pathは経由AS数、Originは発生元でしたね。

スーパーインター博士

そうだ。最初のNext_Hopを除くと、Step.5で初めてWell-known Mandatoryのアトリビュートが登場する。
つまり、WeightやLocal_Preferenceを特に設定しなかった場合AS_Pathがベストパス選択の基準となる。

ハイパーネット助手

Weightはローカル専用、Local_PreferenceはUpdateに含めなくてもいいアトリビュートですものね。

Step.7
  • Originが同じ場合、MEDがもっとも低いパスをベストパスとする。
スーパーインター博士

ここまでで説明したアトリビュートが全部出揃ったわけだ。

ハイパーネット助手

そうなりますね。

スーパーインター博士

これでも決まらなかった場合、以下のように続く。

Step.8
  • アドバタイズしてきたピアがIBGPピアよりもEBGPピアを優先し、ベストパスとする。
Step.9
  • IBGPの場合、IGPで最も近いピアのルートをベストパスとする。
  • EBGPの場合、最も古くアドバタイズされたパスをベストパスとする。
Step.10
  • ルータIDが最小のピアのルートをベストパスとする。
Step.11
  • IPアドレスが最大のピアのルートをベストパスとする。
スーパーインター博士

これでベストパスが決定され、ルーティングテーブルに反映される。
その後、ピアにベストパスをアドバタイズする、ということが行われるわけだ。

ハイパーネット助手

うぅぅ、11個もステップがあると覚えるのが大変です。

スーパーインター博士

ネット君はもちろんのこと、確かにちょっと大変だな。
Step7までを単純に言うと。

  1. Weightが最大(ルータの都合)
  2. Local_Preferenceが最大(ASの都合)
  3. AS_Pathが最短(パスベクタ)
  4. Origin
  5. MEDが最小(隣接ASの都合)
スーパーインター博士

と、こうなる。
Step7までをとりあえずしっかりと覚えたまえ。

ハイパーネット助手

は〜。

スーパーインター博士

Step7までだけでもポリシーベースルーティングと呼ばれる理由がわかるだろう?

ハイパーネット助手

そうですね。これだけいろいろあればほとんど望む形でパスを変更できますよね。

スーパーインター博士

そうだ、この柔軟性がBGP4の特徴だからな。
さて、今回はここまで。

ハイパーネット助手

あ、はい。

スーパーインター博士

ではまた次回。

ハイパーネット助手

了解です。
30分間ネットワーキングでした〜♪

32768
Weightは0〜65535の値をとります。
32768はちょうど中央。
BGP同期が…
もちろん、同期を有効にしていない場合は別。
Ciscoルータの場合
ベンダによってはLocal_Preferenceのデフォルト値を100として判断する場合もあります。
自分が生成した…
つまり、そのルータがnetworkコマンドで指定したパスということになります。
管理距離
[Administrative Distance]
ネットワークの情報を複数のプロトコルで入手した場合に使用する優先度。
後述。
ハイパーネット助手ハイパーネット君の今日のポイント
  • MEDはどのパスを使ってもらうか隣接ASのピアにアドバタイズする。
  • Local_Preferenceは自AS内でネクストホップにどのピアを優先させるかを決定するためにアドバタイズする。
  • WeigthはCisco独自のアトリビュートで設定したルータでのみ有効。
    • ピアにWeightをつけることにより優先するピアを決定できる。
  • ベストパスは、Weight、Local_Preference、AS_Path、Origin、MEDの順で決定される
    • 特に設定しなければ、AS_Pathで決定される(パスベクタ)
    • BGPではアトリビュートの変更により、柔軟にパスを決定できる
  • ベストパスはルーティングテーブルに記載され、ピアにアドバタイズされる。

30 Minutes NetWorking No.RT20

管理人:aji-ssz(at)selene.is.dream.jp