IGMP
IPv4で、ホストがどのマルチキャストグループに参加しているかを、同じネットワークのルータに知らせるためのプロトコル。
イマシルちゃんの解説
同じ映像を複数の端末へ配るときは、受信したい端末をひとまとまりにして送るマルチキャストという通信方式を使えるよ。
でも、ルータにはどの配信を受け取りたい端末がいるのか分からないんだ。
IPv4で、その参加状況を端末から同じネットワークのルータへ知らせるプロトコルがIGMPだよ。
端末は受信したいグループを報告し、ルータからの問い合わせにも応答するんだ。
このやり取りで受信者がいるかを確かめるから、必要なネットワークへ配信を届け、誰も受け取らなくなったら配信を止める判断ができるよ。
この解説はわかりやすかったですか?
より深い解説
定義
IGMP(Internet Group Management Protocol)は、IPv4のホストとそのネットワークに接続されたマルチキャストルータとの間で、マルチキャストグループへの参加・離脱を管理するプロトコルである。IPヘッダーのプロトコル番号は2。
IGMPが扱うのは、ホストとルータの間(同じネットワークの中)だけである。ルータ同士がマルチキャストの配信経路を作るには、PIMなどのマルチキャストルーティングプロトコルを別に使う。
バージョン
| バージョン | 主な特徴 |
|---|---|
| IGMPv1 | 参加の通知(メンバーシップレポート)と、ルータからの問い合わせ(クエリ)だけ |
| IGMPv2 | 離脱を明示的に知らせるLeaveメッセージを追加。離脱が速く伝わる |
| IGMPv3 | 受信したい(または受信したくない)送信元を指定できる。SSM(送信元指定マルチキャスト)で使う |
旧版での参加と離脱
- ホストは、グループに参加したいときに、メンバーシップレポートを送る
- ルータは、定期的に一般クエリ(全ホスト宛て 224.0.0.1)を送り、まだ参加しているホストがいるかを確かめる
- 参加しているホストは、レポートで応答する
- ホストがグループを抜けるときは、Leaveメッセージ(全ルータ宛て 224.0.0.2)を送る
- ルータは、そのグループの特定クエリを送り、ほかに参加者がいなければ配信を止める
配信者を指定して受信する
IGMPv3では、グループGに加えて送信元Sを指定できる。受信したい送信元だけを列挙するINCLUDEと、受信しない送信元を列挙するEXCLUDEのフィルタモードがある。送信元を決めて受信するSSMでは、例えば「SからGへ送られた配信を受信したい」という情報を通知する。
IGMPv3のMembership ReportのIP宛先は、IGMPv3対応のマルチキャストルータが受信する224.0.0.22である。これはマルチキャストアドレスであり、配信者のユニキャストアドレスへ直接参加要求を送るわけではない。受信したいグループや送信元はレポートの内容に記載する。
| 通信 | 宛先や対象 |
|---|---|
| IGMPv3の参加状態の通知 | 224.0.0.22 |
| 一般クエリ | 同一リンクの全ホストを表す224.0.0.1 |
| 実際の映像などの配信 | 受信対象のグループG |
IGMPは隣接するルータへ受信希望を知らせる。そこから先のルータ間では、PIM-SMなどが上流へ参加状態を伝え、必要な配信経路を作る。ホストの参加管理と、ルータ同士の経路形成は別の処理である。
スイッチで配信先を絞る
受信者を把握しないL2スイッチでは、マルチキャストのフレームを同じVLANの対象ポートへフラッディングする。受信ポートやSTPで転送を止めているポートまで無条件に送るわけではない。
IGMPスヌーピングは、スイッチがホストとルータの間のレポートやクエリを監視し、グループと参加者がいるポートの対応を学習する機能である。配信データを、主に参加者がいるポートとマルチキャストルータ側のポートへ絞って転送する。これにより、受信しない端末の回線へ不要な映像などを流し続けずに済む。
ルータやクエリアからの問い合わせによって参加状態を更新し、受信者がいなくなったポートを転送対象から外す。未知のグループや制御用マルチキャストの扱いは実装・設定による。スヌーピングはL2での転送制御であり、スイッチがそれだけでルータ間の配信経路を作るものではない。
IPv6での対応
IPv6では、IGMPの代わりにMLD(Multicast Listener Discovery)を使う。MLDは独立したプロトコルではなく、ICMPv6のメッセージとして実装されている。
| IPv4 | IPv6 |
|---|---|
| IGMPv2 | MLDv1 |
| IGMPv3 | MLDv2 |
よく混同されるプロトコル
名前が似ているIGMPとICMPは、役割がまったく異なる。IPv6でARPの役割を担うのはICMPv6であり、IGMPv2ではない。
参考資料
実際の試験ではここに出る!全12問
ネットワークスペシャリスト
テクニカルエンジニア(ネットワーク)
- 午前