同じデータセンターに2台のマシンがありますが、必ずしも同じラックにあるとは限りません。
これら2台のマシン間でUDPを使用して送信された場合、ドロップされるパケットはどのくらい一般的ですか?
私は、マシン間にはせいぜい数個のスイッチしかないので、パケットがドロップされないという仮定の下で尋ねていますまったく。
同じデータセンター内でのパケットの異常な到着はどのくらい一般的ですか?私の仮定では、99.9%の確率で1つのルートしかないため、これは発生しません。
しかし、絶対的な言葉で考えていることに気付いたときはいつでも、何かが足りないに違いないことを知っています!
ドロップされたパケットがいつドロップされるか、どのくらいの頻度でドロップされ、同じデータセンター内のマシンの順序が狂って到着するかをよりよく理解するには、どのような背景情報が必要ですか?
最終的には、同じデータセンターにある異なるLinode VPSインスタンス間で通信するときに、マルチキャストUDPとPGMのどちらを使用するかを決定しようとしています。情報が到着し、順番に並んでいる必要があります。確かに、UDPはそれほど素晴らしい音ではありません!
ただし、同じデータセンターでほぼ完全または完全な配信が期待できる場合は問題ありません。しかし、私はその仮定をテストしています。
ありがとう。
仕様ではこれらの保証が提供されていないため、UDPを使用してパケットを順番に配信することはできません。最も理想的な状況、つまり2つのホスト間の1本のイーサネットケーブルを想定しても、OS、ネットワークスタック、NICドライバー、および作成したlibc実装)の問題があります。に対して。
そのチェーンのすべてのステップで、そのコードの作成者は[〜#〜] not [〜#〜]を選択して、UDPパケットが到着したとしても、それらが順番に到着するという単純な理由で優先順位を付けます。する必要はありません。
不自然な例の1つは、着信パケットが読み込まれるデータ構造であり、これはリングバッファである可能性があります。順番に到着したパケットは、順番にリングバッファに配置されますが、ドライバの作成者がネットワークコードの上位層にパケットをダンプする方が簡単な場合がありますメモリ順に、したがってランダム化注文。
状況を考えると、パフォーマンスではなくボリュームで実行される共有インフラストラクチャで実行される仮想マシンの場合、UDPパケットが受信される順序を予測する可能性は低くなります。
つまり、仕様にUDPパケットの順序付けに依存できないと記載されている場合。あなたはそれに頼ることができず、そしてあなたはこれまでに約束されたスペックよりも強い保証を与えるために環境を微調整しようとすることはできません。
ほとんどすべてのスイッチは、いつでも2つのパケットの並べ替えを引き起こし、PGMなどの多くのネットワークプロトコルで考慮されます。
考慮すべきことの1つは、ほとんどのデータセンターは、ネットワークインフラストラクチャのオーバーヘッドを簡素化および削減するために、データグラムをブロックし、マルチキャストをブロックすることです。
IP/PGMプロトコル自体は、PGMルーターアシストが有効になっていて、サーバーとクライアント間のネットワーク要素を認識している場合にのみ使用する必要があります。それ以外の場合は、UDP内にカプセル化されたPGMを使用して、アプリケーションのアクセス許可を管理する負担を軽減します。
ØMQのようなメッセージングレイヤーを使用する場合は、IP/PGM、UDP/PGM、またはTCPオーバーレイネットワークの選択を展開と統合に延期できます。
実験に興味がある人は、Wiresharkを使用してください。接続が遅い、またはパケットがドロップされたという問題が実際に発生した場合は、スイッチのポートをミラーリングし、ラップトップをWiresharkに接続して確認します。