覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

ルーティングプロトコル - IGP

「インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門 第2版」を読んでおります。
まだ読んでる途中ですが、めちゃくちゃいい本だと思います。とにかくわかり易いです。
普段プログラミングがメインでインフラ(ネットワーク)と縁遠い人も読んでみる価値あると思います。


この本でなくてもネット上に情報はあると思いますが、
本書籍に書かれているルーティングプロトコルの IGP(Interior Gateway Protocol, 内部ゲートウェイプロトコル) について記録しておきたくなったので、ここにメモしておきます。


ルーティングテーブル

ネットワークのルーティングを司っているのがルーティングテーブルで、このルーティングテーブルをどうやって作るのかがネットワーク層のポイントとなる。
ルーティングテーブルの作り方は大きく分けて 静的ルーティング動的ルーティング の二つがある。

  • 静的ルーティング
    • 手動でルーティングテーブルを作る方法
    • 一つ一つ宛先ネットワークとネクストホップを設定する
    • 管理もしやすいので、小さなネットワーク環境のルーティングに適している。
  • 動的ルーティング
    • 隣接するルータ同士で自分の持っているルート情報を交換して、自動でルーティングテーブルを作る方法
    • ルート情報を交換するプロトコルを ルーティングプロトコル という
    • 大きなネットワーク環境や構成が変わりやすいネットワーク環境であれば動的ルーティングを使用した方がよい
    • 宛先のどこかに障害が発生した場合も、動的に迂回ルートを探してくれるため耐障害性も向上する


2種類のルーティングプロトコル

ルーティングプロトコルはその制御範囲によって以下2種類に分けられる

  • IGP(Interior Gateway Protocol, 内部ゲートウェイプロトコル)
  • EGP(Exterior Gateway Protocol, 外部ゲートウェイプロトコル)

この2つを分ける概念が AS(Autonomous System, 自律システム)
ASは一つのポリシーに基づいて管理されているネットワークの集まりのことで、例えばAS=組織(ISP, 企業, 研究機関, 拠点) のような感じでとらえると良い。
AS内を制御するルーティングプロトコルが IGP, ASとASの間を制御するルーティングプロトコルが EGP。


IGP

色々なIGPが存在するが、現在のネットワーク環境で使用されているプロトコルは RIPv2(Routing Information Protocol version2), OSPF(Open Shortest Path Fast), EIGRP(Enhanced Interior Gateway Routing) のどれかと考えて良い。

これらを説明する上でのポイントが ルーティングアルゴリズムメトリック の二つ。

  • ルーティングアルゴリズム
    • どうやってルーティングテーブルを作るかのルール
    • ルーティングアルゴリズムの違いが収束時間(ネットワーク上のルータがすべてのルートを認識している状態(収束状態)になるまでにかかる時間)や適用規模に直結する
    • IGPのルーティングアルゴリズムは ディスタンスベクタ型リンクステート型 のどちらか
      • ディスタンスベクタ型は、距離(ディスタンス)と方向(ベクタ)にもどついてルートを計算する
        • ここでいう距離とは宛先に行くまでに経由するルータの数(ホップ数)を表し、方向は出力インターフェースを表す
      • リンクステート型は、リンクの状態(ステート)に基づいて最適ルートを計算する
        • 各ルータが自分のリンク(インターフェース)の状態や帯域、IPアドレス等色々な情報を交換してあってデータベースを作り、それをもとにルーティングテーブルを作る
  • メトリック
    • 宛先ネットワークまでの距離を表している
      • ここでいう距離とは物理的な距離ではなく、ネットワークにおける論理的な距離


RIPv2 / OSPF / EIGRP

先にも書いた通り、現在のネットワーク環境で使用されているIGPのルーティングプロトコルは、RIPv2, OSPF, EIGRP のどれか。

