ルータが 1 台だけのネットワークでは、ルーティングは通常、それほど面倒ではありません。デバイスは接続されている各デバイスの場所を正確に把握しているため、トラフィックは直接送信されます。しかし、2 台目のルータを追加したり、さらに悪いことに、さらに多くのルータを追加すると、状況は複雑になります。ルータがローカル デバイスまたは直接接続されているルータのみを認識している場合は、トラフィックの送信先を比較的簡単に把握できます。しかし、3 台​​目のルータを追加すると、特にインターネット アクセスが関係する場合は、ルーティング ロジックが非常に曖昧になります。ルータ A、B、C が一列に並んでいるセットアップでは、宛先情報がローカルでない場合は、A と C はトラフィックを B に転送できることを知っている可能性があります。しかし、B は不明なトラフィックをどこにプッシュするか、つまり転送するか、戻すか、それともドロップするかを決定するのに苦労します。また、両端にインターネット接続を追加するとどうなりますか? そうです、適切なルーティング マジックがなければ、ローカル ネットワーク外の宛先へのトラフィックをどこに送信すればよいかを実際に把握できないのです。

ここでルーティングテーブルが活躍します。ルーティングテーブルは基本的にルーターの「アドレス帳」のようなもので、特定の宛先へのトラフィックをどのルーターやデバイスに送信するかをルーターに指示します。小規模でシンプルなネットワークでは、これらのルートを手動でプログラムする必要があるかもしれませんが、これは少々面倒で、全く動的ではありません。そこでルーティングプロトコルが登場します。ルーティングプロトコルは、ルーター同士が通信し、ルートをリアルタイムで更新します。これは、ネットワークが常に「このルートを通ってこのルーターに到達できます」と伝えているようなもので、手動で操作することなくトラフィックがスムーズに流れるようになります。

ルーティングテーブルの仕組みとその重要性

ルーティングテーブルとは、基本的に各ルーターの内部に格納されているリストで、パケットを最終目的地に届けるためにどの接続ルーターまたはネットワークに送信すればよいかを示しています。小規模なネットワークでは、手作業でハードコードされた静的ルートしか存在しない場合もありますが、ネットワークが拡大したり変化したりすると、これでは対応しきれません。速度が遅く、エラーが発生しやすく、更新も面倒です。そこで、ルーターはRIP、OSPF、EIGRPなどのプロトコルを介して動的にルートを共有します。一部のデバイスでは、Windowsでは`route print`、Cisco IOSでは`show ip route`を実行することで、現在のルーティングテーブルを確認することもできます。Linuxの場合は、ターミナルで`ip route`または`netstat -rn`を実行してみてください。これにより、トラフィックの流れが分かり、パケットが目的地に届かない原因をトラブルシューティングするのに役立ちます。

RIPv1 とその不正動作

昔は、RIPv がシンプルでわかりやすく、簡単でした。RIPv はホップ数を記録し、パケットが経由するルーターの数をカウントします。ホップ数が 0 の場合はデバイスが直接接続されており、1 ホップは次のデバイス、というように最大 15 ホップまで続きます。それを超えると到達不能とみなされます。これは、RIP が 16 ホップを無限大として扱うため、ルートが存在しないことを意味します。ただし、問題があります。RIPv1 はサブネット マスクをサポートしていないため、サブネット サイズや CIDR ブロックが異なるネットワークでは問題が発生します。RIPv1 はルーティング テーブル全体を 30 秒ごとにブロードキャストするため、小規模なネットワークではフラッディングが発生し、特にネットワークが混雑している場合はパフォーマンスが低下する可能性があります。さらに、RIP はブロードキャスト フレームを使用して他のルーターにルートを通知しますが、これは現代のネットワークでは理想的ではありません。

実環境において、RIPv1はループや遅延を引き起こす可能性があります。特にネットワークトポロジが複雑になったり、頻繁に変更されたりする場合は顕著です。一部のCiscoルータでは、不正なアップデートを心配するのであれば、`no ip directed-broadcast``ip rip authentication` などのコマンドを使って、これらの動作を調整できます。しかし、一般的にRIPv​​1は基本的なプロトコルであるため、大きな用途には適していません。そのため、現在ではほぼ廃止されています。

RIP の落とし穴とその解決方法

