RIP (Routing Information Protocol) (=ィスタンスベクタ型のルーティングプロトコル)で利用されるスプリットホライズンを初心者向けにわかりやすく解説します。
スプリットホライズンとは、RIP (=ディスタンスベクタ型のルーティングプロトコル) で発生する無限カウントを防止する機能とのこと。

このページでは、RIPとは?ディスタンスベクタ型とは?という人でもしっかり理解できるようにネットワーク初心者向けに1からわかりやすく解説しますのでご安心ください。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
前提:ルーティングプロトコルとは?

スプリットホライズンをしっかり理解するために必要不可欠な知識を最初におさらいしておきましょう!
この章ではルーティングプロトコルとは何か?ディスタンスベクタ型(距離ベクトル型)とは何か?を解説します。
ルーティングプロトコルとは、その名の通りルーティングを行うためのプロトコルです。具体的には、ルーター同士がルーティングテーブルの情報をお互いに交換するために用いられます。
ルーティングとはコンピュータが送信したデータ(パケット)を宛先のコンピュータまで適切に転送する処理のこと。

インターネットは複雑に絡み合ったネットワーク網で構成されているため、「送るデータの道案内」を適切に行う必要があります。この処理がルーティング(経路制御)です。

データの宛先を見て「〇〇に行けば良いよ!」と道案内をしてくれるようなイメージです。
このとき道案内をするために参照する情報をルーティングテーブル(経路制御表)と呼びます。ルーティングテーブルには「最終目的地」と「進むべき道」が記されており、そのテーブル情報を参照してルーターはデータの配送先を決定します。


さらに詳細な仕組みを知りたい方は以下の記事をご覧ください。
ディスタンスベクタ型 (距離ベクトル型) のルーティングプロトコル
ルーティングプロトコルではルーター同士が知っている経路情報をお互いに交換することで、ルーティングテーブルをアップデートします。
このとき経路情報として「ネットワークの方向」と「距離(=経由するルーター数)」を交換するプロトコルをディスタンスベクタ型(距離ベクトル型)のルーティングプロトコルと呼びます。


ネットワークAの方向と距離に関する情報をバケツリレーのように配送していくのが、ディスタンスベクタ型のポイントです。
RIPの問題点:無限カウント

ここからがスプリットホライズンについての本題です。
RIP(=ディスタンスベクタ型のルーティングプロトコル)の大きな問題点の1つに無限カウントの問題があります。
以下のような場合を考えてみましょう。ネットワークAの情報をルーターAがルーターB/C/Dへレギュラーアップデートします。

このときRIPでは経路情報を「隣接するルーターにブロードキャスト」するため、ルーターAから経路情報を受け取ったルーターBも、同様にルーターAに対して経路情報を返します。

この時点では、ルーターBから受け取った「距離2」という経路情報自体は破棄されます。ルーターA自身が保有する距離「1」の情報の方が優れた情報であるためです。
しかし、もしも上記の場合にネットワークAが何らかの障害によって疎通できない状態になったらどうでしょうか?

まず、ルーターAはネットワークAに対する疎通が切れたことを検知し、ルーターBに対してはネットワークAに対する経路情報を転送しません。

これでルーターBもネットワークAに対する経路情報を削除する・・・と言いたいところですが、ルーターAからの経路情報を受け取る前にルーターB自身が保有する経路情報をルーターBに対して送付してしまったら・・・。

ルーターAから既にネットワークAに対する経路情報は削除されているため、ルーターBから受け取った「距離2」の経路情報をルーティングテーブルに新規に登録してしまいます。

本来はネットワークAまでの距離「1」だったルーターAに「距離2」のルーティングテーブルが作成されてしまいました。
そして、問題は次です。このときルーターAは誤ったルーティングテーブルの情報をもとに、レギュラーアップデートでルーターBに対して以下のような情報を送ってしまいます。

RIPは過去に経路情報を入手したルーターからの経路情報は必ず採用する仕組みです。
そのため、ルーターBはルーティングテーブルを誤った経路情報をもとに更新してしまうのです。

さらに、ルーターBは次回のレギュラーアップデートで距離「3」の経路情報をルーターAに。ルーターAは距離「4」の情報をルーターCに・・・・。と無限にカウントを繰り返していくようになります。
この現象を無限カウントと呼びます。
スプリットホライズンとは
この無限カウントに対応する仕組みとして考え出されたのがスプリットホライズンです。
スプリットホライズンは受け取った経路情報をそれが送られてきた方向へは送り返さない仕組みのこと。


無限カウントは簡単に言うと「先生に教えてもらった単語を、先生に教える。」「先生も、生徒からの言葉を信じる。」ということが発生していることが原因です。
なので、生徒は先生から教えてもらった内容を、さらに先生に教えることはしない!というルールにすれば万事解決ですよね。
スプリットホライズンがあることで、誤った情報でルーティングテーブルが更新されることがない → 結果として無限カウントは発生しないということです。
前提の説明がだいぶ長くなりましたが、スプリットホライズンの仕組み自体は非常に簡単です。
ネットワークの仕組みを1から学習したい方は
コンピュータとコンピュータはどのように通信をしているのか?インターネットはどのような仕組みで構成されているのか?

ネットワークの基礎を1から学習したい方(=ネットワークエンジニアを目指す方)は、以下の書籍が非常におすすめ。
日常生活で例えた説明や豊富な図解付きでIT初心者でも分かりやすく理解することができます。
ただし、ページ数も多くさくっと手軽に読める内容ではありません。しかしながら、ネットワークエンジニアを目指す場合、ほぼ全員が一度は読んだことがある書籍なので是非一度読破しておきたい1冊

ネットワークエンジニアを目指す方ではなくても、ネットワークの知識がある/なしで今後のキャリアプランに大きく影響します。1度手に取ってみてはいかがでしょうか?
ITを1から学びなおしたい方は
システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。
システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

無料で読めるようにしてあります。累計15万人に参考にしていただきました!