【ルーティング④】ルーティングが決まる3つの原則

routing-part4

ルータにとってルーティングテーブルってすごく重要なんだね。でも複数の経路がある場合、どういう基準でルーティングは決まるのかしら?

チャーチルさん

ポン先生

うん、実はある基準で比較して経路が決まるんだ。今日は具体的にどうゆう基準なのか勉強していこう。

それなりの規模のネットワークであれば冗長化されており、経路も複数あります。それらはどんな基準で選択されているのでしょうか。冗長構成にしたが思った方にルーティングが向かない、なんて経験をした人もいるのではないでしょうか?今日はルーティング決定される基準・プロセスを一緒に勉強していきましょう。この記事の内容をマスターすればルーティングの最低限の設計もできるようになります。

ルーティングテーブル 3つの原則

ある程度の規模のネットワークであればダイナミックルーティングを利用している事が多く経路が複数あります。複数の経路情報をルータが受信した時にどれを採用するのでしょうか。結論としては下記3つの順番で経路情報を比較し優先度の高い経路が採用されます。

ルーティング決定のプロセス
  • ロンゲストマッチ
  • AD値
  • メトリック

それぞれどんな内容でしょうか。順番に見ていきます。

ロンゲストマッチ

ロンゲストマッチとは転送しようとするパケットの宛先IPアドレスと一番プレフィックス長が一致している経路を採用するというルールの事です。最初は分かりにくいかもしれませんが一度イメージできればさほど難しい話ではありません。

例えばあなたが東京タワーに行くように指示されたとします。あなたは行ったことが無いので少しだけヒントを貰えます。東京タワーの住所は東京都港区芝公園4丁目2−8なのですが、ヒントして“東京都”とだけしか貰えないよりも“東京都港区”まで貰えた方が辿り着ける可能性は高いですよね。“東京都港区芝公園”まで貰えれば更に確率は高まります。つまり、情報量としては“東京都港区芝公園4丁目2−8”により近い方が良いということです。

ロンゲストマッチ

ネットワークの世界でもこれと同じような判断基準です。例えば172.16.17.100のサーバにデータを送りたい時に下記3つのネクストホップ候補がいます。

  • ここに172.16.0.0/16があるよ~と伝えて来たルータA
  • ここに172.16.16.0/20があるよ~と伝えて来たルータB
  • ここに172.16.17.0/24があるよ~と伝えて来たルータC

どの経路にも172.16.17.100は含まれているので間違いでは無いです。しかしルータCの/24に比べると/16や/20は範囲が広いです。より確実にパケットを転送したいのであれば、サーバのIPアドレス(172.16.17.100/32)をよりピンポイントで知っているルータの方が信用できるのです。つまりこの場合はルータCの経路が採用されます。

このようにロンゲストマッチでは宛先IPアドレスにプレフィックス長が一番一致している経路が採用されます。

AD値

AD(アドミニストレーティブディスタンス)値とはルーティングプロトコル毎の信頼度の事です。言い換えると経路の情報源毎に信用できるかどうかのレベルに差がある、という事です。

例えば、今あなたには①医者、②医学部の友人、③ネット掲示板の人、の3人の情報源があるとします。3人とも『野菜は体に良い』と主張しており内容はほぼ同じです。この内誰の主張を信用しますか?

順当に行けば①→②→③の順番でしょうか。ネット掲示板の人よりはある程度勉強している医学部友人の方が信用できまし、それよりも医者の方がもっと信用はできるでしょう。例え主張内容がほぼ同じであったとしても耳を傾けるべきは①です。

AD値

ネットワークも同じです。目の前の3台のルータ全てが172.16.17.0/24を広報してきており、ロンゲストマッチ的には同じ場合、より信頼度の高い情報源を採用します。この信頼度を数値化したものがAD値です。AD値はその経路の情報源(どうやってその経路を生成したか)によって決まっています。

Ciscoの場合、デフォルトでは以下のようになっています。

■AD値(デフォルト)
ルートの情報源デフォルトのAD値
自身のインターフェイス0
スタティック ルート1
EIGRPサマリー ルート5
BGP20
内部EIGRP90
IGRP100
OSPF110
IS-IS115
RIP120
EGP140
ODR160
外部EIGRP170
IBGP200
不明(ルーティング テーブル登録なし)255

