26.4.2 IPv6 PIM-SM
PIM-SMはルータ間で使用されるマルチキャストルーティングプロトコルです。隣接情報やマルチキャスト配送ツリーへの参加および刈り込み要求などをやり取りすることによって,受信したマルチキャストパケットの中継および廃棄処理を実施します。PIM-SMは最初にランデブーポイント経由でマルチキャストパケットを中継します。そのあと,既存のユニキャストルーティングを利用してマルチキャスト送信者への最短パスに切り替えて,マルチキャストパケットを中継します。
- 〈この項の構成〉
 
(1) PIM-SMメッセージサポート仕様
PIM-SMメッセージのサポート仕様を次の表に示します。
(2) 動作
PIM-SMの動作の流れを次に示します。
- 
                  
各PIM-SMルータはMLDで学習したマルチキャストグループ情報をランデブーポイントに通知します。
 - 
                  
ランデブーポイントは各PIM-SMルータからマルチキャストグループ情報を受信すると,各マルチキャストグループの存在を認識します。
 - 
                  
PIM-SMは最初にマルチキャストパケットを送信元ネットワークからランデブーポイント経由ですべてのグループメンバに配送するために,送信者を頂点としたランデブーポイント経由配送ツリーを形成します。
 - 
                  
送信者から各マルチキャストグループに対して最短パスで到達できるように,既存のユニキャストルーティングを使用して送信者からの最短パス配送ツリーを形成します。
 - 
                  
送信者から各グループメンバへ最短パスでマルチキャストパケットを中継します。
 
PIM-SMの動作概要を次の図に示します。
| 
                      | 
               
- 
                  
マルチキャストグループ参加,およびマルチキャストグループ情報の通知
 - 
                  
ランデブーポイント経由でマルチキャストパケットの送信
 - 
                  
最短パスの決定
 - 
                  
最短パスでのマルチキャストパケットの送信
 
(a) ランデブーポイントおよびブートストラップルータ
ランデブーポイントルータおよびブートストラップルータはコンフィグレーションで設定します。IPv4のPIM-SMとIPv6のPIM-SMとで,ランデブーポイントおよびブートストラップルータを設定するルータを別にすることもできます。
ブートストラップルータはランデブーポイントの情報(IPv6アドレスなど)をすべてのマルチキャストインタフェースに通知します。このとき,ホップバイホップで全マルチキャストルータリンクローカル・グループアドレス(ff02::d)宛てに通知されます。ランデブーポイントおよびブートストラップルータの役割を次の図に示します。
| 
                         | 
                  
ブートストラップルータ(PIM-SMルータC)はランデブーポイント情報をすべてのマルチキャストインタフェースに通知します。ランデブーポイント情報を受信したルータはランデブーポイントのIPv6アドレスを学習して,受信したインタフェース以外でマルチキャストルータが存在するすべてのインタフェースにランデブーポイント情報を通知します。
ブートストラップルータおよびランデブーポイントのアドレスは,ブートストラップルータおよびランデブーポイントで設定したループバックインタフェースのアドレスとなります。ブートストラップルータ候補とランデブーポイント候補には,同じIPv6アドレスを指定してください。異なるIPv6アドレスを指定した場合,ブートストラップルータ候補の設定が無効になります。
(b) ランデブーポイントへのマルチキャストグループ参加情報の通知
各ルータはMLDで学習したマルチキャストグループ参加情報をランデブーポイントに通知します。この通知のときに使用される送信元および宛先IPv6アドレスは,それぞれ該当するルータのアドレス(コンフィグレーションコマンドno system-source-addressを設定していないループバックインタフェースに設定したアドレス)になります。ランデブーポイントはマルチキャストグループ情報を受信すると,マルチキャストグループの存在をインタフェースごとに認識します。ランデブーポイントへのマルチキャストグループ参加情報の通知を次の図に示します。
| 
                         | 
                  
