1-1 IGMPとは
マルチキャストのフローをネットワーク上に流すにあたり、まずはホストとルータが「IGMP」と呼ばれるプロトコルを使って情報交換を行う
。 IGMPによって、マルチキャストグループの管理を行う。管理すると
は具体的には ●マルチキャストグループへの加入 ●マルチキャストグループの維持 ●マルチキャストグループからの脱退 を制御すること。 IGMPはレイヤ3プロトコルで、3つのバージョンがあり、それぞれ
IGMPv1,IGMPv2,IGMPv3と記述される。上位のバー
ジョンは下位バージョンに対し下
位互換性を持つ。 1-3 IGMPv1のパケットフォーマット 1-3 IGMPv1の動作 【マルチキャストグループへの加入】 @マルチキャストルータは、全てのホスト(224.0.0.1)をあて先にした「IGMPメンバーシップクエリ」
というメッセージを使い、自らに接続されているサブネットに対してどのグループのメンバーがいるかを調
べる。 Aこのメッセージに対して、特定のグループを指定した「IGMPメンバーシップ(join)レポート」
を送信し、マルチキャストグル
ープへの参加要求をする。例えばあるホ
ストで224.5.5.5というマルチキャストが必要なアプリケーションが起動していた場合、「こちらに
224.5.5.5を送ってください」といったメッセージで応答する。 B以降、ルータはホストからのレポートを受け取ったインターフェイスから、該当するマ
ルチキャストパケットを転送し始める。 同じマルチキャストフローを受け取るホスト郡を「マルチキャストグループ」と呼ぶ。ユニキャスト
と異なり、ルータが制御できるのは、インターフェイスから特定の
マルチキャストを送出する必要があるのか、ないのかを判断しているだけであり、あて先
を指定して転送しているわけではない。 従って、現在転送して
いるマルチキャストをこのまま流し続ける必要があるのかどうかを定期的に確認する。
【マルチキャストグループへの維持】 @ルータはIGMPメンバーシップクエリを60秒に1回のペースで送出し、
ホストからのレポートを待つ。 もし、ネットワーク内にまだマルチキャ
ストを欲しがっているホストがいれば、ホストがレポートメッセージでルータへ返答をする。
Aホストはルータからのクエリを受け取ると、0〜10秒の間でランダムなタイマをセットし、このタイマが切れてからルー
タに向けたレポートメッセージを返す。 その際のあて先アドレスは、該当するマルチキャストアドレスが指定されるため、他のホストのタイマが先に「0」になった場合は、「他のホストがレポートを送った」
ことが確認できるので、残りのメンバーは同じメッセージが送出されることにより帯域を無駄に消費す
るのを防ぐため、レポートを返さない。 B下図のホストAのレポートタイマが最初に切れたと仮定すると
、ホストAはカウントが0になったタイミングで224.5.5.5
のメンバーシップレポートを送信し、ルータからのクエリに最初に応答する。 C同一サブネットに接続されているホストBは、ホストAが送信し
た224.5.5.5のメンバーシップレポートを受信する。 その結果、ホストBは224.5.5.5に対するレポートタイマをキャンセルし、グループのメンバーシ
ップレポート送信を抑制する。 【マルチキャストグループへの脱退】 IGMPv1ではホスト
がグループから脱退する際に、黙って脱退する。ルータはタイマーを
維持しており、このタイマーはサブネット上のホストか
ら応答を受け取る度にリセットされ、最大3分間稼動する。 IGMPv1ルータは、
メンバーシップを受信できなくなっても、残っているホストが存在するかを確認するためのクエリを2
回送信する(クエリ間隔:60)。 その間、ルータは受信者が存在しないサブネット上に、マルチキ
ャストトラフィックを転送し続けてしまう。
IGMPとは、ホストとル
ータ間でやり取りするためのプロトコルで、ホストがマルチキャストグループに加入したい時に使用す
る。
IGMPv1のパケットフォーマットは以下のとおり
これでIPパケットで運ばれる。
IGMPクエリメッセージは、全てのマルチキャスト対応ホストあての「224.0.0.1」あてに送信する。