マルチキャストとは
マルチキャストとは、1 つの送信元から、複数の宛先へ、同じデータを送る通信のことです。
送信元 (Source と言います) から送出したパケットは、ルータやスイッチで複製され、やがて受信端末 (Receiver と言います) たちに届きます。1 つの Source から投げられた 1 つのマルチキャストパケットが複数の Receiver に届けられます。
マルチキャストの主な利用シーンは、リアルタイム映像配信や PC への OS イメージ配信などです。
以下にリアルタイム映像配信の例のイメージを示します。
マルチキャストパケットにおいて、送信元 IP アドレスは、通常の IP アドレスを使いますが、宛先 IP アドレスとしては、クラス D の『224.0.0.0〜239.255.255.255』のレンジが使われます。
ただし、受信端末 (Receiver) 側では OS 等に設定する IP アドレスを変える必要はありません。
その代わり、OS ではなく映像受信ソフト等のアプリケーションがマルチキャストアドレスを管理します。
つまり、OS で管理するユニキャスト用の IP とは別に、マルチキャストを受信したいアプリケーションが個別にマルチキャストアドレスを持ちます。1 つのアプリで複数のマルチキャストアドレスに参加することも可能です。
受信端末 (Receiver) は、そのマルチキャストアドレスの受信を IGMP というプロトコルで、同セグメントのルータに要求し、そのルータは PIM 等のマルチキャストルーティングプロトコルで他のルータと情報を交換し、どこにマルチキャスト通信を届ければよいかを知ることができます。
一方、送信元 (Source) からマルチキャストパケットを受信すると、やはり PIM 等のマルチキャストルーティングプロトコルが動作し、受信端末へ向けてのルートを確保するようになります。
マルチキャストは 1 対複数通信を想定しているため、トランスポート層として 1 対 1 を想定している TCP を使うことはできません。
マルチキャストの場合、トランスポート層を使う場合は UDP を使います。
一般的に使われるマルチキャストの種類には、Ethernet の MAC アドレスの L2 マルチキャストと IP アドレスの L3 マルチキャストがありますが、以降、単に『マルチキャスト』と呼ぶ場合は L3 マルチキャストを指すこととします。
マルチキャストのメリット・デメリット
マルチキャストを利用することで、以下のメリットがあります。
- 1 つのパケットで複数の端末へ通信できるため、送信元の負荷が軽く、さらに回線効率が良い。例えば宛先として 100 台が対象なら、ユニキャストの場合は 100 必要なところ、マルチキャストであれば 1 パケットでよい。
- 宛先のアドレス管理が楽。例えば先の例で、受信端末を他のセグメントに持って行った場合、ユニキャストであれば IP カメラ側も宛先 IP アドレスを変更しなければならないが、マルチキャストであれば特に設定変更は必要ない。
逆に以下のデメリットがあります。
- ユニキャストと比べてマルチキャストルーティングは実装されることが少なく、学習の機会も少ないため、理論や設計・設定が複雑だと誤解されやすい。ゆえにさらに実装されることが少なくなる。
- TCP には使えない (基本的に片方向通信でしか使えない)。※ただし、上位プロトコルで受信有無を確認し、受信していない場合はユニキャストで要求する、といった実装の工夫は可能 (例えば OSPF の LSACK がそうなっている)
L2 マルチキャスト
L2 マルチキャストは主に管理系プロトコルで使われます (例えば STP や LLDP 等)。
これらのプロトコルはそれぞれ独自の L2 マルチキャスト MAC アドレスを持っています。
代表的なものを以下の表に示します。
MAC address | 規格 | 備考 |
---|---|---|
01:00:0c:cc:cc:cc | CDP/VTP | |
01:00:0c:cc:cc:cd | PVSTP | Per VLAN |
01:80:c2:00:00:00 | IEEE802.1D | STP/RSTP/MSTP |
01:80:c2:00:00:01 | IEEE802.3X | フロー制御(PAUSE) |
01:80:c2:00:00:02 | IEEE802.3ah | Slow Protocol(LACP/EFM OAM) |
01:80:c2:00:00:03 | IEEE802.1x | EAP |
01:80:c2:00:00:0E | LLDP | |
01:80:c2:00:00:10 | -(All Switch) | すべてのスイッチ |
01:80:c2:00:00:14 | IS-IS Level1 | |
01:80:c2:00:00:15 | IS-IS Level2 | |
01:80:c2:00:00:30 ~ 01:80:c2:00:00:3F | IEEE802.1ag | CFM(L2ping/L2traceroute) |
01:00:5E:XX:XX:XX | IPv4 | 下23bit(詳細は次章) |
33:33:XX:XX:XX:XX | IPv6 | 下32bit |
L2 マルチキャストにはルーティング機能はないため、L2 ブロードキャストと比べて到達可能範囲は変わりません。このケースにおいて、L2 ブロードキャストと異なる点は何でしょうか。
それは受信側の負荷です。
L2 ブロードキャスト MAC アドレスは、全端末がフレームの中身を理解しなければならないため、全端末で NIC から CPU へ情報が渡されます。その内容が自分と関係なければその内容を破棄します。
一方、L2 マルチキャスト MAC アドレスは、受信端末はその MAC アドレスだけで自分が受信すべきかどうかを判断し、必要であれば CPU に渡します。
L2マルチキャストとL3マルチキャストの関係
L3 マルチキャストを Ethernet で運ぶ場合、L2 マルチキャスト MAC アドレスは、最初の 24 bit は『01005e』となり、その次の 1 bit は『0』になる、というのが規格で決まっています。
残りの 23 bit は、L3 マルチキャスト IP アドレスの下 23 bit です。
こうすることで、受信端末は、MAC アドレスだけを見て、かなりの確率で不要なマルチキャストアドレスを見抜くことができ、CPU 負荷を抑えることができます。
たまたま重複すると、不要なマルチキャストを CPU 処理させてしまうことはありますが、この部分は仕方のないものとして諦めます。
マルチキャストアドレスのレンジと用途
マルチキャストアドレスはアドレス帯によって用途が違います。
具体的には以下のようになっています。
レンジ | 用途 | 備考 |
---|---|---|
224.0.0.0~224.0.0.255 | リンクローカル | マルチキャストルーティングしない |
224.0.1.0~231.255.255.255 | グローバル | インターネット上でマルチキャストルーティングする |
232.0.0.0~232.255.255.255 | SSM | ソース指定のマルチキャスト |
233.0.0.0~233.255.255.255 | GLOP | AS番号を保持した組織固有のアドレス |
234.0.0.0~238.255.255.255 | グローバル | インターネット上でマルチキャストルーティングする |
239.0.0.0~239.255.255.255 | プライベート | プライベートNW上でマルチキャストルーティングする |
224.0.0.0 ~ 224.0.0.255 (リンクローカル)
RIP/OSPF/EIGRP 等で利用される、宛先が 224.0.0.0〜224.0.0.255 のマルチキャストアドレスは、基本的には TTL=1 で動作する、送信元 IP と宛先 IP が同セグメント内でのマルチキャスト通信に限られます。(例外的に、VRRP や HSRP、GLBP は同セグメント内のみの通信であることが前提ですが、TTL は 255 であること、と定められています)
代表的な予約されたリンクローカルアドレスを以下の表に示します。
224.0.0.1 | 全ホスト(ルータ含む) |
---|---|
224.0.0.2 | 全ルータ(PIMv1やIGMPv1/v2、HSRPv1もこのアドレスを利用) |
224.0.0.4 | 全DVMRPルータ |
224.0.0.5 | 全OSPFルータ |
224.0.0.6 | OSPF DR/BDRルータ |
224.0.0.9 | RIPv2 |
224.0.0.10 | EIGRP |
224.0.0.13 | PIMv2 |
224.0.0.18 | VRRP |
224.0.0.22 | IGMPv3 |
224.0.0.102 | HSRPv2 / GLBP |
224.0.0.251 | multicast DNS |
224.0.0.252 | Link-Local Multicast Name Resolution |
224.0.1.0~231.255.255.255 / 234.0.0.0~238.255.255.255 (グローバル)
一般用途のマルチキャストアドレスです。これも一部予約アドレスがあります。
224.0.1.1 | NTP multicast |
224.0.1.39 | Auto-RP-Announce |
224.0.1.40 | Auto-RP-Discovery |
232.0.0.0~232.255.255.255 (SSM)
Source Specific Multicast の略で、ソース (送信元) があらかじめ決められていなければならないマルチキャストアドレスです。
クライアント側では IGMPv3 による要求が必要です。(ただし、ソース指定せず、他のグローバルマルチキャストアドレスと同じ使い方もできます)
233.0.0.0~233.255.255.255 (GLOP)
AS 番号 (16bit: 0~65535) を保持する組織が自由に使えるマルチキャストアドレスです。
第 2 ,第 3 オクテットの 16 bit が、AS 番号になります。
例えばAS 番号 10000 を持つ組織は、10000 = [39*256 + 16] なので233.39.16.0~233.39.16.255のアドレスが自由に使えます。
239.0.0.0~239.255.255.255 (プライベート)
社内 NW などのプライベート NW 内で利用されるマルチキャストアドレスです。
代表的な予約アドレスとしてUPnP (Unisersal Plug and Play: 239.255.255.250) があります。
コメント
分かりやすい解説ありがとうございます。
L2マルチキャストとL3マルチキャストの関係の節で、疑問を感じたので質問させてください。
マルチキャストMACアドレスの重複についてです。
>こうすることで、受信端末は、MAC アドレスだけを見て、かなりの確率で不要なマルチキャストアドレスを見抜くことができ、CPU 負荷を抑えることができます。
マルチキャストIPアドレスの下 23 bitが一致しているとマルチキャストMACアドレスが重複してしまい、不要なマルチキャストを CPU 処理させてしまうことはあるという理解です。
そもそもなのですが、端末が参加していないマルチキャストグループのマルチキャストメッセージ(上記で書かれている不要なマルチキャスト)が届くことがあるのでしょうか?
上記は端末が複数のマルチキャストグループに参加していて、そのマルチキャストIPアドレスによっては、マルチキャストMACアドレスが重複してしまうという理解でしょうか?
だとしたら不要なマルチキャストではないのでは・・・?と思ってしまいました。
(マルチキャストグループに参加しているので)
拙い文章で申し訳ありませんがよろしくお願いします。
shuさん、コメントありがとうございます。
> そもそもなのですが、端末が参加していないマルチキャストグループのマルチキャストメッセージ(上記で書かれている不要なマルチキャスト)が届くことがあるのでしょうか?
はい、あります。L2 マルチキャストは L2 上は (IGMP snooping 等の機能などを使わない場合) ブロードキャストされますので、L3 レベルで参加していないマルチキャストも L2 レベルで届いてしまいます。
L3 のマルチキャストと L2 のマルチキャストを区別して理解することが肝要と思います。
ご返信ありがとうございます。
>はい、あります。L2 マルチキャストは L2 上は (IGMP snooping 等の機能などを使わない場合) ブロードキャストされますので、L3 レベルで参加していないマルチキャストも L2 レベルで届いてしまいます。
不勉強で申し訳ありません。
L2マルチキャストとL3マルチキャストがごっちゃになっていました。
L3マルチキャストを行う、かつ、ルータと端末の間にL2スイッチを噛ませている場合、L2スイッチより端末側のL2マルチキャストによって、L3 レベルでグループに参加していない端末にもL3マルチキャストが届いいてしまうと理解しました。
あっていますでしょうか・・・?
L2レベルでは基本的な動作としてはブロードキャストと同じと考えてください。基本的な動作においてはL2スイッチは同一ブロードキャストドメインのすべてのポートからマルチキャストを送信します。
このときL2スイッチはL2のEthernetヘッダしか考慮しませんのでL3のIPヘッダは見ません。
https://milestone-of-se.nesuke.com/nw-basic/ethernet/ethernet/
上記リンクの Individual/Group bit を見ています。
ルータなどのL3機器がマルチキャストパケットをL2のEthernetフレームに生成するとき、IPヘッダを見てマルチキャストであることを理解するので、送信するときに、それに適したEthernetヘッダを作成しフレームを送出します。
基本的には上記の通りL2スイッチは全てのポートからフレームを送出しますが、L2スイッチの機能として IGMP snooping 等を有効にした場合は、適切なポートからのみ送出することができます。
ただ、マルチキャストはNWが細い時代においてのNW効率性を上げるためのものですが、 NWが高速化した今の時代ではあまり利用されるシーンも少なくなってきましたね。
返信が遅くなってしまい申し訳ございません。
詳しいご解説ありがとうございます。
ようやっと理解できました。