ルーティングプロセスとは

ルーティングプロセスとは、ルーティングプロトコルの仕様に基づいて、具体的な動作をするようにルータ上でプログラムとして実行しているものです。ルーティングプロセスにより、各ルーティングプロトコルの動作に基づいて、ルート情報を収集して最適ルートを決定した上でルーティングテーブルに登録します。

ひとまず「ルーティングプロトコル」と言っていますが、スタティックルートや直接接続のルーティングプロセスもあります。

たとえば、ルータがRIPパケットを受信すると、RIPのルーティングプロセスで処理します。RIPパケットの中に含まれているルート情報をRIPデータベースに登録して、最適ルートを判断して、ルーティングテーブルにRIPルートとして登録します。

ルーティングプロセスの概要
図 ルーティングプロセスの概要

ルーティングプロセスを意識することで、ルート情報のフィルタや再配送の仕組みについての理解が深まります。また、MPLS-VPNの仕組みをきちんと理解するためにも、ルーティングプロセスを意識することが重要です。

ルーティングプロセスの種類

ルーティングプロセスはRIPやOSPFなどのルーティングプロトコルのものだけではありません。直接接続のルーティングプロセス(connected)やスタティックルートのルーティングプロセス(static)も存在しています。

Ciscoルータでの主なルーティングプロセスとしては、以下のものがあります。

  • connected
  • static
  • rip
  • ospf
  • eigrp

connectedおよびstaticのルーティングプロセスは、自動的に有効になっています。一方、rip以下のルーティングプロトコルのルーティングプロセスは、設定で明示的に有効化します。そのためのコマンドはグローバルコンフィグレーションモードのrouter <routing-protocol>コマンドです。RIPのルーティングプロセスを有効にするには、グローバルコンフィグレーションモードでrouter ripと入力することになります。ルーティングプロトコルによっては、複数のルーティングプロセスを起動することができます。たとえば、OSPFやEIGRPは複数のルーティングプロセスを起動できます。

ルーティングプロセスの動作の概要

各ルーティングプロセスの動作の概要について解説します。

connected

connectedのルーティングプロセスは直接接続のルート情報を収集して、ルーティングテーブルに登録します。インタフェースにIPアドレスを設定して、そのインタフェースがup/upになれば、connectedのルーティングプロセスに登録されます。そして、ルーティングテーブルに直接接続としてコード「C」でルート情報が登録されることになります。直接接続のルート情報は、ルータ自身に直接接続されているので距離は「0」、すなわち、アドミニストレイティブディスタンス「0」です。

簡単な例を考えます。ルータのFa0/0のインタフェースにIPアドレス192.168.1.254/24を設定して、インタフェースをup/upにします。すると、connectedのルーティングプロセスとFa0/0が関連付けられて、192.168.1.0/24のルート情報がルーティングテーブルにdirectly connectedとして登録されます。

Router(config)#interface FastEthernet0/0
Router(config-if)#ip address 192.168.1.254 255.255.255.0
Router(config-if)#no shutdown

ルーティングプロセス connected
図 ルーティングプロセス connected

static

staticのルーティングプロセスは、スタティックルートで設定されたルート情報を収集して、ルーティングテーブルに登録します。つまり、以下のスタティックルートの設定によって登録されたルート情報が対象です。

(config)#ip route <network> <subnetmask> <next-hop>

スタティックルートのルート情報は、ネクストホップアドレスに到達できることが前提です。また、スタティックルートのドミニストレイティブディスタンスのデフォルトは「1」です。

staticのルーティングプロセスの簡単な例です。グローバルコンフィグレーションモードで次のコマンドを入力します。

(config)#ip route 172.16.0.0 255.255.0.0 192.168.1.1

ネクストホップ「192.168.1.1」に到達可能であれば、スタティックルートは有効でルーティングテーブルにコード「S」で登録されるようになります。

ルーティングプロセス static
図 ルーティングプロセス static

rip

ripのルーティングプロセスはRIPのルート情報を収集して、ルーティングテーブルに登録します。RIPの設定は、ripルーティングプロセスを有効化して、さらにルータのインタフェースでも有効化します。インタフェースでRIPを有効化するということは、ripルーティングプロセスとインタフェースを関連付けるイメージで、そのインタフェースでRIPパケットを送受信できるようになります。

