30 Minutes NetWorking
No.RT19

30Minutes NetWorking

BSCI

第19回BGP4(4) パスアトリビュート

■ ポリシーベースルーティング

ハイパーネット助手

もうやめてぇぇぇ。」

スーパーインター博士

さて、まずBGPの基本的なルーティング動作を説明しよう。

ハイパーネット助手

あの、博士?

スーパーインター博士

まず、TCPを使ってBGPピアを確立することから始まるわけだ。

ハイパーネット助手

は、博士?
もしも〜し。

スーパーインター博士

次に、UPDATEでNLRIとパスアトリビュートを交換する。

ハイパーネット助手

ううぅぅ、博士ぇ。

スーパーインター博士

なんだネット君。

ハイパーネット助手

なんでスルーするんですか。寂しいじゃないですか。

スーパーインター博士

人生の縮図だ。
さて、話を続けるぞ。

ハイパーネット助手

うぅぅぅぅぅ。

スーパーインター博士

ともかく、交換したUPDATE情報をBGPスピーカはBGPテーブルを持つ。

ハイパーネット助手

びーじーぴーてーぶる?
ルーティングテーブルとは別にですか?

スーパーインター博士

そうだ。このBGPテーブルからベストパスを選び出して、ルーティングテーブルに載せるわけだな。
BGPテーブルを確認するCiscoIOSコマンドは以下の通り。

  • Router#show ip bgp
ハイパーネット助手

ははぁ、OSPFのトポロジカルデータベースや、EIGRPのトポロジテーブルみたいなもんですね。

スーパーインター博士

そうだな、ルーティングの全情報のテーブル、ってことだな。
つまり、図で表すとこう。

[FigureRT19-01:BGPルーティングプロセス]

ハイパーネット助手

パスアトリビュートが、メトリックの役割を果たすんですね。

スーパーインター博士

そういうことなのだが。ネット君。
BGPはどのような方式でルーティングする、と説明したかね?

ハイパーネット助手

パスベクタ型、でしたっけ?
経由ASの数が評価値になるという。

スーパーインター博士

うむ、基本的にはそうなのだが、さらにBGPではパスアトリビュートによりパス選択を柔軟に変更できる。経由AS数だけでなく、任意にアトリビュートを設定できるのだな。

ハイパーネット助手

ははぁ。

スーパーインター博士

このようなルーティング方式をポリシーベースルーティングという。
つまりなんらかの「ポリシーで経路が選択」される、ということだ。

ハイパーネット助手

じゃ、いままでのは何と言うんです?

スーパーインター博士

宛先ベースルーティングだな。「宛先で経路が選択」されるわけだ。

ハイパーネット助手

「宛先」で経路が選択されるのと、「ポリシー」で経路が選択される。
ポリシーベースルーティングはBGPでしかできないのですか?

スーパーインター博士

いや、ルートマップを使えば、OSPFなどでも実行できる。
それは先で話そう。

ハイパーネット助手

はい。

■ パスアトリビュート

スーパーインター博士

さて、BGPルーティングの評価値、つまりメトリックと同じ扱いをされるパスアトリビュートだが、これは1つではなく、複数の値からなる。
前回でも話したAS_Pathもその1つだ。

ハイパーネット助手

AS_Pathは、経由したASを示すんでしたっけ。

スーパーインター博士

うむ。
このパスアトリビュートはUPDATEメッセージで送られるわけだが、このパスアトリビュートには3種類の特性がある。

ハイパーネット助手

属性の特性? なんかややこしいですね。

スーパーインター博士

そのパスアトリビュートがどういうものかを説明するものだな。
以下の3種類だ。

特性1Well-Known(既知)そのアトリビュートはすべてのBGPスピーカでサポートされている
Optional(選択)そのアトリビュートはすべてのBGPスピーカでサポートされている必要はない
特性2Mandatory(必須)UPDATEに必ず含めなければならない
Discretionary(任意)UPDATEに必ず含める必要はない
特性3Transitive(透過)そのアトリビュートは他のBGPスピーカに伝えなければならない
Nontransitive(非透過)他のBGPスピーカに伝えなくてもよい

[TableRT19-01:パスアトリビュート特性]

ハイパーネット助手

既知か選択、必須か任意、透過か非透過…。

スーパーインター博士

例えば「既知」か「選択」のどちらかの属性をそのパスアトリビュートは持つ、ということだな。
ただし、この3種類のすべての組み合わせがあるわけではなくて、実際は以下の4通りの特性を持つ。

Well-Known MandatoryすべてのUPDATEに含まれ、BGPスピーカはサポートしていなければならない
Well-Known DiscretionaryUPDATEに含まれなくてもよいが、BGPスピーカはサポートしていなければならない
Optional Transitiveサポートしていなくてもよいが、他BGPスピーカには伝えなければならない。
Optional Nontransitiveサポートしていなくてもよいし、他BGPスピーカには伝える必要もない。

