OSPFでのルートフィルタの動作概要

OSPFでは、ルータ同士でLSAを交換します。LSAの内容は、必ずしもネットワークアドレス/サブネットマスクではありません。この点が、RIPやEIGRPのディスタンスベクタ系ルーティングプロトコルと大きく違う点です。そして、OSPFのルートフィルタの動作がRIPやEIGRPのルートフィルタと異なる理由です。

ディストリビュートリストやプレフィクスリストは、permit/denyするネットワークアドレスやサブネットマスクを特定してフィルタをかけます。そのため、ネットワークアドレス/サブネットマスクが含まれているとは限らないLSAをフィルタすることができません。また、OSPFの動作上、エリア内のすべてのOSPFルータは同一のLSDBを持ちます。特定のルータだけでLSAをフィルタをかけてしまうと、LSDBの同期を保つことができません。

ただ、ややこしいことに、ディストリビュートリストやプレフィクスリストがOSPFでまったく使えないわけではないです。OSPFでのディストリビュートリスト/プレフィクスリストの動作は、次のようになっています。

  • インタフェースを対象としたout方向は機能しない
  • in方向はルーティングテーブルにルートを登録するときに機能する

関連記事

ディストリビュートリスト/プレフィクスリストの設定について、以下の記事をご覧ください。

インタフェースを対象としたout方向のフィルタ

インタフェースを指定したoutの方向のフィルタは機能しません。その理由は、前述のようにディストリビュートリスト/プレフィクスリストでLSAのフィルタができないからです。

図 インタフェースを対象としたout方向のフィルタ
図 インタフェースを対象としたout方向のフィルタ

なお、outの方向でインタフェースを指定しない場合は、全インタフェースが対象です。このときもフィルタはかかりません。outのあとにルーティングプロトコルを指定することもあります。これは、OSPFへの再配送時のフィルタです。再配送時のフィルタは、LSAタイプ5のフィルタでこの場合はフィルタがかかります。

inの方向のフィルタ

inの方向でも、ディストリビュートリスト/プレフィクスリストではやはりLSAのフィルタはできません。受信したLSAはLSDB内に格納されます。LSDBから、SPFアルゴリズムでルーティングテーブルにルート情報を登録します。このときはネットワークアドレス/サブネットマスクの形になっているので、ディストリビュートリスト/プレフィクスリストでのフィルタが可能です。つまり、ルーティングテーブルに登録するかしないかを決めるのが、OSPFでのinの方向のフィルタです。

図 in方向のフィルタ
図 in方向のフィルタ

なお、in方向でインタフェースを指定した場合は、そのインタフェースが出力インタフェースとなるルートが対象です。

OSPFの仕組み