9

低遅延を必要とする高頻度取引 (HFT) システムでは、UDP よりも TCP が使用されると言われました。TCPではポイントツーポイント接続を作成できるのに対し、UDPではできないと言われましたが、私の理解では、UDPパケットを特定のIP /ポートに送信できます。

この記事では、ゲームで UDP > TCP を使用する理由についていくつかの議論が行われていますが、HFT との関連性は理解できます。

TCP が HFT に使用するのに適したプロトコルである理由は何ですか?

(管理者: この質問の以前の投稿は、説明なしで黙って削除されました。使用条件に違反している場合は、黙って質問を削除するのではなく、これについて警告してください)

4

5 に答える 5

15

TCP が提供する機能の一部が必要ない場合は、UDP が TCP よりも優れています。すべての機能にはコストがかかるため、機能が必要ない場合は、理由もなくそのコストを支払っていることになります。

HFT アプリケーションでは、TCP が必要とするほぼすべての機能が必要です。したがって、UDP を選択した場合は、それらの機能を自分で実装する必要があります。つまり、接続の確立、接続の切断、再送信、送信ペーシング、ウィンドウなどを実装する必要があります。

TCP が行っていた方法よりも優れたこれらすべてのことを行う方法があれば、TCP はその方法でそれを行っていたでしょう。TCP は地球上で最高の頭脳によって大幅に最適化されており、カーネル内/カーネルと共に実装されているため、片手を後ろに縛られることになります。

于 2011-10-31T02:55:44.743 に答える
5

すでに確立されている TCP 接続を介したデータ ストリームが、UDP を介した同じデータよりも遅くなると予想する理由はありません。さらに、チェックサム、再試行、およびその他すべての TCP の利点が得られます。UDP は主に、信頼性を破棄してもよい場合や、一般的な DNS クエリなど、多くの TCP ハンドシェイクのオーバーヘッドが高すぎる場合に優先されます。

于 2011-10-31T02:55:08.667 に答える
3

少数の接続を使用する場合は TCP の方が高速です。重要な違いは、最新の NIC は TCP で大幅な高速化を実行し、UDP ではそれほど高速化しないことです。つまり、各 UDP パケットを処理するためのオーバーヘッドが増えるため、複数の受信者に同時に送信する必要がない限り、競合することはできません。

ただし、UDP マルチキャスト ルートには、データグラムごとのユニキャスト UDP オーバーヘッドと同じ問題が依然としてあります。そのため、多くの HFT システムは、Solace などの TCP 経由で多数の NIC 間でストリームを多重化できるハードウェア アクセラレーション システムを使用しています。

最近では、Solarflare や Mellanox などのユーザースペース IP スタックを使用してカーネルを完全にバイパスしたり、RDMA を使用してカーネルと IP スタックの両方をスキップしたりしたいと考えています。

于 2011-11-06T02:34:25.847 に答える
2

簡単に言えば、接続の信頼性が必要な場合 (送信されたデータのすべてのバイトが確実に受信されるようにすること)、関係なく TCP を使用する必要があります。

おっしゃったように、UDP はゲームにより適しています。ゲームでは、すべてのオブジェクトを 100% 正確にリアルタイムで追跡すると、かなりの量の帯域幅が使用され、不必要になります (接続が遅いと遅延が発生します)。

TCP ポートと UDP ポートの間には、使用されている接続の種類 (パケットを送信して無視する、UDP スタイル、または接続をネゴシエートして維持する、TCP スタイル) とサーバーでリッスンするサービス以外に特別な違いはありません。側。たとえば、TCP/25 は通常 SMTP サーバーを明らかにしますが、UDP/25 は明らかにしません。

于 2011-10-31T02:54:47.137 に答える
2

基本的に、最新の TCP 実装は、接続を維持している場合、UDP と同じくらい高速になります。TCP がパケットを再送信する必要がある場合は、UDP でも再送信する必要があります。さらに、UDP の場合、TCP が既に実装しているのと同じ信頼性コード (ドロップされたパケットの再送信) を実装することになります。

于 2011-10-31T02:56:15.700 に答える