IGMPスヌーピングその2
| 「スヌーピング」ってどんな意味? IGMPスヌーピングといっていますが、この「スヌーピング」ってどんな意味なんでしょう? 「スヌーピング」とは英語の「snoop」の現在進行形です。snoopは、「覗き見する」といった意味になります。 マルチキャストの受信者はマルチキャストを受信したいとき、まずIGMP Joinを送信して、グループに参加したい旨を通知します。 IGMP Joinについては以下をご覧下さい。 スイッチでは、本来はIGMP Joinを単純に転送するだけなのですが、IGMPスヌーピングが有効になっていれば、IGMP Joinの中身を覗き見することができるようになります。 IGMP Joinの中身を覗くことによって、そのポートに接続されているコンピュータがどのマルチキャストグループのデータを受信したいのかがわかるようになります。その情報を、MACアドレステーブルに反映することによって、マルチキャストのフラッディングを制御することができます。 |
| IGMPスヌーピングの動作 では、具体的なIGMPスヌーピングの動作を考えるために、次の図に沿って解説していきます。図では、すでにスイッチは、MACアドレステーブルを完成させているとします。 ![]() ※SenderとReceiverの間にルータがある場合を考えていますが、SenderとReceiverが同一サブネットにいるときも同じです。 ここで、Aが224.10.10.10というマルチキャストグループのデータを受け取りたいとき、まずIGMP Joinを送信することになります。 ![]() IGMPスヌーピングが有効になっているスイッチでは、IGMPのパケットを受け取ると、その中身を見ます。すると、このIGMPのパケットは、グループに参加するJoinであることと、ポート1に接続されているコンピュータが224.10.10.10というマルチキャストグループに入りたいということがわかります。 スイッチはこのIGMP Joinから、MACアドレステーブルへポート1に01-00-5E-0A-0A-0Aが接続されているというエントリを追加します。 また、ルータはホストからIGMPなどのマルチキャストを受け取る必要があります。そのため、ルータが接続されているポート4にはマルチキャストを転送してあげなくてはいけないので、01-00-5E-0A-0A-0AというMACアドレスをポート4に も登録します。 通常は、MACアドレステーブルには同じ複数のポートに同じMACアドレスが存在することはないのですが、マルチキャストMACアドレスは例外となっています。 「スイッチはルータがつながっているポートかどうかどうやってわかるの?」という疑問をもつかもしれません。これは、ルータしか出すことがないパケットを受信した場合、そのポートをルータが接続されているポートとみなしています。ルータしか出すことがないパケットは、ルーティングプロトコルやIGMPクエリーなどですね。 ※この辺は確実なことはわかりませんが、シスコだったらCDPでやっているのかなぁって思っています。 ![]() このMACアドレステーブルに基づいて、マルチキャストをReceiverがいるポートにだけ送信することができるようになります。 ![]() |
| IGMPスヌーピングで注意すること さて、IGMPスヌーピングによってマルチキャストのフラッディングを制御して、Receiverが接続されているポートにのみ必要なマルチキャストを転送できることをお分かりいただけたと思います。 ただ、IGMPスヌーピングではちょっと気をつけておかなくてはいけないことがあります。それは、IGMPスヌーピングを有効にすると、スイッチの処理性能に大きな影響を及ぼしてしまうことです。 IGMPはレイヤ3の情報ですから、その情報を参照するためには、追加の処理が必要です。多くのスイッチでは、ソフトウェアで処理を行っています。そのため、IGMPのパケットがたくさん流れると、スイッチ全体のパフォーマンスが低下してしまうことになります。 本格的にマルチキャストを導入するときには、IGMPスヌーピングをハードウェア処理可能なスイッチを選んであげないと、使い物にならなくなるかもしれないので注意してください。 ぼくは、シスコ製品しかよくしらないのですが、シスコのCatalystスイッチであれば、IGMPスヌーピングをハードウェア処理できるのでIGMPスヌーピングによるパフォーマンス低下の心配はありません。 シスコ以外のスイッチベンダの方で、「うちのスイッチもできるよ!」というのであれば、ぜひ教えてください。 |
(C) Copyright 2000-2003 Gene All Right Reserved