マルチキャスト

IGMP

  • ホストがマルチキャストグループに加入したいときに使用する
  • ルータがメンバシップクエリを一定間隔(60秒)で224.0.0.1に送信
    • サブネット上にどのグループのメンバーがいるか調べる
  • メンバシップクエリを受信したホストは特定のグループを指定したIGMPメンバーシップ(join)レポートを送信し、マルチキャストグループへの参加要求をする
    • クエリを待たずにいつでも参加要求は送ることができる

IGMPレポート抑制メカニズム

  • ルータがクエリを送信
  • クエリを受信したホストは、参加要求が必要なグループに対するレポートタイマのカウントダウンを開始する(タイマ値は0〜10秒の間でランダムにセットされる)
  • ホストAはカウントが0になったら224.1.1.1のメンバシップレポートを送信し、ルータからのクエリに最初に応答する(ホストAのタイマが最初に切れたと仮定)
  • 同一サブネットに接続されているホストBは、Aが送信した224.1.1.1のメンバシップレポートを受信する。その結果ホストBは224.1.1.1に対するレポートタイマをキャンセルし、グループへのメンバーシップレポート送信を抑制する

Querier

  • 同一サブネット上に複数のマルチキャストルータが存在する場合に、すべてのルータがQueryを送信するのは帯域の無駄
  • クエリを送信する1台の?選出されたルータのことをQuerierと呼ぶ
  • IGMPv1: 選出方法がないため、レイヤ3マルチキャストルーティングプロトコル(PIMなど)に基づいてクエリアを選出する
  • IGMPv2: サブネット上で最も低いIPアドレスを持つルータが選出される。

IGMPv1とIGMPv2の違い

  • Querier選出メカニズム(最も低いIPのルータが選出される)
  • グループ指定クエリ
    • 特定のマルチキャストグループを指定して送信する
      • クエリの対象となるグループがグループアドレスフィールドに含まれ、それを受信したホストがメンバシップレポートによって応答する
      • アドレスフィールドが0.0.0.0のものはGeneral Queryとしてルータが全グループに定期的に送信する
  • グループ脱退メッセージ(leave)
    • IGMPv1では黙って脱退、ルータはクエリに応答がない間最大3分間待ち、トラフィックを止める
    • IGMPv2ではLeaveを受け取ったルータは数秒以内にトラフィックを止められる
  • Query間隔の応答時間
    • IGMPv1:グループのメンバはクエリを受信してから10秒(デフォルト)以内にメンバーシップレポートを送信して応答する必要がある
    • IGMPv2: 応答時間を変更できるようになったため、各メンバーの応答時間を分散させることができる
    • 応答時間はMaximum Response Timeフィールドで指定する

IGMPv3

  • 特定ソースからのマルチキャストトラフィックの受信の許可、不許可の意思をルータに示すことができる
  • Group Recordフィールドにマルチキャストグループへのメンバーシップに関する情報を含める
  • モード: 許可ベース:Include, 不許可ベース: Exclude