スプリットホライズンの問題点
ハブ&スポークトポロジ
通常、スプリットホライズンはすべてのインタフェースで有効になっています。しかし、フレームリレーやATMなどのマルチアクセスネットワークでは、スプリットホライズンによって正しく通信ができなくなってしまうことがあります。たとえば、次の図のネットワークを考えましょう。
本社と2つの支社がフレームリレーで接続されています。フレームリレーのPVCは本社-支社1間と本社-支社2間のみ契約していて、支社1と支社2は直接通信を行うことができません。もし、支社1と支社2で通信を行うのであれば、いったん本社を経由して行うことになります。このようなトポロジーを「ハブ&スポーク」と呼びます。「ハブ」が本社、「スポーク」が支社です。
ハブ&スポークトポロジでのスプリットホライズンの影響
このネットワークにおいてルータA、ルータB、ルータCでRIPを使ってルーティングしています。スポークである支社のルータB、ルータCは自分の配下にあるLANのネットワークエントリをRIPで送信します。それを受信して、ハブルータのルータAのルーティングテーブルは次のようになります。
ルータAのルーティングテーブル
ネットワーク | ネクストホップ | メトリック(ホップ数) |
192.168.1.0/24 | 直接 | 0 |
192.168.100.0/24 | ルータB | 1 |
192.168.200.0/24 | ルータC | 1 |
さて、ルータAのRIPアップデートには、どのようなエントリが含まれるのでしょう。
スプリットホライズンが有効になっていると、エントリを学習したインタフェースからのアップデートには、そのエントリが含まれなくなります。
192.168.100.0と192.168.200.0というエントリは、共にフレームリレーに接続されているシリアルインタフェースから学習しています。ですから、スプリットホライズンによって、このシリアルインタフェースから送信するRIPアップデートには、192.168.100.0と192.168.200.0のエントリが含まれなくなります。
ルータAがRIPアップデートとして通知するエントリは、(192.168.1.0,1)のみです。
結局、ルータB、ルータCのルーティングテーブルは以下のようになります。本社のLANのネットワークである192.168.1.0/24のネットワークには到達できるようになりますが、お互いのLANのネットワークにはルーティングテーブルのエントリがないので到達できなくなってしまいます。
ルータBのルーティングテーブル
ネットワーク | ネクストホップ | メトリック(ホップ数) |
192.168.1.0/24 | ルータA | 1 |
192.168.100.0/24 | 直接 | 0 |
ルータCのルーティングテーブル
ネットワーク | ネクストホップ | メトリック(ホップ数) |
192.168.1.0/24 | ルータA | 1 |
192.168.200.0/24 | 直接 | 0 |
スプリットホライズンの問題点の解決方法
ハブ&スポークトポロジーにおけるこのようなスプリットホライズン問題を解決するためには、次のような方法が考えられます。
- ハブルータでスプリットホライズンを無効にする
- ハブルータでPVCごとに論理インタフェース(サブインタフェース)を作成する
この問題を解決するためには、スプリットホライズンを無効にすることが、最も簡単な方法だと思います。しかしながら、スプリットホライズンを無効にすることによって、潜在的にルーティングループが発生する可能性があるということを認識しておかなければいけません。
また、スプリットホライズンは、物理インタフェースでも論理インタフェースでも同様に適用されます。そのため、物理インタフェースを複数の論理インタフェースに分割して、ハブとスポーク間のそれぞれのPVCを別々のIPサブネットと対応付けることによって、スプリットホライズンの影響をなくすことができます。ただし、フレームリレーネットワークにおけるIPアドレッシングの変更が必要になります。