Internet Group Management Protocol (IGMP) とは、IPネットワーク上でマルチキャスト(特定の一対多または多対多通信)を行うために、マルチキャストに参加するホストのグループを設定し、ネットワークに通知するための通信プロトコルである。マルチキャストは、動画や音楽のストリーミングなど、同時に多数のホストへ同一のデータを送信するときに通信を効率化する技術である。
IGMPはIPv4ネットワーク向けのマルチキャストプロトコルであり、インターネット・プロトコル (IP) 上に直に実装されている。一方、IPv6では同様の役割を担うMulticast Listener Discovery (MLD) がICMPv6上に実装されている。
TCP/IP群 |
---|
アプリケーション層 |
|
トランスポート層 |
カテゴリ |
インターネット層 |
カテゴリ |
リンク層 |
カテゴリ |
IGMP は Internet Engineering Task Force (IETF) によって定められ、Request for Comments (RFC) として公開されている。 [1] 2011年現在IGMPv3が最新の規格である。IGMPv2ではグループからの離脱を通知する方法が追加され、IGMPv3では指定されたIPアドレスからのみマルチキャストを受信する方法 (PIM-SSMへの対応)などが追加された。
IGMPにホストとして対応しているOSには、FreeBSDやLinux、Microsoft Windowsなどがある。 IGMPにルータとして対応しているルーティングプログラムには、mrouted (Linux), XORP, Quaggaなどがある。
IGMPは一般的なアプリケーションで用いられるほど普及しておらず、またWindowsではDoS攻撃に利用される可能性のある脆弱性が過去に発見されたことがある[2][3][4]ため、およびIGMPには認証機構が無いために、攻撃者がマルチキャストを用いて帯域を占有するDoS攻撃を行う恐れがある[5]ためか、ファイアウォールではデフォルトでIGMPによる通信を許可しない設定になっていることが多い[要出典]。
技術的詳細については、RFC[1]をご覧ください。
IGMPで定義されるパケットは三種類である。
bit offset | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | パケットの型 (0x11) | 応答時間の締切り | チェックサム | |||||||||||||||||||||||||||||
32 | グループのアドレス | |||||||||||||||||||||||||||||||
64 | 予約領域 (0) | S | QRV | QQIC | ソースアドレスの数 (N) | |||||||||||||||||||||||||||
96 | ソースアドレス [1] | |||||||||||||||||||||||||||||||
128 | ソースアドレス [2] | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
ソースアドレス [N] |
64ビット以降はIGMPv3以降で新たに付け加えられた。
ある特定のホストが送信するマルチキャストのパケットのみを受信したい場合、グループアドレスにPIM-SSM用グローバルアドレスに割り当てられた範囲の中からIPアドレスを一つ指定し、ソースアドレスに送信元ホストのIPアドレスを指定する。この機能とPIM-SSMを併用することで、ホスト毎にグループアドレスをあらかじめ割り当てることなく、疎なマルチキャスティング(ネットワークのノード数に比べて、マルチキャストチャンネル一つあたりの受信ノードが少ない場合)においても効率的な伝送ができる。
この機能を使わない場合は、ソースアドレスの数に0を指定する。この場合、参加するグループアドレス宛のパケットは送信元ホストに関わらず、全てのパケットが受信される。
bit offset | 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | パケットの型 | 予約領域 (0) | チェックサム | |||||||||||||||||||||||||||||
32 | 予約領域 (0) | ホストが参加しているグループの数 (N) | ||||||||||||||||||||||||||||||
64 | グループ[1]への参加状態 | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
グループ[2]への参加状態 | ||||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
グループ[N]への参加状態 | ||||||||||||||||||||||||||||||||
. . . |
bit offset | 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | パケットの型 (0x17) | 応答時間の締切り | チェックサム | |||||||||||||||||||||||||||||
32 | グループのアドレス |
IPv4やIPv6のマルチキャストは、専用網ではIP放送のためのネットワークとして商業的に利用されている。
インターネット (the Internet) では、構成しているネットワークのルータがマルチキャストに対応したものに置き換わることはなかった。IPv6網では、ネットワーク機器は当初からすべてMLDに対応しているが、ISP間レベルでのマルチキャスト経路の構成は実験的に行われているだけである。