ルーティングとは
ルーティングとは、パケットを目的地のホストまで届けるために「どの経路を通すか」を決めて転送する仕組みのことです。この処理はルータやL3スイッチといったレイヤ3で動作する機器が行います。ルータは転送の判断をする際、必ず自分が持っている ルーティングテーブル を参照します。ルーティングテーブルには宛先ネットワークと、そこへ到達するために使うインターフェースや次に送るべき相手(ネクストホップ)の情報が一覧として記録されています。
例えば、10.1.1.1 から 10.1.4.1 宛のパケットをR1が受信した場合、R1はまず宛先アドレス(10.1.4.1)を確認します。その後、ルーティングテーブルを参照し、10.1.4.0/24 ネットワークに該当することを確認します。そしてR1は、F0/1インターフェースからネクストホップである 10.1.2.253(R3)にパケットを転送します。さらにR3がパケットを受け取ると、自身のインターフェースに 10.1.4.0/24 が直結しているため、ARPを使って最終的に 10.1.4.1 宛のホストにパケットを届けます。
ここで重要なのが ネクストホップ です。ネクストホップとは、宛先ネットワークにたどり着くためにパケットを転送すべき隣接ルータのIPアドレスを指します。もし宛先が「Directly Connected」となっていれば、それはルータのインターフェースが直接そのネットワークに接続されていることを意味します。
ルーティングの原則 その1
ルータはルーティングテーブルに存在しない宛先ネットワーク宛のパケットを受信した場合、そのパケットを転送できず破棄します。そして同時に、送信元に対して「宛先に到達できません(Destination Unreachable)」というICMPメッセージを返します。
つまり、通信を成立させるには、宛先ネットワークに関する経路情報がルータのルーティングテーブルに存在していなければなりません。これがルーティングの基本ルールです。
ルーティングの原則 その2(ロンゲストマッチ)
ルーティングテーブルに複数の候補ルートがある場合、ルータは ロンゲストマッチの法則 に従って転送先を選びます。ロンゲストマッチとは、宛先アドレスと最も長く(ビット数が多く)一致するネットワークを選択するルールです。
例えば宛先が 172.16.1.1 の場合、ルーティングテーブルに以下の2つの経路があったとします。
- 172.16.0.0/16
- 172.16.1.0/24
どちらも宛先を含んでいますが、/24 の方がビット数が多く、より詳細に一致しています。そのため、ルータは 172.16.1.0/24 の経路を優先して使用し、指定されたインターフェースから次のルータへパケットを転送します。
ルーティング選択の優先順位
ルータが経路を選ぶ際は、まず ロンゲストマッチ を最優先します。その後、同じプレフィックス長で候補が複数ある場合に アドミニストレーティブディスタンス や メトリック が考慮されます。
この「ロンゲストマッチの法則」は、CCNA試験でも必ず押さえておくべき知識です。ネットワークエンジニアがトラブルシューティングを行う際にも、まずこのルールを前提に経路選択を考えることになります。
ルーティングテーブルへのルート情報の追加方法
ルータのルーティングテーブルには、宛先ネットワークへの経路情報を登録しておく必要があります。このルート情報を追加する方法には大きく分けて3つの種類があります。
直接接続ルート は、ルータのインターフェースにIPアドレスを設定して有効化(no shutdown)すると自動的に追加されるルートです。ただし、インターフェースが「up/up」の状態になっていることが前提です。
スタティックルート は、管理者が手動で設定する経路情報です。ネットワークの構造が単純な場合や、冗長性を持たせたい場合などに利用されます。
ダイナミックルート は、ルーティングプロトコル(RIP、OSPF、EIGRPなど)を用いて、ルータ同士が自動的に経路情報を交換して追加するルートです。大規模ネットワークでは主にこの方法が用いられます。
ルーティングテーブルの見方
Ciscoルータでルーティングテーブルを確認するには show ip route コマンドを使います。出力されたテーブルを正しく読み解くことができると、ネットワークの動作やトラブルシューティングに非常に役立ちます。
以下に、show ip route の出力に含まれる主な情報を解説します。
- ルートの情報源
どのようにしてルートが追加されたのかを示すコードです。直接接続ルートは「C」、スタティックルートは「S」、RIPなら「R」、OSPFなら「O」と表示されます。 - 宛先ルートとサブネットマスク
宛先ネットワークアドレスとマスクが表示されます。この情報は「ロンゲストマッチ」の法則に基づいて、どの経路が選ばれるかを決める基準になります。 - アドミニストレーティブディスタンス(AD)
同じプレフィックス長のルートが複数ある場合、ADの値を比較して小さい方が採用されます。例えば、RIPのADは120、OSPFは110、EIGRPは90です。AD値は「信頼度」を表すと覚えるとよいでしょう。 - メトリック
ダイナミックルーティングで、複数の経路が存在する場合に「どちらがより最適か」を判断するために使われる値です。プロトコルによって意味が異なり、例えばRIPはホップ数、OSPFはコスト値、EIGRPは複合メトリックを用います。 - ネクストホップアドレス
パケットを転送するときに次に渡す相手(隣接ルータ)のIPアドレスです。出力には「via 192.168.1.254」といった形で表示されます。もし「directly connected」と書かれていれば、自分のインターフェースが直接そのネットワークに接続されているという意味です。 - 宛先ルートの学習時間
ダイナミックルーティングで、そのルートが追加されてからの経過時間を示します。例えば「00:00:06」とあれば、ルート情報を学習してから6秒経過していることになります。 - 出力インターフェース
パケットを転送する際に実際に使うインターフェースを示します。例えば「FastEthernet 1」と表示されていれば、そのポートからパケットが出ていくことが分かります。
スタティックルーティングとは
スタティックルーティングとは、ネットワーク管理者が自分でルータに経路を手作業で登録する仕組みです。
通常、ルータは自分で学習した経路情報をもとに通信しますが、スタティックルートは管理者が指定したルートだけを使います。そのため、他のルータに経路を自動的に伝えたり、ネットワークの状態が変わっても自動的に経路を切り替えたりすることはありません。
イメージとしては、車で道を探すときにカーナビが自動でルートを探してくれるのが「動的ルーティング」、紙の地図で「この道を必ず通る」と決めて走るのが「スタティックルーティング」という違いです。
スタティックルートを設定する流れ
ルータは自分に直接つながっているネットワークしか最初は知らないため、離れたネットワークへは通信できません。
例えば、端末Aから端末Bへ通信を試みても、R1は宛先「192.168.2.10」の経路を知らないので、パケットを転送できません。
そこで、R1に対して「192.168.2.0/24 のネットワークへ行きたいときは、R2に渡せばいい」と教えてあげます。
Ciscoルータでは次のコマンドを使います。
(config)# ip route network mask ip-address | interface [ distance ] [ permanent ]
コマンドの引数と意味
| 引数 | 内容 |
|---|---|
| network | 宛先ネットワークアドレスを指定 |
| mask | 宛先ネットワークのサブネットマスクを指定 |
| ip-address / interface | ネクストホップアドレス、または出力インターフェースを指定 |
| distance | 管理距離(AD値)を変更したい場合に設定(初心者は無視してOK) |
| permanent | 宛先が到達不能になってもルートを消さない場合に指定(初心者は無視してOK) |
ここで大切なのは 「宛先ネットワーク」と「次に渡す相手(ネクストホップ)」をルータに教える ことです。
双方向の設定が必要
R1にスタティックルートを設定すれば、端末Aから端末Bへは通信できるようになります。
しかしそのままでは、端末Bから端末Aへは戻ってこれません。なぜなら、R2は「192.168.0.0/24」のルートを知らないからです。
このため、R2にもスタティックルートを設定して「端末AのあるネットワークはR1に渡す」と教える必要があります。
試験でもよく出るポイントですが、通信は双方向で成立する ため、スタティックルートは必ず両側に設定しなければなりません。
デフォルトルートとは
スタティックルートはネットワークごとに1行ずつ設定が必要です。小規模なら問題ありませんが、宛先ネットワークが数百、数千と増えると大変です。
そこで便利なのが デフォルトルート です。
これは「どこにも当てはまらない場合は、このルートを使う」という特別なルートで、0.0.0.0/0 という表記を使います。
例えば、企業のルータがインターネットにつながっている場合、すべての未知の宛先をインターネット側へ送ればよいため、次のように設定します。
(config)# ip route 0.0.0.0 0.0.0.0 ネクストホップアドレス
これにより、利用者が世界中のWebサイトへアクセスする際に、いちいち全てのグローバルIPを設定する必要がなくなります。
ダイナミックルーティングとは
ダイナミックルーティングとは、ルータ同士がルーティングプロトコルを使って自動的に経路をやり取りし、ルート情報を学習していく仕組みです。
管理者が手動で経路を指定するスタティックルートとは異なり、ルータ同士が常に情報交換を行い、ネットワークの変化に応じてルートを更新していきます。
例えば、道路にたとえると「道路が工事中で通れない」といった変化があったとき、自動的に別のルートを探して案内してくれるカーナビがダイナミックルーティングにあたります。
試験では「ダイナミックルートは自動的に学習・更新される」という点が重要です。
スタティックルーティングとの比較
次の表で両者の特徴を整理しておきましょう。
| 比較項目 | スタティックルーティング | ダイナミックルーティング |
|---|---|---|
| ルートの設定方法 | 管理者が手動で設定 | プロトコルにより自動的に追加 |
| ネットワーク変化時 | 自動切替なし | ルートが自動更新される |
| ルータへの負荷 | ほぼなし | CPU・メモリを消費 |
| 管理者の負荷 | ネットワークが大きいと設定作業が膨大 | プロトコルの知識が必要 |
小規模ネットワークではシンプルなスタティックルーティングでも十分ですが、ネットワークが大規模になると手作業での設定は現実的ではなく、ダイナミックルーティングが必須となります。
ルーティングプロトコルの代表例
ダイナミックルーティングには複数の方式があり、それぞれ得意分野があります。
主なものは次の通りです。
- RIP(距離ベクトル型、学習が簡単だが規模は小規模向き)
- EIGRP(Cisco独自、効率的かつ柔軟)
- OSPF(リンクステート型、大規模ネットワークに強い)
- IS-IS(大規模キャリアネットワーク向け)
- BGP(インターネット全体で利用される経路制御用)
試験範囲では、特にRIPとOSPFがよく登場します。
RIPv2によるダイナミックルーティングの例
ここでは代表的なRIPv2を用いた例を見てみます。
端末Aと端末Bが別々のネットワークに存在し、それぞれR1とR2に接続されている状況を考えます。
この時点では、ルータは自分に直接つながっているネットワークしか知らないため、R1は192.168.2.0/24のネットワークを知らず、端末AからBへは通信できません。
そこで、R1とR2にRIPv2を設定します。設定手順は次のイメージです。
(config)# router rip
(config-router)# version 2
(config-router)# network 192.168.0.0
(config-router)# network 192.168.1.0
このように有効化することで、R1とR2は自分の持っているルート情報をお互いに交換(アドバタイズ)します。
結果として、R1は「192.168.2.0/24」を学習し、R2は「192.168.0.0/24」を学習します。
その結果、ルーティングテーブルが更新され、端末Aと端末Bの間で双方向の通信が可能になります。
ダイナミックルーティングの強み
スタティックルーティングでは「どの宛先はどのネクストホップ」と1つずつ設定する必要がありました。
しかしダイナミックルーティングでは、対象のネットワークを有効化しておけば自動的に経路が広がっていきます。
特に大規模ネットワークでは、手作業でスタティックルートを大量に入力するのは非効率であり、間違いの原因にもなります。
そのため、現実のネットワークではダイナミックルーティングが多く用いられています。
ルーティングプロトコルの全体像とASの考え方
ルーティングプロトコルには多くの種類がありますが、まずは使われる場所で大きく二つに分かれます。自社ネットワークの中のように、同じ運用方針でまとめられた範囲をやり取りするのがIGP、異なる組織同士の境界をまたいで経路をやり取りするのがEGPです。ここで出てくるAS(Autonomous System)は、共通の運用ポリシーで管理されるネットワークのまとまりのことを指し、インターネットは多数のASがつながってできています。ASには固有番号が割り当てられ、全体はIANAが、国内の割り当てはJPNICが管理します。
試験では「IGPはAS内部、EGPはAS間」という一言を確実に言えることが大切です。
| 区分 | 役割 | 代表的なプロトコル |
|---|---|---|
| IGP | 同一AS内での経路制御に使用 | RIP、EIGRP、OSPF、IS-IS |
| EGP | 異なるAS間の経路制御に使用 | BGP |
IGPをアルゴリズムで分類する
IGPは「最適ルートをどうやって決めるか」という観点で三つに分けられます。距離や方向を手がかりにするディスタンスベクター、ネットワークの地図を頭に入れて計算するリンクステート、その良いとこ取りをしたハイブリッドです。道路にたとえると、ディスタンスベクターは「曲がる回数が少ない道を選ぶ」、リンクステートは「地図全体を見て所要時間が最短の道を選ぶ」、ハイブリッドは「所要時間を見つつ、万一に備えて脇道も確保する」といったイメージです。
| 比較項目 | ディスタンスベクター | リンクステート | ハイブリッド |
|---|---|---|---|
| 最適ルートの決め方 | 距離と方向(例:ホップ数) | トポロジ全体の状態(コスト) | 複合的な指標 |
| 中心アルゴリズム | ベルマン–フォード | SPF(Dijkstra) | DUAL |
| 収束の速さ | 遅め | 速い | 速い |
| 機器負荷 | 小さい | 大きい | 小さめ |
| 代表プロトコル | RIPv1、RIPv2 | OSPF、IS-IS | EIGRP |
クラスフルとクラスレスの違いを押さえる
もう一つ重要な切り口が「経路にサブネットマスクを含めて通知するかどうか」です。サブネットマスクを含めない方式をクラスフル、含める方式をクラスレスと言います。サブネットマスクが付くかどうかの違いは、IPアドレス設計の自由度に直結します。
| 分類 | 説明 | 代表プロトコル |
|---|---|---|
| クラスフル | 経路広告にサブネットマスクを含めない | RIPv1 |
| クラスレス | 経路広告にサブネットマスクを含める | RIPv2、EIGRP、OSPF、IS-IS |
クラスフルでは同じクラス内で同じマスクを使い回す必要があり、ネットワークごとの機器台数に合わせた細かな設計がしづらくなります(FLSM=固定長)。一方、クラスレスではネットワークごとに必要な規模でマスク長を変えられるため、アドレスを無駄なく配れるようになります(VLSM=可変長)。
経路集約の考え方と実装の違い
複数の細かい経路をまとめて一つの大きな経路として扱うのが経路集約(サマリ)です。ルーティングテーブルをすっきりさせ、更新情報も小さくできるため、規模が大きくなるほど効果が出ます。やり方は自動と手動の二通りがあり、プロトコルごとに対応が異なります。
自動経路集約はクラスフルの境界、つまりクラスAは/8、クラスBは/16、クラスCは/24といった単位で自動的にまとめます。手動経路集約は管理者が意図したまとまり(例えば/22など)で定義できます。現場では「境界を越える前にできるだけまとめて流す」発想が基本です。
| プロトコル | 自動サマリ | 無効化可否 | 手動サマリ |
|---|---|---|---|
| RIPv1(クラスフル) | あり | 無効化不可 | なし |
| RIPv2(クラスレス) | あり | 無効化可能 | あり |
| EIGRP(クラスレス) | あり | 無効化可能 | あり |
| OSPF / IS-IS(クラスレス) | なし | ― | あり |
クラスフルで起きる“不連続サブネット”の落とし穴
クラスフルプロトコルは、同一クラスのネットワークを自動的に大きな塊にまとめてしまう性質があります。このとき、同じクラス内のサブネットが別のクラスフルネットワークによって途中で分断されていると、両側が同じ大きなサマリ(例:172.16.0.0/16)として学習され、境界ルータで“どちらに送るべきか”が曖昧になってしまいます。結果として、期待どおりに到達しない経路が発生します。これが不連続サブネットの問題です。
たとえば、172.16.1.0/24 と 172.16.2.0/24 が、それぞれ別の経路を通って境界に集まる構成を想像してください。クラスフルの自動サマリにより、どちらも172.16.0.0/16として扱われるため、境界装置のテーブルには同じ宛先サマリが二つぶつかって登録され、正常に転送できなくなります。ここは必ず覚える:不連続サブネットがある設計では、クラスレスのプロトコルでマスク情報を伴って広告すること、もしくは適切な手動サマリで意図した集約に整えることが対策になります。