struttura TCP_OFFLOAD_STATE_CACHED (ndischimney.h)
[La funzionalità di offload del camino TCP è deprecata e non deve essere usata.]
La struttura TCP_OFFLOAD_STATE_CACHED contiene le variabili memorizzate nella cache di un oggetto stato della connessione TCP.
Sintassi
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;
Members
Header
Struttura OFFLOAD_STATE_HEADER . NDIS imposta il membro Length di Header sulle dimensioni, in byte, della struttura TCP_OFFLOAD_STATE_CACHED. Il membro RecognizedOptions di Header è riservato.
Flags
Maschera di bit che può essere impostata su zero o su uno qualsiasi dei flag seguenti, combinati con OR bit per bit:
TCP_FLAG_KEEP_ALIVE_ENABLED
Lo stack host imposta questo flag per abilitare l'opzione keepalive nella connessione. Lo stack host cancella questo flag per disabilitare l'opzione keepalive nella connessione. Per altre informazioni sull'opzione keepalive, vedere RFC 1122.
TCP_FLAG_NAGLING_ENABLED
Lo stack host imposta questo flag per abilitare l'algoritmo Nagle nella connessione. Lo stack host cancella questo flag per disabilitare l'algoritmo Nagle nella connessione. Per altre informazioni sull'algoritmo Nagle, vedere RFC 896.
TCP_FLAG_KEEP_ALIVE_RESTART
Lo stack host imposta questo flag per fare in modo che la destinazione di offload reimposta il timer keepalive su zero.
TCP_FLAG_MAX_RT_RESTART
Lo stack host imposta questo flag per fare in modo che la destinazione di offload reimposta la variabile TotalRT nello stato delegato TCP per la connessione su zero.
TCP_FLAG_UPDATE_RCV_WND
Lo stack host imposta questo flag per indicare che le dimensioni predefinite della finestra di ricezione (InitialRcvWnd nella struttura TCP_OFFLOAD_STATE_CACHED) sono state modificate. Se il valore di InitialRcvWnd è diverso dalle dimensioni correnti della finestra di ricezione della destinazione di offload (RcvWnd nella struttura TCP_OFFLOAD_STATE_DELEGATED), la destinazione di offload deve annunciare una nuova dimensione della finestra di ricezione al peer.
InitialRcvWnd
Finestra di ricezione predefinita (dall'opzione socket SO_RCVBUF).
RcvIndicationSize
Quando non è NULL, il numero ottimale di byte di dati che la destinazione di offload deve fornire in una singola chiamata all'oggetto Funzione NdisTcpOffloadReceiveHandler . Questo numero, che in genere è compreso tra decine e centinaia di byte, è un suggerimento, non un requisito. La destinazione di offload può indicare più o meno di byte di dati RcvIndicationSize . Tuttavia, per prestazioni ottimali, la destinazione di offload deve indicare
Byte di dati RcvIndicationSize . Per ulteriori informazioni, vedere NdisTcpOffloadReceiveHandler.
Se NULL, RcvIndicationSize non è specificato. In questo caso, la destinazione di offload deve ignorare RcvIndicationSize e indicare il maggior numero di dati possibile nelle chiamate alla funzione NdisTcpOffloadReceiveHandler .
KaProbeCount
Numero di probe keepalive che la destinazione di offload deve inviare per determinare se una connessione TCP è intatta (vedere RFC 1122).
KaTimeout
Questo membro specifica, in tick di clock, l'intervallo di timeout per l'inattività prima di inviare un probe keepalive (vedere RFC 1122).
KaInterval
Questo membro specifica, in tick di clock, il timeout dopo il quale ritrasmettere un frame keepalive se non viene ricevuta alcuna risposta a un probe keepalive (vedere RFC 1122).
MaxRT
Questo membro specifica, in tick di clock, il tempo massimo per cui la destinazione di offload deve dedicare la ritrasmissione di un segmento. Se il valore di MaxRT è diverso da zero, MaxRT esegue l'override di TcpMaximumRetransmissions in NDIS_TASK_TCP_CONNECTION_OFFLOAD struttura. Il valore predefinito per è MaxRT è zero, il che significa che TcpMaximumRetransmissions imposta il numero massimo di volte in cui la destinazione di offload deve ritrasmettere un segmento in una connessione TCP. Se il valore di MaxRT è FFFFFFFF (o -1), non esiste alcun limite al numero massimo di ritrasmissioni. Quando MaxRT è diverso da zero, la destinazione di offload deve reimpostare la variabile TotalRT nello stato delegato TCP per la connessione. TotalRT indica il tempo totale, in tick di clock, che la destinazione di offload ha trascorso a ritrasmettere il segmento TCP corrente.
FlowLabel
Questo membro contrassegna i pacchetti con etichetta host per una gestione speciale intervenendo su router, ad esempio il servizio QoS non predefinito o "in tempo reale" (vedere RFC 2460). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP. Questa variabile è significativa solo se la connessione TCP è su IPv6.
TtlOrHopLimit
Se la connessione TCP è su IPv4, questo membro specifica la durata (vedere RFC 791). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.
Se la connessione TCP è su IPv6, questo membro specifica il numero di router che il pacchetto può passare (vedere RFC 2460). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.
TosOrTrafficClass
Se la connessione TCP è su IPv4, questo membro specifica il tipo di servizio per il routing di un pacchetto (vedere RFC 2474). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.
Se la connessione TCP è su IPv6, questo membro assegna la priorità ai valori per i pacchetti in base ai tipi di traffico, che indica la disponibilità del mittente a rimuovere i pacchetti (vedere RFC 2460). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.
UserPriority
Valore di priorità a 3 bit. Se la destinazione di offload supporta informazioni sui pacchetti 802.1p, è necessario inserire questo valore di priorità nell'intestazione tag di tutti i pacchetti trasmessi sulla connessione TCP offloaded. Se la destinazione di offload non supporta le informazioni sui pacchetti 802.1p, è consigliabile ignorare UserPriority . Per altre informazioni sul supporto delle informazioni sui pacchetti 802.1p, vedere 802.1Q e 802.1p Processing on an Offloaded TCP Connection .For more information about support 802.1p packet information, see 802.1Q and 802.1p Processing on an Offloaded TCP Connection.
Commenti
Le variabili memorizzate nella cache sono di proprietà e gestite dallo stack host. Una destinazione di offload non deve modificare il valore di una variabile memorizzata nella cache, a meno che non venga richiesta dallo stack host. Se il valore di una variabile memorizzata nella cache cambia, lo stack host richiede un aggiornamento della variabile, che fa sì che NDIS chiami la funzione MiniportUpdateOffload della destinazione di offload. Quando lo stack host termina l'offload di uno o più oggetti di stato causando la chiamata di NDIS alla destinazione di offload La funzione MiniportTerminateOffload , la destinazione di offload non restituisce il valore delle variabili costanti offloaded allo stack host.
Si noti che se è impostato un flag di TCP_FLAG_MAX_RT_RESTART connessione TCP offloaded, la destinazione di offload deve:
- Reimpostare la variabile KeepaliveProbeCount delegata della connessione quando lo stack host aggiorna la variabile KaProbeCount memorizzata nella cache della connessione.
- Reimpostare la variabile KeepaliveTimeoutDelta delegata della connessione quando lo stack host aggiorna le variabili KaTimeout e/o KaInterval memorizzate nella cache della connessione.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ndischimney.h (include Ndischimney.h) |