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構造体のサイズ (バイト単位) に設定します。 Header の RecognizedOptions メンバーが予約されています。
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 変数をリセットします。
要件
要件 | 値 |
---|---|
Header | ndischimney.h (Ndischimney.h を含む) |