IPレベルのマルチキャストの目的は、多くのユーザーが同じトラフィックを受信したい一般的なネットワークセグメントの帯域幅を減らすことです。通常、これは1つの特定のサブネットに制限されており、IPルーターはマルチキャストをサブネットを超えて伝播しません。これはスケーラビリティの理由で行われます。インターネット上のすべてのIPアドレスに伝播されるマルチキャストパケットを1つのホストが発信できるようにすることはお勧めできません。
「アプリケーションレベル」のマルチキャストについては、さまざまな考え方があります。1つのアプローチは、マルチキャストに参加しているホストコンピューターを使用してマルチキャストツリーを構築することです。ダイクストラのアルゴリズムを使用してこれを行うことができます(ウィキペディアにはこれについての合理的な説明があります)。ただし、参加しているコンピューターのリストを維持し、ツリーを最新の状態に保つことは、ホストがかなりの速度でネットワークに参加およびネットワークから離脱する場合、かなりの量の作業になる可能性があります。また、アプリケーションレベルで利用できるホップコストの適切な見積もりがない可能性があります。
確認する必要があるもう1つのアプローチは、Gnutellaネットワークのクエリルーティングプロトコルで使用されるフラッディングアルゴリズムです。(ウィキペディアにもこれについての適切な説明があります。)このアプローチは、マルチキャストツリーを構築する必要性を軽減しますが、より多くのネットワークトラフィックを生成するという欠点があります。実際、トラフィックはノード数の2乗、つまりO(n ** 2)で増加するため、ネットワークトラフィックは大幅に増加します。