アプリケーションマルチキャストのベストチュートリアル? [閉まっている]
質問
最近、IPマルチキャスト(明らかにパブリックインターネットではうまく機能しない)とアプリケーションマルチキャスト(IRCおよびPSYCで明らかに使用される http://en.wikipedia.org/wiki/Multicast )。
アプリケーションレベルのマルチキャストの実装に関する優れたチュートリアルはありますか?
マルチキャストの主な目的は、一般的なネットワークセグメントの帯域幅を削減することだと考えたため、アプリケーションレベルのマルチキャストが何を行うかを理解することは困難です。
解決
IPレベルのマルチキャストの目的は、多くのユーザーが同じトラフィックを受信したい一般的なネットワークセグメントの帯域幅を削減することです。通常、1つの特定のサブネットに限定され、IPルーターはサブネットを越えてマルチキャストを伝播しません。これはスケーラビリティの理由で行われます-インターネット上のすべてのIPアドレスに伝播されるマルチキャストパケットを1つのホストが発信できるようにすることはお勧めできません。
「アプリケーションレベル」を考えるにはさまざまな方法があります。マルチキャスト。 1つのアプローチは、マルチキャストに参加しているホストコンピューターを使用してマルチキャストツリーを構築することです。ダイクストラのアルゴリズムを使用してこれを行うことができます(これについては、ウィキペディアに合理的な説明があります)。ただし、参加しているコンピューターのリストを維持し、ツリーを最新の状態に保つことは、ホストがかなりの速度でネットワークに参加し、ネットワークから離脱する場合、かなりの量の作業になる可能性があります。また、アプリケーションレベルで利用可能なホップコストの適切な推定値がない可能性があります。
確認すべきもう1つのアプローチは、Gnutellaネットワークのクエリルーティングプロトコルで使用されるフラッディングアルゴリズムです。 (ウィキペディアにもこれについての説明があります。)このアプローチは、マルチキャストツリーを構築する必要性を軽減しますが、より多くのネットワークトラフィックを生成するという欠点があります。実際、トラフィックがノード数の2乗、つまりO(n ** 2)で増加するにつれて、より多くのネットワークトラフィックが発生します。
他のヒント
アプリケーションマルチキャストの別の例は、