著者:
(1)ワシントン大学のTianyi Cui氏([email protected])
(2) ワシントン大学、Chenxingyu Zhao ([email protected])。
(3) ウェイ・チャン、マイクロソフト ([email protected])。
(4) ワシントン大学、Kaiyuan Zhang ([email protected])。
編集者注: これは、レイヤー 7 の負荷分散を最適化する試みを詳述した調査の全 6 部のうちのパート 1 です。続きは以下をご覧ください。
4.2 エンドツーエンドのスループット
4.3 エンドツーエンドのレイテンシ
4.4 主要技術の利点の評価
4.5 実際の作業負荷
ロード バランサは、今日のクラウド内で、データ センター サーバー間でネットワーク要求をスケーラブルに分散するために広く使用されています。ロード バランサの広範な使用とそれに関連する運用コストを考慮して、カーネル内にレイヤー 4 ロード バランシング ロジックを実装するか、ハードウェア アクセラレーションを使用することで、効率を向上させるための取り組みがいくつか行われてきました。この研究では、より複雑で接続指向のレイヤー 7 ロード バランシング機能もハードウェア アクセラレーションの恩恵を受けることができるかどうかを検討します。特に、プログラム可能な SmartNIC へのロード バランシング機能のオフロードをターゲットとしています。3 つの主要なアイデアを使用して、SmartNIC のコストとエネルギー効率を最大限に活用します。まず、レイヤー 7 ロード バランサには完全で複雑な TCP/IP スタックは不要であると主張し、代わりに SmartNIC 上の軽量転送エージェントを提案します。次に、マルチコア SmartNIC で実行されたときに、最小限の同期で高度な同時実行性を備えた接続管理データ構造を開発します。最後に、SmartNIC 上のカスタム パケット処理アクセラレータを使用してロード バランシング ロジックを加速する方法について説明します。私たちは 2 種類の SmartNIC ハードウェアで Laconic のプロトタイプを作成し、BlueField-2 のすべてのコアを使用して 150 Gbps を超えるスループットを達成しました。一方、単一の SmartNIC コアでは、単一の x86 コア上の Nginx と比較して 8.7 倍のスループットと同等のレイテンシを達成しました。
ロードバランサは、アプリケーションサーバーの集合体全体でサービス負荷を分散させるため、データセンターの基本的な構成要素です [38、45、46]。ロードバランサは当初、専用のハードウェアアプライアンスとして構築されましたが、現在では通常、コモディティサーバーまたはVM上で実行されるソフトウェアとして導入されています。この導入モデルは、従来のハードウェアベースの設計よりもカスタマイズ性と適応性が高くなっていますが、汎用サーバーの購入コストとエネルギー消費を考えると、クラウドプロバイダーとアプリケーションサービスのコストが高くなる可能性もあります [8]。アプリケーションサービスは、望ましいコスト削減を実現するために、ロードバランサの使用を統合して削減するために多大な努力を払うことがよくあります [2、4、5]。
ロードバランサの広範な使用とコストを考慮して、いくつかの取り組みでは、ロードバランサ、特にレイヤー 4 (L4) ロードバランサの効率を向上させることに重点が置かれており、ロードバランシング ロジックをより低い、場合によってはハードウェア アクセラレーションされたレイヤーに埋め込むことによって改善しています。Katran [16] は、Linux カーネル内の eBPF コードを使用して高速化されているため、カーネル内でパケットを傍受して処理し、ユーザーレベルのロードバランシング コードへの遷移回数を最小限に抑えています。ClickNP [32] は、FPGA 対応 SmartNIC 上の L4 ロードバランシング ロジック (特に NAT のような機能) のいくつかの側面に取り組んでおり、FPGA デバイスの並列処理機能を活用しています。SilkRoad [38] は、プログラマブル スイッチとエンド ホストの組み合わせを使用して、L4 ロードバランサに関連付けられた状態を保存し、スイッチ パイプライン内でロードバランシング操作に関連するデータプレーン変換を実行します。
これらの取り組みにより、ネットワーク層でトラフィックを分散する L4 負荷分散の最適化が大幅に改善されましたが、データセンター サービスは多くの場合、レイヤー 7 (L7) ロード バランサーにのみ搭載されているアプリケーション層の負荷分散機能に依存しています。特に、サービスでは、クライアント要求の属性に基づいてフローをルーティングしたり、クライアント要求のセッション アフィニティを維持したり、アクセス制御を提供したりすることを望んでいます [7]。しかし、これらの機能により、L7 ロード バランサーが L4 ロード バランサーで使用されるハードウェア アクセラレーション技術を採用することが難しくなります。基本的な課題は、L7 負荷分散操作が接続指向のトランスポート プロトコル内に埋め込まれた情報に基づいているため、TCP/HTTP 接続を処理するためにロード バランサー上にフルスタックのネットワーク処理エージェントが必要であると思われることです。その結果、今日の L7 ロード バランサーは汎用ソフトウェア ソリューションであり、コモディティ サーバーで高い処理コストが発生します。
この研究では、プログラム可能なネットワーク ハードウェアを使用して L7 ロード バランサーの効率を改善できるかどうかを調べます。パケット処理ハードウェアで強化された汎用コンピューティング コアを提供する SmartNIC に焦点を当てます。SmartNIC は、コンピューティング コアが任意のプロトコル ロジックをホストでき、パケット処理アクセラレータがデータプレーン変換を効率的に実行できるため、特に魅力的なターゲットです。したがって、SmartNIC は、従来のホスト コンピューティングの機能と、プログラム可能なスイッチの新しい機能を組み合わせたものであり、L7 ロード バランサーの適切なターゲットです。また、ネットワーク タスク用のコスト効率とエネルギー効率に優れたコンピューティング サブストレートとして、データ センター内で SmartNIC の導入が増えていることも、私たちの研究の動機の 1 つです。
負荷分散機能を SmartNIC にオフロードするには、いくつかの課題に対処する必要があります。まず、SmartNIC コアは弱く、メモリが限られており、汎用計算を実行するには非効率的です。可能な限り、OS カーネル内に存在する汎用のフル機能スタックではなく、軽量ネットワーク スタックを使用する必要があります。次に、SmartNIC での効率的なマルチコア処理には、同時データ構造へのアクセスのための軽量同期が前提とされており、これはネットワーク処理ロジックをスリム化する際に特に重要です。最後に、SmartNIC の計算能力を強化するには、パケット変換用のアクセラレータを効果的に使用する必要があります。
私たちは、上記の課題に対処する SmartNIC オフロード ロード バランサーであるLaconic を設計および実装します。私たちのシステムの主要コンポーネントは、アプリケーション層のロード バランシング ロジックとトランスポート層のタスクの共同設計を表す軽量ネットワーク スタックです。この軽量ネットワーク スタックは、ロード バランサーを介して送信されるパケットのサブセットに対してのみ複雑なパケット処理を実行します。残りのパケットについては、ネットワーク スタックはパケットの単純な書き換えを実行し、エンドツーエンドの信頼性と輻輳制御を提供するためにクライアントとサーバーに依存します。パケット処理アクセラレータを備えた SmartNIC の場合、この設計により、ほとんどのパケットをハードウェア ベースのフロー処理エンジンを使用して処理できるため、効率が大幅に向上します。また、並列性が高く、コストのかかる排他操作を最小限に抑える接続管理データ構造も開発しています。私たちの設計への貢献の一部は、一般的なサーバー ベースの設計にも適用されますが、ハードウェア パケット エンジンで実行できる高速パスを除外することで、SmartNIC に相乗効果をもたらします。
私たちは Laconic を構築し、それを 2 種類の SmartNIC (Marvell LiquidIO3 と Nvidia BlueField-2) に合わせて調整しました。Laconic はレイヤー 4 とレイヤー 7 の両方の機能を提供し、バックエンド サービスへの接続のバランスをとるために一般的に使用されるレイヤー 7 介入ロジックを実装しています。大きなメッセージの場合、BlueField-2 で 1 つの ARM コアで実行される Laconic は、より強力な x86 コアで実行される広く使用されている Nginx よりも最大 8.7 倍高いスループットを実現できます。小さなメッセージの場合、BlueField-2 上の Laconic は、Nginx と比較して同等またはそれよりも低いレイテンシで、より高いスループットを実現できます。LiquidIO3 では、Laconic のスループットは x86 Nginx と比較して 4.5 倍高くなります。また、実際のワークロードで Laconic のパフォーマンスを実証し、主要なアイデアの利点に関する詳細なマイクロベンチマークを示します。
この論文は、CC BY-NC-ND 4.0 DEED ライセンスの下でarxiv で公開されています。