30 Minutes NetWorking
No.SW22

30Minutes NetWorking

BCMSN

第22回マルチキャスト(2) IGMPv1

■ マルチキャストの転送

スーパーインター博士

さてさて、前回からIPマルチキャストの話をしているな。

ハイパーネット助手

任意の複数宛のデータ転送ですね。

スーパーインター博士

うむ。前回はクラスDのマルチキャストアドレスと、マルチキャストMACアドレスの生成の話をしたわけだ。

ハイパーネット助手

0100.5eなんとか、でしたね。

スーパーインター博士

うむうむ。
さて、実際にマルチキャストを送るとなると、どうなるかという話をまずしたい。

ハイパーネット助手

実際に送るって、こうバーっとマルチキャスト宛にバババッーっと送るんじゃないんですか?

スーパーインター博士

素晴らしい。なんとも直感的に理解できる説明だ。

ハイパーネット助手

でしょ?

スーパーインター博士

まぁ、日本語が不自由なネット君は置いておくとして、ちゃんと説明しよう。
同一サブネット内ならば、確かにネット君が言うとおり、マルチキャスト宛のパケットを流してしまえば事は済む。

[FigureSW22-01:同一サブネット内のマルチキャスト]

ハイパーネット助手

もともとイーサネットはブロードキャスト型ですしね。あとは受け取った側が処理するかしないか決めるだけじゃないですか。
ほらほら〜、バーっとバババッーっと送るんじゃないですか。

スーパーインター博士

擬音で物事を説明するな

ハイパーネット助手

あぅ。

スーパーインター博士

問題はルータが間に入った場合、別のサブネットに送信する場合だ。

[FigureSW22-02:複数サブネットでのマルチキャスト]

ハイパーネット助手

マルチキャストグループがあるルータへのパスと、マルチキャストグループがあるかどうかを知らなきゃいけない?

スーパーインター博士

そうだ。でなければ結局ブロードキャストと同じになってしまうからな。

ハイパーネット助手

そうですねぇ、ブロードキャストの負荷を減らすのがマルチキャストですのにねぇ。

スーパーインター博士

うむ。で、ムービーでは説明が逆になってしまったが、まず、各ルータは自分が接続しているサブネットにマルチキャストグループが存在しているかを確認する。

ハイパーネット助手

そのルータがマルチキャストを必要としているか、ですね。

スーパーインター博士

そうだ。この時使うプロトコルが、今回説明するIGMPだ。

ハイパーネット助手

あいじーえむぴー。いんたーねっとぐるーぷまねじめんとぷろとこる?
ネットワーク間グループ管理プロトコル、かな?

スーパーインター博士

うむ、その訳は正しいと思われる。
もう1つ、ルータはマルチキャストグループへのパスを作成しなければならない。ネット君、ルータがパスを作成するには?

ハイパーネット助手

パスを作る? え? ルーティングプロトコル?

スーパーインター博士

よしよし。マルチキャストルーティングプロトコルが必要、ということだな。
これについては先の回で説明する。

ハイパーネット助手

IGMPとマルチキャストルーティングプロトコルがマルチキャストには必要ってことですね。

■ IGMP

スーパーインター博士

さて、今回の話のメインはここから。IGMPだ。

ハイパーネット助手

いんたーねっとぐるーぷまねじめんとぷろとこる。ネットワーク間グループ管理プロトコルですよね。

スーパーインター博士

うむ。IGMPには最初に作られたIGMP、つまりIGMPバージョン1と、後になって拡張されたIGMPバージョン2がある。 ▼ link

ハイパーネット助手

v1とv2ッスね。RIPみたいですね。

スーパーインター博士

IGMPは先ほど説明したように、ルータが接続されているサブネットにマルチキャストグループが存在するかどうか確かめるプロトコルだ。これを逆の立場から言うと?

ハイパーネット助手

逆の立場? ルータの逆?

スーパーインター博士

ホストが自身が所属しているマルチキャストグループをルータに通知するプロトコルでもある、ということだ。

ハイパーネット助手

あ〜、そういう意味で逆ね。はいはいはい。

スーパーインター博士

何が言いたいか、というと。ホスト側もIGMPに対応してなければダメだ、ということだな。

ハイパーネット助手

なるほどです。

スーパーインター博士

さて、IGMPで使う用語を説明しよう。ホストに対しマルチキャストグループに参加しているかどうかを確認するデバイスのことをクエリアと呼ぶ。

ハイパーネット助手

くえりあ? 「クエリ + er」ですね。
「問い合わせる者」かな?

スーパーインター博士

そうだな。つまりはルータのことだ。
そして、使われるIGMPで使われるメッセージは、IPを直接利用する、IGMPメッセージってやつだな。これには2種類ある。

  • クエリメッセージ … クエリアから送信される、ホストがどのマルチキャストグループに所属するかの問い合わせ
  • レポートメッセージ … ホストからクエリアに送信される、クエリメッセージの応答
ハイパーネット助手

くえりと、れぽーとですね。

スーパーインター博士

そうだ。では、まずバージョン1から説明していこう。

ハイパーネット助手

はいはい。

■ IGMPv1

スーパーインター博士

IGMPは先ほども言ったように、IPを直接使用する。
IGMPv1メッセージのフォーマットは以下の通り。

