マルチキャストとは、決められたグループの複数の端末に対して、同一データを一斉に送信する方法で、会員に向けた株価や為替の情報発信、テレビ会議やビデオストリーミング、監視カメラの映像配信などで利用されることが多い。マルチキャストを利用すれば、1つのデータを効率よく複数の宛先に同じ内容のデータを転送することができる。

そこで、今回と次回の2回構成でネットギア製品でのマルチキャスト機能について紹介する。まずは、マルチキャストの基本的な技術の仕組みを解説しよう。

マルチキャストアドレス

ほとんどの通信は、ユニキャストで1対1の通信となる。一方、マルチキャストの通信は宛先が複数のホストとなるので、1対多の通信だ。マルチキャストの通信には、宛先のホストをグループ化するマルチキャストアドレスを利用する。マルチキャストアドレスは、クラスDのIPアドレスで以下の範囲となる。

224.0.0.0~239.255.255.255

このうち、239.0.0.0~239.255.255.255の範囲は、プライベートなマルチキャストアドレスだ。社内ネットワークでマルチキャストを利用するときには、基本的にこの範囲のアドレスを利用することなる。マルチキャストの宛先となる各ホストでは、マルチキャストアプリケーション上で同じマルチキャストアドレスを指定してグループを構成する。

そして、マルチキャストサーバは宛先IPアドレスとしてマルチキャストアドレスのパケットをネットワーク上に送信する。マルチキャストサーバが送信するマルチキャストパケットは1つだけだ。ネットワーク上で必要に応じてマルチキャストパケットが複製されて、複数のホストへと転送される。

なお、1対多の通信にはブロードキャストの通信もあるが、ブロードキャストはブロードキャストの一部だ。ブロードキャストは「ネットワーク全体」と説明されることがあるが、これは正確ではない。ブロードキャストの通信とは、正確には「同じネットワーク内のすべてのホスト宛て」である。つまり、ブロードキャストは「同じネットワーク内」というグループに対するマルチキャストの通信ということになる。

図1:ユニキャストとマルチキャスト

マルチキャストパケットの転送

マルチキャストサーバ側では、マルチキャストパケットは1つだけ送信する。そのマルチキャストパケットがネットワーク上のルータ(レイヤ3スイッチ)やレイヤ2スイッチで複製され、最終的に複数のホストへと転送される。

ルータ(レイヤ3スイッチ)とレイヤ2スイッチでは、マルチキャストパケットの扱いが異なっている。レイヤ2スイッチは、マルチキャストパケットをフラッディング(接続されたすべてのノードに送信)する。すなわち、ブロードキャストと同じ扱いだ。レイヤ2スイッチの転送は、同一ネットワーク内なので、同じネットワーク内であれば特別なことはなにもしなくてもマルチキャストパケットは転送される。

一方、ルータ(レイヤ3スイッチ)では、やはりブロードキャストと同じ扱いで、デフォルトではマルチキャストパケットをブロックする。つまり、マルチキャストパケットはネットワークを超えて転送されないことになる。

図2:マルチキャトパケットの転送

マルチキャストサーバとクライアントが同一ネットワーク上に接続されるケースよりも、異なるネットワークに接続されるケースのほうが多いだろう。マルチキャストサーバから送信されたマルチキャストパケットがネットワークを超えてクライアントまで転送するには、ルータ(レイヤ3スイッチ)でマルチキャストルーティングを行う必要がある。

マルチキャストルーティングの概要

マルチキャストルーティングとは、ルータ(レイヤ3スイッチ)でデフォルトではブロックするマルチキャストパケットを異なるネットワーク間で転送できるようにするための機能だ。また、転送する際に必要ならば、マルチキャストパケットを複製する。

マルチキャストルーティングを行うためには、ルータ(レイヤ3スイッチ)はマルチキャストクライアントの存在を把握しなければいけない。ルータ(レイヤ3スイッチ)がマルチキャストクライアントの存在を把握できるように、次のプロトコルを利用する。

・IGMP(Internet Group Management Protocol)
・PIM(Protocol Independent Multicast)

IGMPは、マルチキャストクライアントが同一ネットワーク上のルータ(レイヤ3スイッチ)に対して、自身の存在を通知するためのプロトコルだ。クライアントでマルチキャストアプリケーションを起動して、マルチキャストグループの設定を行うと、IGMPのメッセージを送信する。

