estructura TCP_OFFLOAD_STATE_CACHED (ndischimney.h)
[La característica de descarga de chimenea TCP está en desuso y no debe usarse].
La estructura TCP_OFFLOAD_STATE_CACHED contiene las variables almacenadas en caché de un objeto de estado de conexión TCP.
Sintaxis
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;
Miembros
Header
Estructura OFFLOAD_STATE_HEADER. NDIS establece el miembro Length de Header en el tamaño, en bytes, de la estructura TCP_OFFLOAD_STATE_CACHED. El miembro RecognizeOptions de Header está reservado.
Flags
Máscara de bits que se puede establecer en cero o en cualquiera de las marcas siguientes, combinadas con OR bit a bit:
TCP_FLAG_KEEP_ALIVE_ENABLED
La pila de hosts establece esta marca para habilitar la opción keepalive en la conexión. La pila de hosts borra esta marca para deshabilitar la opción keepalive en la conexión. Para obtener más información sobre la opción keepalive, consulte RFC 1122.
TCP_FLAG_NAGLING_ENABLED
La pila de hosts establece esta marca para habilitar el algoritmo nagle en la conexión. La pila de hosts borra esta marca para deshabilitar el algoritmo nagle en la conexión. Para obtener más información sobre el algoritmo nagle, consulte RFC 896.
TCP_FLAG_KEEP_ALIVE_RESTART
La pila de hosts establece esta marca para que el destino de descarga restablezca su temporizador keepalive a cero.
TCP_FLAG_MAX_RT_RESTART
La pila de hosts establece esta marca para que el destino de descarga restablezca la variable TotalRT en el estado delegado TCP para la conexión a cero.
TCP_FLAG_UPDATE_RCV_WND
La pila de hosts establece esta marca para indicar que ha cambiado el tamaño predeterminado de la ventana de recepción (InitialRcvWnd en la estructura TCP_OFFLOAD_STATE_CACHED). Si el valor de InitialRcvWnd difiere del tamaño de la ventana de recepción actual del destino de descarga (RcvWnd en la estructura TCP_OFFLOAD_STATE_DELEGATED), el destino de descarga debe anunciar un nuevo tamaño de ventana de recepción al mismo nivel.
InitialRcvWnd
Ventana de recepción predeterminada (desde la opción socket SO_RCVBUF).
RcvIndicationSize
Cuando noNULL, el número óptimo de bytes de datos que el destino de descarga debe proporcionar en una sola llamada a .
función NdisTcpOffloadReceiveHandler. Este número, que suele estar entre decenas y cientos de bytes, es un requisito que no es una sugerencia. El destino de descarga puede indicar más o menos de RcvIndicationSize bytes de datos. Sin embargo, para obtener un rendimiento óptimo, el destino de descarga debe indicar
RcvIndicationSize bytes de datos. Para obtener más información, consulte
NdisTcpOffloadReceiveHandler.
Cuando NULL , rcvIndicationSize no se especifica. En este caso, el destino de descarga debe omitir RcvIndicationSize e indicar tantos datos como sea posible en las llamadas a la función NdisTcpOffloadReceiveHandler.
KaProbeCount
Número de sondeos keepalive que el destino de descarga debe enviar para determinar si una conexión TCP está intacta (consulte RFC 1122).
KaTimeout
Este miembro especifica, en tics de reloj, el intervalo de tiempo de espera de inactividad antes de enviar un sondeo keepalive (consulte RFC 1122).
KaInterval
Este miembro especifica, en tics de reloj, el tiempo de espera después del cual retransmitir un fotograma keepalive si no se recibe ninguna respuesta a un sondeo keepalive (consulte RFC 1122).
MaxRT
Este miembro especifica, en tics de reloj, el tiempo máximo que el destino de descarga debe dedicar a retransmitir un segmento. Si el valor de MaxRT no es cero, maxRT invalida TcpMaximumRetransmissions en NDIS_TASK_TCP_CONNECTION_OFFLOAD estructura. El valor predeterminado de es maxRT es cero, lo que significa que TcpMaximumRetransmissions establece el número máximo de veces que el destino de descarga debe retransmitir un segmento en una conexión TCP. Si el valor de maxRT es FFFFFFFF (o -1), no hay ningún límite en el número máximo de retransmisiones. Cuando MaxRT es distinto de cero, el destino de descarga debe restablecer la variable TotalRT en el estado delegado TCP para la conexión. totalRT indica el tiempo total, en tics de reloj, que el destino de descarga ha invertido retransmitir el segmento TCP actual.
FlowLabel
Este miembro marca los paquetes etiquetados por host para un control especial mediante enrutadores intermedios, por ejemplo, el servicio QoS no predeterminado o "en tiempo real" (consulte RFC 2460). Esta variable se establece a través de una opción de socket y puede variar durante la vigencia de la conexión TCP. Esta variable solo es significativa si la conexión TCP se realiza a través de IPv6.
TtlOrHopLimit
Si la conexión TCP se realiza a través de IPv4, este miembro especifica el período de vida (consulte RFC 791). Esta variable se establece a través de una opción de socket y puede variar durante la vigencia de la conexión TCP.
Si la conexión TCP se realiza a través de IPv6, este miembro especifica el número de enrutadores a los que puede pasar el paquete (consulte RFC 2460). Esta variable se establece a través de una opción de socket y puede variar durante la vigencia de la conexión TCP.
TosOrTrafficClass
Si la conexión TCP se realiza a través de IPv4, este miembro especifica el tipo de servicio para enrutar un paquete (consulte RFC 2474). Esta variable se establece a través de una opción de socket y puede variar durante la vigencia de la conexión TCP.
Si la conexión TCP se realiza a través de IPv6, este miembro da prioridad a los valores de los paquetes según los tipos de tráfico, lo que indica cómo desea que el remitente tenga los paquetes descartados (consulte RFC 2460). Esta variable se establece a través de una opción de socket y puede variar durante la vigencia de la conexión TCP.
UserPriority
Valor de prioridad de 3 bits. Si el destino de descarga admite información de paquetes 802.1p, debe insertar este valor de prioridad en el encabezado de etiqueta de todos los paquetes que transmite en la conexión TCP descargada. Si el destino de descarga no admite información de paquetes 802.1p, debe omitir UserPriority . Para obtener más información sobre cómo admitir la información de paquetes 802.1p, consulte 802.1Q y 802.1p Processing on an Offloaded TCP Connection.
Observaciones
Las variables almacenadas en caché son propiedad de la pila de hosts y las mantienen. Un destino de descarga no debe cambiar el valor de una variable almacenada en caché a menos que la pila de hosts lo solicite. Si cambia el valor de una variable almacenada en caché, la pila de hosts solicita una actualización de la variable, lo que hace que NDIS llame a la función miniportUpdateOffload del destino de descarga. Cuando la pila de hosts finaliza la descarga de uno o varios objetos de estado, lo que provoca que NDIS llame al destino de descarga. función miniportTerminateOffload, el destino de descarga no devuelve el valor de variables constantes descargadas a la pila de hosts.
Tenga en cuenta que si se establece una marca de TCP_FLAG_MAX_RT_RESTART de conexión TCP descargada, el destino de descarga debe:
- Restablezca la variable KeepaliveProbeCount delegada de esa conexión cuando la pila de hosts actualiza la variable KaProbeCount almacenada en caché de esa conexión.
- Restablezca la variable KeepaliveTimeoutDelta delegada de esa conexión cuando la pila de hosts actualiza las variables KaTimeout o KaInterval almacenadas en caché de esa conexión.
Requisitos
Requisito | Valor |
---|---|
encabezado de | ndischimney.h (incluya Ndischimney.h) |