各受信者はMLDでマルチキャストグループ1に参加します。PIM-SMルータDおよびPIM-SMルータEはマルチキャストグループ1情報を学習して,ランデブーポイント(PIM-SMルータC)にマルチキャストグループ1情報を通知します。ランデブーポイント(PIM-SMルータC)はマルチキャストグループ1情報を受信すると,受信したインタフェースにマルチキャストグループ1が存在することを学習します。
(c) ランデブーポイント経由のマルチキャストパケット通信(IPカプセル化)
送信者S1がマルチキャストグループ1宛てのマルチキャストパケットを送信した場合,PIM-SMルータAはそのマルチキャストパケットをランデブーポイント(PIM-SMルータC)宛てにIPカプセル化(PIM Registerメッセージ)して送信します。
ランデブーポイント(PIM-SMルータC)はIPカプセル化したマルチキャストパケットを受信すると,IPデカプセル化してマルチキャストグループ1が存在するインタフェースにマルチキャストグループ1宛てのマルチキャストパケットを中継します(マルチキャストグループ1の存在は「(b) ランデブーポイントへのマルチキャストグループ参加情報の通知」で学習済み)。PIM-SMルータDおよびPIM-SMルータEは,マルチキャストグループ1宛てのマルチキャストパケットを受信すると,マルチキャストグループ1が存在するインタフェースにマルチキャストパケットを中継します(マルチキャストグループ1の存在は「(b) ランデブーポイントへのマルチキャストグループ参加情報の通知」のMLDで学習済み)。ランデブーポイント経由のマルチキャストパケット通信(IPカプセル化)を次の図に示します。
| 
                         | 
                  
なお,この通知に使用される送信元IPv6アドレスは,次に示す順で選択されます。
- 
                     
ランデブーポイント候補として指定したループバックインタフェースのIPv6アドレス
 - 
                     
ブートストラップルータ候補として指定したループバックインタフェースのIPv6アドレス
 - 
                     
コンフィグレーションコマンドno system-source-addressが設定されていないループバックインタフェースに設定したIPv6アドレス
 - 
                     
コンフィグレーションコマンドno system-source-addressが設定されている,最小のループバックインタフェースIDを持つループバックインタフェースに設定したIPv6アドレス
 
(d) ランデブーポイント経由のマルチキャストパケット通信(IPデカプセル化)
ランデブーポイント(PIM-SMルータC)はIPカプセル化したマルチキャストパケットを受信すると,IPデカプセル化してマルチキャストグループ1が存在するインタフェースにマルチキャストグループ1宛てのマルチキャストパケットを中継します(「(c) ランデブーポイント経由のマルチキャストパケット通信(IPカプセル化)」で説明)。
ランデブーポイントはこの処理のあと,既存のユニキャストルーティング情報を基に決定された送信者への最短パス方向にマルチキャストグループ1情報を通知します。この通知のときに使用される宛先アドレスは全マルチキャストルータリンクローカル・グループアドレス(ff02::d)です。
マルチキャストグループ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が存在するインタフェースに中継します。ランデブーポイント経由のマルチキャストパケット通信(IPデカプセル化)を次の図に示します。
| 
                         | 
                  
(e) 最短パスのマルチキャストパケット通信
PIM-SMルータDおよびPIM-SMルータEが送信者からのマルチキャストグループ1宛てマルチキャストパケットを受信した場合(「(d) ランデブーポイント経由のマルチキャストパケット通信(IPデカプセル化)」で説明),PIM-SMルータDおよびPIM-SMルータEは送信者に対して最短パス(既存のユニキャストルーティング情報)の方向にマルチキャストグループ1情報を通知します。この通知のときに使用される宛先アドレスは全マルチキャストルータリンクローカル・グループアドレス(ff02::d)です。
PIM-SMルータAは,PIM-SMルータDおよびPIM-SMルータEからマルチキャストグループ1情報を受信すると,受信したインタフェースにマルチキャストグループ1の存在を認識し,送信者のマルチキャストグループ1宛てのマルチキャストパケットを受信すると該当するインタフェースに中継します。最短パスのマルチキャストパケット通信を次の図に示します。
| 
                         | 
                  
(f) マルチキャスト配送ツリーの刈り込み
PIM-SMルータDは,受信者がMLDでマルチキャストグループ1から離脱した場合,マルチキャストグループ1情報を通知していたインタフェースに対してマルチキャストグループ1の刈り込み情報を通知します。この通知のときに使用される宛先アドレスは全マルチキャストルータリンクローカル・グループアドレス(ff02::d)です。
PIM-SMルータAはマルチキャストグループ1の刈り込み通知を受信すると,受信したインタフェースに対してマルチキャストグループ1宛てのマルチキャストパケットの中継を中止します。マルチキャスト配送ツリーの刈り込みを次の図に示します。
| 
                         | 
                  
