マルチキュー ネットワーク カードは、もともとネットワーク IO の QoS (サービス品質) 問題を解決するために使用されていたテクノロジーですが、その後、ネットワーク IO の帯域幅が増加し続けるにつれて、シングルコア CPU ではネットワーク カードのニーズを完全に満たすことができなくなりました。マルチキュー経由 ネットワーク カード ドライバーのサポートにより、ネットワーク カードのニーズを満たすために、割り込みを通じて各キューが異なるコアにバインドされます。
一般的なものには、Intel の 82575、82576、Boardcom の 57711 などが含まれます。マルチキュー ネットワーク カードのハードウェア実装とサポートを分析する例として、会社のサーバーで一般的に使用されている Intel 82575 ネットワーク カードを取り上げてみましょう。 Linux カーネル ソフトウェアの。
図 1.1 は、4 つのハードウェア キューを備えた Intel 82575 ハードウェアの論理図です。パケットが受信されると、パケット ヘッダー内の SIP、Sport、DIP、および Dport の 4 つの値をハッシュすることにより、フローは常に同じキューで受信されます。同時に、キューにバインドされた割り込みがトリガーされます。
図 1.1 82575 ハードウェア ロジック図
RSS (Receive Side Scaling) は、マルチプロセッサ システム ドライブ テクノロジにおいて、複数の CPU 間で受信メッセージを効率的に分散できるネットワーク カードです。
ネットワーク カードは、受信したメッセージを解析し、IP アドレス、プロトコル、ポートの 5 つの情報を取得します
ネットワーク カードは、設定された HASH 関数を通じて 5 つの情報に基づいて HASH 値を計算します。 2 つでは、3 つまたは 4 つのタプルが計算されます。
HASH値の下位桁(この特定のネットワークカードは異なる場合があります)をRETA(リダイレクトテーブル)のインデックスとして取得します
RETAに格納されている値に従って対応するCPUに分配します
次の図は、完全な処理フローを示しています。
RSS テクノロジーに基づくプログラムは、ハードウェアを介して複数の CPU 間でデータ ストリームを分散でき、RETA を変更することで動的な負荷分散を実現できます。
DPDK は静的ハッシュ値の設定と RETA の設定をサポートしています。 ただし、DPDK の RSS はポートに基づいており、パケットはポートの受信キューに従って分散されます。 たとえば、ポート上に 3 つの受信キュー (0,1,2) を設定し、RSS を有効にすると、次のようになります:
{0,1,2,0,1,2,0.... 。 ....}
異なる CPU で実行されているアプリケーションは、異なる受信キューからメッセージを受信するため、メッセージ分散の効果が得られます。
rte_eth_conf
の mq_mode
フィールド、rx_mode.mq_mode = ETH_MQ_RX_RSS
を設定して、DPDK で RSS 機能を有効にします。 rte_eth_conf
中的mq_mode
字段来开启RSS功能, rx_mode.mq_mode = ETH_MQ_RX_RSS
。
当RSS功能开启后,报文对应的rte_pktmbuf
中就会存有RSS计算的hash值,可以通过pktmbuf.hash.rss
来访问。 这个值可以直接用在后续报文处理过程中而不需要重新计算hash值,如快速转发,标识报文流等。
RETA是运行时可配置的,这样应用程序就可以动态改变CPU对应的接收队列,从而动态调节报文分发。 具体通过PMD模块的驱动进行配置,例如ixgbe_dev_rss_reta_update
和ixgbe_dev_rss_reta_query
rte_pktmbuf
に保存され、pktmbuf.hash.rss
からアクセスできます。 >。 この値は、高速転送やパケット フローの識別など、ハッシュ値を再計算することなく、後続のパケット処理で直接使用できます。 🎜🎜RETA は実行時に構成可能であるため、アプリケーションは CPU に対応する受信キューを動的に変更でき、それによってメッセージの配信を動的に調整できます。 具体的には、ixgbe_dev_rss_reta_update
や ixgbe_dev_rss_reta_query
などの PMD モジュールのドライバーを通じて構成されます。 🎜以上がネットワークカードのマルチキュー技術とRSS機能の詳細紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。