ネットワークエンジニアや通信技術を学ぶ方にとって、ルーティングの安定性は避けて通れない重要なテーマの一つです。
特にディスタンスベクター型のルーティングプロトコルにおいて、ネットワークの混乱を招く「ルーティングループ」を防ぐ仕組みは不可欠な要素と言えます。
その中でも、基本的かつ強力な役割を担っているのが「スプリットホライズン(Split Horizon)」という技術です。
本記事では、スプリットホライズンの基本的な概念から、ルーティングループが発生する仕組み、そしてこの技術がどのようにネットワークの整合性を守っているのかを詳しく解説します。
専門的な用語も噛み砕いて説明しますので、IPネットワークの基礎知識を深めたい方はぜひ参考にしてください。
スプリットホライズンとは?
スプリットホライズンとは、ディスタンスベクター型のルーティングプロトコルにおいて、ルーティングループ(経路のループ)を防止するための基本的なアルゴリズムです。
この仕組みを一言で言えば、「あるインターフェースから受信したルート情報を、同じインターフェースへ送り返さない」というルールを指します。
主にRIP(Routing Information Protocol)やEIGRP(Enhanced Interior Gateway Routing Protocol)などのプロトコルで標準的に採用されています。
通常、ルーターは自身が持つルーティングテーブルの情報を隣接するルーターに定期的に広告します。
しかし、受け取った情報をそのまま送り返してしまうと、ネットワーク内で情報の矛盾が生じ、パケットが永久に循環し続けるループ現象が発生するリスクがあります。
スプリットホライズンは、このような「情報の出戻り」を物理的・論理的に遮断することで、ネットワークの安定稼働を支えています。
ディスタンスベクター型プロトコルとの関係
スプリットホライズンが必要とされる背景には、ディスタンスベクター型プロトコルの特性が深く関わっています。
ディスタンスベクター型は、目的地までの「距離(メトリック)」と「方向(ネクストホップ)」のみを管理し、隣接ルーターからの伝聞(噂話)に基づいて経路を決定します。
ルーターはネットワーク全体の構成図(トポロジー)を把握しているわけではなく、隣のルーターが「こちらにネットワークがありますよ」と言えば、それを信じて自分のテーブルを更新します。
この「伝聞による管理」という仕組み上、誤った情報や古い情報が混じると、ループが発生しやすいという弱点を持っていました。
その弱点を補うために考案されたのが、スプリットホライズンというシンプルな制御ルールなのです。
ルーティングループが発生する原理
スプリットホライズンの有効性を理解するためには、まずこの機能がない場合にどのようなトラブルが起きるかを知る必要があります。
例えば、ルーターAとルーターBが隣接しており、ルーターAの先にネットワークXが存在している状況を想定しましょう。
通常、ルーターAはルーターBに対して「ネットワークXは私の方にあります」という情報を教えます。
ここで、もしネットワークXがダウンしてしまい、ルーターAからその経路が消えたとします。
本来であればネットワークXは利用不可能になるはずですが、スプリットホライズンがない場合、以前に情報を共有されていたルーターBが「私の方にネットワークXがあります」とルーターAに教えてしまうことがあります。
ルーターAは自身の直結経路が切れた直後に、ルーターBから「ネットワークXへの道がある」と聞かされると、それを新しい有効なルートだと誤認してしまいます。
その結果、ルーターAはルーターBへ、ルーターBはルーターAへと、互いに存在しない目的地へパケットを投げ合う「ループ」が完成してしまいます。
カウントトゥインフィニティ(無限遠へのカウント)
ループが発生すると、各ルーターは目的地までの距離(メトリック)を1ずつ増やしながら情報を更新し続けます。
ルーターAはルーターBからの情報を信じ、ルーターBはまたルーターAからの情報を信じて距離を増やしていくこの現象を「カウントトゥインフィニティ(Count-to-Infinity)」と呼びます。
例えばRIPの場合、メトリックの最大値は「15」と定義されており、「16」になると到達不能(無限遠)とみなされます。
スプリットホライズンが機能していないと、この最大値に達するまで無駄な更新トラフィックが流れ続け、CPUや帯域を圧迫することになります。
このような深刻なネットワーク遅延や通信不能状態を未然に防ぐのが、スプリットホライズンの真価です。
スプリットホライズンの仕組みと動作
スプリットホライズンの仕組みは非常にシンプルですが、非常に強力です。
具体的な動作原理を以下のステップで確認してみましょう。
1. ルーターAが、あるネットワークの情報をシリアルインターフェースs0/0から受信します。
2. ルーターAはその情報を自身のルーティングテーブルに登録します。
3. 次のルーティングアップデートの際、ルーターAは他の全てのインターフェースからはその情報を送信しますが、受信したインターフェースであるs0/0からはその情報を送信しません。
「その情報を教えてくれた本人に、同じ情報を教え返す必要はない」という論理に基づいてフィルタリングを行っているのです。
これにより、先ほどのルーターAとルーターBの例であれば、ルーターBがルーターAから教えてもらったネットワークXの情報を、わざわざルーターAに送り返すことがなくなります。
結果として、ネットワークXがダウンした際に、ルーターAがルーターBからの誤った情報を受け取る経路を物理的に遮断できます。
スプリットホライズンのメリット
スプリットホライズンを導入することで得られるメリットは主に2つあります。
一つ目は、これまで述べてきた通り「ルーティングループの防止」です。
ネットワークの信頼性を保つ上で、ループの防止は最優先事項と言えます。
二つ目は、「帯域幅の節約」です。
不必要な経路情報を送り返さないため、ルーティングアップデートに含まれるデータの量が削減されます。
特に低速な回線を使用している環境では、微々たるデータの削減もネットワーク全体のパフォーマンス向上に寄与します。
ポイズンリバース(Poison Reverse)との違い
スプリットホライズンの動作をさらに強化した手法として、「ポイズンリバース(Poison Reverse)」があります。
両者は混同されやすいですが、挙動には明確な違いがあります。
スプリットホライズンが「情報を送らない」のに対し、ポイズンリバースは「到達不能であることを示す値(メトリック最大値)をセットして送り返す」という動作をします。
「ネットワークXは私からも到達できません(無限遠です)」という情報を明示的に返すことで、受信したルーターは即座にその経路が無効であることを確信できます。
これにより、情報が送られてこないことでタイムアウトを待つよりも、遥かに速くネットワークの収束(コンバージェンス)を実現できます。
ただし、ポイズンリバースは情報を送り返すため、純粋なスプリットホライズンに比べるとわずかにトラフィック量が増加するという側面も持っています。
スプリットホライズンが課題となる環境
万能に見えるスプリットホライズンですが、特定のネットワークトポロジーにおいては、逆に通信を阻害してしまうケースがあります。
その代表例が、「NBMA(Non-Broadcast Multi-Access)」環境です。
例えば、フレームリレー(Frame Relay)や、近年の技術であればハブ&スポーク型のVPN構成などがこれに該当します。
中心となるハブ(Hub)ルーターがあり、そこに複数のスポークルーター(Spoke)が接続されている構成を想像してください。
この構成では、全てのスポークルーター間の通信はハブを経由します。
スポークAから送られた経路情報は、ハブの同じ物理インターフェースで受信され、そのまま同じインターフェースからスポークBへ転送される必要があります。
しかし、ここでハブ側でスプリットホライズンが有効になっていると、「同じインターフェースから受信した情報は送り返さない」というルールが仇となります。
ハブがスポークAから受け取った情報をスポークBに伝えることができず、スポークBはスポークAのネットワークへ到達できなくなってしまいます。
解決策:スプリットホライズンの無効化やサブインターフェース
このようなケースでは、管理者が明示的にスプリットホライズンを無効化(no ip split-horizonコマンドなど)する必要があります。
もしくは、物理インターフェースを論理的に分割する「サブインターフェース」を使用することで、論理的に別々の口として扱うという対策が取られます。
技術の特性を理解した上で、環境に合わせた適切な設定を行うことが、ネットワークエンジニアの腕の見せ所と言えるでしょう。
主要プロトコルにおけるスプリットホライズンの実装
現在広く使われているプロトコルにおいて、スプリットホライズンがどのように扱われているかをまとめました。
| プロトコル | スプリットホライズンの扱い | 特徴 |
|---|---|---|
| RIP v1 / v2 | 標準で有効 | ルーティングループ防止の主要な手段。 |
| EIGRP | 標準で有効 | 高度な計算アルゴリズム(DUAL)と併用される。 |
| BGP | iBGPで適用 | AS内部でのループ防止に「iBGPスプリットホライズン」が使われる。 |
| OSPF | 使用しない | リンクステート型のため、SPFアルゴリズムでループを回避する。 |
表から分かる通り、リンクステート型プロトコルであるOSPFなどは、そもそもネットワークの全貌を把握しているため、スプリットホライズンのような単純なルールに頼る必要がありません。
一方で、BGP(境界ゲートウェイプロトコル)においても、AS(Autonomous System)内でのループを防ぐために、同様の概念が適用されている点は非常に興味深いポイントです。
まとめ
スプリットホライズンは、IPルーティングの世界において、シンプルながらも極めて重要な役割を果たしている「守りの技術」です。
「入ってきた口には返さない」という明快なルールによって、ネットワークを崩壊させかねないルーティングループの脅威を退けています。
もちろん、NBMA構成のような例外的なケースでは注意が必要ですが、その基本的な仕組みを理解しておくことは、トラブルシューティングやネットワーク設計において大きな武器となります。
今回の記事で解説した以下のポイントをぜひ覚えておいてください。
- スプリットホライズンはルーティングループを防ぐための機能。
- 受信したインターフェースと同じ場所へ、その情報を送り返さない。
- ディスタンスベクター型プロトコル(RIP, EIGRPなど)で重要。
- ハブ&スポーク環境では通信障害の原因になることもあるため、設定変更が必要な場合がある。
ルーティングの仕組みは一見複雑に見えますが、スプリットホライズンのような一つ一つの論理的な積み重ねによって、私たちのインターネット通信は支えられているのです。
