UDPパケットを使用した超高速クエリ


10

ネットワーク上の1つのデバイスが、8バイト程度のデータを含む小さなUDPパケットを送信することにより、非常に高い頻度(1秒あたり数百または数千のクエリ)でクエリを実行するシステムを実装しています。これは別のアプリケーションによって受信され、おそらく別のデバイス上で、非常に単純な処理を実行し、別のUDPパケットにラップされた数バイトの大きな結果を送信します。

典型的なハードウェアでどのような往復時間が可能であるかを知りたいのですが、通信システムはおそらく伝搬と伝送の遅延などを考慮して、数メートル離れた有線イーサネットを介して接続されています。

他の考えや提案も大歓迎です。


2
レイテンシは数十または数百マイクロ秒で確認できます...間違いなくサブミリ秒のレイテンシ...説明に基づいて、金融取引システムを検討しているようです...要求するレイテンシは特定のハードウェアに大きく依存しています、そしてあなたは無料のアドバイスを求めるよりもテストを実施する方がはるかに優れています
Mike Pennington 2013

ご回答ありがとうございます。この場合、実際には金融取引システム用ではありません。私は、何よりも実現可能性調査として、実装を開始する前に何が可能かについて漠然とした考えを望んでいました。
ジョンスミス

回答:


11

ジュニパーMX80の例では、約8usの入力->出力遅延がありますが、低遅延のカットスルースイッチでは、<1us(おそらく0.7us)になる可能性があります。(カットスルースイッチは、出力ポートが偶発的にアイドル状態になった場合にのみ、100%の時間でカットスルーを実行できないことに注意してください!)

ファイバの1 kmは、約5usのレイテンシです(これも単一方向です)。

最小サイズのペイロード(46B)のシリアル化遅延@ 10Gは約67ns(0.067us)です。リンク速度を上げると、シリアル化遅延が減少します。

IPヘッダーは20B、UDPヘッダーは8B、データは8Bであるため、36Bのデータしかありません。つまり、イーサネットペイロードには、送信する必要がある10Bのゴミが含まれます。つまり、ペイロードに何かを追加する場合は、それを追加します。待ち時間コストはありません。

デバイスの遅延にデバイスカウントを掛け、ファイバーの1キロメートルごとに5usを追加してから2を掛けることで、これらからRTTを推定できるといいのですが。


HFTについての考えを追加することに抵抗することはできません。

この HFTボリュームによると、2009年と2012年の間に半分になりました。簡単な勝利はなくなったことを示唆しています。HFTレイテンシとそれが利益に与える影響について、いくつかの科学論文または実際のデータを見たいです。貿易利益に影響を与えるレイテンシーは、今話しているレイテンシーとは別の大きさだと思います。最大の取引所の1つにネットワークを構築する私の友人は、規模を理解せずに「より低い==より良い」ことを行うのは単なる顧客であると考えているようです。
マーケットAが変化を見ていないのを観察でき、マーケットBがそれを見て活用しているのを観察できたときに、HFTがどのように役立つかを完全に理解できます。規制を使用して各取引に課税することでHFTを停止することについて話している人もいますが、誰にとっても費用がかかります。それは必要ではないと思います。機会の窓はすでに閉じていると思います。


素晴らしい返信と非常に有益、ありがとう。HFTについてのいくつかの個人的な考えさえ!
ジョンスミス

1
@JohnSmith、エンドポイント(OSスケジューラーやカーネル処理など)の内部で導入された遅延を考慮することを忘れないでください...これは、前のコメントで述べた遅延に大きく寄与する可能性があります。
マイクペニントン2013

待ち時間なしのコストで完全な最小パケットサイズを使用することの優れた点。
generalnetworkerror 2013

1

従来のセミチューニングハードウェアでは、次のことができるはずです。

  1. ホストネットワークスタックを利用する
  2. 次のネットワークスタックをアップ
  3. 「新しい」パケットでそのネットワークスタックを取り消す

10ギグで〜10 us。実際にロックダウンすると、その数は大幅に少なくなる可能性があります。

表示されるほとんどすべての遅延は、ネットワークハードウェア/ケーブルからではなく、ホストシステムからのものです。妥当なカットスルースイッチ(Arista、Gnodal、New Ciscoなど)は1us未満です。

まず、UDPパケットを消費するプロセスがNIC割り込みと同じコアに固定されていることを確認します。そこから、NICの結合が無効になっていることを確認し、そこからMSI-XとDCAがオンになっていることを確認します。

もっと真剣なら... SolarFlareのOpenOnloadをチェックしてください。また、パフォーマンスをテスト/検証するための優れたツールスイートもあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.