(3) 近隣検出
PIM-SMルータはPIM-SMおよびPIM-SSMを有効にしたすべてのインタフェースに定期的にPIM Helloメッセージを送信します。PIM Helloメッセージは全マルチキャストルータリンクローカル・グループアドレス宛て(ff02::d)に送信します。このメッセージを受信することで,近隣のマルチキャストルータを動的に検出します。本装置はPIM HelloメッセージのGeneration IDオプションをサポートしています。
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メッセージを定期広告のタイミングを待たないで送信します。これによって,マルチキャスト経路情報を速やかに再学習できます。
本装置から送信されるPIM Helloメッセージには,送信元インタフェースに設定されているリンクローカルアドレス以外のアドレスリストがPIM Helloメッセージのオプションデータ(タイプ24)として含まれています。このオプションデータを受信すると,本装置は隣接するマルチキャストルータのリンクローカルアドレス以外のアドレスを認識できます。
本装置からマルチキャスト送信者へ到達するためのネクストホップがリンクローカルアドレス以外の場合にも,このアドレスリストを参照することで本装置は送信者へ到達するためのマルチキャストルータを検出できます。隣接するマルチキャストルータのアドレス受信例を次の図に示します。
| 
                      | 
               
(4) Forwarderの決定
同一LAN上に複数のPIM-SMルータを接続している場合,そのネットワークにマルチキャストパケットが重複して中継される可能性があります。
同一LAN上に複数のPIM-SMルータが存在し,二つ以上のルータがそのLANにマルチキャストパケットを中継する場合,PIM-SMルータはPIM Assertメッセージを使用してそのマルチキャスト経路のプリファレンスとメトリックを比較して,送信元ネットワークに対して最適な一つのルータをForwarderとして選択します。
Forwarderとなった一つのルータだけが,そのLANでのマルチキャストパケットを中継することで,マルチキャストパケット中継の重複を抑止します。
PIM AssertメッセージによってForwarderを決定する流れを次に示します。
- 
                  
プリファレンスを比較して,プリファレンス値が小さいルータがForwarderになります。
 - 
                  
プリファレンス値が等しい場合,メトリックを比較して,メトリック値が小さいルータがForwarderになります。
 - 
                  
メトリック値が等しい場合,各ルータのIPv6アドレスを比較して,IPv6アドレスが大きいルータがForwarderになります。
 
本装置はマルチキャスト経路のプリファレンス値に101,メトリック値に1024を設定して,PIM Assertメッセージを送信します。送信者が本装置と直接接続する場合は,プリファレンス値およびメトリック値に0を設定して送信します。また,コンフィグレーションコマンドipv6 pim assert-preferenceおよびipv6 pim assert-metricを設定することで,任意の値またはユニキャストルーティングプロトコルから該当するマルチキャスト経路の送信元アドレスへのディスタンス値とメトリック値を取得して,PIM Assertメッセージのプリファレンス値とメトリック値として送信することもできます。
ユニキャストルーティングプロトコルがOSPFv3の場合,OSPFv3の経路の学習元によって取得するメトリック値が異なります。OSPFv3の経路の学習元ごとに取得するメトリック値を次の表に示します。
| 
                         経路の学習元  | 
                     
                         取得するメトリック値  | 
                     
                         備考  | 
                  
|---|---|---|
| 
                         AS外経路(TYPE1)  | 
                     
                         メトリック値+Cost値  | 
                     
                         第1メトリック値  | 
                  
| 
                         AS外経路(TYPE2)  | 
                     
                         メトリック値  | 
                  |
| 
                         エリア内経路,エリア間経路  | 
                     
                         Cost値  | 
                  
Forwarderの決定を次の図に示します。
| 
                      | 
               
PIM-SMルータAのIPv6アドレスIaとPIM-SMルータBのIPv6アドレスIbを比較します。その結果,値の大きいPIM-SMルータBがForwarderになります。
(5) DRの決定および動作
同一LAN上で複数のPIM-SMルータが存在する場合,PIM-SMルータ間の制御パケット通信によって中継代表ルータ(DR:Designated Router)を決定します。このとき,同一LAN上でいちばん大きいDR-PriorityのPIM-SMルータがDRとなります。DR-Priorityが等しい場合は,いちばん大きいIPv6リンクローカルアドレスのPIM-SMルータがDRとなります。また,同一LAN上にDR-Priorityオプション未サポートの装置が1台でも存在する場合は,いちばん大きいIPv6リンクローカルアドレスのPIM-SMルータがDRとなります。
受信者からのマルチキャストグループ参加情報はDRがランデブーポイント宛てに通知します。送信者が送信したマルチキャストパケットはDRがIPカプセル化してランデブーポイントに送信します。DRの動作を次の図に示します。
| 
                      | 
               
PIM-SMルータAとPIM-SMルータBのDR-Priorityを比較した場合,PIM-SMルータBのDR-Priorityが大きいため,PIM-SMルータBがDRとなってランデブーポイントにマルチキャストグループ参加情報を通知します。PIM-SMルータDとPIM-SMルータEのDR-Priorityを比較した場合,DR-Priorityが等しいため,IPv6アドレスで比較します。その結果,IPv6アドレスが大きいPIM-SMルータEがDRとなってランデブーポイントに対してIPカプセル化パケットを中継します。
(6) 冗長経路時の注意事項
次に示す図のような冗長構成の場合,マルチキャストパケットが中継されないので注意してください。冗長経路がある場合は,その経路上のすべてのルータでPIM-SMの設定が必要になります。
| 
                      | 
               
(7) IPv6 PIM-SMタイマ仕様
PIM-SMが使用するタイマ値を次の表に示します。
| 
                         タイマ名  | 
                     
                         内容  | 
                     
                         デフォルト値  | 
                     
                         本装置の設定範囲  | 
                     
                         備考  | 
                  
|---|---|---|---|---|
| 
                         Hello_Period※1  | 
                     
                         PIM Helloメッセージの送信周期  | 
                     
                         30(秒)  | 
                     
                         5〜3600(秒)  | 
                     
                         −  | 
                  
| 
                         Hello_Holdtime※2  | 
                     
                         隣接関係の保持期間  | 
                     
                         105(秒)  | 
                     
                         3.5×Hello_Period (秒)  | 
                     
                         −  | 
                  
| 
                         Triggered_Hello_Delay  | 
                     
                         PIM Helloメッセージの一斉送信を抑止するための調整時間  | 
                     
                         0〜5(秒)  | 
                     
                         −  | 
                     
                         起動時の最初のPIM Helloメッセージ送信,または近隣ルータの再起動検出によるPIM Helloメッセージ送信時の遅延時間(0〜5秒の間でランダムに決定します)  | 
                  
| 
                         Assert_Time  | 
                     
                         PIM Assertメッセージによる中継抑止期間  | 
                     
                         180(秒)  | 
                     
                         −  | 
                     
                         −  | 
                  
| 
                         Assert_Override_Interval  | 
                     
                         Assert制御によるマルチキャスト中継の抑止を更新するための調整時間  | 
                     
                         3(秒)  | 
                     
                         −  | 
                     
                         Assert敗者がマルチキャスト中継を再開する前(Assert_Time)にAssert勝者がPIM Assertメッセージを送信して,Assert敗者の中継抑止時間を更新するための調整時間  | 
                  
| 
                         t_periodic※1  | 
                     
                         PIM Join/Pruneメッセージの送信周期  | 
                     
                         60(秒)  | 
                     
                         30〜3600(秒)  | 
                     
                         最大で+50%の揺らぎが発生します  | 
                  
| 
                         J/P_HoldTime※2  | 
                     
                         経路情報および中継先インタフェースの保持期間  | 
                     
                         210(秒)  | 
                     
                         3.5×t_periodic (秒)  | 
                     
                         −  | 
                  
| 
                         Deletion-Delay-Time※1※3※4  | 
                     
                         PIM Pruneメッセージ受信後のマルチキャスト中継先インタフェースの保持期間  | 
                     
                         1/3×J/P_HoldTime (秒)  | 
                     
                         0〜300(秒)  | 
                     
                         −  | 
                  
| 
                         t_suppressed  | 
                     
                         PIM Join/Pruneメッセージの集中を回避するための送信抑止時間  | 
                     
                         66〜84(秒)  | 
                     
                         −  | 
                     
                         −  | 
                  
| 
                         J/P_Override_Interval  | 
                     
                         PIM Pruneメッセージの受信からマルチキャスト中継停止までの時間  | 
                     
                         3(秒)  | 
                     
                         1000〜98302(ミリ秒) (Effective_Propagation_Delay+Effective_Override_Interval)  | 
                     
                         マルチキャスト中継停止までの間にマルチキャスト中継を継続したい下流ルータがPIM Joinメッセージを送信すると,マルチキャスト中継は維持されます  | 
                  
| 
                         Override_Interval※1  | 
                     
                         Effective_Override_Intervalを決定するための本装置の設定時間  | 
                     
                         2500(ミリ秒)  | 
                     
                         500〜65535(ミリ秒)  | 
                     
                         −  | 
                  
| 
                         Effective_Override_Interval  | 
                     
                         t_overrideを算出するためのLAN上の決定時間  | 
                     
                         2500(ミリ秒)  | 
                     
                         −  | 
                     
                         LAN上の全近隣ルータのOverride_Intervalの最大値  | 
                  
