マルチキャストとレイヤ2スイッチ
レイヤ2スイッチでは、ユニキャストはMACアドレステーブルからあて先のMACアドレスを持つコンピュータが接続されているポートに転送します。もしも、あて先MACアドレスがMACアドレステーブル上になければ、入ってきたポート以外のすべてのポートへ転送する、いわゆるフラッディングという動作になります。MACアドレステーブルに登録されていないあて先MACアドレスのフレームは、「Unknownユニキャスト」とも呼ばれます。また、ブロードキャストフレームは、同じVLAN内でフラッディングされることになります。
「じゃ、マルチキャストは?」というと、マルチキャストは基本的にはUnknownユニキャスト、ブロードキャストと同じ扱いです。レイヤ2スイッチは、マルチキャストを同じVLAN内でフラッディングします。
Unknownユニキャストは、そのうちMACアドレステーブルに登録されるし、ブロードキャストはもともと全部に送信するので、フラッディングは問題ないです。でも、マルチキャストがずっとフラッディングされると、受信者ではないコンピュータが接続されているポートにもマルチキャストが流れていってしまうことになります。
この図でいうと、コンピュータBは受信者でないのに、ずっとマルチキャストが流れてきてしまうということになってしまいます。これはムダですよね?できれば、マルチキャストの受信者がいないポートにはマルチキャストを流したくないです。
IGMPスヌーピングを使うと、余計なマルチキャストのフラッディングを制御して、ネットワークの帯域幅をムダに消費しないようにできます。
そもそもフラッディングされる理由は?
IGMPスヌーピングで、どうやってマルチキャストのフラッディングを制御するのかということを説明する前に、「そもそもなんでフラッディングされるのか?」ということを説明します。フラッディングされる原因がわかれば、IGMPスヌーピングで何をどうするのかがわかりやすくなります。
レイヤ2スイッチングがUnknownユニキャスト、ブロードキャスト、マルチキャストをフラッディングするのは、ズバリ、「MACアドレステーブルに載せられていないから」です。
MACアドレステーブルは、受信したフレームの送信元MACアドレスを登録することによって作っているわけですよね?じゃ、ちょっと考えてみてください。送信元MACアドレスがブロードキャストやマルチキャストになることがあるでしょうか?
そうですね、ありえませんよね?送信元MACアドレスは必ずユニキャストのMACアドレスになるはずなのです。
スイッチがフレームを転送するときに、いくらMACアドレステーブルを見てもブロードキャストやマルチキャストのアドレスは見当たらないため、「とにかくあて先がわからないから、全部送っちゃえ~」という感じで、フラッディングしてしまうわけですね。
※ただし、ブロードキャストの転送の時には、いちいちMACアドレステーブルを参照していないと思います。この辺は、実際の処理の作りこみの問題ですが、どうやっているかをご存知の方がいらっしゃれば教えてください。
IGMPスヌーピングがやっていること
じゃ、マルチキャストのフラッディングを制御するにはどうすればいいか?簡単なことです。本来は、MACアドレステーブルに登録されることのないマルチキャストMACアドレスを、受信者がいるポートに応じて登録してあげればいいんですね!
IGMPスヌーピングがやっていることはこういうことなんです。スイッチでIGMPスヌーピングを有効にすれば、マルチキャストの受信者を判断して、MACアドレステーブルに適切なマルチキャストMACアドレスの登録を行うことができます。そして、そのMACアドレステーブルに従って、マルチキャストを転送することによってマルチキャストのフラッディングを制御し、ネットワークの帯域幅のムダ遣いをなくすことができます。
次回は、具体的にIGMPスヌーピングの仕組みについて解説します。お楽しみに!!