RIPv2 OSPF EIGRP
ルーティングアルゴリズム ディスタンスベクタ型 リンクステート型 ディスタンスベクタ型
(ハイブリッド型)
メトリック ホップ数 コスト 帯域幅+遅延
更新間隔 定期的 変更があったとき 変更があったとき
更新に使用する
マルチキャストアドレス
224.0.0.9 224.0.0.5 (ALL OSPF ルータ)
224.0.0.6 (ALL DR ルータ)
224.0.0.10
適用規模 小規模 中規模〜大規模 中規模〜大規模

RIPv2

  • 最近ではあまり見られないが、古い環境にたまに残っている
    • そこからOSPFやEIGRPに移行することがある
    • 新しく作るネットワークでこのプロトコルを使用する必要性は無い
  • RIPv2はルーティングテーブルそのものを定期的にやり取りしあうことで、ルーティングテーブルを作る
  • 動きはとても分かりやすいが、ルーティングテーブルが大きくなればなるほど余計な帯域を消費し、収束にも時間がかかるため大規模なネットワーク環境には不向き
  • メトリックにはホップ数を使用している
    • ルータを経由すればするほど遠いという扱いになる
    • 途中の経路の帯域が小さくても、ホップ数が小さいルートを最適ルートとしてしまうため難がある


OSPF

  • RFCで標準化されているルーティングプロトコルということもあって、マルチベンダのネットワーク環境ではOSPFを使用することが多い
  • OSPFは各ルータがリンク状態や帯域、IPアドレス、ネットワークなど色々な情報を交換しあって「リンクステートデータベース(LSDB)」を作る
    • そこから最適なルート情報を計算し、ルーティングテーブルを作る
  • (RIPv2は定期的にルーティングテーブルを送りあっているのに対して、)OSFPは変更があったときにだけ更新がかかる
    • 通常時は Helloパケットという小さなパケットを送信して、相手が正常に動作しているかどうかだけを確認しているため、必要以上に帯域を圧迫することがない
  • LSDBが大きくなりすぎないように、ネットワークをエリアというものに分けて、同じエリアのルーだだけでLSDBを共有する
  • メトリックに使用するコストは、デフォルトで「100 / 帯域幅(Mbps)」に当てはめて整数値として算出され、ルータを超えるたびに出力インターフェースで加算される
    • したがって、ルートの帯域が大きければ大きいほど最短ルートになりやすい
    • 学習したコストが全く同じだった場合は、コストが同じルートを全て使用してパケットを運び、ルートの負荷分散を行う
      • このような動作を ECMP(Equal Cost Multi Path) という。ECMPは耐障害性の向上だけでなく、帯域の拡張も兼ねることができ、多くのネットワーク環境で使用されている
    • コスト算出の式は、100Mbps以上のインターフェースで同じ値になってしまうため、最近は分子の値を 100 よりも大きくするのが一般的


EIGRP

  • Cisco独自のルーティングプロトコル
    • そのため、CiscoルータやCiscoのCatalystスイッチで構成されているネットワーク環境でしか使用できない。使用できる環境であればかなりの力を発揮する
  • 最初に自分の持つルート情報を交換してそれぞれでトポロジーテーブルを作り、そこから最適なルート情報だけを抽出し、ルーティングテーブルを作る
    • この部分は、RIPv2に似ているが、EIGRPは変更があった時だけ更新がかかる
    • また、通常時はHelloパケットという小さなパケットを送信して、相手が正常に動作しているかを判断する。この部分はOFPFに似ている
  • メトリックはデフォルトで「帯域幅」と「遅延」を使用する
    • 帯域幅は「10000 / 最小帯域幅(Mbps)」の式に当てはめて算出する。宛先ネットワークまでのルートの中で最も小さい値を採用して計算する
    • 遅延は「マイクロ秒 / 10」の式に当てはめて算出する。ルータを超えるごとに出力インターフェース分を加算する
  • 「帯域幅」と「遅延」を足して256をかけたものがEIGRPのメトリックとなる
  • EIGRPもデフォルトの動作はECMP
    • メトリックが全く同じであれば、そのルートを全て使用してパケットを運び負荷分散する



関連エントリ