[TableRT19-02:パスアトリビュート特性・組み合わせ]

ハイパーネット助手

え〜っと、まずWell-KnownかOptionalかで分かれるわけですね。で、Well-knownならUPDATEに含むかどうか、Optionalなら他に伝えるかどうか、と。

スーパーインター博士

そういうことだ。
さて、実際にCiscoルータが使用するパスアトリビュートは以下の10個 + 1個だ。

タイプコードアトリビュート名特性
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:パスアトリビュート]

ハイパーネット助手

はわ〜、一杯あるんですね。
最後のWeightってのはなんなんです?

スーパーインター博士

Ciscoオリジナルの属性だ。しかも、ローカルルータにしか設定されないからUPDATEには含まれない。これは後で説明しよう。

ハイパーネット助手

あ、はい。

スーパーインター博士

さて、全部のパスアトリビュートを説明していては日が暮れてしまうので、Origin、AS_Path、Next-Hop、MED、Local_Preference、Weightという重要なアトリビュートを説明する。
特に今回はWell-known Mandatory特性を持つ、Origin、AS_Path、Next_Hopを説明しよう。

ハイパーネット助手

残りは?

スーパーインター博士

残りは次回だな。

ハイパーネット助手

了解ッス。

■ Origin

スーパーインター博士

まず、Origin。「起源」とか「源」とかいう意味だな。発生元と訳すのが一番意味がわかりやすいだろう。

ハイパーネット助手

発生元? 何の発生元なんですか?

スーパーインター博士

そのルートを最初に通知したルータのことだな。
Originには以下の3つの値がある。

優先度意味
0IGPルートは通知してきたAS内部にある
1EGPEGP(EGPsではない)によって再配送された
2INCOMPLETEそれ以外で配布された(ルート再配布など)

[TableRT19-04:Originアトリビュート]

ハイパーネット助手

優先度ってのは?

スーパーインター博士

Originアトリビュートのまぁ、評価値だな。低い方を優先する。
例えばINCOMPLETEのルート情報と、IGPのルート情報ならばIGPを優先する。

ハイパーネット助手

う〜ん。IGPって値がいまいちよくわからないんですけど。
「ルートは通知してきたAS内部にある」?

スーパーインター博士

うむ、つまりだな。EBGPスピーカが、他ASのEBGPスピーカにルートを通知する際に、このネットワークは自分のAS内にありますと通知するのがIGP、ということだな。

Origin

[FigureRT19-02:Originアトリビュート]

ハイパーネット助手

ははぁ、でもEGPは実際使われていないわけですから、これってIGPばっかりになりませんか?

スーパーインター博士

そうだな、基本的にはOriginの値はIGPが多くなるな。

ハイパーネット助手

そうですよね。

■ AS_Path

スーパーインター博士

何回か話に出てきたAS_Pathだが。
他のアトリビュートを特に設定しない場合は、AS_Pathのみでベストパスが決まるぐらい重要なアトリビュートだ。

ハイパーネット助手

経由AS数で決まるから、パスベクタ型なんでしたっけ。

スーパーインター博士

そういうことだ。
これは図で説明したほうが早い。

[FigureRT19-03:AS_Pathアトリビュート]

ハイパーネット助手

ははぁ、なんかホントにASのホップ数って感じですね。

スーパーインター博士

そうだな。通過するASの数というまさしくホップだな。
ちなみにIBGPの場合AS番号は追加されない

[FigureRT19-04:AS_Pathアトリビュート・IBGP]

ハイパーネット助手

まぁ、これは理解できます。IBGPにアドバタイズするのに「自分のASを通過してきました」なんて言う必要ないですからね。

スーパーインター博士

うむ。そういうことだ。
そして、AS_Pathにはベストパスを決定する以外にもう1つ重要な役割がある。

[FigureRT19-05:ルーティングループの回避]

スーパーインター博士

AS_Pathによりルーティングループを防ぐことが可能、というわけだ。

ハイパーネット助手

「誰々から教えてもらったよ」というのがUPDATEに書いてあるようなものですね。
で、そこに自分の名前があれば、それを記憶する必要もない、と。

スーパーインター博士

まぁ、そういうことだな。
ともかくパスアトリビュートの中でAS_Pathが最重要、と覚えておいてくれたまえ。

ハイパーネット助手

「パスベクタ」ですね。

■ Next_Hop

スーパーインター博士

さて、UPDATEに必ず含まれるWell-known Mandatory特性の最後の1つが、Next_Hopだ。

ハイパーネット助手

