TCP_OFFLOAD_STATE_CACHED 構造体 (ndischimney.h)

[TCP のチムニー オフロード機能は非推奨であり、使用しないでください。]

TCP_OFFLOAD_STATE_CACHED構造体には、TCP 接続状態オブジェクトのキャッシュされた変数が含まれています。

構文

typedef struct _TCP_OFFLOAD_STATE_CACHED {
  OFFLOAD_STATE_HEADER Header;
  USHORT               Flags;
  ULONG                InitialRcvWnd;
  ULONG                RcvIndicationSize;
  UCHAR                KaProbeCount;
  ULONG                KaTimeout;
  ULONG                KaInterval;
  ULONG                MaxRT;
  ULONG                FlowLabel : 20;
  UCHAR                TtlOrHopLimit;
  UCHAR                TosOrTrafficClass;
  UCHAR                UserPriority : 3;
} TCP_OFFLOAD_STATE_CACHED, *PTCP_OFFLOAD_STATE_CACHED;

メンバー

Header

OFFLOAD_STATE_HEADER構造体。 NDIS は、ヘッダーLength メンバーを、TCP_OFFLOAD_STATE_CACHED構造体のサイズ (バイト単位) に設定します。 HeaderRecognizedOptions メンバーが予約されています。

Flags

0 または次のいずれかのフラグをビットごとの OR と組み合わせて設定できるビットマスク。

TCP_FLAG_KEEP_ALIVE_ENABLED

ホスト スタックは、接続でキープアライブ オプションを有効にするためにこのフラグを設定します。 ホスト スタックはこのフラグをクリアして、接続のキープアライブ オプションを無効にします。 キープアライブ オプションの詳細については、「RFC 1122」を参照してください。

TCP_FLAG_NAGLING_ENABLED

ホスト スタックは、接続で Nagle アルゴリズムを有効にするためにこのフラグを設定します。 ホスト スタックは、このフラグをクリアして、接続で Nagle アルゴリズムを無効にします。 Nagle アルゴリズムの詳細については、「RFC 896」を参照してください。

TCP_FLAG_KEEP_ALIVE_RESTART

ホスト スタックは、オフロード ターゲットがキープアライブ タイマーを 0 にリセットするようにこのフラグを設定します。

TCP_FLAG_MAX_RT_RESTART

ホスト スタックは、オフロード ターゲットが接続の TCP 委任状態の TotalRT 変数を 0 にリセットするように、このフラグを設定します。

TCP_FLAG_UPDATE_RCV_WND

ホスト スタックは、既定の受信ウィンドウ サイズ (TCP_OFFLOAD_STATE_CACHED構造体の InitialRcvWnd) が変更されたことを示すように、このフラグを設定します。 InitialRcvWnd の値がオフロード ターゲットの現在の受信ウィンドウ サイズ (TCP_OFFLOAD_STATE_DELEGATED構造体の RcvWnd) と異なる場合、オフロード ターゲットは新しい受信ウィンドウ サイズをピアにアドバタイズする必要があります。

InitialRcvWnd

既定の受信ウィンドウ (ソケット オプション SO_RCVBUFから)。

RcvIndicationSize

NULL 以外の場合、オフロード ターゲットが への 1 回の呼び出しで指定する必要がある最適なデータ バイト数。 NdisTcpOffloadReceiveHandler 関数。 この数は、通常、数十バイトから数百バイトの間であり、要件ではなく提案です。 オフロード ターゲットは、 RcvIndicationSize データ バイトより多くまたは小さい値を示すことができます。 ただし、最適なパフォーマンスを得る場合は、オフロード ターゲットで
RcvIndicationSize データ バイト。 詳細については、「 NdisTcpOffloadReceiveHandler

NULL の場合、RcvIndicationSize は指定されていません。 この場合、オフロード ターゲットは RcvIndicationSize を無視し、 NdisTcpOffloadReceiveHandler 関数の呼び出しでできるだけ多くのデータを示す必要があります。

KaProbeCount

TCP 接続が損なわれるかどうかを判断するためにオフロード ターゲットが送信する必要があるキープアライブ プローブの数 (RFC 1122 を参照)。

KaTimeout

このメンバーは、キープアライブ プローブを送信する前の非アクティブのタイムアウト間隔をクロック ティック単位で指定します (RFC 1122 を参照)。

KaInterval

このメンバーは、キープアライブ プローブに応答が受信されない場合にキープアライブ フレームを再送信するタイムアウトをクロック ティック単位で指定します (RFC 1122 を参照)。

MaxRT

