マルチキャスト通信って何?PIMが解決する課題
ネットワーク技術を学んでいると、「マルチキャスト」や「PIM」という言葉に出会うことがあります。
でも、「マルチキャストって何?」「普通の通信と何が違うの?」と疑問に思いますよね。
3つの通信方式の違い
まずは、ネットワーク通信の基本的な3つの方式を理解しましょう。
ユニキャスト(Unicast)
- 1対1の通信
- 送信者が1人、受信者も1人
- 例:個別のメール送信、通常のWebサイト閲覧
ブロードキャスト(Broadcast)
- 1対全員の通信
- ネットワーク内の全員に同じデータを送る
- 例:ネットワーク内の全端末への一斉通知
マルチキャスト(Multicast)
- 1対複数の通信
- 特定のグループだけに同じデータを送る
- 例:ビデオ会議、オンライン配信、株価情報配信
なぜマルチキャストが必要なのか
分かりやすい例で説明しましょう。
シナリオ:100人にライブ配信をする場合
ユニキャストの場合(非効率):
- サーバーから100人それぞれに個別送信
- ネットワーク帯域を100倍使う
- サーバーの負荷が100倍
マルチキャストの場合(効率的):
- サーバーは1回だけデータを送信
- ネットワーク上で自動的に複製される
- 帯域の使用量は1回分だけ
つまり、同じデータを複数の人に送る時は、マルチキャストの方が圧倒的に効率的なんです。
PIMとは何か?役割と重要性
ここで、今回のテーマであるPIMの登場です。
PIMの正式名称と意味
PIM(Protocol Independent Multicast)は、日本語に訳すと「プロトコル独立型マルチキャスト」となります。
「プロトコル独立」とは?
従来のマルチキャストルーティングプロトコルは、特定のユニキャストルーティングプロトコル(RIPやOSPFなど)に依存していました。
しかし、PIMはどのユニキャストルーティングプロトコルとも組み合わせて使えるという特徴があります。
- OSPF + PIM → OK
- EIGRP + PIM → OK
- BGP + PIM → OK
- 静的ルーティング + PIM → OK
この柔軟性こそが、PIMの名前の由来なんです。
PIMの役割
PIMは、マルチキャストパケットをネットワーク上で効率的に配送するためのルーティングプロトコルです。
具体的には:
- マルチキャストトラフィックの配送経路を決定
- 不要なネットワークセグメントには配送しない
- 受信者がいる場所だけに効率的に届ける
- ネットワークの帯域を節約
ユニキャストのルーティングとは別に、マルチキャスト専用のルーティングを行います。
PIMの主要な動作モード
PIMには、大きく分けて3つの動作モードがあります。
それぞれ異なる状況に適した方式です。
PIM-DM(Dense Mode:高密度モード)
特徴:
- 「まず全員に送って、いらない人は拒否してね」という方式
- フラッド・アンド・プルーン(flood and prune)方式
動作の流れ:
- 最初にすべてのネットワークにマルチキャストトラフィックを流す(フラッド)
- 受信者がいないネットワークは「いりません」と拒否する(プルーン)
- 必要なネットワークだけに配送経路が確立される
向いている環境:
- 受信者が多数いる(密集している)ネットワーク
- 小規模なネットワーク
- ほとんどのセグメントに受信者がいる場合
デメリット:
- 初期に大量のトラフィックが発生
- 大規模ネットワークでは非効率
PIM-SM(Sparse Mode:疎密モード)
特徴:
- 「欲しい人だけ申請してね」という方式
- 明示的参加方式(Explicit Join)
動作の流れ:
- 受信者が「このグループのデータが欲しい」と申請(Join)
- ネットワークが申請のあった経路だけに配送木を構築
- データは必要な経路だけを通って配送される
重要な構成要素:
- ランデブーポイント(RP:Rendezvous Point):マルチキャストグループの集約点
- 共有ツリー(Shared Tree):RPを中心とした配送経路
- 送信元ツリー(Source Tree):送信者から直接受信者への最短経路
向いている環境:
- 受信者が少数で分散している(疎な)ネットワーク
- 大規模なネットワーク
- インターネット規模の配信
メリット:
- 帯域の効率的な利用
- スケーラビリティが高い
- 現在最も広く使われている方式
PIM-SSM(Source-Specific Multicast)
特徴:
- 「この送信者からのこのグループのデータが欲しい」と指定する方式
- PIM-SMの進化版
動作の流れ:
- 受信者が送信者のIPアドレスとグループアドレスを両方指定
- RPが不要(送信元が明確なため)
- 直接、送信元から受信者への経路を確立
向いている環境:
- 送信者が明確に分かっている場合
- セキュリティを重視する環境
- 特定の配信元からのみ受信したい場合
メリット:
- RPの設定が不要でシンプル
- セキュリティが高い(意図しない送信者からのデータを受信しない)
- 最短経路で配送される
使用例:
- 企業の動画配信システム
- 株価情報配信
- IPTVサービス
PIMの基本的な動作原理
それでは、PIM-SM(最も一般的)の動作を詳しく見ていきましょう。
マルチキャストグループアドレス
マルチキャスト通信では、特別なIPアドレス範囲を使います。
IPv4の場合:
224.0.0.0 ~ 239.255.255.255 (クラスD)
主な用途別の範囲:
- 224.0.0.0 ~ 224.0.0.255:ローカルネットワーク用(ルーティング不可)
- 224.0.1.0 ~ 238.255.255.255:グローバルに使えるマルチキャストアドレス
- 239.0.0.0 ~ 239.255.255.255:組織内専用アドレス
ランデブーポイント(RP)の役割
PIM-SMの中心となるのがRPです。
RPの主な機能:
- 送信者の登録受付:「私がこのグループにデータを送ります」
- 受信者の登録受付:「私はこのグループのデータが欲しいです」
- 両者のマッチング:送信者と受信者を結びつける
RPを中心とした通信の流れ:
送信者 → RP → 受信者
最初はRPを経由しますが、通信が確立すると送信元ツリーに切り替わり、最短経路での配送が可能になります。
IGMPの役割
PIMと連携する重要なプロトコルにIGMP(Internet Group Management Protocol)があります。
IGMPの役割:
- エンドユーザーとルーター間でのマルチキャストグループ管理
- 「このグループに参加したい」「このグループから抜けたい」という情報をやり取り
通信の流れ:
- ユーザーのPC → IGMP Join → 最寄りのルーター
- ルーター → PIM Join → 上位のルーター
- 最終的にRPまで伝わる
PIMはルーター間、IGMPはユーザーとルーター間という役割分担があります。
PIM-SMの詳細な動作シーケンス
実際の通信がどう流れるか、ステップバイステップで見ていきましょう。
共有ツリー(Shared Tree)での通信
ステップ1:受信者の参加
受信者PC → IGMP Report → ルーターA
ルーターA → PIM Join → RP
受信者が「グループ224.1.1.1のデータが欲しい」と申請します。
ステップ2:送信者の登録
送信者PC → データ送信 → ルーターB
ルーターB → PIM Register → RP
送信者がデータを送り始めると、最寄りのルーターがRPに登録します。
ステップ3:共有ツリーでの配送
送信者 → ルーターB → RP → ルーターA → 受信者
RPを中心とした配送経路(共有ツリー)でデータが流れます。
送信元ツリー(Source Tree)への切り替え
共有ツリーは万能ですが、RPを経由するため最短経路ではありません。
最適化のプロセス:
ステップ1:送信元の特定
ルーターAは、データを受信することで送信者のIPアドレスを知ります。
ステップ2:送信元ツリーへの切り替え
ルーターA → PIM Join(S,G) → ルーターB
送信元(Source)と グループ(Group)を指定したJoinメッセージを送ります。
ステップ3:最短経路での配送
送信者 → ルーターB → ルーターA → 受信者
RPを経由しない、最短経路での配送が確立されます。
ステップ4:共有ツリーからの離脱
ルーターA → PIM Prune → RP
最短経路が確立したら、共有ツリーは不要になるので切断します。
これにより、ネットワークの効率が最大化されるんです。
PIMの実用例と活用場面
PIMは、実際にどんな場面で使われているのでしょうか?
企業ネットワークでの利用
ビデオ会議システム
- 複数拠点での会議
- 各拠点に同じ映像・音声データを配信
- 帯域を節約しながら高品質な配信が可能
社内ライブ配信
- 社長のメッセージ配信
- 研修動画の一斉配信
- 全社員に同時に届ける
ISP(インターネットサービスプロバイダ)での利用
IPTVサービス
- テレビ番組のIP配信
- 視聴者が増えても帯域使用量は変わらない
- 効率的な配信インフラ
ライブストリーミング
- スポーツ中継
- コンサート配信
- ニュース速報
金融業界での利用
株価情報配信
- リアルタイムの株価データ
- 複数のトレーダーに同時配信
- 低遅延が重要
取引所データフィード
- 大量の取引データ
- 多数の証券会社に配信
- ネットワーク負荷の軽減
その他の活用例
IoTデバイスの一括設定
- 多数のデバイスへの設定配信
- ファームウェアアップデート
- 同時配信で時間短縮
オンラインゲーム
- マルチプレイヤーゲームの状態同期
- 複数プレイヤーへの同じ情報配信
- リアルタイム性が重要
PIMの基本設定例(Cisco機器の場合)
実際にPIMを設定する基本的な手順を見てみましょう。
PIM-SMの基本設定
グローバル設定:
# マルチキャストルーティングの有効化
Router(config)# ip multicast-routing
# RPの指定
Router(config)# ip pim rp-address 192.168.1.1
インターフェース設定:
# インターフェースでPIM-SMを有効化
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip pim sparse-mode
# 別のインターフェースでも有効化
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip pim sparse-mode
RPの設定(RP自身の設定)
RPとなるルーターでの設定:
# マルチキャストルーティングの有効化
Router(config)# ip multicast-routing
# 自分自身をRPとして設定
Router(config)# ip pim rp-address 192.168.1.1
# Loopbackインターフェースの設定(推奨)
Router(config)# interface Loopback0
Router(config-if)# ip address 192.168.1.1 255.255.255.255
Router(config-if)# ip pim sparse-mode
Loopbackインターフェースを使うことで、物理インターフェースの障害に強くなります。
PIM-SSMの設定
# SSMの範囲を指定
Router(config)# ip pim ssm range 232.0.0.0/8
# インターフェース設定(PIM-SMと同じ)
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip pim sparse-mode
SSMでは232.0.0.0/8の範囲が推奨されています。
Auto-RP設定(RPの自動検出)
手動でRPを設定する代わりに、自動検出する方法もあります。
RP候補の設定:
Router(config)# ip pim send-rp-announce Loopback0 scope 16
マッピングエージェントの設定:
Router(config)# ip pim send-rp-discovery Loopback0 scope 16
これにより、ネットワーク内で自動的にRPが選ばれます。
PIMの動作確認コマンド
設定が正しく動作しているか確認する方法です。
基本的な確認コマンド
PIMネイバーの確認:
Router# show ip pim neighbor
実行結果の例:
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
P - Proxy Capable, S - State Refresh Capable, G - GenID Capable,
L - DR Load-balancing Capable
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
192.168.1.2 GigabitEthernet0/0 1d23h/00:01:31 v2 1 / DR S P G
隣接するPIMルーターが表示されます。
RPの確認:
Router# show ip pim rp mapping
実行結果の例:
PIM Group-to-RP Mappings
Group(s): 224.0.0.0/4
RP: 192.168.1.1 (?), v2
Info source: 192.168.1.1 (?), elected via Auto-RP
Uptime: 1d23h, expires: 00:02:45
どのグループにどのRPが割り当てられているか分かります。
マルチキャストルーティングテーブルの確認
mroute(マルチキャストルーティングテーブル):
Router# show ip mroute
実行結果の例:
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.1.1.1), 00:10:30/00:02:59, RP 192.168.1.1, flags: S
Incoming interface: GigabitEthernet0/0, RPF nbr 192.168.1.2
Outgoing interface list:
GigabitEthernet0/1, Forward/Sparse, 00:10:30/00:02:59
マルチキャストトラフィックの経路情報が詳しく表示されます。
トラフィックの統計情報
インターフェース統計:
Router# show ip mroute count
実際にどれだけのマルチキャストトラフィックが流れているか確認できます。
IGMPグループの確認:
Router# show ip igmp groups
実行結果の例:
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter Group Accounted
224.1.1.1 GigabitEthernet0/1 00:15:30 00:02:45 192.168.2.10
どの受信者がどのグループに参加しているか分かります。
PIMのトラブルシューティング
PIMで問題が発生した時の診断方法を見ていきましょう。
よくある問題と原因
問題1:マルチキャストトラフィックが届かない
主な原因:
- PIMが有効になっていない
- RPの設定が間違っている
- ルーティングが正しく設定されていない
- ファイアウォールがブロックしている
確認手順:
# PIMが有効か確認
show ip pim interface
# RPが正しく設定されているか
show ip pim rp mapping
# マルチキャストルーティングテーブル
show ip mroute
# PIMネイバーの状態
show ip pim neighbor
問題2:RPに到達できない
原因:
- RPへのユニキャストルーティングが確立していない
- RPのIPアドレスが間違っている
解決方法:
# RPへの到達性を確認
ping 192.168.1.1
# ユニキャストルーティングテーブルを確認
show ip route
PIMは「プロトコル独立」ですが、ユニキャストのルーティングが正しく動作している必要があります。
問題3:パケットロスが発生する
原因:
- ネットワーク機器の性能不足
- MTUサイズの問題
- QoS設定の不備
解決方法:
# インターフェースのエラーを確認
show interface GigabitEthernet0/0
# QoS設定を確認
show policy-map interface GigabitEthernet0/0
デバッグコマンド
注意:本番環境では慎重に使用してください
# PIMパケットのデバッグ
debug ip pim
# IGMPのデバッグ
debug ip igmp
# マルチキャストパケットのデバッグ
debug ip mpacket
デバッグを有効にすると、リアルタイムでPIMの動作が確認できます。
デバッグの停止:
no debug all
デバッグは大量のログを出力するため、確認が終わったら必ず停止しましょう。
PIMのセキュリティ考慮事項
マルチキャストネットワークでは、セキュリティも重要です。
認証の設定
PIMメッセージに認証を追加することで、不正なルーターの参加を防ぎます。
# PIMメッセージ認証の設定
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip pim neighbor-filter list 10
# アクセスリストで許可するネイバーを指定
Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255
マルチキャストトラフィックのフィルタリング
特定のマルチキャストグループだけを許可:
# 許可するグループを指定
Router(config)# ip multicast-routing
Router(config)# ip pim accept-register list 20
# アクセスリストで許可するグループを指定
Router(config)# access-list 20 permit ip any 224.1.1.0 0.0.0.255
レート制限
マルチキャストトラフィックの帯域制限:
# QoSポリシーの適用
Router(config)# class-map match-all MULTICAST
Router(config-cmap)# match access-group 30
Router(config)# policy-map LIMIT-MULTICAST
Router(config-pmap)# class MULTICAST
Router(config-pmap-c)# police 10000000
Router(config)# interface GigabitEthernet0/0
Router(config-if)# service-policy output LIMIT-MULTICAST
これにより、マルチキャストトラフィックが帯域を占有するのを防げます。
PIMの最適化とベストプラクティス
より効率的で安定したPIMネットワークを構築するためのヒントです。
RPの冗長化
単一のRPだと障害時に通信が停止します。
解決策:Anycast RP
複数のRPを同じIPアドレスで設定し、冗長化します。
# MSDP(Multicast Source Discovery Protocol)の設定
Router(config)# ip msdp peer 192.168.2.1 connect-source Loopback0
Router(config)# ip msdp originator-id Loopback0
これにより、1つのRPが故障しても別のRPが引き継ぎます。
SPT切り替えのタイミング調整
共有ツリーから送信元ツリーへの切り替えタイミングを制御:
# 即座にSPTに切り替え(デフォルト)
Router(config)# ip pim spt-threshold 0
# トラフィック量が一定を超えたら切り替え
Router(config)# ip pim spt-threshold 1000
# 常に共有ツリーを使う
Router(config)# ip pim spt-threshold infinity
ネットワークの規模や用途に応じて調整します。
タイマーの調整
PIMの各種タイマーは調整可能です。
# Hello間隔の変更(デフォルト30秒)
Router(config-if)# ip pim hello-interval 10
# Join/Prune間隔の変更(デフォルト60秒)
Router(config-if)# ip pim join-prune-interval 30
ただし、デフォルト値は多くの環境で最適化されているため、変更は慎重に行いましょう。
監視とログ収集
定期的な監視が重要です。
SNMPでの監視:
Router(config)# snmp-server enable traps pim neighbor-change rp-mapping-change invalid-pim-message
Syslogの設定:
Router(config)# logging 192.168.1.100
Router(config)# logging trap informational
異常を早期に検知できます。
PIMと他のマルチキャストプロトコルとの違い
PIM以外にも、マルチキャストルーティングプロトコルが存在します。
DVMRP(Distance Vector Multicast Routing Protocol)
特徴:
- 最も古いマルチキャストルーティングプロトコル
- 独自のルーティングテーブルを持つ
- 現在はほとんど使われていない
PIMとの違い:
- ユニキャストルーティングに依存(PIMは独立)
- スケーラビリティが低い
MOSPF(Multicast OSPF)
特徴:
- OSPFを拡張したマルチキャストプロトコル
- OSPFと統合されたルーティング情報
PIMとの違い:
- OSPFでしか使えない(PIMはプロトコル独立)
- 複雑で設定が難しい
なぜPIMが主流なのか
PIMが選ばれる理由:
- プロトコル独立:どのユニキャストプロトコルとも使える
- スケーラビリティ:大規模ネットワークに対応
- 柔軟性:DM、SM、SSMと複数のモードがある
- 広く採用:ほぼすべてのベンダーがサポート
- 標準化:IETFで標準化されている
現在では、マルチキャストルーティング=PIMと言っても過言ではありません。
まとめ:PIMでマルチキャストネットワークを構築しよう
この記事では、PIM(Protocol Independent Multicast)について詳しく解説してきました。
重要なポイントのおさらい:
- PIMはマルチキャストトラフィックを効率的に配送するプロトコル
- プロトコル独立なので、どのユニキャストルーティングとも組み合わせ可能
- PIM-DM、PIM-SM、PIM-SSMの3つのモードがある
- 現在はPIM-SMが最も広く使われている
- RPは PIM-SMの中心的な役割を果たす
- 送信元ツリーに切り替えることで最適な経路を実現
- IGMPと連携してエンドユーザーとの通信を管理
- 適切な設定と監視で安定したマルチキャストネットワークを構築できる
PIMが活躍する場面:
- ビデオ会議システム
- IPTVやライブストリーミング
- 株価情報などのリアルタイム配信
- 企業内の大規模な動画配信
- IoTデバイスへの一括設定配信
マルチキャスト通信は、同じデータを複数の受信者に送る場合に圧倒的に効率的です。
特に、動画配信やリアルタイムデータ配信が増えている現代では、PIMの重要性はますます高まっています。
まずは小規模な環境でPIM-SMを試してみて、マルチキャストの効果を実感してみてください。
設定はシンプルですが、ネットワークの帯域使用量が劇的に減少することに驚くはずですよ!

コメント