ねくすとほっぷ。
これはそのまま、次のホップ、なんですか?

スーパーインター博士

基本的には次のホップそのものだな。

[FigureRT19-06:Next_Hopアトリビュート]

スーパーインター博士

EBGPでは通知するピアにUPDATEを送るインタフェースがNext_Hopになる

ハイパーネット助手

でも、IBGPでは変更しないんですよね。

スーパーインター博士

うむ。その通り。
つまり、Next_Hopは宛先ネットワークへ繋がっている次のASの入り口を指す、ということだ。

ハイパーネット助手

次のASの入り口?

スーパーインター博士

そうだ。つまり、先ほどの図を使えば、こういう意味になる。

Next_Hopアトリビュートの意味

[FigureRT19-07:Next_Hopアトリビュートの意味]

ハイパーネット助手

なるほど。AS単位での次のホップってことですか。

スーパーインター博士

うむ。
それと、IBGPでのAS内部のネットワークの場合は、Next_HopアトリビュートはそのままIGPなどのネクストホップと同じ意味だ。

AS内のNext_Hopアトリビュート

[FigureRT19-08:AS内のNext_Hopアトリビュート]

ハイパーネット助手

あ〜、普通にアドバタイズを送ったルータがNext_Hopになるんですね。
確かにRIPなんかと同じですね。

スーパーインター博士

うむ。
さらにもう1つ、マルチアクセスネットワークでは、また動作がことなる。

ハイパーネット助手

まるちあくせすねっとわーく?
え〜っと、イーサネットとかですよね。

スーパーインター博士

そうだ。その時は下のようになる。

[FigureRT19-09:マルチアクセスネットワークでのNext_Hopアトリビュート]

ハイパーネット助手

はわ〜。EBGPでアドバタイズする時も変えないんですね。なんでです?

スーパーインター博士

うむ。マルチアクセスネットワークならば、いちいちルータBを経由する必要がないからだな。直接送った方が効率的だ。

ハイパーネット助手

あ〜、確かにそうですね。

スーパーインター博士

だが、同じマルチアクセスネットワークでも、NBMAの場合違う可能性がある。

ハイパーネット助手

えぬびーえむえー。
フレームリレーやX.25のノンブロードキャストマルチアクセスネットワークですね。

スーパーインター博士

そうだ。NBMAの場合、マルチアクセスでも直接接続できない場合があるのだ。

[FigureRT19-10:NBMAでのNext_Hopアトリビュート]

ハイパーネット助手

は〜。なんかややこしいですねぇ。

スーパーインター博士

この場合、以下のコマンドでマルチアクセスネットワークでもNext_Hopを変更することを設定しておかなければならない。

  • Router(config-router)#neighbor ip-address next-hop-self
スーパーインター博士

このIPアドレスは、アドバタイズを送るピアのIPアドレスだ。
先ほどの例の場合、RouterB(config-router)#neighbor 200.100.10.1 next-hop-self となる。

ハイパーネット助手

う、う〜ん。なんでこんなややこしいんですか?

スーパーインター博士

それはな、Next_Hopアトリビュートはベストパス選択時に到達性を確認するために使うからだ。まぁ、これについては先で説明しよう。

ハイパーネット助手

あ、はい。

スーパーインター博士

だが、さすがにちょっとややこしいから、まとめてみよう。

  • EBGPのNext_hop
    • 通常はアドバタイズするルータ自身に変更
    • マルチアクセスネットワークならば、変更なし
    • NBMAならばルータ自身に変更
  • IBGPのNext_Hop
    • AS内部ルート…アドバタイズするルータ自身に変更
    • AS外部ルート…変更なし
スーパーインター博士

さてさて、他のアトリビュートは次回にしょう。今回はここまで。

ハイパーネット助手

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

ポリシーベースルーティング
[Policy-Based Routing]
宛先から経路を選択するのではなく、例えばQoSなどによって経路を設定できる。
略称「PBR」。
宛先ベースルーティング
[Destination-Based Routing]
略称「DBR」。
Ciscoルータが使用する
Optional属性ではそのルータのベンダー独自のパスアトリビュートが存在します。一応このページはCCNP向けなので、Ciscoメインで。
ハイパーネット助手ハイパーネット君の今日のポイント
  • BGPはパスアトリビュートによってポリシーベースルーティングが可能である。
  • 必ずUPDATEに含めなければならないアトリビュートは、ORIGIN、AS_Path、Next_Hopである。
  • AS_Pathは経由するAS数。
    • 他のアトリビュートを変更しなければAS_Pathでベストパスが決まる。
    • AS_Pathでルーティングループを防止している。
  • Next_Hopはベストパス選択時に到達性を確認する。

30 Minutes NetWorking No.RT19

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