0

大量のマルチキャスト データを送信する Linux 2.6.33 を実行する組み込みデバイスがあります。これは通常、LAN 上でこの種のデバイスとしては唯一のものです。ただし、同じネットワーク上に 2 つ以上のデバイスがあるというまれなケースでは、クライアント接続でデバイスを区別する方法が必要です。

編集:単一のクライアントは、単一のデバイスからのトラフィックにのみ関心があります。

  1. 各データグラムに識別子を埋め込むこともできますが、それはクライアントがパケットを調べる貴重な時間を費やすことを意味します。これは、おそらくドライバーでより迅速に実装されます。遅いクライアントは間違いなくパケットをドロップし始めます。

  2. デバイスごとに個別のマルチキャスト IP アドレスを使用することも、各デバイスが送信するポートを区別することもできます。これはすでに実装されています。

  3. ソース固有のマルチキャストを使用できます。

最も一般的なオペレーティング システムとドライバーが SSM をどの程度効率的に実装しているか、またはデバイスごとに異なるマルチキャスト グループを使用する方が SSM に依存するよりも高速かどうかはわかりません。

これはすべて実装に依存するため、オプション 2 と 3 について現場からのアドバイスが必要です。マルチキャスト ポートを切り替えるだけでトラフィックを区別するのに十分かどうかを知りたいです。

4

1 に答える 1

1

私の考えでは、3つのオプションすべてに大きな違いはありません。これが理由です。マルチキャストトラフィックはとにかくクライアントホストにヒットします。次に、送信者の差別化の部分があります。どの方法を選択するかに関係なく、それは比較の問題です。

  1. 任意のサイズの2つの識別子(選択)が、おそらくそれらはints
  2. 2...
    1. IPアドレス、つまりIPv4の場合、および異なるマルチキャストグループを使用することを選択した場合は4バイト
    2. またはポート、つまり、異なるポートを使用することを選択した場合は2バイト
  3. 再び2つのIPアドレスがありますが、比較はアプリケーションではなくカーネルによって実行されます

つまり、2つのプリミティブデータ型の単一の比較を実行するため、パフォーマンスに関しては大きな違いはありません。その比較はとにかくいくつかのプロセッサ命令で実装されるので、カーネル空間で実行されるかユーザー空間で実行されるかは大した問題ではありません。

プログラムの負担が少ない方法を選びます。どの方法を選択しても、パフォーマンスはほとんど同じです。

于 2012-08-16T21:42:35.963 に答える