フィールド名ビット数説明
Ver4IGMPのバージョンを示す
Type41…クエリメッセージ、2…レポートメッセージ
Unused8未使用(0を入れる)
CheckSum16チェックサム
GroupAddress32グループアドレス(後述)

[TableSW22-01:IGMPv1メッセージフォーマット

スーパーインター博士

全体で8バイトのメッセージになる。各クエリアはIGMPv1メッセージをIPのTTLを1で送信する

ハイパーネット助手

TTLを1で? TTLが1ってことは、違うルータに届いた時点で破棄されますよ?

スーパーインター博士

確かに。だから、そのサブネットにしかIGMPメッセージは届かない、ということになるな。
他のサブネットにIGMPメッセージが転送されないからな。

ハイパーネット助手

なるほど。そういう使い方でTTLを1にするんだ。

スーパーインター博士

さて、IGMPが何をするかというと。簡単言えばマルチキャストグループを管理するわけだ。
サブネットにマルチキャストグループのメンバがいるか調べたり、だな。

ハイパーネット助手

クエリアがクエリメッセージを使って問い合わせる?

スーパーインター博士

まぁ、そうだ。
マルチキャストグループの管理でIGMPが行うことは以下の4つ。

  • 参加 … ホストがマルチキャストグループのメンバになることを通知する
  • 問い合わせ … クエリアがサブネット内にメンバを探す
  • 維持 … 定期的に問い合わせを行う
  • (離脱 … メンバがマルチキャストグループから離脱する)
ハイパーネット助手

4つ…。なんで最後の離脱はカッコ書きなんですか?

スーパーインター博士

うむ、IGMPv1では能動的に離脱を行わない

ハイパーネット助手

んんん? 能動的に行わない? じゃ受動的ですか?

スーパーインター博士

受動的、というか。
問い合わせに対して応答しないことにより離脱するわけだな。

ハイパーネット助手

あ〜、そういう意味で「能動的にしない」ってことですか。
「いますか〜」って返事に黙っていればいないことになりますからね。

■ IGMPv1の動作

スーパーインター博士

さて、実際IGMPv1の動作について説明しよう。

[FigureSW22-03:IGMPv1の動作]

ハイパーネット助手

クエリをクエリアが送信し、レポートをホストが送り返す。
それによりルータはマルチキャストグループがあることを知る…。

スーパーインター博士

そういうことだ。

ハイパーネット助手

う〜ん。でもなんか変というか。
わざわざカウントなんてして、1台だけが応答するんですね。全部が応答してしまえばいいのに。

スーパーインター博士

マルチキャストグループの1台だけ応答すれば用が足りるだろう?
ルータが知りたいのは「メンバが何台いるか」ではなく「マルチキャストグループがあるかないか」なのだから。

ハイパーネット助手

いやまぁ、そうですけど。

スーパーインター博士

この1台だけが応答する仕組みにして、帯域を節約したり、他のホストの処理量を減らしているんだよ。
この仕組みを応答抑制という。

ハイパーネット助手

なるほど。

スーパーインター博士

注意するポイントを。
まず、レポートは各マルチキャストグループのうち1台が応答する、サブネットで1台ではない。

グループごとのレポート

[FigureSW22-04:グループごとのレポート]

ハイパーネット助手

グループの中で、カウンタがはやく0になったメンバ1台が応答するんですね。

スーパーインター博士

そういうことだ。また、クエリメッセージは60秒に1回がデフォルトだ。
そのため、こういうことをする。

[FigureSW22-05:マルチキャストグループへの参加]

ハイパーネット助手

は〜、クエリの合間に来た場合、クエリがなくてもレポート出すんですね。
なんていうのかな、GratuitousARP?

スーパーインター博士

あ〜、シブイところを持ってきたな。確かにGratuitousARPもそうだな。
ともかく、これがIGMPv1の参加、問い合わせ、維持の3つの動作なわけだ。

ハイパーネット助手

で、離脱は問い合わせに応答がなくなったら、そのマルチキャストグループは存在しない、って形ですね?

スーパーインター博士

そういうことだ。では、今回はこのぐらいにしておこう。

ハイパーネット助手

はいな。

スーパーインター博士

次回はIGMPv2の話をする。

ハイパーネット助手

了解です。
30分間ネットワーキングでした〜♪

IGMP
[Internet Group Management Protocol]
マルチキャストルーティングプロトコル
[MultiCasting Routing Protocol]
DVMRP、MOSPF、PIMなど。後述。
IGMPバージョン1
IGMPv1と略される。
RFC1112の「Host Extensions for IP Multicasting」で定義。
IGMPバージョン2
IGMPv2と略される。
RFC2236で定義。
クエリア
[querier]
応答抑制
[Response Suppression]
ハイパーネット助手ハイパーネット君の今日のポイント
  • マルチキャストを実行するには、以下の2つが必要。
    • ルータは自分が接続しているサブネットにマルチキャストグループが存在しているかを知る。
    • ルータはマルチキャストグループへのパスを作成しなければならない。
  • マルチキャストグループの存在を確認するためのプロトコルがIGMP。
    • IGMPはIPを直接利用する。
    • IGMPはバージョン1と2が存在する。
  • IGMPメッセージにはクエリとレポートがある。
    • クエリア(ルータ)はクエリメッセージで問い合わせる。
    • ホストは自分が所属するグループをレポートで通知する。

30 Minutes NetWorking No.SW22

管理人:aji-ssz(at)selene.is.dream.jp