リバースパスフォワーディング(RPF)とは
リバースパスフォワーディング(Reverse Path Forwarding, RPF)は、IPネットワークにおいて、主にマルチキャスト
パケットを効率的に転送するための
アルゴリズムです。RPFは、マルチキャストルーティングにおけるルーティングループの発生を防ぎ、また
ユニキャストルーティングにおいては、IPアドレススプーフィングを検知し、その対策を講じる役割を担います。
RPFの基本原理
RPFの基本的な考え方は、
パケットの転送を決定する際に、
パケットが来た「逆経路」をチェックすることです。具体的には、
ルーターが受信した
パケットの送信元アドレスを、自身の
ルーティングテーブルと照合します。送信元アドレスが
ルーティングテーブルに存在する場合、
パケットは転送されます。一方、
ルーティングテーブルにない場合は、
パケットは破棄されます。このプロセスを「RPFチェック」と呼びます。
マルチキャストRPF
マルチキャストRPFは、マルチキャスト
ルーティングプロトコル(例えば、MSDPやPIM-SM)と共に利用され、マルチキャスト
パケットの転送を効率化します。マルチキャストルーティングでは、
パケットの転送判断は送信元アドレスに基づき行われ、これは宛先アドレスに基づいて判断する
ユニキャストルーティングとは対照的です。
マルチキャスト
パケットが
ルーターに届くと、
ルーターは受信したインタフェースから到達可能なネットワークのリストを検索します。そして、
パケットの送信元IPアドレスが自身の
ルーティングテーブルに存在する場合に限り、その
パケットはマルチキャストグループに参加している他のインタフェースに転送されます。
ルーティングテーブルに送信元IPアドレスが存在しない場合は
パケットは破棄されます。
RPFチェックは、特に冗長構成のマルチキャストトポロジーにおいて、同一の
パケットが複数のインタフェースに届く状況で、ルーティングループを防止するために不可欠です。もしRPFチェックがなければ、
パケットは無限に転送され続け、ネットワークの速度低下を引き起こす可能性があります。
RPFチェックの前提条件
RPFチェックが正常に機能するためには、以下の2つの前提条件を満たす必要があります。
1.
ユニキャストルーティングテーブルが正確かつ収束していること:RPFチェックは
ユニキャストルーティングテーブルに依存しているため、このテーブルが正確で最新の状態であることが重要です。
2.
送信者への経路(フォワードパス)と送信者からの経路(リバースパス)が対称であること:送信者から
ルーターまでの最短経路上のトラフィックが、RPFチェックによって拒否されないように、経路が対称であることが理想的です。しかし、経路が非対称である場合、マルチキャストツリーが最適状態にならないことがあります。
ユニキャストRPF(uRPF)は、RFC 3704で定義されており、「無効なネットワークからのトラフィックは受け付けない」という考え方に基づいています。これは、例えば、プライベートアドレスを送信元とするトラフィックをブロックすることで、IPアドレススプーフィングによる攻撃を防御する目的があります。
uRPFは、
ルーターが自身のルーティング情報(RIBまたはFIB)を使用して、受信した
パケットの送信元アドレスを厳しく制限することで、
パケットの送信元が有効なホストであるかを検証します。送信元アドレスから
ルーターへの最適な経路を通って
パケットが届いた場合にのみ、その
パケットは転送されます。これにより、設定ミスや悪意のある送信元からの
パケットを効果的にブロックできます。
しかし、ルーティングが非対称な環境では、uRPFを実装する際に注意が必要です。なぜなら、正当なトラフィックが誤ってフィルタリングされる可能性があるからです。
uRPFのモード
uRPFには、その動作モードによって以下の3つのタイプがあります。
Strictモード(厳密なリバースパスフォワーディング):受信した
パケットが到達したインタフェースが、送信元アドレスへの最適なリバースパスでない場合、
パケットは破棄されます。最も厳格なモードです。
Feasibleモード:FIBが送信元アドレスへの複数のオルタネートルートを保持している場合、受信したインタフェースがそのいずれかと一致すれば
パケットは転送されます。Strictモードよりも緩やかな設定です。
*
Looseモード:受信した
パケットの送信元アドレスがFIBと照合され、
ルーター上のどのインタフェースからも送信元アドレスに到達できない場合にのみ
パケットは破棄されます。最も緩やかなモードです。
uRPFの誤解
uRPFをReverse Path Filtering(フィルタリング)と誤解するケースがありますが、これは正しくありません。uRPFの目的は、
パケットの転送可否を決定することであり、RFC 3704に示されるように、正しくは「RPFチェックを通過すればトラフィックがForwarding(転送)される」と理解する必要があります。
まとめ
リバースパスフォワーディング(RPF)は、ネットワークの安定性とセキュリティを向上させるために重要な技術です。特に、マルチキャストルーティングにおけるルーティングループの防止や、
ユニキャストルーティングにおけるIPアドレススプーフィング対策に有効です。uRPFを実装する際には、ネットワーク環境やルーティングの特性を十分に理解し、適切なモードを選択することが重要となります。