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 アダプターのアクティブな機能の変更を要求した場合のオフロードの構成とオフロードの更新の詳細については、対応するオフロードのリファレンス ページを参照してください。