| 
                         t_override  | 
                     
                         PIM Join/Pruneメッセージの一斉送信を抑止するための調整時間  | 
                     
                         0〜2500(ミリ秒)  | 
                     
                         0〜65535(ミリ秒)  | 
                     
                         調整時間は0〜Effective_Override_Intervalの間でランダムに決定します  | 
                  
| 
                         Propagation_Delay※1  | 
                     
                         Effective_Propagation_Delayを決定するための本装置の設定時間  | 
                     
                         500(ミリ秒)  | 
                     
                         500〜32767(ミリ秒)  | 
                     
                         −  | 
                  
| 
                         Effective_Propagation_Delay  | 
                     
                         LAN上で決定したPIM Join/Pruneメッセージが行き渡るまでの遅延時間  | 
                     
                         500(ミリ秒)  | 
                     
                         −  | 
                     
                         LAN上の全近隣ルータのPropagation_Delayの最大値  | 
                  
| 
                         Keepalive Timer※1  | 
                     
                         マルチキャスト中継エントリの保持期間  | 
                     
                         210(秒)  | 
                     
                         0(無期限), 60〜43200(秒)  | 
                     
                         最大で+90秒の誤差が発生します  | 
                  
| 
                         Register_Supression_Time  | 
                     
                         IPカプセル化送信の抑止期間  | 
                     
                         60(秒)  | 
                     
                         −  | 
                     
                         最大で±30秒の揺らぎが発生します  | 
                  
| 
                         Register_Probe_Time※1※5※6  | 
                     
                         IPカプセル化送信の再開確認を送信する時間  | 
                     
                         5(秒)  | 
                     
                         5〜60(秒)  | 
                     
                         デフォルトの5秒ではRegister_Supression_Timeが満了する5秒前にIPカプセル化送信の再開確認(PIM Null-Registerメッセージ)を一度だけ送信します  | 
                  
| 
                         C-RP-Adv-Period  | 
                     
                         ランデブーポイント候補の通知周期  | 
                     
                         60(秒)  | 
                     
                         −  | 
                     
                         −  | 
                  
| 
                         RP-Holdtime※2  | 
                     
                         ランデブーポイント保持期間  | 
                     
                         150(秒)  | 
                     
                         2.5×C-RP-Adv-Period (秒)  | 
                     
                         −  | 
                  
| 
                         Bootstrap-Period  | 
                     
                         PIM Bootstrapメッセージの送信周期  | 
                     
                         60(秒)  | 
                     
                         −  | 
                     
                         −  | 
                  
| 
                         Bootstrap-Timeout※2  | 
                     
                         PIM Bootstrapメッセージの保持期間  | 
                     
                         130(秒)  | 
                     
                         2×Bootstrap-Period+10 (秒)  | 
                     
                         −  | 
                  
| 
                         Negative-Cache-Holdtime※1 (PIM-SM)  | 
                     
                         ネガティブキャッシュエントリの保持期間  | 
                     
                         210(秒)  | 
                     
                         10〜3600(秒)  | 
                     
                         PIM-SSMの場合は3600秒の固定。  | 
                  
(凡例) −:該当しない
- 注※1
 - 
                     
コンフィグレーションで設定できます。
 - 注※2
 - 
                     
計算式で算出されます(コンフィグレーションで設定できません)。
 - 注※3
 - 
                     
本タイマ値をコンフィグレーションで設定した場合は設定値を使用しますが,本中継先インタフェースに対して,最後に受信したPIM Join/Pruneメッセージに含まれるJoin/Prune-Holdtimeを超えない値を中継先インタフェースの保持期間として設定します。
 - 注※4
 - 
                     
本タイマ値はRFC2362に準拠した近隣ルータに対して使用するタイマです。コンフィグレーションで設定された値が優先されるため,RFC2362の規定とは異なった動作をします。なお,コンフィグレーションで値を指定していない場合にはRFC2362の動作に準じます。
 - 注※5
 - 
                     
本タイマ値を10以上に設定すると,IPカプセル化送信の再開確認を5秒おきに複数回送信します。コンフィグレーションで値を指定していない場合には,一度だけ送信します。
 - 注※6
 - 
                     
本タイマ値はRFC2362に準拠しています。
 
(8) IPv6 PIM-SM使用時の注意事項
PIM-SMを使用したネットワークを構成する場合には次に示す制限事項に注意してください。本装置はRFC4601(PIM-SM仕様)に準拠していますが,一部RFCとの差分があります。RFCとの差分を次の表に示します。