ルーティングテーブルとは

ルーティングテーブルとは、ルータが認識しているネットワークの情報をまとめているデータベースです。あるネットワークへIPパケットを転送するためにどのような経路であるかが登録されています。ルーティングテーブルに登録されているネットワークの情報をルート情報や経路情報と呼びます。

ルーティングテーブルのポイント
  • ルーティングテーブルでルータはネットワーク構成を認識します。
  • ルーティングテーブルはIPパケットの転送経路も表していて、ネットワーク構成が変わるとルーティングテーブルも更新しなければいけません。

ルート情報の内容

ルーティングテーブル上のルート情報にどのようなことが記載されているかは、ルータの製品によって若干異なります。企業向けのルータでよく利用されているCisco Systems社のルータでは、ルート情報として次のような内容が含まれています。

  • ルート情報の情報源
    どのようにしてルータがルート情報をルーティングテーブルに登録したのかを示しています。ルート情報の情報源として、大きく次の3種類あります。
    • 直接接続
    • スタティックルート
    • ルーティングプロトコル
  • ネットワークアドレス/サブネットマスク
    ルーティングするあて先のネットワークです。IPパケットの宛先IPアドレスをキーにして、ルート情報のネットワークアドレス/サブネットマスクを検索します。
  • メトリック
    メトリックは、ルータから目的のネットワークまでの距離を数値化したものです。距離といっても物理的な距離ではなく、ネットワーク的な距離です。
    メトリックの情報は、ルーティングプロトコルによって学習したルート情報の中にあります。ルーティングプロトコルによって、どのような情報からメトリックを算出するかという計算方法が異なりますが、最終的には一つの数値になります。距離は短い方がよりよいルートと考えられるので、メトリック最小のルートが最適ルートです。 メトリックは「コスト」と表現することもよくあります。
    ルーティングプロトコルごとのメトリックとして考えている要素は以下のようになります。
ルーティングプロトコル メトリックの要素
RIP 経由するルータ台数(ホップ数)
OSPF 累積コスト(ネットワークの通信速度)
EIGRP 帯域幅、遅延、負荷、信頼性、MTUから計算される値
  • アドミニストレイティブディスタンス(Cisco)
    メトリックはルーティングプロトコルごとに計測している目的のネットワークまでの距離を表しています。ですが、ルーティングプロトコルごとにメトリックとしてどのような要素を考慮しているかが異なります。ルーティングプロトコルごとに異なるメトリックを比較できるように調節するパラメータがアドミニストレイティブディスタンスです。つまり、アドミニストレイティブディスタンスとメトリックによって、ルータは目的のネットワークまでの距離を認識します。
  • ネクストホップアドレス
    「ホップ」とはルータを指します。目的のネットワークへパケットを送り届けるために、次に転送すべきルータのIPアドレスです。ネクストホップアドレスは、原則としてルータと同じネットワーク内の他のルータのIPアドレスです。
  • 出力インタフェース
    目的のネットワークへパケットを転送するときに、パケットを出力するインタフェースの情報です。パケットを出力するときには、出力インタフェースのプロトコルのヘッダでカプセル化します。出力インタフェースがイーサネットであれば、IPパケットをイーサネットヘッダでカプセル化します。また、ネクストホップアドレスと出力インタフェースを合わせて、目的のネットワークまでの方向と考えることができます。
  • 経過時間
    ルーティングプロトコルで学習したルート情報について、ルーティングテーブルに登録されてから経過した時間が載せられます。経過時間が長ければ長いほど、安定したルート情報です。

以下は、Ciscoルータのルーティングテーブルの例です。


ルーティングテーブルの例

ルータが認識しているネットワーク構成

ルーティングテーブルは、ルータが認識しているネットワーク構成ということもできます。例に挙げたルーティングテーブルを持つルータ R1がどんな風にネットワーク構成を認識しているかを見ていきます。

ルーティングテーブルの中で最も基本的なルート情報は、ルータに直接接続されているネットワークのルート情報です。Ciscoルータでは、先頭に「C」と表示されているのが直接接続されているネットワークのルート情報です。例のルータは、以下の2つのネットワークを直接接続していることがルーティングテーブルから読み取れます。

  • 10.1.1.0/24 FastEthernet0/0
  • 10.1.2.0/24 Serial0/1
