IGMPの役割
IGMP(インターネットグループ管理プロトコル)は、LAN上のマルチキャストグループに個々のホストを動的に登録し、マルチキャストトラフィックの制御を行うプロトコルです。ルータ(クエリア)はクエリメッセージを送信し、ホストは応答メッセージを送信してグループに参加または離脱します。
IGMPは、クラスDのIPアドレス(224.0.0.0~239.255.255.255)を使用し、特定の範囲はルーティングプロトコル用に予約されています。
- 一般クエリ: 224.0.0.1
- グループ固有のクエリ: グループIPアドレス
- グループメンバーシップレポート: グループIPアドレス
- IGMPv2グループ離脱メッセージ: 224.0.0.2
- IGMPv3メンバーシップレポート: 224.0.0.22
IGMPのバージョン
IGMPには3つのバージョンがあります。スイッチはこれらのバージョンに対応し、相互運用が可能です。
- IGMPv1: 基本的なクエリ応答メカニズム。
- IGMPv2: グループ固有のクエリ、離脱プロセスなどの機能追加。
- IGMPv3: 特定のソースからのマルチキャストのみを受信する機能追加。
IGMPv3スイッチは、特定のマルチキャスト機能(SSM)もサポートしています。
IGMPv1
IGMPバージョン1(IGMPv1)は、主にクエリ応答モデルを使用し、マルチキャストルータとスイッチがローカルサブネット上のアクティブなマルチキャストグループを検出します。ホストがグループに参加したり離脱したりするプロセスも含まれています。詳細はRFC 1112に記載されています。
IGMPv1デバイスは、マルチキャストグループを検出するために224.0.0.1アドレスにクエリを送信します。マルチキャストレシーバーは、IGMPレポートを送信して参加を通知します。複数のレシーバーがある場合、1つのホストのみがレポートを送信します。離脱メカニズムはなく、クエリに応答しないことで離脱が認識されます。複数のデバイスがある場合、指定ルータ(DR)が選ばれ、クエリの送信を担当します。
IGMPv2
IGMPバージョン2(IGMPv2)は、脱退プロセスやグループ固有のクエリなどの機能を追加し、最大クエリ応答時間を短縮します。ルータはマルチキャストプロトコルに依存せずにIGMPクエリを選択できます。詳細はRFC 2236に記載されています。
IGMPv2は、クエリメッセージを改善し、離脱プロセスやグループ固有のクエリなどの機能を追加します。クエリの選択は、最も低いIPアドレスを持つデバイスが行います。新しいフィールドにより、最大クエリ応答時間を指定できます。DRとIGMPクエリアは異なるデバイスが担当することもあります。
IGMPv3
IGMPバージョン3(IGMPv3)は、IGMPv1およびIGMPv2の機能を拡張し、メンバーシップレポートメッセージのサポートやトラフィックフラッディングの抑制を行います。ホストは特定のソースからのトラフィックのみを受信する(包含モード)か、特定のソースを除外する(除外モード)ことができます。IGMPv3はインターネット標準マルチキャスト(ISM)とソース固有マルチキャスト(SSM)の両方に対応しています。
IGMP参加プロセス
ホストがマルチキャスト グループに参加したい場合、ホストは参加したいマルチキャスト グループに対して 1 つ以上の未承諾メンバーシップ レポートを送信します。このプロセスはIGMPv1とIGMPv2で同じです。IGMPv3では、以下の方法で参加します:
- グループに参加:空のEXCLUDEリストを含むレポートを224.0.0.22に送信。
- 特定のチャネルに参加:INCLUDEリストにソースアドレスを含めたレポートを送信。
- 特定のソースを除外して参加:EXCLUDEリストにソースを含めたレポートを送信。
IGMP離脱プロセス
- IGMPv1:ホストはクエリに応答しないだけで、特別な離脱メッセージはありません。デバイスは3分間応答がない場合にタイムアウトします。
- IGMPv2:ホストは離脱メッセージを送信し、最後のメンバーシップレポートを応答した場合にグループを離脱します。
- IGMPv3:ホストはメンバーシップレポートで特定のグループ、ソース、またはチャネルのトラフィック受信を停止する機能があります。