次の方法で共有


NetAdapterCx ハードウェア オフロードの概要

パフォーマンスを向上させるために、Windows TCP/IPスタックは、適切なタスク オフロード機能を持つネットワーク インターフェイス カード (NIC) にいくつかのタスクをオフロードできます。

NetAdapterCx は、オフロード構成の容易さとオフロード機能の管理に重点を置いています。 クライアント ドライバーは、ハードウェア オフロード機能の単純な構成を指定し、機能の変更を通知するコールバックを登録するだけで済みます。

このガイダンスでは、NetAdapterCx でのハードウェア オフロードの主要な概念の概要を示します。

  • ハードウェア オフロード機能は、初期化中にネットワーク アダプター ハードウェアによってアドバタイズされ、 NetAdapterStart を呼び出す前にアドバタイズする必要があります。
  • ドライバーは、標準のレジストリ キーワード (keyword)をチェックする必要はありません。 NetAdapterCx はレジストリ キーワードをチェックし、アクティブなオフロード機能を有効にするときにそれらを優先します。
  • ネットワーク アダプターの アクティブ オフロード機能は、ネットワーク アダプターが現在実行するようにプログラムされている機能です。 これらは、以前にクライアント ドライバーによってアドバタイズされたハードウェア機能のサブセットです。
  • TCP/IP スタックまたは上にあるプロトコル ドライバーは、ネットワーク アダプターのアクティブな機能の変更を要求できます。 クライアント ドライバーは、アクティブなオフロード機能の変更を通知する NetAdapterCx にコールバックを登録します。
  • オフロードにパケット拡張機能が必要な場合は、ネットワーク アダプターがハードウェア オフロードのサポートをアドバタイズするときに自動的に登録されます。

クライアント ドライバーは、ハードウェアがオフロードできるネットワーク パケットの種類について、詳細な機能セットを NetAdapterCx にアドバタイズします。 たとえば、IPv4 オプション、IPv6 拡張機能、TCP オプション、またはその組み合わせなどがサポートされている場合があります。特定のハードウェアは、パケット ヘッダー オフセットがわかっている場合にのみオフロードを実行でき、このようなハードウェアのクライアント ドライバーは、パケット ヘッダー オフセットの制限を指定することもできます。 たとえば、ハードウェア記述子にレイヤー 4 ヘッダー オフセットを格納するビットが 8 ビットしかない場合、クライアント ドライバーは Layer4HeaderOffset を 255 に設定します。 クライアント ドライバーの機能でカバーされていないパケットは、NetAdapterCx によってソフトウェアでオフロードされます。

ハードウェアが特定の組み合わせを処理できない場合、クライアント ドライバーは、そのようなパケットが発生したときに、その機能のサポートを宣言したり、ソフトウェア フォールバック自体を実行したりしないでください。 代わりに、NetAdapterCx が必要なソフトウェア フォールバックを自動的に実行できるようにする必要があります。

Note

NetAdapterCx でハードウェアでサポートされていないオフロードのソフトウェア フォールバックを実行する場合、クライアント ドライバーには、そのオフロードの標準化されたキーワード (keyword)を INF ファイルに含める必要があります。 たとえば、クライアント ドライバーがハードウェアで RSC オフロードをまったく実行できず、ソフトウェアでこのオフロードを実行するために NetAdapterCx が必要な場合は、*RscIpv4 と *RscIpv6 キーワード (keyword)を INF に含める必要があります。

NetAdapterCx と Windows TCP/IP スタックでは、次のオフロードがサポートされています。

オフロード名 説明
チェックサム IP および TCP チェックの計算と検証を NIC にオフロードする。
汎用送信オフロード (GSO) IPv4 および IPv6 の大きな TCP/UDP パケットのセグメント化をオフロードする。
Receive Segment Coalescing (RSC) IPv4 と IPv6 の受信 TCP セグメントのシーケンスの結合をオフロードする。

TCP/IP スタックまたは上にあるプロトコル ドライバーが Net アダプターのアクティブな機能の変更を要求した場合のオフロードの構成とオフロードの更新の詳細については、対応するオフロードのリファレンス ページを参照してください。