RIP の大きな悩みの種は、スプリットホライズンルールです。このルールは、ルータが隣接ルータから学習したルートをアドバタイズすることを防ぎます。ルーティングループを防ぐためです。とはいえ、ネットワークにループが発生した場合、RIP が必ずしもそれを修復できるとは限らないため、少々奇妙なルールです。また、ルートがダウンした場合も問題となります。RIP はルートポイズニングによってこれを処理します。ルートのホップ数を 16 (無限大) に設定し、その情報をブロードキャストすることで、隣接ルータがそのルートでトラフィックを送信しないようにします。Cisco ルータは、ルートの状態に関する更新を遅らせるホールドダウンタイマーも追加することで、状態を安定させています。これらのタイマーは、不安定になった場合に `ip rip hold-down timeout` などのコマンドで調整できますが、複雑なネットワークや大規模なネットワークでは、RIP では対応しきれません。

さらに、RIPの30秒ごとの定期更新は大量のトラフィックを発生させます。これは小規模でシンプルなネットワークでは問題ないかもしれませんが、大規模な構成では煩わしいものです。RIPv2にアップグレードすると、CIDRサポートとマルチキャスト更新のおかげで多くの問題が解決され、すべてがより効率的になり、通信量が少なくなります。

RIPv2へのアップグレードとその改善点

rip の使用が避けられない場合は、RIPv2 への切り替えが賢明です。RIPv2 も非常にシンプルですが、RIP の多くの欠点を解消しています。RIPv2 はサブネットマスク (CIDR) をサポートしているため、可変のサブネットサイズに対応しており、ネットワークのスケーラビリティが +1 されます。ルート情報をブロードキャストする代わりに、RIPv2 はマルチキャスト (`224.0.0.9` に更新情報を送信) を使用するため、ネットワークの不要な通信が削減されます。また、認証も可能なため、セキュリティも若干向上します。例えば、Cisco ルーターで RIPv2 を設定するには、`router rip` などのコマンドを実行し、次に `version 2` を実行し、`network [ネットワークアドレス]` でネットワークを追加します。

切り替えは通常簡単ですが、混乱を避けるため、`no ip rip version 1` でRIPv1を無効にすることをお勧めします。ただし、RIPは改善が見られるものの、大規模で複雑なネットワークではOSPFやEIGRPに比べて依然として限界があることに留意してください。

タイマーとそれが RIP に及ぼす影響

RIP には主に 4 つのタイマーがあります。更新タイマー、無効タイマー、フラッシュ タイマー、ホールドダウン タイマーです。デフォルトの `更新タイマー` は 30 秒で、ルータがルーティング情報をブロードキャストする頻度です。`無効タイマー` は 180 秒で、その時間内にルートに関する更新情報が届かない場合、RIP はそのルートを到達不能 (ホップ カウント 16) としてマークします。`フラッシュ タイマー` は 240 秒で、RIP がルートを削除する前にそのルートのアドバタイズを試行し続ける時間です。そして、`ホールドダウン タイマー` は通常 180 秒で、変更後のルートの挿入を遅らせてフラッピングを防止します。Cisco IOS の `timers basic` などのコマンドを使用してこれらのタイマーを調整できますが、家庭や中小企業での使用では、ほとんどの場合、デフォルト設定で十分です。

少し奇妙に思えるかもしれませんが、これらのタイマーはネットワークの安定性を維持し、フラッピング(経路の急激な変化によって混乱が生じる現象)を防ぐために不可欠です。また、ネットワーク変更後にRIPの収束に時間がかかることがある理由も解明しています。

まとめと今後の展望

全体的に見て、シンプルさが優先され、ネットワークがそれほど複雑でない場合は、RIPv2 は依然として適切な選択肢です。設定は非常に簡単です。CIDR やマルチキャスト更新をサポートし、RIPv1 よりも無駄が少なく動作することを覚えておいてください。ただし、ホップ数は 15 に制限されているため、非常に大規模または複雑なネットワークには適していません。エンタープライズ環境では OSPF や EIGRP などのプロトコルにアップグレードする方がよいかもしれませんが、小規模な環境ではどうでしょうか?RIP は、適切に設定すれば依然として十分な機能を発揮します。

まとめ

  • ホップ数に基づくシンプルなルーティングプロトコル
  • IPv4のみをサポートし、RIPv2ではいくつかの制限が修正されています
  • 更新にはブロードキャストまたはマルチキャストを使用する
  • 最大ホップ数は15なので、大規模ネットワークには適していません。
  • 定期的なアップデートは管理されていない場合、小規模ネットワークに溢れる可能性がある
  • タイマーは更新、無効、フラッシュ、ホールドダウン間隔を制御します

これで誰かの頭を悩ませる時間が少しでも軽減されることを願っています。タイマーに注意してください。まだRIP時代にこだわっているなら、RIPv2に切り替えるのも良いかもしれません。