Internet Group Management Protocol (IGMP) について
IGMP(Internet Group Management Protocol)は、IPネットワーク上でマルチキャスト通信を効率的に行うための
通信プロトコルです。マルチキャストとは、特定のホストグループに対して一斉にデータを送信する技術で、動画や音楽の
ストリーミング配信など、多数のホストに同じデータを同時に送信する際に有効です。
IGMPの役割
IGMPは、主に以下の役割を担います。
マルチキャストグループの管理: どのホストがどのマルチキャストグループに参加しているかを管理します。
グループ参加の通知: ホストがマルチキャストグループに参加する際に、ネットワーク内のルータに通知します。
グループ離脱の通知: ホストがマルチキャストグループから離脱する際に、ネットワーク内のルータに通知します。
IGMPの動作
1. グループアドレス: マルチキャストには、ローカルネットワーク専用のアドレスや、IANAによって割り当てられたグローバルアドレスが使用されます。
2. 参加通知: 受信側のホストは、参加したいグループのアドレスをIGMPパケットで最寄りのルータに通知します。
3. データ送信: 送信側のホストは、自身のユニキャストアドレスからグループアドレス宛のパケットをルータに送信します。
4. パケット転送: ルータは、グループに参加しているホストが存在するネットワークセグメントにのみパケットを転送します。ルータ間の経路制御には、PIM(Protocol Independent Multicast)などのプロトコルが用いられます。
5. L2スイッチの動作: L2スイッチは、デフォルトではグループアドレス宛のパケットをブロードキャストしますが、IGMPスヌーピング機能を持つスイッチは、参加ホストが存在するポートにのみパケットを転送することで、帯域の無駄遣いを防ぎます。
IGMPとTCP/IP
IPマルチキャストでは、TCPのようなパケットの到達確認は行われません。そのため、信頼性の高いネットワークを利用するか、別途品質管理の仕組みを用意する必要があります。
IGMPの標準化
IGMPは、IETF(Internet Engineering Task Force)によって標準化されており、RFC(Request for Comments)として公開されています。最新の規格はIGMPv3であり、IGMPv2ではグループ離脱の通知機能が追加され、IGMPv3ではPIM-SSM(Protocol Independent Multicast - Source Specific Multicast)への対応が追加されました。
実装
ホストとしての実装: FreeBSD、Linux、Microsoft WindowsなどのOSが、IGMPに対応しています。
ルータとしての実装: mrouted(Linux)、XORP、Quaggaなどのルーティングプログラムが、IGMPに対応しています。
セキュリティ
IGMPは、認証機構を持たないため、DoS攻撃に利用される可能性があります。そのため、ファイアウォールではデフォルトでIGMPによる通信が許可されない設定になっていることが多いです。また、過去にはWindowsでDoS攻撃に利用される可能性のある脆弱性が発見されたこともあります。
プロトコルの詳細
IGMPで定義されるパケットは以下の3種類です。
Membership Query (Type 0x11): ホストがマルチキャストグループに参加する際に、ルータに送信する
パケットです。また、グループの最新情報を知りたいときにも使用されます。
Membership Report (Type 0x12 (IGMPv1), Type 0x16 (v2), Type 0x22 (v3)): ルータがホストの参加しているグループの状態を通知するパケットで、Membership QueryやLeave Groupへの返答として使用されます。
Leave Group (Type 0x17): ホストがグループから離脱する際に、ルータに送信する
パケットです。
Membership Query パケットの詳細
IGMPv3では、特定の送信元ホストからのマルチキャスト
パケットのみを受信するために、PIM-SSM用のグローバルアドレスを使用し、送信元ホストのIPアドレスを指定できます。この機能により、疎なマルチキャスト環境でも効率的な伝送が可能です。この機能を使用しない場合は、送信元アドレスの数を0に指定し、全ての
パケットを受信します。
Membership Report パケットと Leave Group パケットの詳細
Membership Report
パケットは、グループの参加状況を報告し、Leave Group
パケットは、グループからの離脱を通知します。これらの
パケットは、ルータがマルチキャストトラフィックを適切に管理するために不可欠です。
普及状況
IPv4/
IPv6マルチキャストは、専用網では
IP放送などの商用サービスに利用されていますが、
インターネット上での普及は限定的です。
IPv6ネットワーク機器はMLDに対応していますが、ISP間でのマルチキャスト経路の構成は実験段階にとどまっています。
まとめ
IGMPは、効率的なマルチキャスト通信を実現するための重要なプロトコルです。動画配信や音楽
ストリーミングなど、多数のホストに同時にデータを配信する際に不可欠な技術であり、今後のネットワーク技術においても重要な役割を担うと考えられます。