【図解】初心者にも分かるマルチキャストの仕組み~UDPの理由、メリット・デメリット、マルチキャストアドレス一覧~ | SEの道標
マルチキャスト

【図解】初心者にも分かるマルチキャストの仕組み~UDPの理由、メリット・デメリット、マルチキャストアドレス一覧~

マルチキャストとは

マルチキャストとは、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 等のマルチキャストルーティングプロトコルで他のルータと情報を交換し、どこにマルチキャスト通信を届ければよいかを知ることができます。

マルチキャストパケットは多くのアプリケーションで使われますが、多くのケースではパケット到達範囲は L2 の同一ブロードキャストドメインのみです。別セグメントへルーティングする場合は L3 の NW 機器にマルチキャストルーティングという特殊な設定を入れる必要があります。

一方、送信元 (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:ccCDP/VTP
01:00:0c:cc:cc:cdPVSTPPer VLAN
01:80:c2:00:00:00IEEE802.1DSTP/RSTP/MSTP
01:80:c2:00:00:01IEEE802.3Xフロー制御(PAUSE)
01:80:c2:00:00:02IEEE802.3ahSlow Protocol(LACP/EFM OAM)
01:80:c2:00:00:03IEEE802.1xEAP
01:80:c2:00:00:0ELLDP
01:80:c2:00:00:10-(All Switch) すべてのスイッチ
01:80:c2:00:00:14IS-IS Level1
01:80:c2:00:00:15IS-IS Level2
01:80:c2:00:00:30

01:80:c2:00:00:3F
IEEE802.1agCFM(L2ping/L2traceroute)
01:00:5E:XX:XX:XXIPv4下23bit(詳細は次章)
33:33:XX:XX:XX:XXIPv6下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.255SSMソース指定のマルチキャスト
233.0.0.0~233.255.255.255GLOPAS番号を保持した組織固有のアドレス
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.6OSPF DR/BDRルータ
224.0.0.9RIPv2
224.0.0.10EIGRP
224.0.0.13PIMv2
224.0.0.18VRRP
224.0.0.22IGMPv3
224.0.0.102HSRPv2 / GLBP
224.0.0.251multicast DNS
224.0.0.252Link-Local Multicast Name Resolution

224.0.1.0~231.255.255.255 / 234.0.0.0~238.255.255.255 (グローバル)

一般用途のマルチキャストアドレスです。これも一部予約アドレスがあります。

224.0.1.1NTP multicast
224.0.1.39Auto-RP-Announce
224.0.1.40Auto-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) があります。

コメント

  1. shu より:

    分かりやすい解説ありがとうございます。
    L2マルチキャストとL3マルチキャストの関係の節で、疑問を感じたので質問させてください。
    マルチキャストMACアドレスの重複についてです。

    >こうすることで、受信端末は、MAC アドレスだけを見て、かなりの確率で不要なマルチキャストアドレスを見抜くことができ、CPU 負荷を抑えることができます。

    マルチキャストIPアドレスの下 23 bitが一致しているとマルチキャストMACアドレスが重複してしまい、不要なマルチキャストを CPU 処理させてしまうことはあるという理解です。

    そもそもなのですが、端末が参加していないマルチキャストグループのマルチキャストメッセージ(上記で書かれている不要なマルチキャスト)が届くことがあるのでしょうか?

    上記は端末が複数のマルチキャストグループに参加していて、そのマルチキャストIPアドレスによっては、マルチキャストMACアドレスが重複してしまうという理解でしょうか?
    だとしたら不要なマルチキャストではないのでは・・・?と思ってしまいました。
    (マルチキャストグループに参加しているので)

    拙い文章で申し訳ありませんがよろしくお願いします。

    • nesuke より:

      shuさん、コメントありがとうございます。

      > そもそもなのですが、端末が参加していないマルチキャストグループのマルチキャストメッセージ(上記で書かれている不要なマルチキャスト)が届くことがあるのでしょうか?

      はい、あります。L2 マルチキャストは L2 上は (IGMP snooping 等の機能などを使わない場合) ブロードキャストされますので、L3 レベルで参加していないマルチキャストも L2 レベルで届いてしまいます。

      L3 のマルチキャストと L2 のマルチキャストを区別して理解することが肝要と思います。

      • shu より:

        ご返信ありがとうございます。

        >はい、あります。L2 マルチキャストは L2 上は (IGMP snooping 等の機能などを使わない場合) ブロードキャストされますので、L3 レベルで参加していないマルチキャストも L2 レベルで届いてしまいます。

        不勉強で申し訳ありません。
        L2マルチキャストとL3マルチキャストがごっちゃになっていました。
        L3マルチキャストを行う、かつ、ルータと端末の間にL2スイッチを噛ませている場合、L2スイッチより端末側のL2マルチキャストによって、L3 レベルでグループに参加していない端末にもL3マルチキャストが届いいてしまうと理解しました。

        あっていますでしょうか・・・?

        • nesuke より:

          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が高速化した今の時代ではあまり利用されるシーンも少なくなってきましたね。

          • shu より:

            返信が遅くなってしまい申し訳ございません。

            詳しいご解説ありがとうございます。
            ようやっと理解できました。

タイトルとURLをコピーしました