「FastEthernet0/0」や「Serial0/1」はルータのインタフェースを表しています。また、サブネットマスクは「10.0.0.0/24 is subnetted, 3 subnets」という部分から「/24」となっています。この部分は、「10.0.0.0というネットワークアドレスを/24のサブネットマスクで3つのサブネットに分割している」という意味です。

直接接続のルート情報

次に先頭に「S」と表示されているルート情報が以下の3つあります。

  • 172.16.0.0/16
  • 172.17.0.0/16
  • 192.168.1.0/24

これは、スタティックルートの設定によってルーティングテーブルに登録されたルート情報であることを表しています。3つのルート情報で「via 10.1.2.2」と共通しています。この部分はネクストホップアドレスで次に転送するべき隣のルータのIPアドレスです。

10.1.2.0/24のネットワーク上には10.1.2.2というIPアドレスのルータが存在していて、そのルータの向こう側に3つのネットワークがあると認識しています。

スタティックルートのルート情報

なお、R1が認識しているのは3つのネットワークが10.1.2.2のIPアドレスを持つルータの向う側にあるということだけです。10.1.2.2のルータに直接接続されているのではなく、さらに他のルータを経由しなければいけないかもしれません。

そして、もう1つ「R」と表示されている10.1.3.0/24のネットワークがあります。「R」はRIPというルーティングプロトコルによってルーティングテーブルに登録されたルート情報であることを意味しています。ネクストホップは「10.1.2.2」で、このIPアドレスのルータの先に10.1.3.0/24のネットワークがあります。RIPのようなルーティングプロトコルで登録されたルート情報には、距離が載せられています。「[120/1]」の部分が距離です。このルーティングテーブルを持つR1から[120/1]だけ離れたところに10.1.3.0/24のネットワークがあることがわかります。RIPの場合、経由するルータ台数を距離とみなします。つまり、10.1.3.0/24は10.1.2.2のルータに直接接続されているということがわかります。

RIPのルート情報

スタティックルートのルート情報には「[1/0]」という距離の情報がありますが、スタティックルートの場合は、基本的に距離は意味がありません。

以上のように、ルーティングテーブルによって、そのルータがどのようなネットワーク構成であるかを認識しています。ただし、ネットワーク全体の詳細な構成ではなく、自身を中心としてネクストホップ(隣のルータ)の向こう側にどんなネットワークが存在するかというレベルです。IPによるエンドツーエンドの通信は、同じネットワーク上の転送を繰り返していくわけなので、隣のルータまで転送できればよいです。隣のルータの先のネットワーク構成の詳細まで知っておく必要はありません。

ルーティングテーブル上で認識できないネットワーク宛てのIPパケットはすべて破棄します。そのため、ルータがきちんとルーティングするためにはルーティングテーブルに必要なルート情報をすべてもれなく登録しておかなければいけません。これは1台のルータだけではなく、ネットワーク上のすべてのルータです。そして、ネットワーク上のすべてのルータのルーティングテーブルに必要なルート情報が登録されている状態を指して「コンバージェンス(収束)」と呼びます。

パケットの転送経路

ルーティングテーブルは、ルータが認識しているネットワーク構成であると同時にパケットの転送経路を表してもいます。ルーティングテーブルには、基本的に宛先ネットワークへの最適ルートのみが登録されます。宛先ネットワークまでのルートが冗長化されている場合、迂回ルートはルーティングテーブルには載せられていません。各ルータのルーティングテーブルをたどっていくことで、パケットが転送される経路がわかります。

パケットの転送経路

利用するルーティングプロトコルによっては、迂回ルートもルーティングテーブルに載せられることがあります。

そして、ネットワークの障害などでネットワーク構成が変化した場合は、パケットの転送経路となるルーティングテーブルを更新しなければいけません。ルーティングテーブルの更新もコンバージェンスの一種です。ルーティングテーブルが適切に更新されなければ、パケットのルーティングが正常にできずに通信できなくなってしまいます。

ルーティングテーブルの更新

ルーティングプロトコルを利用すると、ネットワークの障害発生時のルーティングテーブルの更新を自動的に行うことができます。