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