structure TCP_OFFLOAD_STATE_CACHED (ndischimney.h)
[La fonctionnalité de déchargement de 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 Header sur la taille, en octets, de la structure TCP_OFFLOAD_STATE_CACHED. Le membre RecognizedOptions du d’en-tête est réservé.
Flags
Masque de bits qui peut être défini sur zéro ou l’un des indicateurs suivants, combiné avec or au niveau du bit :
TCP_FLAG_KEEP_ALIVE_ENABLED
La pile hôte définit cet indicateur pour activer l’option keepalive sur la connexion. La pile 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 hôte définit cet indicateur pour activer l’algorithme Nagle sur la connexion. La pile 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 hôte définit cet indicateur pour que la cible de déchargement réinitialise son minuteur keepalive sur zéro.
TCP_FLAG_MAX_RT_RESTART
La pile hôte définit cet indicateur pour que la cible de déchargement réinitialise la variable TotalRT dans l’état délégué TCP de la connexion à zéro.
TCP_FLAG_UPDATE_RCV_WND
La pile hôte définit cet indicateur pour indiquer que la taille de 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 pour l’homologue.
InitialRcvWnd
Fenêtre de réception par défaut (à partir de l’option de socket SO_RCVBUF).
RcvIndicationSize
Lorsqu’il n'NULL, le nombre optimal d’octets de données que la cible de déchargement doit fournir dans un seul appel au
fonction NdisTcpOffloadReceiveHandler. Ce nombre, généralement compris entre des dizaines et des centaines d’octets, n’est pas une exigence de suggestion. La cible de déchargement peut indiquer plus ou moins de RcvIndicationSize octets de données. Toutefois, pour des performances optimales, la cible de déchargement doit indiquer
RcvIndicationSizeSize octets de données. Pour plus d’informations, consultez
NdisTcpOffloadReceiveHandler.
Quand NULL, RcvIndicationSize n’est pas spécifié. 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 d’envoyer une sonde keepalive (voir RFC 1122).
KaInterval
Ce membre spécifie, dans les cycles d’horloge, le délai d’expiration après lequel retransmettre une trame keepalive si aucune réponse n’est reçue à une sonde keepalive (voir RFC 1122).
MaxRT
Ce membre spécifie, dans les cycles d’horloge, la durée maximale pendant laquelle la cible de déchargement doit passer à retransmettre un segment. Si la valeur de MaxRT n’est pas égale à zéro, maxRT remplace TcpMaximumRetransmissions dans le structure NDIS_TASK_TCP_CONNECTION_OFFLOAD. La valeur par défaut de MaxRT est égale à 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), il n’existe aucune limite quant au nombre maximal de retransmissions. Lorsque MaxRT n’est pas zéro, la cible de déchargement doit réinitialiser la variable TotalRT dans l’état délégué TCP de la connexion. TotalRT indique le temps total, en cycles d’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 interposant les routeurs, par exemple, le service QoS nondefault ou « en 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 sur IPv6.
TtlOrHopLimit
Si la connexion TCP est sur IPv4, ce membre spécifie la durée 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 sur 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 sur 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 sur IPv6, ce membre hiérarchise les valeurs des paquets en fonction des types de trafic, indiquant la volonté de l’expéditeur d’ignorer les paquets (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’il 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 elle est demandée par la pile hôte. Si la valeur d’une variable mise en cache change, la pile hôte demande une mise à jour de la variable, ce qui entraîne l’appel de la fonction NDIS 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 provoquant l’appel de NDIS à la cible de déchargement fonction MiniportTerminateOffload, la cible de déchargement ne retourne pas la valeur des variables constantes déchargées dans 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.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ndischimney.h (include Ndischimney.h) |