そして、PIMはルータ(レイヤ3スイッチ)間でマルチキャストクライアントの情報を管理するために利用する。IGMPのメッセージをトリガーとして、PIMのメッセージをやり取りしてルータ(レイヤ3スイッチ)はマルチキャストクライアントがネットワーク上のどの部分に存在するかを把握できるようになる。ルータ(レイヤ3スイッチ)で把握するマルチキャストクライアントの情報は、ディストリビューションツリーまたはマルチキャストルーティングテーブルと呼ばれる。

そして、マルチキャストサーバからマルチキャストパケットが送信されると、ルータ(レイヤ3スイッチ)はディストリビューションツリーにしたがって、マルチキャストパケットを転送する。

次の図にマルチキャストルーティングの概要を示している。PC1とPC2でマルチキャストアプリケーションを動作させていて、マルチキャストクライアントとしている。PC1、PC2はIGMPのメッセージを送信して239.1.1.1のマルチキャストクライアントであることをL3SW1、L3SW2に通知する。そして、L3SW2はPIMのメッセージをL3SW1に送信して、自身の配下に239.1.1.1のマルチキャストクライアントが存在していることを通知している。

こうしてL3SW1とL3SW2はネットワーク上のマルチキャストクライアントの存在を把握することができ、その情報をディストリビューションツリーに保持する。L3SW1では、239.1.1.1のクライアントがVLAN10とL3SW2の配下にいると認識している。そして、L3SW2では、239.1.1.1のクライアントがVLAN20にいると認識している。

マルチキャストサーバから239.1.1.1宛てのマルチキャストパケットが送信されると、ディストリビューションにしたがって転送する。L3SW1は、受信したマルチキャストパケットをVLAN10とL3SW2へ転送する。このとき、マルチキャストパケットを複製する。そして、L3SW2は受信したマルチキャストパケットをVLAN20へ転送する。その結果、最終的にPC1とPC2へとマルチキャストパケットが届くことになる。

図3:マルチキャストルーティングの概要

PIM

ルータ(レイヤ3スイッチ)間でマルチキャストクライアントの存在を把握するために利用するPIMには、次の2種類ある。

・PIM-DM
・PIM-SM

2種類のうち、一般的に利用するのはPIM-SMだ。

PIM-DMのマルチキャストルーティングは、少しいい加減な動作をする。PIM-DMでは、

「とりあえずルータ間でマルチキャストパケットを転送して不要な部分の転送を止める」 という動作だ。

「図 マルチキャストルーティングの概要」の構成で考えると、L3SW1はとりえず、VLAN10にもL3SW2にもL3SW3にも転送する。そして、L3SW3の先にはマルチキャストクライアントがいないので、L3SW3からL3SW1に対してマルチキャストパケットは不要というPIMのメッセージを送信する。すると、L3SW1からL3SW3のマルチキャストパケットの転送が止まる。PIM-DMは、シンプルな動作ではあるのだが、最初にとりあえず転送するので、無駄なマルチキャストのトラフィックが発生することになる。そのため、現在ではあまり使うことはない。

一方、PIM-SMのマルチキャストルーティングは、

「RPを中心としてマルチキャストクライアントが存在するところにだけマルチキャストパケットを転送する」

という動作だ。

先ほどのマルチキャストルーティングの概要の部分で述べた動作はPIM-SMの動作となる。PIM-SMはマルチキャストパケットの転送を行う経路の中心としてRP(Rendezvous Point)という特別なルータを選択する。「図3 マルチキャストルーティングの概要」では、L3SW1をRPとしている。そして、IGMPとPIM-SMを利用して、マルチキャストクライアントがどの部分に存在するかというディストリビューションツリーの情報は、RPを中心として作成する。なお、RPを中心として作成されたディストリビューションツリーを共有ツリーと呼ぶ。

マルチキャストサーバから送信されたマルチキャストパケットは、RPまでは1つだけで、RPから必要に応じて複製されて、各マルチキャストクライアントへと転送される。

PIM-SMはRPの配置を検討した上で、各ルータ(レイヤ3スイッチ)に対してRPの情報の設定も必要になる。そのため、PIM-DMよりも動作も設定も複雑になるのだが、必要なところにだけマルチキャストパケットを転送できるというメリットがある。そのため、一般的にはPIM-SMを利用する。

次回は、ネットギアのレイヤ3スイッチ「GSM7328S」とレイヤ2スイッチ「GSM7248」でネットワークを構成し、PIM-SMのマルチキャストルーティングの設定を行い、その動作を検証する予定だ。