スプリットホライズン

スプリットホライズン

 ルーティング(Routing)とは、コンピュータネットワーク上のデータパケットが送信される際に、どの経路(ルート)を辿って送信されるかを決定するプロセスのことです。ルーティングには、静的ルーティングと動的ルーティングの2種類があります。

 動的ルーティングにおいて、ルーター同士がお互いに情報を共有し、ネットワークのトポロジー変更に合わせて自動的に経路を再計算するためのメカニズムがあります。スプリットホライズン(Split Horizon)は、この動的ルーティングにおいて、ルーティング情報を他のルーターに送信する際に、受信した経路情報を送信元に返送しないことを指します。これは、経路情報がルーター同士の間でループすることを防ぎ、ルーティングの正確性と安定性を確保するために行われます。

 例えば、ルーターAがルーターBから経路情報を受信した場合、スプリットホライズンを実行している場合、ルーターAはその情報をルーターCに送信する際に、自身がその情報の出所であるルーターBに向けて送信しないことになります。このように、同じ情報が同じ経路をたどることを防ぎ、ルーティングループを回避します。

 ただし、スプリットホライズンは、ある特定の条件下では正確なルーティング情報を伝えられないことがあります。そのため、より複雑なルーティングプロトコルでは、スプリットホライズンに代わるメカニズムが使用されることもあります。

 スプリットホライズンには、2つの種類があります。一つは、単純なスプリットホライズン(Simple Split Horizon)で、もう一つは、スプリットホライズンとポイズニング(Split Horizon with Poison Reverse)です。

 単純なスプリットホライズンでは、ルーター同士が直接接続されている場合に限り、ルーターから送信された経路情報を受信元に返送しないようにします。これは、ルーター同士の接続状態が変わることがないため、ルーティングループの発生が起こりにくいと考えられるからです。

 一方、スプリットホライズンとポイズニングでは、ルーター同士が複数の中継点を経由して接続されている場合にも適用されます。スプリットホライズンの基本的な考え方に加えて、ポイズニングでは、受信した経路情報を送信元に返送する代わりに、その情報のメトリック値を無限大(Infinity)に設定することで、その経路が使用不可能であることを伝えます。これにより、ルーティングループが発生した場合でも、情報が正確に配信されるようになります。

 ただし、スプリットホライズンとポイズニングを適用する場合でも、ルーティングループが発生する可能性が完全に除去できるわけではありません。そのため、より高度なルーティングアルゴリズムや、複数のルーティングプロトコルを組み合わせて使用することが推奨されます。