インターネットグループ管理プロトコル

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

インターネットグループ管理プロトコルIGMP)は、マルチキャストグループメンバーシップを確立するためにIPv4ネットワーク上のホストおよび隣接ルーターによって使用される通信プロトコルです。IGMPはIPマルチキャストの不可欠な部分であり、ネットワークがマルチキャスト送信を要求したホストにのみ送信できるようにします。

IGMPは、オンラインストリーミングビデオゲームなどの1対多のネットワークアプリケーションに使用でき、これらのタイプのアプリケーションをサポートするときにリソースをより効率的に使用できます。

IGMPはIPv4ネットワークで使用されます。IPv6ネットワークでのマルチキャスト管理は、 IGMPのベアIPカプセル化とは対照的に 、 ICMPv6の一部であるMulticast Listener Discovery (MLD)によって処理されます。

アーキテクチャ

IGMPを使用してマルチキャストサービスを提供するように設計されたネットワークは、次の基本アーキテクチャを使用する場合があります。

IGMP基本アーキテクチャ.png

IGMPは、ホストとローカルマルチキャストルーターの間で動作します。IGMPスヌーピングを備えたスイッチも、これらのIGMPトランザクションを監視することで有用な情報を導き出します。次に、 Protocol Independent Multicast(PIM)をローカルマルチキャストルーターとリモートマルチキャストルーターの間で使用して、マルチキャストを送信するホストから、IGMPを介して登録したホストにマルチキャストトラフィックを転送します。

IGMPは、ICMPなどの他のネットワーク管理プロトコルとまったく同じように、ネットワーク層(レイヤー3)で動作します。[2]

IGMPプロトコルは、ホストとルーター内に実装されています。ホストはローカルルーターを介してグループへのメンバーシップを要求しますが、ルーターはこれらの要求をリッスンし、定期的にサブスクリプションクエリを送信します。このクエリ機能を実行するために、サブネットごとに1台のルーターが選択されます。一部のマルチレイヤスイッチには、IGMPクエリア機能が含まれており、レイヤ2ネットワークにIGMP対応ルータがない場合でもIGMPスヌーピング機能を動作させることができます。

IGMPは一部の攻撃に対して脆弱であり、[3] [4] [5] [6]ファイアウォールは通常、ユーザーが不要な場合にそれを無効にすることを許可します。

バージョン

IGMPには3つのバージョンがあります。[7] IGMPv1はRFC1112で定義され IGMPv2はRFC 2236で定義され IGMPv3は最初にRFC3376で定義さましRFC 4604は、IGMPv3とMLDv2の両方を更新して、ソース固有のマルチキャストをより適切にサポートします。IGMPv2は、ホストがマルチキャストグループを離れたいという希望を通知する機能を追加することにより、IGMPv1を改善します。IGMPv3は、送信元固有のマルチキャスト[8]をサポートすることで、IGMPv2を改善し、メンバーシップレポートの集約を導入します。    

これらのバージョンには下位互換性があります。IGMPv3をサポートするルーターは、IGMPv1、IGMPv2、およびIGMPv3を実行しているクライアントをサポートできます。IGMPv1は、クエリ応答モデルを使用します。クエリは224.0.0.1に送信されます。メンバーシップレポートは、グループのマルチキャストアドレスに送信されます。IGMPv2は、グループを離れるプロセスを加速し、他のタイムアウトを調整します。グループ離脱メッセージは224.0.0.2に送信されます。グループ固有のクエリが導入されました。グループ固有のクエリは、グループのマルチキャストアドレスに送信されます。ルーターがネットワークのIGMPクエリアを選択する手段が導入されました。IGMPv3は、送信元固有のマルチキャスト機能を導入します。メンバーシップレポートは224.0.0.22に送信されます。

メッセージ

IGMPメッセージにはいくつかの種類があります。

一般的なメンバーシップのクエリ
マルチキャストルーターによって送信され、ネットワークに接続されているシステムに関係するマルチキャストアドレスを判別します。これらのアドレスは、ネットワーク上のすべてのシステムのグループメンバーシップ状態を更新するのに役立ちます。
グループ固有のメンバーシップクエリ
特定のマルチキャストアドレスの受信状態を判別するために使用されます
グループおよびソース固有のクエリ
ユニキャストアドレスのリストで指定された送信元アドレスからマルチキャストグループに送信されたメッセージの受信をシステムが望んでいるかどうかをルータが判断できるようにします。
メンバーシップレポート
メンバーシップクエリに応答して、またはマルチキャストグループに最初に登録するときに非同期でマルチキャスト受信者によって送信されます
グループメッセージを残す
指定されたマルチキャスト送信が受信者で不要になったときに、マルチキャスト受信者によって送信されます

IGMPメッセージは、 IPプロトコル番号2のベアIPパケットで伝送されます。 [9] :§4 インターネット制御メッセージプロトコルと同様に、IGMPメッセージングで使用される トランスポート層はありません。

IGMPv2メッセージ

IGMPv2パケット構造[10] :§2 
ビットオフセット 0〜7 8〜15 16〜31
0 タイプ 最大応答時間 チェックサム
32 グループアドレス

どこ:

