最終更新日: 2014年1月13日
Squid Home / FAQトップ

13. マルチキャスト

13.1 マルチキャストとは何ですか?

マルチキャストは1つのパケットで複数の受信待ち受けをしているレシーバへパケット送り込む機能です。 マルチキャストはオーディオやビデオでのカンファレンス(会議)システムによく利用されます。

J.D. Bronson (jb at ktxg dot com) の報告によると、moneycentral.msn.com www.mbnanetaccess.com. といったソースサーバと通信が出来なかったそうです。 J.D は以下のようにして問題を回避できたそうです。
tcp_xmit_hiwat 49152
tcp_xmit_lowat 4096
tcp_recv_hiwat 49152

13.2 私のネットワークでマルチキャストが使えるかどうやって判りますか?

1つの方法は、ネットワーク管理者に確認することです。 もしネットワーク管理者が判らないか、そもそも存在しないなら、別の方法として、ゼロックス(Xerox) PARC FTP サイトからmtraceプログラムを入手して使うことができます。 
mtraceはtracerouteに似ていますが、あなたのサイトのマルティキャストパスについて知らせてくれます。 

> mtrace mbone.ucar.edu
mtrace: WARNING: no multicast group specified, so no statistics printed
Mtrace from 128.117.64.29 to 192.172.226.25 via group 224.2.0.1
Querying full reverse path... * switching to hop-by-hop:
0 oceana-ether.nlanr.net (192.172.226.25)
-1 avidya-ether.nlanr.net (192.172.226.57) DVMRP thresh^ 1
-2 mbone.sdsc.edu (198.17.46.39) DVMRP thresh^ 1
-3 * nccosc-mbone.dren.net (138.18.5.224) DVMRP thresh^ 48
-4 * * FIXW-MBONE.NSN.NASA.GOV (192.203.230.243) PIM/Special thresh^ 64
-5 dec3800-2-fddi-0.SanFrancisco.mci.net (204.70.158.61) DVMRP thresh^ 64
-6 dec3800-2-fddi-0.Denver.mci.net (204.70.152.61) DVMRP thresh^ 1
-7 mbone.ucar.edu (192.52.106.7) DVMRP thresh^ 64
-8 mbone.ucar.edu (128.117.64.29)
Round trip time 196 ms; total ttl of 68 required.

13.3 ICPでマルチキャストを使う方が良いでしょうか?

私の答えは、多分つかわない方が良い!です。

あなたがマルチキャストを使うかもしれない理由:

  1. それはSquidの dendto() によってネットワークに流れるUDPパケットの時間を短縮します。
  2. マルチキャストを使うのがはやっています。

マルチキャストを使うべきでない理由:

  1. マルチキャストは設定やインフラの状況によるためとても不安定です。 通常のユニキャストは安定しています。
  2. Squidにおけるマルチキャストの設定は簡単ではありません。 すべての信頼する隣接キャッシュを明示しなくてはいけません。 
  3. マルチキャストに対する応答のパケットは減りません。 単にリクエストの数が削減できるだけです。
  4. あなたのキャッシュの出すICPのパケットが盗聴される危険が増大しセキュリティ的に脆弱になります。 誰かが同じマルチキャストグループで盗聴していてもこれを阻止する事ができません。

13.4 マルチキャストICPクエリを使うためにどのように設定しますか?

マルチキャストアドレスを使ってICPクエリを送るためにはSquidの設定をmulticast.を指定した隣接キャッシュの指定が必要です。例として:

cache_peer 224.9.9.9 multicast 3128 3130 ttl=64

224.9.9.9 はサンプルのマルチキャストグループアドレスです。 multicast は指定した隣接にマルチキャストで接続することを意味します。 HTTPポートの引数の(3128)はマルチキャストpeerでは無視されます。 しかしICPポート(3130)は大変重要です。 最後のttl=64は クエリを送信して応答を待つ際の時間です。 環境によってこの値を変更して最適な最小値を与えてください。

マルチキャストを使ったICPクエリの場合、応答してきた返事がどこが応答を返してくるかは定かではありません。  しかし、応答に使われるのは通常のユニキャストなので、相手がだれなのかを特定することは可能です。そこで、応答をしてくるであろう隣接キャッシュをマルチキャストグループとして登録することで、信頼できない相手からのICP応答を受けないように指示してください。 

cache_peer cache1 sibling 3128 3130 multicast-responder
cache_peer cache2 sibling 3128 3130 multicast-responder

multicast-responderを指定すると、この隣接キャッシュにはユニキャストでICPを送ることをしません。 それ以外の指定は通常のcache_peerの設定と同じです。

13.5 どのようにマルチキャストTTLを使いますか?

マルチキャストTTLを使うことで、(cache_peer としたマルチキャストグループに)送信したICPクエリに対してどれだけ遠くにグループまでの応答を受けるかを指示するのに使えます。 ネットワークインターフェースやトンネルにはそれぞれのTTLの閾値があります。 例えば、mrouted マニュアルを見ると次のような例があります:

        32   for links that separate sites within an organization.
        64   for links that separate communities or organizations, and are
             attached to the Internet MBONE.
        128  for links that separate continents on the MBONE.

上記では、組織内に同じグループのものが32、組織外のものが64、そして(MBONEの)大陸を隔てたものが128有る事が判ります。 

TTLを決定する良い方法として mtrace を使って最終的な到達点としたい処を決めると良いでしょう。 この結果、設定したTTLよりも近い場所にしか到達しないようになります。

もしあなたかTTLにとても大きな値をセットしたなら、マルチキャストはとても遠い場所まで届くようになります。 この結果、盗聴されやすくなる事になります。もしLANの中だけでマルチキャストを使うようにするならば小さなTTL(例えばTTL=4)を設定する事を勧めます。

13.6 マルチキャストに応答できるようにするにはSquidをどのように設定しますか?

マルチキャストグループに参加するようにSquidの設定ファイルの mcast_groups に明示的な設定が必要です。 例えば、

mcast_groups 224.9.9.9

勿論、あなたのICPマルチキャストグループすべてが同じグループアドレスを使う必要があります。

Squid Home / FAQトップ

参考: