ホームページ  >  記事  >  バックエンド開発  >  ネットワークカードのマルチキュー技術とRSS機能の詳細紹介

ネットワークカードのマルチキュー技術とRSS機能の詳細紹介

Y2J
Y2Jオリジナル
2017-04-25 09:23:416456ブラウズ

マルチキュー ネットワーク カードは、もともとネットワーク IO の QoS (サービス品質) 問題を解決するために使用されていたテクノロジーですが、その後、ネットワーク IO の帯域幅が増加し続けるにつれて、シングルコア CPU ではネットワーク カードのニーズを完全に満たすことができなくなりました。マルチキュー経由 ネットワーク カード ドライバーのサポートにより、ネットワーク カードのニーズを満たすために、割り込みを通じて各キューが異なるコアにバインドされます。

一般的なものには、Intel の 82575、82576、Boardcom の 57711 などが含まれます。マルチキュー ネットワーク カードのハードウェア実装とサポートを分析する例として、会社のサーバーで一般的に使用されている Intel 82575 ネットワーク カードを取り上げてみましょう。 Linux カーネル ソフトウェアの。

1. マルチキュー ネットワーク カードのハードウェア実装

図 1.1 は、4 つのハードウェア キューを備えた Intel 82575 ハードウェアの論理図です。パケットが受信されると、パケット ヘッダー内の SIP、Sport、DIP、および Dport の 4 つの値をハッシュすることにより、フローは常に同じキューで受信されます。同時に、キューにバインドされた割り込みがトリガーされます。

図 1.1 82575 ハードウェア ロジック図

2. RSS とは

RSS (Receive Side Scaling) は、マルチプロセッサ システム ドライブ テクノロジにおいて、複数の CPU 間で受信メッセージを効率的に分散できるネットワーク カードです。

  • ネットワーク カードは、受信したメッセージを解析し、IP アドレス、プロトコル、ポートの 5 つの情報を取得します

  • ネットワーク カードは、設定された HASH 関数を通じて 5 つの情報に基づいて HASH 値を計算します。 2 つでは、3 つまたは 4 つのタプルが計算されます。

  • HASH値の下位桁(この特定のネットワークカードは異なる場合があります)をRETA(リダイレクトテーブル)のインデックスとして取得します

  • RETAに格納されている値に従って対応するCPUに分配します

次の図は、完全な処理フローを示しています。

RSS テクノロジーに基づくプログラムは、ハードウェアを介して複数の CPU 間でデータ ストリームを分散でき、RETA を変更することで動的な負荷分散を実現できます。

3. DPDK で RSS を設定する

DPDK は静的ハッシュ値の設定と RETA の設定をサポートしています。 ただし、DPDK の RSS はポートに基づいており、パケットはポートの受信キューに従って分散されます。 たとえば、ポート上に 3 つの受信キュー (0,1,2) を設定し、RSS を有効にすると、次のようになります:

{0,1,2,0,1,2,0.... 。 ....}

異なる CPU で実行されているアプリケーションは、異なる受信キューからメッセージを受信するため、メッセージ分散の効果が得られます。

rte_eth_confmq_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_updateixgbe_dev_rss_reta_query

RSS機能がオンになっている場合、RSSによって計算されたハッシュ値はメッセージに対応するrte_pktmbufに保存され、pktmbuf.hash.rssからアクセスできます。 >。 この値は、高速転送やパケット フローの識別など、ハッシュ値を再計算することなく、後続のパケット処理で直接使用できます。 🎜🎜RETA は実行時に構成可能であるため、アプリケーションは CPU に対応する受信キューを動的に変更でき、それによってメッセージの配信を動的に調整できます。 具体的には、ixgbe_dev_rss_reta_updateixgbe_dev_rss_reta_query などの PMD モジュールのドライバーを通じて構成されます。 🎜

以上がネットワークカードのマルチキュー技術とRSS機能の詳細紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。