このメンバーは、オフロード ターゲットがセグメントの再送信に費やす最大時間をクロック ティック単位で指定します。 MaxRT の値が 0 以外の場合、MaxRT は の TcpMaximumRetransmissions をオーバーライドします。 NDIS_TASK_TCP_CONNECTION_OFFLOAD 構造体。 の既定値は MaxRT が 0 です。つまり、 TcpMaximumRetransmissions は、オフロード ターゲットが TCP 接続でセグメントを再送信する最大回数を設定します。 MaxRT の値が FFFFFFFF (または -1) の場合、再送信の最大数に制限はありません。 MaxRT が 0 以外の場合、オフロード ターゲットは、接続の TCP 委任状態の TotalRT 変数をリセットする必要があります。 TotalRT は、オフロード ターゲットが現在の TCP セグメントの再送信に費やした合計時間をクロック ティック単位で示します。

FlowLabel

このメンバーは、既定以外の QoS や "リアルタイム" サービスなど、介入ルーターによる特別な処理のためにホスト ラベル付きパケットをマークします (RFC 2460 を参照)。 この変数はソケット オプションを使用して設定され、TCP 接続の有効期間中に異なる場合があります。 この変数は、TCP 接続が IPv6 経由の場合にのみ意味があります。

TtlOrHopLimit

TCP 接続が IPv4 経由の場合、このメンバーは有効期間を指定します (RFC 791 を参照)。 この変数はソケット オプションを使用して設定され、TCP 接続の有効期間中に異なる場合があります。

TCP 接続が IPv6 経由の場合、このメンバーはパケットが通過できるルーターの数を指定します (RFC 2460 を参照)。 この変数はソケット オプションを使用して設定され、TCP 接続の有効期間中に異なる場合があります。

TosOrTrafficClass

TCP 接続が IPv4 経由の場合、このメンバーはパケットをルーティングするためのサービスの種類を指定します (RFC 2474 を参照)。 この変数はソケット オプションを使用して設定され、TCP 接続の有効期間中に異なる場合があります。

TCP 接続が IPv6 を超える場合、このメンバーはトラフィックの種類に応じてパケットの値に優先順位を付け、送信者がパケットを破棄する方法を示します (RFC 2460 を参照)。 この変数はソケット オプションを使用して設定され、TCP 接続の有効期間中に異なる場合があります。

UserPriority

3 ビットの優先度値。 オフロード ターゲットが 802.1p パケット情報をサポートしている場合は、オフロードされた TCP 接続で送信されるすべてのパケットの タグ ヘッダー にこの優先度値を挿入する必要があります。 オフロード ターゲットが 802.1p パケット情報をサポートしていない場合は、 UserPriority を無視する必要があります。 802.1p パケット情報のサポートの詳細については、「 オフロードされた TCP 接続での 802.1Q および 802.1p 処理」を参照してください。

注釈

キャッシュされた変数は、ホスト スタックによって所有および管理されます。 オフロード ターゲットは、ホスト スタックによって要求されない限り、キャッシュされた変数の値を変更しないでください。 キャッシュされた変数の値が変更された場合、ホスト スタックは変数の更新を要求します。これにより、NDIS はオフロード ターゲットの MiniportUpdateOffload 関数を呼び出します。 ホスト スタックが 1 つ以上の状態オブジェクトのオフロードを終了すると、NDIS がオフロード ターゲットの を呼び出すようにします。 MiniportTerminateOffload 関数では、オフロード ターゲットは、オフロードされた定数変数の値をホスト スタックに返しません。

オフロードされた TCP 接続のTCP_FLAG_MAX_RT_RESTART フラグが設定されている場合、オフロード ターゲットは次のことが必要であることに注意してください。

  • ホスト スタックがその接続のキャッシュされた KaProbeCount 変数を更新したときに、その接続の委任された KeepaliveProbeCount 変数をリセットします。
  • ホスト スタックがその接続のキャッシュされた KaTimeout 変数または KaInterval 変数を更新したときに、その接続の委任された KeepaliveTimeoutDelta 変数をリセットします。
オフロード ターゲットに渡されると、TCP_OFFLOAD_STATE_CACHED構造体が に関連付けられます。 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 構造体。 NDIS_OBJECT_HEADER構造体として 書式設定されたヘッダーが含まれます。 この場合、NDIS_OBJECT_HEADER 構造体の Revision メンバーは、TCP_OFFLOAD_STATE_CACHED構造体のリビジョン番号を指定します。

要件

要件
Header ndischimney.h (Ndischimney.h を含む)

こちらもご覧ください

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED