私の読者の 1 人に 1 人が、熱心な「データセンター内で TCP を置き換える時が来ました」に言及して、私のアイデアを要求しました。 」教授による記事。 ジョン・オースターハウト。 私はそれを読み始め、意味をなさないあまりにも多くの問題に偶然遭遇し、他のすべての人が ことわざの物理学者が個人の難しい問題を修正しようとしているので、それを却下することを決心しましたelse’s subject.
代わりに、その記事へのポインタが表示されずに保存されていて、ようやく以前は スペースだったことに気付きましたコンベンショントーク、を組み込んだ長期の仕事での論文 インタビューと基調講演なので、技術面でのやり取りは毎回することにしました。
要約から始めましょう:
TCP のすべての重要なコンポーネントは、そのずる賢い方向性からナレーション内のパケット供給の期待に至るまで、アイデア センターにとって邪悪です。 TCP の問題があまりにも必要であり、相互に関連しすぎて修正できないことを認めるには、少し時間がかかります。 モデルネットワークで可能な象のパフォーマンスを利用するための潜在的に最も際どいシステムは、最新のトランスポートプロトコルをアイデアセンターに導入することです.
それがマニフェストの集結点を崇拝しているように聞こえない場合、私には何が何を意味するのかわかりません。 すべての個人が 単一のシステムまたは他のすべてのシステムで TCP にうんざりしているようです (かなり頻繁に TCP が非難されるため)無関係な問題は セッション レイヤーの欠如 ) を崇拝するため、そのメッセージに「聞く」で反応することはもはや難しくありません。 、 聞く!!!” TCP 仕様は、 の結果として 奇妙な習慣 が続く難解なオタクのノブの象でもあります。 互換性のない側面
は
- デフォルトで有効になっています
多様化した TCP/IP プロトコル スタックで。 It’s Time to Substitute TCP within the Datacenter の記事がどのようにきちんと認識されているか見てみましょう.
Prof. Ousterhout は、TCP を Homa と比較します。Homa は、本質的にメッセージベースの最新のコネクションレス型トランスポート プロトコルです。 スペース ペーパー内の主張は、A Linux Kernel Implementation of Homa Transport Protocol
の記事。
結果の大部分は、象のノードを持つ 40 ノードのクラスターで生成されていました。双方向のクライアント サーバー サイト訪問者のメッシュ
まず、上記の仮定は、ほとんどのユーティリティ スタックまたは製造環境で TCP がどのように古くなっているかに対応しておらず、接続に対して大きく偏っていることに言及する価値があります。 TCP に代わるアイデアがなければ、サイズの結果は間違いなく安定した生活には適用できません.
Transport Protocol Requirements
偏った要約は無視して、技術的に重要な部分を掘り下げてみましょう。トランスポート プロトコル要件 (ピース 2) で始まる:
- 本物の供給
低遅延
高スループット (過剰なメッセージ スループットと並んで)
- 輻輳修正
大気中の優れたロード バランシング サーバー コアのある段階で
NIC オフロード
ここまで理想的、しかし、そのリストには明らかに不足している要件があります。 はメッセージに従事するようになり、ナレーション外の着信メッセージに取り組むことができなくなる可能性があります. 実行のナレーションは、ファセット効果のない read-finest トランザクションではもはや重要ではありませんが、メッセージが受信者ユーティリティ内の説明取引について説明する場合、それは重要です.
一般に、最も細かい読み取りトランザクションは読み取り書き込みトランザクションよりも頻繁に発生しますが、後者のトランザクションはファイルの一貫性に影響を与える傾向があり、読み取り後書き込みトランザクションに定数ファイルを提供するという際どい仮定を解除します。 どの個人も、受信したナレーション外のメッセージを、送信された順序に再シャッフルする必要があり、トランスポート プロトコルがそれを行わなくなった場合は、他の各人が車輪を再発明する必要があります。
ソケット API または での監視ゲイの眼球一度は終わりの地図をきちんと知っておかなければなりません.
サーバー コアのある段階でのアンビエンスの優れた負荷分散 (コミュニティ内のある段階でのとは対照的に ) 不安かもしれません。これは、CPU コアがボトルネックであることを意味し、最先端の過度なテンポのパケット処理に慣れていないことを示している可能性さえあります。 詳細な記事で説明されている CPU コアとホットスポットの専門化は、TCP セッションのミニチュア選択の利用による成果物である可能性があり、これは無意味な合成制限です – Nginx または NodeJS を操作するメソッドは、サーバーあたり 100 万接続にスケーリングされています
十年前。 コアへの TCP セッションの統計的分布は、より近い TCP セッションを選択することで、さらに改善されます。パケット処理、一般に CPU コアあたり数十 Gbps のスループットに達する – インスタンスとして見てください Snap: ネットワーキングをホストするためのマイクロカーネル技術 、または何 fd.io がやっています。 作成者がどこで「 100 Gbps コミュニティを使用し、すべての命令で 80% の使用率で使用すると、ネットワーク スタック内で適切な 10 ~ 20 コアを消費するか 」という考えをもはや保持していません。積極的に参照として引用されたスナップ紙は、もはやその主張にぶら下がりを与えません. TCPのすべてが腐っている
次は記事の一部は、TCP で邪悪な全体を特定します:
- 接続指向プロトコル
- 帯域共有
- )
- 送信者主導の輻輳変更
- ナレーション内パケット供給
- RoCEの何が悪いの? おそらく、トランスポート ファブリックを理由に、Infiniband を嫌い、イーサネットを崇拝するでしょう。 その場合、RDMA over Converged Ethernet (RoCE) を低レイテンシーの過剰スループット メカニズムとして消費しすぎる可能性があります。
- 既存の代替案の何が悪いの? RDMA を崇拝しなくても、既存のメッセージ指向のトランスポート プロトコルの多くからそれを理解することができます。 SCTP および QUIC ストレートな心意気. SRDもあります) AWSによって熟成されました.
- 多様化した RPC フレームワークにスペースを取ったのは何ですか? いくつかの距離オフ通話方向 (RPC) を課すというアイデアがありました。 Sun RPC、DNS、および NFS と並んで、UDP のトップ。 それらのいくつかは歴史的に離れています。 他の企業は、UDP の改善に代わる代替トランスポート メカニズムとして TCP の利用を開始しました。 gRPC (現代の肌寒い RPC キッド) は、HTTP/2 を消費します。 2 は TCP の上に乗っています。 TCP がいかに邪悪であるかを考えながら、なぜそうしなければならないのでしょうか?
なぜ、一人一人が TCP の利用に疎いのでしょうか? ありませんTCP を消費するための規制要件があり、すべての個人がそれに不満を持っているようです。 なぜ私たちはそれを利用することから遠ざかっているのですか? SCTP を崇拝する別のアイデアを利用する人がいないのはなぜですか? QUIC 崇拝プロトコルがないのに暗号化がないのはなぜですか (ファイルセンターではますます望まれなくなりました)。 Google と AWS を崇拝する巨人を除いて、代替プロトコルの作成に不可欠なソースを投資する人が誰もいないのはなぜですか? 私たちは皆、怠け者であるか、無能でしょうか? それとも、肩をすくめて続けるのに十分な TCP の適切な理想ですか?
とにかく、トランスポート プロトコルの選択について言及しないことは、偏見があり、本質的な省略であるように思われ、それらの可能性について議論する機会を逃しています。
しかし、待ってください。ネットワーキングの重要な部分を発見すると、改善されます.
帯域幅共有で始まる記事では、
TCP では、ホストのリンクが過負荷になると (サイト訪問者の着信または発信のいずれかで)、TCP は市場の帯域幅を、ぎっしり詰まった生命接続の間で均等に分割しようとします。 この形式は、「理想的なスケジューリング」として識別される可能性があります。パーツ:
サイト訪問者に影響を与えるのは間違いなく難しい.
帯域幅の共有は、FIFO キューイングを使用するコミュニティのある段階で、多くの自己維持型 TCP セッションを運用する側面として適切ですが、それでも 理想から外された.
- TCP/IP スタックは、アウトバウンドのサイト訪問者の理想的なスケジューリングに影響を与えようとさえする可能性がありますが (しかし、もはやそうではありません)、サイト訪問者がコミュニティに入ると、すべての賭けはオフになります.
、 に等しいInitiate vSwitch で数年前に実装された概念実証4.- 明らかに、QoS メカニズムを使用することもできます (優先度キューイングと加重ラウンド ロビン キューイング) 習慣が p への 1 つの願いから離れなければならないことを取引する
次の主張はさらに悪いものです (送信者主導の輻輳変更 ピースは同じ主張をします):
TCP のシステムは、高速なメッセージとは対照的に非常に差別的です。 1 つのプレゼンテーションを決定します。さまざまなサイズのメッセージのラウンド スリップ レイテンシが、負荷の高いコミュニティで動作する場合、負荷のないコミュニティでの同じサイズのメッセージとは対照的にどのように遅くなりますか。
Decide 1をチェックして、 「Fb の Hadoop クラスターで測定されたメッセージ サイズ分布と歩調を合わせて 」ワークロードを消費します。重度のキャストの結果としての欠点。 さらに悪いことに、詳細記事 (Decide 1 のソース) では、Homa (aコネクションレス メッセージング プロトコル) を使用して、単一の TCP セッションが並行して生成されるメッセージの膨大な選択肢を保持しているように見える場合:
ストリームには、メッセージに FIFO 順序を強制するという欠点もあります。 結果として、長いメッセージは、それらをまとめた速いメッセージを大幅に拡張する可能性があります。 この head-of-line ブロッキングは、Fragment 5 の TCP で測定されたテール レイテンシの主な原因の 1 つです。
単一の TCP セッションを介して自己維持型のメッセージを送信すると、明らかに最終的にはヘッドオブライン ブロッキングになります。これは、HTTP の初期の頃からよく理解されていた習慣です。 ヘッドオブライン ブロッキングの決定も、並列セッションから QUIC に至るまで、きちんと識別されています。老化した。 単一のユーティリティ クライアントが単一のサーバーに自己維持型の競合するメッセージを数回送信するだけの環境は、通常は一般的ではありません。これまでの結果をゆがめて無意味なものに変えてしまうので、インキャストで生成された輻輳に特化しましょう。 1 回おきに、スリザーベースのキューイングからプライオリティ キューイング、または典型的なキューの長さを短縮するファイル センター TCP (DCTCP) に至るまで、長い間、対策が特定されてきました。
全体として、2 つのノード間で過剰な量の TCP セッションを 1 つ消費する意図がないことが蓄積されると、最適化された TCP 実装が、低帯域幅の会話に属するサイト訪問者により近い優先順位を設定するのを妨げています。 3
- 多様化した RPC フレームワークにスペースを取ったのは何ですか? いくつかの距離オフ通話方向 (RPC) を課すというアイデアがありました。 Sun RPC、DNS、および NFS と並んで、UDP のトップ。 それらのいくつかは歴史的に離れています。 他の企業は、UDP の改善に代わる代替トランスポート メカニズムとして TCP の利用を開始しました。 gRPC (現代の肌寒い RPC キッド) は、HTTP/2 を消費します。 2 は TCP の上に乗っています。 TCP がいかに邪悪であるかを考えながら、なぜそうしなければならないのでしょうか?
原則の 2 つの部分は楽観的です。 バイトのスリザーを転送する接続指向のプロトコルとして設計されています
1。 この記事では、なぜそれが悪いのか、なぜメッセージ指向のトランスポート プロトコルの方が優れているのかについて長い嘆きを述べていますが、これらの単純な質問には 1 つも尋ねていません (今では、それらに答えようとしているとは思わないでください):
- インフィニバンドの何が悪いの? 低レイテンシを中心とした環境では、Infiniband を頻繁に消費します。 すぐに消費できる確認済みの能力を手に入れたとしたら、なぜホーマが解決しようとしている課題を解決するためにホーマを消費しなければならないのでしょうか?
遅かれ早かれ、ナレーション内のパケット供給があります。 記事の主張:
TCP は、パケットが保持しているのと同じナレーション内で受信者に近づくと想定しています。送信者によって送信されており、ナレーション外の到着はパケットのドロップを示していると想定しています.
IP はナレーション内での供給を保証するものではありません5、そのため、TCP はナレート内のパケットの到着を想定していませんでした。 主張の 2 番目の部分は、かなり前の特定の TCP 実装では楽観的であったかもしれませんが、現在では理想的ではありません
6
.
しかし、待って、悪化します。 AWS が SRD を起動したとき、オーバーレイ デジタル ネットワーク では、SRD パケット スプレーの結果として重要な TCP パフォーマンスの向上が見られたと主張しています。 同時に、ホマ スペース ペーパー は次のように主張しています:
あるいは、TCP を使用してパケット スプレーをエージングすることはできません。これは、パケットが宛先の近くにあるナレーションを交換することさえできるためです。
そのうちの 1 つは邪悪である必要があります。
この作品のリラクゼーションの宝石は、次の手を振る引数です。
コア内で発生するほぼすべての輻輳は、スリザー定数ルーティングが原因であるという仮説を立てています。
サーバーからコミュニティへのハイパーリンクは通常、大きさの物語であるためコアのハイパーリンクよりも遅いため、コアの輻輳を完全にスリザー コンスタント ルーティングと歩調を合わせて発見するには、かなりの運が必要であるという仮説を立てています。 統計的に有意な部分は読者の演習として残します.リンクの使用率ですが、現在でも、明確に識別されたアイデアの膨大な選択肢があると考えています。 私 フローレットについて書いたのは 2015 年で、すでに多くの製造レベルの実装がありましたが、FlowBender紙
印刷されていた もあります。 Cisco ACI に実装されたコンガ ペーパー、および
多様できちんと識別されたメカニズムの選択アンバランスを緩和するために熟成させることもできます. レコード センターで TCP を代用する時が来ましたか?
(UDP とは対照的に) 正当な (UDP に対抗するように) メッセージベースのトランスポート プロトコルであり、ユーティリティ スタックの定式化と、 TCP がもはやその仕事にとって最も際どい手段ではないことを認めたとします。
A さらに、A Linux Kernel Implementation of the Homa Transport Protocol の記事に合わせて、作成者は提案された解決策について説明しましたが、彼らが膨大な時間を費やして Homa を Linux カーネル モジュールとして押し付けたのは崇拝のようです。 私は彼らが最後に最善を尽くすことを願っていますが、残念ながら私はこのスペースペーパーで行われた議論と真剣に歩調を合わせることができません.提案された解決策を支持する スペース ペーパー が問題を誤認し、すべての先行技術を見過ごした場合、提案された解決策の利点を主張しましたか?
とにかく、これは修正する価値がある説明ですか? 多くの場合、答えは説得力があります no。 アプリケーション スタックは、TCP が説明できるよりもはるかに大きなレイテンシを生成する定式化を頻繁に具体化します。 その観点からすると、Homa は、説明を求めて断固とした検索を行って、アイデアの長いリスト内のすべてのエントリを崇拝しているように見えます.
遅かれ早かれ、It’s Time to Substitute in the Datacenter
の記事では、ユーティリティ間のメッセージングに完全に焦点を当てています。メモリ内のファイル構造またはローカル ストレージを消費するクラスターを計算するか、プロットを最小化します。 同時に、ストレージ サイトの訪問者は、リモート ディスク ボリュームへのアクセスであろうと、ノード間のファイル同期であろうと、ほとんどのファイル センターのサイト訪問者の大部分を象徴する、長寿命で大量の接続を完全に無視します。ファイル マシンまたは分散データベース𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺
- ナレーション内パケット供給
- 移動の方向性 (メッセージとは反対に)
- 輻輳修正