■ ポリシーベースルーティング
ネット君。ポリシーベースルーティングという言葉を覚えているかね。
はて、聞き覚えがあるような、ないような。
え〜っと……。
…。
う〜……。
まぁ、思ったとおりの展開なわけだが。
BGPのところで説明したな。
あ〜あ〜。そうそう、そうですよ。
え〜っと、宛先ではなく、なんらかのポリシーによってルーティングするっていう方式でしたっけ。
うむ。つまり通常のルーティングプロセス外での経路の決定の方式なわけだ。
通常のルーティングプロセス外?
メトリックを基準としたルーティングテーブルによって導き出される経路だな。
BGPでは、パスアトリビュートを使うことによって、通常のAS_Pathアトリビュート以外のアトリビュートで経路を設定できた。
Weightとか、Local_Preferenceとかでしたっけ。
うむ。BGPは多くのパスアトリビュートを持つことにより、ポリシーベースルーティングを実行できる。
では、パスアトリビュートのような柔軟な評価値を持たないIGPはどうするか。
なんでしたっけ。以前、それについて話していたような。
ルートなんたらとか…。
そう、それが今回説明するルートマップだ。
るーとまっぷ…。ルート地図?
■ ポリシーベースルーティングの意義
さて、ルートマップを説明する前に、ポリシーベースルーティングについてもう少し説明しよう。
Ciscoルータは、受信したパケットの以下の値を使用して、経路を選択することができる。
- ソースID(IPアドレス)
- アプリケーション(ポート番号)
- 使用プロトコル(IP・TCP/UDP・ICMPなど)
- パケットサイズ
送信元のIPアドレス、ポート番号、プロトコル、パケットサイズですか。
そうだ。これらを使ってポリシーベースルーティングを行うわけだが、その意義は以下のようなものだ。
- マルチホーミング
- QoS
- コストの削減
- ロードシェアリング
1のマルチホーミングって、アレですか。複数のISPと接続するって奴ですよね。
うむ。通過するプロバイダを選択できるっていうことだな。
BGPでもAS間のマルチホーミングというのをやっていたはずだ。
BSCI第22回ですね。
2はQoS。つまりパケットの中身による優先度をつけることによって、優先的にもしくは優先度を低くして後回しにルーティングをする、という方式だ。
う? 優先度を見るんですか?
違う。ポリシーによって優先度をつけるのだ。
このポリシーによってつけられた優先度にしたがい、先のルータではキューイングを行う。
ここでは優先度をつけるんですね。優先度によるルーティングを行うわけではなくて。
そういうことだ。
3つ目は、WANリンクのコストの違いがあるが、それを使い分ける、という話だな。
ははぁ。例えば大きいサイズのものは高くてもいいから高速回線、小さなサイズのものは低速な低コスト回線とか?
うむ、なかなかいい感じだ。
最後は、ルーティングプロトコルが持つ自動的なロードシェアリングではなく、ポリシーによってシェアリングする、ということだ。
OSPFやEIGRPは等コストロードバランシングができましたっけ。
EIGRPは不等コストも可能だがな。
まぁ、ともかくだ。ポリシーベースの方法と意義はわかったかな?
はぁ、なんとなく。
■ ルートマップ
さて、Ciscoでは先ほども言ったとおりルートマップというものを使ってポリシーベースルーティングを行う。
これがな、結構複雑なのだよ。
ほほぅ、複雑。IOSコマンドって全般的に複雑なような気がしますけど?
そうか? …まぁ、そうかもしれん。ネット君ならなおさらだ。
ルートマップのIOSコマンドを説明する前に、このマップがどのように構成されているかを説明しよう。こうだ。
行番号 | 条件 | 結果 |
---|---|---|
10 | 条件A | aを実行 |
20 | 条件Bかつ条件C | bを実行 |
30 | 条件Dまたは条件E | dを実行 |
[TableRT34-01:ルートマップの構成]
行番号?
うむ、ルートマップは複数の行で構成することも可能だ。
その場合、小さい行番号から確認され、一致した時点で実行される。
あ〜、なんかアクセスリストっぽいですね。書いた順番に判断されるって感じですか?
まぁ、そうだが。あとでより前に設定も出来る点が違うな。
例えば、「行番号15」にあらたな行を作成することも可能だ。
なるほど。なんかBASICみたいですよね。
そうだな。そう言われればそうかもしれん。
さて、その行にはMatchとSetを使って条件とその結果を入力する。簡単に書くと、こうだ。
- Router(config)#route-map test permit 10
- Router(config-route-map)#match A
- Router(config-route-map)#set a
- Router(config-route-map)#exit
コマンドは後で説明するとして、このような形で条件と結果を入力していくってことだな。
route-mapコマンドの最後の数字が行番号になる。
10行目、条件A、結果a、ですか。
そういうことだ。
ややこしいのは、条件が複数あった場合だな。
- Router(config)#route-map test permit 20
- Router(config-route-map)#match B
- Router(config-route-map)#match C
- Router(config-route-map)#set b
- Router(config-route-map)#exit
このような場合は、AND条件。
matchを続けて書いた場合ですね。BかつCって奴ですね。
- Router(config)#route-map test permit 30
- Router(config-route-map)#match D E
- Router(config-route-map)#set d
- Router(config-route-map)#exit
こっちはOR条件。
1つのmatchの中に並べて書いた場合ですか。DまたはEですね。
そうだ。間違えやすいので気をつけるように。
了解です。
■ ルートマップコマンド
さて、ではIOSコマンドを説明しよう。
まず、ルートマップは以下の手順で作成される。
- ルートマップコマンドで、ルートマップ設定モードへ
- MatchとSetで条件と結果を設定
- インタフェース設定モードで、受信インタフェースへ設定
という順番だな。
まず、ルートマップコマンド。
- Router(config)#route-map map-tag [permit | deny ] number
map-tagはマップの名前。permitかdenyで実行される結果、numberは行番号だ。
さて、実行後ルートマップ設定モードに入るのだが、まず、Matchコマンドは2種類ある。
2種類?
条件になるのは、さっきの話だと、送信元のIPアドレス、ポート番号、プロトコル、パケットサイズの4つじゃなかったでしたっけ?
うむ。だが、送信元のIPアドレス、ポート番号、プロトコルの指定は、IOSコマンドでは便利なものがあるだろう? ほら。
便利なもの?
ヒントをやろう。標準は送信元IPアドレス、拡張は、IPアドレス、ポート、プロトコル…。
標準と拡張…。
アクセスリスト!!
そうだ。送信元のIPアドレス、ポート番号、プロトコルを条件にするMatchコマンドはこちら。
- Router(config-route-map)#match ip address [accesslist-number]
アクセスリスト番号は複数並べてもよい。
もう一方、サイズを使ったMatchコマンドはこっち。
- Router(config-route-map)#match length min max
minとmaxってパケットの最小サイズと最大サイズですか?
そうだ。その範囲のサイズのパケットが当てはまることになる。
match ip addressか、match lengthですね。
うむ。一方、setコマンドは6種類ある。
6種類も!!
どう使い分けるんですか?
うむ、一覧表を作成してみよう。
コマンド | 意味 | 条件 |
---|---|---|
set ip next-hop | パケットを指定したルータへ転送する | すべてのパケット |
set interface | パケットが通過してよいインタフェースを指定 | ルーティングテーブルに宛先ルートがある |
set ip default next-hop | デフォルトの次ルータを指定 | ルーティングテーブルに宛先ルートがない |
set default interface | デフォルトのインタフェースを指定 | ルーティングテーブルに宛先ルートがない |
set ip tos | TOSフィールド内のCoSを設定する | --- |
set ip precedence | TOSフィールド内のQoSを設定する | --- |
[TableRT34-02:setコマンド]
うぅぅ? next-hopとdefault next-hop? interfaceとdefault interface?
宛先ルートがあるとない?
うむ、宛先不明やデフォルトルートを使用する場合、それは「宛先ルートがルーティングテーブルにない(明示されていない)」わけだ。その場合は、defaultのついたsetコマンドが有効になる。
うぅ〜ん。
つまりだ、通常はデフォルトルートを使用するような場合に、この2つのsetコマンドを使えばインタフェースやネクストホップを変更できる、というわけだ。適切な例かどうかわからんが、こういうのはどうだ。
[FigureRT34-01:ip default next-hop]
もしルータに10.0.0.0へのルートがなければ、デフォルトルートを使う。
この場合、set ip default next-hopが指定されているので、192.168.0.1からのパケットは172.16.1.1を経由する。
もし10.0.0.0へのルートがあれば?
ルートがあった場合、defaultつきのコマンドは無視される。
う〜ん。なんとなくわかったような。
そういえば、setコマンドの下の2つ、TOSフィールドを変えるのはなんですか?
CoSを変える、つまりサービスクラス(信頼性・スループット・遅延など)を変えるものと。
ip precedenceを変える、キューイングを変えるものと2種類の設定が出来る。
簡単に言うと、パケットの優先値の変更って奴ですよね。
まぁ、確かにそうなんだが。そうあっさり言われるとなんかな。
さて、作成したルートマップはインタフェースに設定される。
- Router(config-if)#ip policy route-map map-tag
ポイントは設定したインタフェースで受信したパケットに対し有効になるというところだな。
そのルータが受け取ったパケット、ではないんですね。
そういうことだ。
なるほど。
さて、今回はこれでお終いにしよう。
次回は…。
次回は?
まだ決めてない。
なんですか、それは。
まぁ、そういうこともある、ということだ。
あまり深く考えるな。得意だろ?
うぅん。胸を張って否定できない。
というわけでまた次回。
了解です。
30分間ネットワーキングでした〜♪
- QoS
-
[Quarity of Service]
サービス品質。
- キューイング
-
[Queuing]
優先度により、ルータ内の処理の順番が変更される。
詳しくはBCRANで。
- BASIC
-
[Beginner's All-purpose Symbolic Instruction Code]
初心者向けのプログラム言語。教育用によく使われる。
インタプリタ言語の代表格。
- COS
-
[Class of Service]
IPヘッダのTOSフィールド先頭5ビットの値のこと。
使用する信頼性・スループット・遅延・コストなどを設定できる。
- IP Precedence
-
IPヘッダのTOSフィールド後ろ3ビットの値のこと。
キューイングで使用する。
- ハイパーネット君の今日のポイント
-
- 宛先ベースとポリシーベースのルーティングがある。
- ポリシーベースルーティングにはルートマップを使う。
- 送信元IPアドレス、プロトコル、ポート番号、パケットサイズを基準としてルーティングする。
- ルートマップコマンドは、条件の設定のmatch、結果の設定のsetを組み合わせて使う。
- ルートマッは、インタフェースに設定する。