目次
概要
ルーティングプロセスとは、実行中のルーティングプロトコル用のプログラムです。OSPF/BGPなどのルーティングプロトコルの処理は、ルーティングプロセスによって行います。ルーティングプロセスを意識しておくと、ルート情報の再配送やフィルタの仕組みを理解しやすくなります。
ルーティングプロセスとは
「プロセス」とは、実行中のプログラムのことです。
Cisco IOSなどのルータOSには、OSPFやBGPといったルーティングプロトコル用のプログラムがあります。それらルーティングプロトコルのプログラムを実行することでルーティングプロセスを起動します。すると、ルータのメモリを割り当てられて、CPUによってさまざまな演算処理を行ってルーティングプロトコルの動作を実行します。具体的には、ルート情報の送受信を行い、最適ルートを決定したうえでルーティングテーブルに登録します。
ひとまず「ルーティングプロトコル」としていますが、スタティックルートや直接接続のルーティングプロセスもあります。
たとえば、ルータが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
関連記事
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」で登録されるようになります。
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だけがルーティングテーブルに登録されます。
関連記事
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だけがルーティングテーブルに登録されます。
関連記事
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だけがルーティングテーブルに登録されます。
関連記事
ルーティングプロトコルのプロセスで注目しておきたいポイント
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ルーティング応用
- DNSラウンドロビン方式の負荷分散
- 負荷分散装置(ロードバランサ)の仕組み
- ルーティングプロセス ~実行中のルーティングプロトコル用のプログラム~
- 複数のルーティングプロトコルの利用
- 再配送(再配布) ~ルーティングドメイン境界で必須の設定~
- Cisco再配送(再配布)の設定 ~redistributeコマンド~
- Cisco 再配送の設定例 ~OSPFとRIPの双方向再配送~
- 再配送 設定ミスの切り分けと修正 Part1
- 再配送 設定ミスの切り分けと修正 Part2
- 再配送 設定ミスの切り分けと修正 Part3
- 再配送 設定ミスの切り分けと修正 Part4
- 再配送 設定ミスの切り分けと修正 Part5
- 再配送 設定ミスの切り分けと修正 Part6
- オフセットリスト(offset-list) ~ルート情報のメトリックを加算~
- オフセットリストの設定例 RIP
- オフセットリストの設定例 EIGRP
- ルートフィルタの概要
- ルートフィルタのポイント
- ディストリビュートリストによるルートフィルタの設定
- Ciscoディストリビュートリストによるルートフィルタの設定例
- プレフィクスリスト(prefix-list)によるルートフィルタの設定
- Ciscoプレフィクスリストによるルートフィルタの設定例
- Ciscoルートマップ(route-map)の概要 ~何をどう処理するか~
- Ciscoルートマップの設定
- Ciscoルートマップ(route-map)設定のポイント
- Ciscoルートマップによる再配送時のルート制御の設定例
- ポリシーベースルーティングの設定例
- GREトンネルインタフェース ~仮想的なポイントツーポイント接続~
- GREトンネルインタフェースの設定例
- GREトンネルの注意点 ~フラッピングしないように~
- オーバーレイネットワークとアンダーレイネットワーク
- ルート制御 ケーススタディ Part1
- ルート制御 ケーススタディ Part2
- ルート制御 ケーススタディ Part3
- VRF/VRF-Liteの概要 ~仮想的にルータを分割する~
- VRFの設定と確認コマンド [Cisco]
- VRF-Liteによるレイヤ3VPNの設定例 [Cisco]
- VRFルートリーク(スタティックルート)
- VRFルートリーク(スタティックルート)の設定例
- VRFルートリーク(MP-BGP)
- VRFルートリーク(MP-BGP)の設定例
- [FVRFの仕組み] FVRF(Front door VRF)とは
- [FVRFの仕組み] ポイントツーポイントGREトンネル:FVRFなし
- [FVRFの仕組み] ポイントツーポイントGREトンネル : FVRFあり(tunnel vrfコマンド)
- [FVRFの仕組み] IPSec VTI : FRVRFあり
- [FVRFの仕組み] IPSec VTI : FVRFあり 設定例
- [FVRFの仕組み] DMVPN : FVRFあり
- [FVRFの仕組み] DMVPN : FVRFあり 設定例 Part1
- [FVRFの仕組み] DMVPN : FVRFあり 設定例 Part2
- tunnel vrfコマンド
- tunnel vrfコマンドの設定例
- [演習] ルーティングループの防止
- [演習] 企業ネットワーク構築演習 Part1:拠点1の構築
- [演習] 企業ネットワーク構築演習 Part2:拠点2/拠点3の構築
- [演習] 企業ネットワーク構築演習 Part3:広域イーサネットの接続
- [演習] 企業ネットワーク構築演習 Part4:インターネット(AS1/AS2)の構築
- [演習] 企業ネットワーク構築演習 Part5:インターネットへの接続
- [演習] 企業ネットワーク構築演習 Part6:インターネットVPNの構築