マルチキャストってなに? ユニキャストの場合
目次
ユニキャストで複数のあて先に送るとき
前回、複数のあて先に同じデータを送りたいというとき、ユニキャストでもブロードキャストでもできるけど、マルチキャストを使った方が効率がいいというお話をしました。
今回は、これがなぜか?ということを解説します。
ユニキャストで複数のあて先に送るとき
とっても簡単なネットワークを例に取ります。ひとつのイーサネットのネットワークにA、B、C、Dの4台のコンピュータが接続されています。IPアドレス、MACアドレスは図の中に記載されているとおりです。Aをビデオサーバとし、画像をCとDに対して配信するという場合を考えます。
ここで、データ通信のときの階層構造をもう一度意識しておいてください。送信元では、プロトコルの階層構造を上から下にたどって、ヘッダを付加していきます。あて先でデータを受け取ると、プロトコルの階層構造を下から上にたどってヘッダを解釈していきましたね?
バス型ネットワークで
ユニキャストの場合は、IPパケットをひとつのあて先にしか送ることができません。画像データの中身はまったく同じでも、送信先IPアドレスとして192.168.1.3、192.168.1.4を指定した2つのIPパケットを送らなくてはいけません。
このIPパケットは、IPアドレスに対応付けられるMACアドレスを指定したイーサネットフレームで運ばれることになります。
この例のようなバス型のイーサネットネットワークの場合、イーサネットフレームはすべてのコンピュータに到達します。各コンピュータは、イーサネットフレームの送信先MACアドレスを見て、自分あてのフレームであれば受け取って、IPに渡していき、ここで送信先IPアドレスを見て、さらに上位のプロトコルに渡して、最終的に映像を見ることができるようになります。
図でいうと、赤の線で示されたパケットはコンピュータCが受け取り、青の線で示されたパケットはコンピュータDが受け取ります。
ユニキャストを利用すると、受信者の数だけパケットを送る必要が出てくるわけですね。そうすると、当たり前のこととして、受信者の数が増えてくると、それだけネットワークに大きな負荷をかけてしまいます。
MPEG2という規格で動画を配信するには、約1.5Mbpsの帯域幅が必要だとされています。
すると、受信者が100人いると、
1.5×100=150Mbps
もの帯域幅を消費することになります。もちろん、ネットワーク上は動画だけでなく他のデータも流れているわけですから、受信者が増えれば増えるほど、ユニキャストを利用した複数のあて先へのデータ配信はネットワークにすごく負荷をかけてしまって、他の通信にも影響を与えかねなくなってきます。
スイッチ型ネットワークで
「いまは、スイッチを使って帯域幅占有の形だから何とかなるのでは?」
と思う人もいらっしゃるでしょう。
そうですね、いまの主流のネットワークでは、以下のようなスイッチにより、マイクロセグメンテーションを行って、各コンピュータが帯域幅を占有する形になっています。
確かにスイッチ環境であれば、各コンピュータあてのユニキャストは、そのコンピュータが接続されているポートにしか転送されませんので、スイッチと各コンピュータ間のポートのネットワークへの負荷は、受信者が増えても変わりません。
でも、ビデオサーバからスイッチ間では受信者の数だけユニキャストのパケットを送信しなくてはいけないのです。すると、受信者の数が増えれば増えるほど、サーバとスイッチ間の負荷がかかってしまい、この部分がボトルネックになってしまいます。
結論
ユニキャストで複数のあて先にデータを送るときには、受信者がたくさん増えてくると問題が発生してくることをわかっていただけましたか?
このようなネットワークは「スケーラビリティ」がないという風にも言われます。スケーラビリティという言葉はよく使われることがありますが、「拡張性」という意味です。たくさん増えたら問題が起こるということは、拡張性がないということになります。