15.4.2 IPv4 PIM-SM
PIM-SMはルータ間で使用されるマルチキャストルーティングプロトコルで,隣接情報やマルチキャスト配送ツリーへの参加および刈り込み要求などをやり取りすることによって,受信したマルチキャストパケットの中継および廃棄処理を実施します。PIM-SMは最初にランデブーポイント経由でマルチキャストパケットを中継します。そのあと,既存のユニキャストルーティングを利用することによって,マルチキャストパケット送信元からの最短パスを使用して最短パス経由に切り替え,マルチキャストパケットを中継します。
本装置が送信するPIM-SMフレームのフォーマットおよび設定値はRFC2362に従います。
- 〈この項の構成〉
(1) PIM-SMメッセージサポート仕様
PIM-SMメッセージのサポート仕様を次の表に示します。
メッセージタイプ |
機能 |
---|---|
PIM-Hello |
PIM近隣ルータの検出 |
PIM-Join/Prune |
マルチキャスト配送ツリーの参加および刈り込み |
PIM-Assert |
Forwarderの決定 |
PIM-Register |
マルチキャストパケットをランデブーポイント宛てにIPカプセル化する。 |
PIM-Register-stop |
Registerメッセージを抑止する。 |
PIM-Bootstrap |
BSRを決定する。また,ランデブーポイントの情報を配信する。 |
PIM-Candidate-RP-Advertisement |
ランデブーポイントがBSRに自ランデブーポイント情報を通知する。 |
(2) 動作
各PIM-SMルータはIGMPで学習したグループ情報をランデブーポイントに通知します。ランデブーポイントは各PIM-SMルータからグループ情報を受信することで各グループの存在を認識します。したがって,PIM-SMは最初にマルチキャストパケットをその送信元ネットワークからランデブーポイント経由ですべてのグループメンバーに配送するために,送信元を頂点としたランデブーポイント経由配送ツリーを形成します。次に送信元から各グループに対して最短パスで到達できるように,既存のユニキャストルーティングを使用して送信元からの最短パス配送ツリーを形成します。これによって送信元から各グループメンバーへのマルチキャストパケット中継は最短パスで行われます。PIM-SMの動作概要を次の図に示します。
(a) ランデブーポイントおよびブートストラップルータ(BSR)
ランデブーポイントルータおよびブートストラップルータ(BSR)はコンフィグレーションで設定します。本装置ではBSRはネットワーク(VPN)当たり最大16台とします。BSRはランデブーポイントの情報(IPアドレスなど)をすべてのマルチキャストインタフェースに通知します。この通知はホップバイホップですべてのマルチキャストルータに通知されます。ランデブーポイントルータおよびBSR以外のルータでは,ランデブーポイントルータおよびBSR方向のインタフェースにPIMを設定してください。ランデブーポイントおよびBSRの役割を次の図に示します。
この図で,BSR(PIM-SMルータC)はランデブーポイント情報をすべてのマルチキャストインタフェースに通知します。ランデブーポイント情報を受信したルータはランデブーポイントのIPアドレスを学習し,受信したインタフェース以外でマルチキャストルータが存在するすべてのインタフェースにランデブーポイント情報を通知します。
(b) ランデブーポイントへのグループ参加情報の通知
各ルータはIGMPで学習したグループ参加情報をランデブーポイントに通知します。ランデブーポイントはグループ情報を受信することでグループの存在をインタフェースごとに認識します。ランデブーポイントへのグループ参加情報の通知を次の図に示します。
この図で,各ホストはIGMPでグループ1に参加します。PIM-SMルータDおよびPIM-SMルータEはグループ1情報を学習し,ランデブーポイント(PIM-SMルータC)にグループ1情報を通知します。ランデブーポイント(PIM-SMルータC)はグループ1情報を受信することによって,受信したインタフェースにグループ1が存在することを学習します。
(c) ランデブーポイント経由のマルチキャストパケット通信(カプセル化)
送信者S1がグループ1宛てのマルチキャストパケットを送信した場合,PIM-SMルータAはそのマルチキャストパケットをランデブーポイント(PIM-SMルータC)宛てにIPカプセル化(Registerパケット)して送信します(ランデブーポイントのIPアドレスは(a)で学習済み)。ランデブーポイント(PIM-SMルータC)はIPカプセル化したパケットを受信すると,デカプセル化してグループ1が存在するインタフェースにグループ1宛てのマルチキャストパケットを中継します(グループ1の存在は(b)で学習済み)。PIM-SMルータDおよびPIM-SMルータEは,グループ1宛てのマルチキャストパケットを受信すると,グループ1が存在するインタフェースにパケットを中継します(グループ1の存在は(b)のIGMPで学習済み)。ランデブーポイント経由のマルチキャストパケット通信(カプセル化)を次の図に示します。
(d) ランデブーポイント経由のマルチキャストパケット通信(デカプセル化)
ランデブーポイント(PIM-SMルータC)はIPカプセル化したパケットを受信すると,カプセル化を解除してグループ1が存在するインタフェースにグループ1宛てのマルチキャストパケットを中継します。
ランデブーポイントはこの処理後,送信元サーバへの最短経路方向にグループ1情報を通知します。グループ1情報を受信したPIM-SMルータBおよびPIM-SMルータAは受信したインタフェースにグループ1の存在を認識(学習)します。PIM-SMルータAは送信元サーバが送信したグループ1宛てのマルチキャストパケットをIPカプセル化しないで該当するインタフェースに中継します。グループ1宛てのマルチキャストパケットを受信したPIM-SMルータB,PIM-SMルータC,PIM-SMルータD,PIM-SMルータEはグループ1が存在するインタフェースに中継します。ランデブーポイント経由のマルチキャストパケット通信(デカプセル化)を次の図に示します。
(e) 最短パスのマルチキャストパケット通信
PIM-SMルータDおよびPIM-SMルータEは,送信元サーバのグループ1宛てマルチキャストパケットを受信した場合((c)で説明),PIM-SMルータDおよびPIM-SMルータEは送信者S1に対して最短のパス(既存のユニキャストルーティング情報)の方向にグループ1情報を通知します。PIM-SMルータAは,PIM-SMルータDおよびPIM-SMルータEからグループ1情報を受信すると,受信したインタフェースにグループ1の存在を認識し,送信元サーバのグループ1宛てのマルチキャストパケットを受信すると該当するインタフェースに中継します。最短パスのマルチキャストパケット通信を次の図に示します。
(f) マルチキャスト配送ツリーの刈り込み
PIM-SMルータDは,ホストがIGMPでグループ1から離脱した場合,グループ1情報を通知していたインタフェースに対してグループ1の刈り込み情報を通知します。PIM-SMルータAはグループ1の刈り込み通知を受信すると,受信したインタフェースに対してグループ1宛てのマルチキャストパケットの中継を中止します。マルチキャスト配送ツリーの刈り込みを次の図に示します。
(g) ランデブーポイントの選出
各グループのランデブーポイント候補が複数存在する場合は,RFC2362およびRFC4601に記載されている選出アルゴリズムに従って,ランデブーポイントを選出します。ランデブーポイントの選出アルゴリズムは,コンフィグレーションコマンドip pim rp-mapping-algorithmで指定します。なお,ランデブーポイントの選出アルゴリズムは,ネットワーク内で統一してください。
RFC2362およびRFC4601のランデブーポイントの選出条件,および各選出条件の優先順位を次の表に示します。
選出項目 |
選出条件 |
優先順位 |
|
---|---|---|---|
RFC2362 |
RFC4601 |
||
ランデブーポイントが管理するグループアドレス |
最長一致 |
− |
1 |
ランデブーポイントの優先度※1 |
最小値 |
1 |
2 |
ランデブーポイントのハッシュ値※2 |
最大値 |
2 |
3 |
ランデブーポイントのIPアドレス |
最大値 |
3 |
4 |
(3) 近隣検出
PIM-SMルータはマルチキャストができるすべてのインタフェースに定期的にPIM-Helloメッセージを送信します。PIM-HelloメッセージはAll-PIM-RoutersIPマルチキャストグループアドレス宛て(224.0.0.13)に送信します。このメッセージを受信することで,近隣のPIMルータを動的に検出します。本装置はPIM-HelloメッセージのGeneration IDオプションをサポートしています(RFC4601およびdraft-ietf-pim-sm-bsr-07に準拠)。
Generation IDはマルチキャストインタフェースごとに持つ32ビットの乱数で,PIM-Helloメッセージ送信時にGeneration IDを付加して送信します。Generation IDはマルチキャストインタフェースがUp状態になるたびに再生成します。受信したPIM-HelloメッセージにGeneration IDオプションが付加されていればGeneration IDを記憶し,Generation IDの変化によって近隣装置のインタフェース障害を検出します。Generation IDの変化を検出すると,近隣装置情報の更新とPIM-Helloメッセージ,PIM BootstrapメッセージおよびPIM Join/Pruneメッセージを定期広告のタイミングを待たずに送信します。これによって,マルチキャスト経路情報を速やかに再学習できます。
(4) Forwarderの決定
同一LAN上に複数のPIM-SMルータを接続している場合,そのネットワークにマルチキャストパケットが重複してフォワードされる可能性があります。
PIM-SMルータは同一LAN上に複数のPIM-SMルータが存在し,二つ以上のルータがそのLANにマルチキャストパケットをフォワードする場合,PIM-Assertメッセージを使ってそのマルチキャスト経路のプリファレンスとメトリックを比較し,送信元ネットワークに対して最適な一つのルータをフォワーダとして選択します。
フォワーダとなった一つのルータだけが,そのLANでのマルチキャストパケットを中継することで,マルチキャストパケット中継の重複を抑止します。
PIM-Assertメッセージによるフォワーダを決定する流れを次に示します。
-
プリファレンスを比較して,値が小さいルータがフォワーダになります。
-
プリファレンスが等しい場合に,メトリックを比較して,値が小さいルータがフォワーダになります。
-
メトリックが等しい場合に,各ルータのIPアドレスを比較して,IPアドレスが大きいルータがフォワーダになります。
本装置はマルチキャスト経路のプリファレンスを101,メトリックを1024固定でPIM-Assertメッセージを送信します。ただし,送信者と直接接続する場合は,プリファレンスを0,メトリックを0固定でPIM-Assertメッセージを送信します。
Forwarderの決定を次の図に示します。
(5) DRの決定および動作
同一LAN上で複数のPIM-SMルータが存在する場合,そのLAN上での中継代表ルータ(DR)を決定します。そのインタフェース上で一番大きいIPアドレスのPIM-SMルータがDRとなります。受信ホストからのグループ参加情報はDRがランデブーポイント宛てにグループ参加情報の通知を行います。送信元サーバが送信したマルチキャストパケットはDRがIPカプセル化してランデブーポイントに送信します。DRの動作を次の図に示します。
PIM-SMルータAとPIM-SMルータBのIPアドレスを比較してPIM-SMルータBのIPアドレスが大きい場合,PIM-SMルータBがDRとなってランデブーポイントにグループ参加情報の通知を行います。PIM-SMルータDとPIM-SMルータEのIPアドレスを比較してPIM-SMルータEのIPアドレスが大きい場合,PIM-SMルータEがDRとなってランデブーポイントに対してIPカプセル化パケットを中継します。
(6) 冗長経路時の注意事項
次の図に示すような冗長構成の場合,マルチキャストパケットがフォワードされないので注意してください。冗長経路がある場合は,その経路上のすべてのルータでPIMの設定が必要になります。
(7) PIM-SMの付加機能
(a) ブートストラップメッセージ受信抑止機能
運用中のマルチキャストネットワークに新しいネットワークを構築する場合,BSR候補の設定を誤るとそのBSR候補がBSRとなって,接続したマルチキャストネットワーク全体のマルチキャスト通信が停止するおそれがあります。
本機能は,新規ネットワークと接続するインタフェースにコンフィグレーションコマンドip pim accept-bootstrapを設定することで,新規ネットワークでの誤った設定によって受信したPIM-Bootstrapメッセージを廃棄する機能です。この結果,運用中のマルチキャストネットワークを保護できます。本機能の動作を次の図に示します。
ネットワークの境界にある本装置では,新規ネットワーク上のBSR候補が送信するPIM-Bootstrapメッセージを廃棄します。これによって,新規ネットワークのPIM-Bootstrapメッセージが既存ネットワーク内へ中継されるのを防ぎます。一方,既存ネットワーク上のBSRが送信するPIM-Bootstrapメッセージは新設ネットワークに中継されます。
(8) PIM-SMタイマ仕様
PIM-SMが使用するタイマ値を次の表に示します。
タイマ名 |
内容 |
デフォルト値(秒) |
コンフィグレーションによる 設定範囲(秒) |
備考 |
---|---|---|---|---|
Hello-Period |
Helloの送信周期 |
30 |
5〜3600 |
− |
Hello-Holdtime |
隣接関係の保持期間 |
105 |
3.5×Hello-Period |
左記計算式より算出。 |
Assert-Timeout |
Assertによる中継抑止期間 |
180 |
− |
− |
Join/Prune-Period |
Join/Pruneの送信周期 |
60 |
30〜3600 |
最大で+50%の揺らぎが生じます。 |
Join/Prune-Holdtime |
経路情報および中継先インタフェースの保持期間 |
210 |
3.5×Join/Prune-Period |
左記計算式より算出。 |
Deletion-Delay-Time |
Prune受信後のマルチキャスト中継先インタフェースの保持期間※1 |
1/3×Join/Prune-Holdtime |
0〜300 |
※2 |
Data-Timeout |
中継エントリの保持期間 |
210 |
0(無期限), 60〜43200 |
最大で+90秒の誤差が発生します。 |
Register-Supression-Timer |
カプセル化送信の抑止期間 |
60 |
− |
最大で±30秒の揺らぎが生じます。 |
Probe-Time |
カプセル化送信の再開確認を送信する時間 |
5 |
5〜60 |
デフォルトの5秒ではRegister-Supression-Timerが満了する5秒前にカプセル化送信の再開確認(Null-Register)を一度だけ送信します。※3 |
C-RP-Adv-Period |
ランデブーポイント候補の通知周期 |
60 |
− |
− |
RP-Holdtime |
ランデブーポイント保持期間 |
150 |
2.5×C-RP-Adv-Period |
左記計算式より算出。 |
Bootstrap-Period |
BSRメッセージ送信周期 |
60 |
− |
− |
Bootstrap-Timeout |
BSRメッセージの保持期間 |
130 |
2×Bootstrap-Period+10 |
左記計算式より算出。 |
BS_Rand_Override |
BSR切り替え遅延 |
5〜23 |
− |
− |
Negative-Cache-Holdtime (PIM-SM) |
ネガティブキャッシュの保持期間 |
210 |
10〜3600 |
PIM-SSMの場合は3600秒の固定。 |
(9) PIM-SM使用上の注意事項
PIM-SMを使用したネットワークを構成する場合には次の制限事項に注意してください。本装置はRFC2362(PIM-SM仕様)に準拠していますが,ソフトウェアの機能制限から一部RFCとの差分があります。RFCとの差分を次の表に示します。