AD値は数字が低いほど信頼度が高いです。つまり一番上の“自身のインターフェイス”が一番信頼できるということです。これは『ルータ自身のポートに設定されているセグメントが一番信用できる』ということなので感覚的にも正しいでしょう。

以降はルーティングプロトコルの話です。ダイナミックルーティングの中で色々プロトコルの種類がありますが、プロトコルによってもAD値が異なります。例えばRIP(AD値120)よりもOSPF(AD値110)の方が信頼できる、といった具合です。

メトリック

ロンゲストマッチ、AD値で比較しても同じ場合、各経路はメトリックという指標で比較されます。ただしルーティングプロトコル毎にメトリックは異なります。これは数字の大小に差があるという事ではなく項目そのものが違います。例えばRIPの場合はホップ数、OSPFの場合はコスト値といった具合です。

■ルーティングプロトコル毎のメトリック
ルーティングプロトコルメトリック
RIPホップ数
(ルータを超えた数)
OSPFコスト値
BGPパスアトリビュート値
(属性値)

メトリックを比較している時点で、『各経路のAD値は同じ=同じルーティングプロトコル同士での比較』となります。逆に言うと同じルーティングプロトコル同士なのでメトリックの比較もできるという事ですね。また、RIPにしてもOSPFにしてもメトリックは低い方が優先されます。

例えばRIPとOSPFはそもそもメトリックの項目が違うから比較ができないって事だね。

チャーチルさん

注意事項

ルーティングテーブル上での経路選択/ルーティングテーブルへの経路採用

※この内容は主にCisco ISRシリーズを想定した内容です。他の機種では表示が異なるので注意してください。

前述の通り、ルーティングは①ロンゲストマッチ→②AD値→③メトリックの順番でチェックされますがルーティングテーブルに載るかどうかの話で言うと①と②③は別の話です。

ここは勘違いしやすいのですが、例えば192.168.0.0/16という経路と192.168.0.0/24という経路を受信した場合、両方ともルーティングテーブルには載ります。実際にパケットを転送する時に例えば宛先IPアドレスが192.168.0.100だった場合はもちろん192.168.0.0/24の情報が採用されます。

ロンゲストマッチとAD値・メトリック

一方、②AD値/③メトリックに関しては比較で敗れたらそもそもルーティングテーブルには載りません。なのでパケット転送時点では候補にすらなりません。ルーティングテーブルに載るかどうかの話と、ルーティングテーブル上の複数の候補から選択する話は別なのでこの違いは理解しておきましょう。

ルーティングテーブルが無い場合パケットは破棄

ルータがパケットを受信した時、ネクストホップを決めるためにルーティングテーブルを参照しますが、そもそもルーティングテーブル上に該当経路がない場合そのパケットは破棄されます。

メトリックが同じ場合はロードバランス

ルーティングは①ロンゲストマッチ→②AD値→③メトリックの順番で比較されますが、メトリックまで含め全く同じだった場合はロードバランスされます。つまり2経路だったら半々にトラフィックが分散し、4経路だったら1/4ずつ分散します。

ルーティングでのロードバランス

これはトラフィック量が多いネットワークで負荷分散させるために、あえてそのような設計にすることで実現できます。

ポン先生

もしくは設計漏れがあり、間違ってメトリックを同じにしてしまったケースだね^^;

まとめ

ポイント
  • ルーティングが決まる3つの原則

    • ロンゲストマッチ:宛先IPと経路のプレフィックス長を比較

    • AD値:経路情報源の信頼度を比較

    • メトリック:各プロトコルの指標を比較

  • 違いに気を付けよう
    • ロンゲストマッチはルーティングテーブル内から最良経路を探す話

    • AD値/メトリックはルーティングテーブルに載せるかどうかを決める話
      ※ただし機種によって表示が異なる場合有り

  • ルーティングテーブルになければパケットは破棄

  • メトリックが同じ場合はロードバランス(分散)

ルータが持っている複数の経路情報からどのような基準でどの経路が選択されるのか、また自分の設計通りに動くかどうか、まさにネットワークエンジニアの醍醐味の部分です。ルーティングはしっかり積み上げて行けば理論と実機の動作はかなり一致します。それ故に道中で間違えるとそれ以降は崩れますが。。。一方でこの記事の内容を理解するだけも大枠部分はだいぶ整理されるはずです。ルータ内のプロセスを理解すれば設計もトラブルシューティングも見通しが付くので是非マスターしてください!