さらに、関連付けたインタフェースのネットワークアドレスをRIPルートとしてRIPデータベースに登録します。そして、RIPパケットを受信すると、RIPパケットに含まれるルート情報をRIPデータベースに登録します。RIPデータベース上でメトリックに基づいて最適ルートを決定して、最適ルートをルーティングテーブルに登録します。このとき、アドミニストレイティブディスタンスとしては、デフォルトで120が与えられます。ripのルーティングプロセスは、以下のコマンドで有効化します。

(config)#router rip
(config-router)#network <network>

router ripでripのルーティングプロセスを有効化して、networkコマンドによって、インタフェースで有効化します。

ripのルーティングプロセスの簡単な例を考えます。ルータのFa0/0のIPアドレスが192.168.1.254/24で次のような設定を行っている例です。

(config)#router rip
(config-router)#network 192.168.1.0

「network 192.168.1.0」の設定は、「IPアドレス192.168.1.x(xは任意)のインタフェースでRIPを有効にする」という意味です。この設定によって、ripのルーティングプロセスとFa0/0が関連付けられます。すると、Fa0/0のネットワークアドレス192.168.1.0/24がRIPデータベースに登録されます。また、Fa0/0ではRIPパケットを送受信できるようになります。

Fa0/0でRIPパケットを受信すると、ripのルーティングプロセスで扱います。受信したRIPパケットの中に172.16.0.0/16のルート情報が含まれていると、それをRIPデータベースに登録します。

RIPデータベースに含まれている192.168.1.0/24と172.16.0.0/16をRIPルートとしてルーティングテーブルに登録します。このとき、アドミニストレイティブディスタンスはデフォルトで120です。192.168.1.0/24と172.16.0.0/16という2つのRIPルートがあるのですが、192.168.1.0/24はconnectedのルート情報のほうが優先されます。そのため、RIPルートとしては172.16.0.0/16だけがルーティングテーブルに登録されます。

ルーティングプロセス rip
図 ルーティングプロセス rip

ospf

ospfのルーティングプロセスはOSPFのルート情報を収集してルーティングテーブルに登録します。OSPFの設定の考え方もRIPと同様です。まず、ルータ全体でospfのルーティングプロセスを有効化して、さらにインタフェースで有効化します。

インタフェースでOSPFを有効化するということは、ospfルーティングプロセスとインタフェースを関連付けるイメージで、そのインタフェースでOSPFパケットを送受信できるようになります。そして、有効にしたインタフェースの詳細な情報を、LSDBのLSAに登録します。

OSPFパケットを受信すると、ospfルーティングプロセスで処理します。OSPFパケットのLSAをLSDBに登録して、SPFアルゴリズムで最適ルートを計算します。そして、最適ルートをルーティングテーブルに登録します。このときのアドミニストレイティブディスタンスはデフォルトで110です。

ospfのルーティングプロセスは、以下のコマンドで有効化します。

(config)#router ospf <process-id>
(config-router)#network <network> <wildcardmask> area <area-id>

router ospfでospfのルーティングプロセスを有効化します。OSPFは複数のルーティングプロセスを利用できます。<process-id>で複数のOSPFプロセスを識別できるようにします。そして、インタフェースで有効化するためにnetworkコマンドを使っています。

ospfのルーティングプロセスの簡単な例を考えます。ルータのFa0/0のIPアドレスが192.168.1.254/24で次のような設定を行っている例です。

(config)#router ospf 1
(config-router)#network 192.168.1.0 0.0.0.255 area 0

「network 192.168.1.0 0.0.0.255 area 0」の設定は、「IPアドレス192.168.1.x(xは任意)のインタフェースでOSPFを有効にしてエリア0に所属させる」という意味です。この設定によって、ospfのルーティングプロセスとFa0/0が関連付けられます。そして、LSDBのR1のLSAにFa0/0の情報が登録されます。また、Fa0/0ではOSPFパケットを送受信できるようになります。

Fa0/0でOSPFパケットを受信すると、ospfのルーティングプロセスで扱います。受信したOSPFパケットの中に172.16.0.0/16のルート情報が含まれていると、それをLSDBに登録します。

OSPFパケットに含まれている情報は必ずしもネットワークアドレス/サブネットマスクのフォーマットになっているとは限りません。ここでは、わかりやすくするためにネットワークアドレス/サブネットマスクのフォーマットとしています。

OSPFのLSDBからSPFアルゴリズムに従って最適ルートを決定します。ospfルーティングプロセスからは192.168.1.0/24と172.16.0.0/24の2つのルート情報をルーティングテーブルに登録します。ただし、192.168.1.0/24のルート情報はconnectedのルーティングプロセスが優先されます。OSPFルートとしては172.16.0.0/16だけがルーティングテーブルに登録されます。

ルーティングプロセス ospf
図 ルーティングプロセス ospf

eigrp

eigrpのルーティングプロセスは、EIGRPのルート情報を収集して、ルーティングテーブルに登録します。EIGRPはディスタンスベクタ(RIP)をベースにしているので、ripのルーティングプロセスとよく似ています。EIGRPの設定は、eigrpルーティングプロセスを有効化して、さらにルータのインタフェースでも有効化します。インタフェースでEIGRPを有効化するということは、eigrpルーティングプロセスとインタフェースを関連付けるイメージで、そのインタフェースでEIGRPパケットを送受信できるようになります。

さらに、関連付けたインタフェースのネットワークアドレスをEIGRPルートとしてEIGRPトポロジテーブルに登録します。そして、EIGRPパケットを受信すると、EIGRPパケットに含まれるルート情報をEIGRPトポロジテーブルに登録します。EIGRPトポロジテーブル上でメトリックに基づいて最適ルートを決定して、最適ルートをルーティングテーブルに登録します。このとき、アドミニストレイティブディスタンスとしては、デフォルトで90が与えられます。eigrpのルーティングプロセスは、以下のコマンドで有効化します。

(config)#router eigrp <AS>
(config-router)#network <network> [<wildcard>]

router eigrpコマンドでeigrpのルーティングプロセスを有効化して、networkコマンドによって、インタフェースで有効化します。

eigrpのルーティングプロセスの簡単な例を考えます。ルータのFa0/0のIPアドレスが192.168.1.254/24で次のような設定を行っている例です。

(config)#router eigrp 1
(config-router)#network 192.168.1.0

「network 192.168.1.0」の設定は、「IPアドレス192.168.1.x(xは任意)のインタフェースでEIGRPを有効にする」という意味です。この設定によって、eigrpのルーティングプロセスとFa0/0が関連付けられます。すると、Fa0/0のネットワークアドレス192.168.1.0/24がEIGRPトポロジテーブルに登録されます。また、Fa0/0ではEIGRPパケットを送受信できるようになります。

Fa0/0でEIGRPパケットを受信すると、eigrpのルーティングプロセスで扱います。受信したEIGRPパケットの中に172.16.0.0/16のルート情報が含まれていると、それをEIGRPトポロジテーブルに登録します。

EIGRPトポロジテーブルに含まれている192.168.1.0/24と172.16.0.0/16をEIGRPルートとしてルーティングテーブルに登録します。このとき、アドミニストレイティブディスタンスはデフォルトで90です。192.168.1.0/24と172.16.0.0/16という2つのEIGRPルートがあるのですが、192.168.1.0/24はconnectedのルート情報のほうが優先されます。そのため、EIGRPルートとしては172.16.0.0/16だけがルーティングテーブルに登録されます。

ルーティングプロセス eigrp
図 ルーティングプロセス eigrp

ルーティングプロトコルのプロセスで注目しておきたいポイント

rip/ospf/eigrpのルーティングプロトコルのプロセスで注目していただきたいポイントは、ルータ自身のインタフェースのルート情報が含まれることです。ここまで挙げている例でいえば、Fa0/0の192.168.1.0/24のルートです。

インタフェースでルーティングプロトコルを有効化すると、そのインタフェースのルート情報が各ルーティングプロセスのデータベースの中に含まれます。ルーティングテーブル上では、connectedのルート情報が優先されて見えませんが、各ルーティングプロセスの中にもルータ自身のインタフェースのルート情報が含まれているのです。特に再配送の設定を考えるときに、この点をしっかりと把握しておいてください。

メトリックとアドミニストレイティブディスタンス

あらためて、メトリックとアドミニストレイティブディスタンスについて考えてみましょう。ルーティングテーブルには宛先ネットワークまでの最適ルートのみを登録します。最適ルートを判断するために、ルート情報の[アドミニストレイティブディスタンス/メトリック]で距離を計測しています。最適ルートはすなわち、「最短」ルートです。

最適ルートが複数ある場合は、等コストロードバランスです。

各ルーティングプロセスで収集したルート情報の中から最適ルートを決定するためにメトリックを利用します。各ルーティングプロセスからメトリックによって決定した最適ルートをルーティングテーブルに登録します。

そして、複数のルーティングプロセスから同じネットワークのルート情報を登録しようとするときに、アドミニストレイティブディスタンスによって最終的に最も良い最適ルートを決定することになります。


メトリックとアドミニストレイティブディスタンスについて、以下の記事もご覧ください。


関連記事

IPルーティング応用