タイプ
メッセージタイプを次のように示します
IGMPメッセージタイプの値
メッセージ タイプ値
メンバーシップクエリ 0x11
IGMPv1メンバーシップレポート 0x12
IGMPv2メンバーシップレポート 0x16
IGMPv3メンバーシップレポート 0x22
グループを離れる 0x17
最大応答時間
メンバーシップクエリ(0x11)への応答に必要な応答性を指定します。このフィールドは、メンバーシップクエリでのみ意味があります。他のメッセージでは、0に設定され、受信者によって無視されます。フィールドは0.1秒単位で時間を指定します(10のフィールド値は1秒を指定します)。値を大きくするとIGMPトラフィックのバースト性が低下し、値を小さくすると最後のホストがグループを離れるときのプロトコルの応答性が向上します。[10] :§2.2 
グループアドレス
これは、グループ固有またはグループとソース固有のクエリを送信するときに照会されるマルチキャストアドレスです。一般クエリを送信すると、フィールドはゼロになります。

メッセージは、次のIP宛先アドレスを使用して送信されます。

IGMPv2宛先アドレス[10] :§9 
メッセージタイプ マルチキャストアドレス
一般的なクエリ すべてのホスト(224.0.0.1)
グループ固有のクエリ 照会されているグループ
メンバーシップレポート(すべてのIGMPバージョン) 報告されているグループ
グループを離れる すべてのルーター(224.0.0.2)

IGMPv3メンバーシップクエリ

IGMPv3メンバーシップクエリ[9] :§4.1 
ビットオフセット 0〜3 4 5–7 8〜15 16〜31
0 タイプ= 0x11 最大応答コード チェックサム
32 グループアドレス
64 Resv S QRV QQIC ソースの数(N)
96 送信元アドレス[1]
128 送信元アドレス[2]
送信元アドレス[N]

どこ:

最大応答コード
このフィールドは、応答レポートを送信する前に許可される最大時間(1/10秒単位)を指定します。数値が128未満の場合、値が直接使用されます。値が128以上の場合、指数と仮数として解釈されます。
チェックサム
これは、IGMPメッセージ全体の1の補数の合計の16ビットの1の補数です。
グループアドレス
これは、グループ固有またはグループとソース固有のクエリを送信するときに照会されるマルチキャストアドレスです。一般クエリを送信すると、フィールドはゼロになります。
Resv
このフィールドは予約されています。送信時にはゼロにし、受信時には無視する必要があります。
S(ルーター側処理の抑制)フラグ
このフラグが設定されている場合、通常のタイマー更新を抑制することを受信ルーターに示します。
QRV(Querierのロバストネス変数)
これがゼロ以外の場合、クエリの送信者が使用するロバストネス変数の値が含まれます。ルーターは、値がゼロでない限り、最後に受信したクエリに一致するようにロバストネス変数を更新する必要があります。
QQIC(Querierのクエリ間隔コード)
このコードは、クエリアが使用するクエリ間隔の値(秒単位)を指定するために使用されます。数値が128未満の場合、値が直接使用されます。値が128以上の場合、指数と仮数として解釈されます。
ソースの数(N)
このフィールドは、クエリに存在する送信元アドレスの数を指定します。一般クエリおよびグループ固有クエリの場合、この値はゼロです。グループおよびソース固有のクエリの場合、この値はゼロ以外ですが、ネットワークのMTUによって制限されます。
送信元アドレス[i]
Source Address [i]フィールドは、n個のIPユニキャストアドレスのベクトルです。ここで、nは、Number of Sources(N)フィールドの値です。

実装

FreeBSD[注1] Linux [注2]およびWindows オペレーティングシステム、ホスト側でIGMPをサポートしています。

も参照してください

メモ

  1. ^ IGMPv3は、バージョン8.0でFreeBSDに追加されました。
  2. ^ IGMPv3は、Linux2.5カーネルシリーズに追加されました。

参考文献

  1. ^ W. Richard Stevens、 TCP / IP Illustrated、Volume 1:The Protocols、Addison Wesley、1994、ISBN0-201-63346-9。
  2. ^ Forouzan、Behrouz A.(2012)。データ通信とネットワーキング(第5版)。ニューヨーク州ニューヨーク:McGraw-Hill。p。658. ISBN 978-0073376226
  3. ^ なりすましのIGMPレポートのサービス拒否の脆弱性。
  4. ^ 「断片化されたIGMPパケットは、「サービス拒否」攻撃を促進する可能性があります」2004年12月20日。2005-02-13のオリジナルからアーカイブ。
  5. ^ ウェイバックマシンで2006-10-13にアーカイブされたIGMPセキュリティ問題ステートメントと要件
  6. ^ 「TCP / IPの脆弱性により、サービス拒否が可能になる可能性があります(MS06-007、913446))」2006年2月14日。2007-02-05のオリジナルからアーカイブ。
  7. ^ IPマルチキャストルーティング構成ガイドシスコ、25〜28ページ、2017年5月27日取得
  8. ^ 「インターネットグループ管理プロトコルの概要」Javvin。2010年11月10日にオリジナルからアーカイブされまし2010年11月18日取得
  9. ^ a b インターネットグループ管理プロトコル、バージョン3土井10.17487 / RFC3376RFC3376_
  10. ^ a b c インターネットグループ管理プロトコル、バージョン2土井10.17487 / RFC2236RFC2236_