structure TCP_OFFLOAD_STATE_CACHED (ndischimney.h)

[La fonctionnalité de déchargement de la cheminée TCP est déconseillée et ne doit pas être utilisée.]

La structure TCP_OFFLOAD_STATE_CACHED contient les variables mises en cache d’un objet d’état de connexion TCP.

Syntaxe

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;

Membres

Header

Structure OFFLOAD_STATE_HEADER . NDIS définit le membre Length de l’en-tête sur la taille, en octets, de la structure TCP_OFFLOAD_STATE_CACHED. Le membre RecognizedOptions de l’en-tête est réservé.

Flags

Masque de bits qui peut être défini sur zéro ou sur l’un des indicateurs suivants, combiné avec le bit OR :

TCP_FLAG_KEEP_ALIVE_ENABLED

La pile de l’hôte définit cet indicateur pour activer l’option keepalive sur la connexion. La pile de l’hôte efface cet indicateur pour désactiver l’option keepalive sur la connexion. Pour plus d’informations sur l’option keepalive, consultez RFC 1122.

TCP_FLAG_NAGLING_ENABLED

La pile de l’hôte définit cet indicateur pour activer l’algorithme Nagle sur la connexion. La pile de l’hôte efface cet indicateur pour désactiver l’algorithme Nagle sur la connexion. Pour plus d’informations sur l’algorithme Nagle, consultez RFC 896.

TCP_FLAG_KEEP_ALIVE_RESTART

La pile de l’hôte définit cet indicateur pour que la cible de déchargement réinitialise son minuteur keepalive à zéro.

TCP_FLAG_MAX_RT_RESTART

La pile de l’hôte définit cet indicateur pour que la cible de déchargement réinitialise la variable TotalRT à l’état délégué TCP pour la connexion à zéro.

TCP_FLAG_UPDATE_RCV_WND

La pile hôte définit cet indicateur pour indiquer que la taille de la fenêtre de réception par défaut (InitialRcvWnd dans la structure TCP_OFFLOAD_STATE_CACHED) a changé. Si la valeur d’InitialRcvWnd diffère de la taille actuelle de la fenêtre de réception de la cible de déchargement (RcvWnd dans la structure TCP_OFFLOAD_STATE_DELEGATED), la cible de déchargement doit publier une nouvelle taille de fenêtre de réception à l’homologue.

InitialRcvWnd

Fenêtre de réception par défaut (à partir de l’option de socket SO_RCVBUF).

RcvIndicationSize

Lorsque la valeur n’est pas NULL, le nombre optimal d’octets de données que la cible de déchargement doit fournir en un seul appel à Fonction NdisTcpOffloadReceiveHandler . Ce nombre, qui est généralement compris entre des dizaines et des centaines d’octets, est une suggestion, et non une exigence. La cible de déchargement peut indiquer plus ou moins d’octets de données RcvIndicationSize . Toutefois, pour des performances optimales, la cible de déchargement doit indiquer
RcvIndicationSize des octets de données. Pour plus d'informations, consultez la rubrique NdisTcpOffloadReceiveHandler.

Quand la valeur est NULL, RcvIndicationSize n’est pas spécifiée. Dans ce cas, la cible de déchargement doit ignorer RcvIndicationSize et indiquer autant de données que possible dans les appels à la fonction NdisTcpOffloadReceiveHandler .

KaProbeCount

Nombre de sondes keepalive que la cible de déchargement doit envoyer pour déterminer si une connexion TCP est intacte (voir RFC 1122).

KaTimeout

Ce membre spécifie, dans les cycles d’horloge, l’intervalle de délai d’inactivité avant l’envoi d’une sonde de conservation (voir RFC 1122).

KaInterval

Ce membre spécifie, dans les graduations d’horloge, le délai d’attente après lequel retransmettre une image keepalive si aucune réponse n’est reçue à une sonde keepalive (voir RFC 1122).

MaxRT

