概要

ルーティングプロセスとは、実行中のルーティングプロトコル用のプログラムです。OSPF/BGPなどのルーティングプロトコルの処理は、ルーティングプロセスによって行います。ルーティングプロセスを意識しておくと、ルート情報の再配送やフィルタの仕組みを理解しやすくなります。

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

「プロセス」とは、実行中のプログラムのことです。

 プロセスとは、プログラムの実行中の状態を指します。実行中の状態とは、プログラムがオペレーティングシステムによって、メモリ上の領域を割り当てられ、そこでCPUとデータのやり取りを行い、演算処理されている状態です。

https://gimo.jp/glossary/details/process.html

Cisco IOSなどのルータOSには、OSPFやBGPといったルーティングプロトコル用のプログラムがあります。それらルーティングプロトコルのプログラムを実行することでルーティングプロセスを起動します。すると、ルータのメモリを割り当てられて、CPUによってさまざまな演算処理を行ってルーティングプロトコルの動作を実行します。具体的には、ルート情報の送受信を行い、最適ルートを決定したうえでルーティングテーブルに登録します。

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

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

たとえば、ルータがRIPパケットを受信すると、RIPルーティングプロセスで処理します。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として登録されます。

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のルーティングプロセスは、以下のコマンドで有効化します。

RIPの設定コマンド

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

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

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

RIPの設定コマンドの例

(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のルーティングプロセスは、以下のコマンドで有効化します。

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で次のような設定を行っている例です。

OSPFの設定コマンドの例

(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のルーティングプロセスは、以下のコマンドで有効化します。

EIGRPの設定コマンド

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

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

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

EIGRPの設定コマンドの例

(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のルート情報が優先されて見えませんが、各ルーティングプロセスの中にもルータ自身のインタフェースのルート情報が含まれているのです。特に再配送の設定を考えるときに、この点をしっかりと把握しておいてください。

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

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

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

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

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

ポイント

  • メトリックによって、ルーティングプロセス内の最適ルートを決定する
  • アドミニストレイティブディスタンスとメトリックを組み合わせて、ルーティングテーブルに登録する最適ルートを決定する

たとえば、192.168.1.0/24のルート情報をOSPFとEIGRPで合計4つ学習していると考えてみましょう。

  • OSPFルート
    • ネクストホップ R2 / メトリック 10 -> OSPFの最適ルート
    • ネクストホップ R3 / メトリック 100
  • EIGRPルート
    • ネクストホップ R4 / メトリック 10000 -> EIGRPの最適ルート
    • ネクストホップ R5 / メトリック 20000

192.168.1.0/24の2つのOSPFルートのうち、メトリックが小さいルートをOSPFの最適ルートとして決定します。つまり、OSPFの最適ルートはネクストホップがR2のものです。同様に192.168.1.0/24の2つのEIGRPルートのうち、メトリックが小さいルートをEIGRPの最適ルートとして決定します。EIGRPの最適ルートはネクストホップがR4のものです。

ルーティングテーブルには、192.168.1.0/24の最適ルートのみ登録します。OSPFの最適ルートとEIGRPの最適ルートのうち、どちらがルーティングテーブルに登録するべき最適ルートであるかを決定しなければいけません。ただ、OSPFとEIGRPのメトリックを単純には比較できません。そこで、アドミニストレイティブディスタンスとメトリックを組み合わせて、宛先ネットワークまでの比較可能な距離を考えることになります。

OSPFの最適ルートの距離 = [110/10]
EIGRPの最適ルートの距離 = [90/10000]

結局は、アドミニストレイティブディスタンスが小さいほうが距離が短く最適ルートになります。ルーティングテーブルに登録される192.168.1.0/24のルート情報は、EIGRPの最適ルートです。

図 最適ルートの決定
図 最適ルートの決定

IPルーティング応用