RPF(Reverse Path Forwarding)チェックとは

RPFチェックとは、受信したマルチキャストパケットが送信元から最短経路で転送されてきているかどうかをチェックすることです。ネットワーク構成によっては、マルチキャストパケットがループしたり重複したりする場合があります。RPFチェックによって、送信元から最短経路で転送されているマルチキャストパケットのみをルーティング対象とします。

RPFチェックの動作

次の図のように、マルチキャストソースからマルチキャストレシーバまで複数の経路がある場合、マルチキャストパケットが重複してしまう可能性が考えられます。

図 マルチキャストパケットがループする例
図 マルチキャストパケットがループする例

マルチキャストパケットの送信元IPアドレスは、マルチキャストソースのIPアドレスです。そのIPアドレスに到達するための最短経路はユニキャストルーティングテーブルに載せられています。ユニキャストルーティングテーブル上のルート情報の出力インタフェースは、目的のあて先までの最短経路のインタフェースです。マルチキャストパケットを受信したインタフェースと送信元IPアドレスに対するルート情報の出力インタフェースが一致していれば、そのマルチキャストパケットは最短経路でルーティングされてきたとみなすことができます。このような場合、RPFチェックは成功です。RPFチェックに成功したマルチキャストパケットのみをディストリビューションツリーにしたがってルーティングします。なお、RPFチェックが成功するインタフェースをRPFインタフェースと呼びます。

最短経路でルーティングされてきていないマルチキャストパケットを受信する場合、つまりRPFチェックが失敗した場合はパケットを破棄します。
RPFチェックを正しく行うためには、ユニキャストルーティングが完成している必要があります。ユニキャストルーティングの設定が不完全でルーティングテーブルが正しく構成されていないと、RPFチェックを正しく行うことができません。その結果、マルチキャストルーティングもうまく動作しなくなることがあります。マルチキャストルーティングを行う前提として、ユニキャストルーティングが完成していることが必要なので注意してください。

RPFチェックの例

具体的にRPFチェックの例を考えましょう。

図 RPFチェックの例
図 RPFチェックの例

マルチキャストパケットをSerial0/1で受信しました。このパケットの送信元IPアドレス192.168.1.100への最短経路のインタフェースはユニキャストルーティングテーブルよりSerial0/0です。すると、このマルチキャストパケットは最短経路でルーティングされたとはみなせません。RPFチェック失敗となるので、パケットを破棄します。

同じマルチキャストパケットをSeria0/0で受信した場合は、最短経路のインタフェースで受信していることになります。RPFチェックが成功となり、マルチキャストパケットはルーティング対象です。

このようなRPFチェックをすべてのマルチキャストルータが行います。これにより、マルチキャストパケットの重複やループを防ぐことができます。なお、CiscoルータではRPFインタフェースをshow ip rpfコマンドで確認することができます。

なお、RPFチェックを行うために、マルチキャストパケットを受信するたびにユニキャストルーティングテーブルを参照しているわけではありません。ディストリビューションツリーを作成するときに、ユニキャストルーティングテーブルからRPFインタフェースを識別して、RPFインタフェースで受信しているかどうかでRPFチェックを行います。

RPFインタフェースはユニキャストルーティングテーブルから決定されますが、ip mrouteコマンドでスタティックに設定することもできます。

IPマルチキャストの仕組み