Ce membre spécifie, en activant l’horloge, la durée maximale pendant laquelle la cible de déchargement doit passer à retransmettre un segment. Si la valeur de MaxRT est différente de zéro, MaxRT remplace TcpMaximumRetransmissions dans le NDIS_TASK_TCP_CONNECTION_OFFLOAD structure. La valeur par défaut pour est MaxRT est zéro, ce qui signifie que TcpMaximumRetransmissions définit le nombre maximal de fois où la cible de déchargement doit retransmettre un segment sur une connexion TCP. Si la valeur de MaxRT est FFFFFFFF (ou -1), le nombre maximal de retransmissions n’est pas limité. Lorsque MaxRT n’est pas nul, la cible de déchargement doit réinitialiser la variable TotalRT dans l’état délégué TCP pour la connexion. TotalRT indique le temps total, en activant l’horloge, que la cible de déchargement a passé à retransmettre le segment TCP actuel.

FlowLabel

Ce membre marque les paquets étiquetés par l’hôte pour une gestion spéciale en intervenant sur les routeurs, par exemple, qoS non par défaut ou service « temps réel » (voir RFC 2460). Cette variable est définie via une option de socket et peut varier pendant la durée de vie de la connexion TCP. Cette variable n’est significative que si la connexion TCP est via IPv6.

TtlOrHopLimit

Si la connexion TCP est via IPv4, ce membre spécifie l’heure de vie (voir RFC 791). Cette variable est définie via une option de socket et peut varier pendant la durée de vie de la connexion TCP.

Si la connexion TCP est via IPv6, ce membre spécifie le nombre de routeurs que le paquet peut passer (voir RFC 2460). Cette variable est définie via une option de socket et peut varier pendant la durée de vie de la connexion TCP.

TosOrTrafficClass

Si la connexion TCP est via IPv4, ce membre spécifie le type de service pour le routage d’un paquet (voir RFC 2474). Cette variable est définie via une option de socket et peut varier pendant la durée de vie de la connexion TCP.

Si la connexion TCP est via IPv6, ce membre hiérarchise les valeurs des paquets en fonction des types de trafic, ce qui indique la volonté de l’expéditeur d’avoir les paquets ignorés (voir RFC 2460). Cette variable est définie via une option de socket et peut varier pendant la durée de vie de la connexion TCP.

UserPriority

Valeur de priorité 3 bits. Si la cible de déchargement prend en charge les informations de paquet 802.1p, elle doit insérer cette valeur de priorité dans l’en-tête de balise de tous les paquets qu’elle transmet sur la connexion TCP déchargée. Si la cible de déchargement ne prend pas en charge les informations de paquet 802.1p, elle doit ignorer UserPriority . Pour plus d’informations sur la prise en charge des informations sur les paquets 802.1p, consultez Traitement 802.1Q et 802.1p sur une connexion TCP déchargée.

Remarques

Les variables mises en cache sont détenues et gérées par la pile hôte. Une cible de déchargement ne doit pas modifier la valeur d’une variable mise en cache, sauf si la pile hôte l’y demande. Si la valeur d’une variable mise en cache change, la pile de l’hôte demande une mise à jour de la variable, ce qui oblige NDIS à appeler la fonction MiniportUpdateOffload de la cible de déchargement. Lorsque la pile hôte met fin au déchargement d’un ou plusieurs objets d’état en entraînant NDIS pour appeler la cible de déchargement Fonction MiniportTerminateOffload , la cible de déchargement ne retourne pas la valeur des variables constantes déchargées à la pile hôte.

Notez que si l’indicateur de TCP_FLAG_MAX_RT_RESTART d’une connexion TCP déchargée est défini, la cible de déchargement doit :

  • Réinitialisez la variable KeepaliveProbeCount déléguée de cette connexion lorsque la pile hôte met à jour la variable KaProbeCount mise en cache de cette connexion.
  • Réinitialisez la variable KeepaliveTimeoutDelta déléguée de cette connexion lorsque la pile hôte met à jour les variables KaTimeout et/ou KaInterval mises en cache de cette connexion.
Lorsqu’il est passé à une cible de déchargement, une structure TCP_OFFLOAD_STATE_CACHED est associée à un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure, qui contient un en-tête mis en forme en tant que structure de NDIS_OBJECT_HEADER . Dans ce cas, le membre Revision de la structure NDIS_OBJECT_HEADER spécifie le numéro de révision de la structure TCP_OFFLOAD_STATE_CACHED.

Configuration requise

Condition requise Valeur
En-tête ndischimney.h (inclure Ndischimney.h)

Voir aussi

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED