TCP_OFFLOAD_STATE_CACHED Struktur (ndischimney.h)
[Das TCP-Chimney-Auslagerungsfeature ist veraltet und sollte nicht verwendet werden.]
Die TCP_OFFLOAD_STATE_CACHED-Struktur enthält die zwischengespeicherten Variablen eines TCP-Verbindungszustandsobjekts.
Syntax
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;
Member
Header
Eine OFFLOAD_STATE_HEADER-Struktur . NDIS legt das Length-Element von Header auf die Größe der TCP_OFFLOAD_STATE_CACHED-Struktur in Bytes fest. Das RecognizedOptions-Element von Header ist reserviert.
Flags
Eine Bitmaske, die auf null oder eines der folgenden Flags festgelegt werden kann, kombiniert mit bitweisem OR:
TCP_FLAG_KEEP_ALIVE_ENABLED
Der Hoststapel legt dieses Flag fest, um die Keepalive-Option für die Verbindung zu aktivieren. Der Hoststapel löscht dieses Flag, um die Keepalive-Option für die Verbindung zu deaktivieren. Weitere Informationen zur Keepalive-Option finden Sie unter RFC 1122.
TCP_FLAG_NAGLING_ENABLED
Der Hoststapel legt dieses Flag fest, um den Nagle-Algorithmus für die Verbindung zu aktivieren. Der Hoststapel löscht dieses Flag, um den Nagle-Algorithmus für die Verbindung zu deaktivieren. Weitere Informationen zum Nagle-Algorithmus finden Sie unter RFC 896.
TCP_FLAG_KEEP_ALIVE_RESTART
Der Hoststapel legt dieses Flag fest, damit das Auslagerungsziel seinen Keepalive-Timer auf 0 zurücksetzt.
TCP_FLAG_MAX_RT_RESTART
Der Hoststapel legt dieses Flag fest, damit das Auslagerungsziel die TotalRT-Variable im delegierten TCP-Zustand für die Verbindung auf 0 zurücksetzt.
TCP_FLAG_UPDATE_RCV_WND
Der Hoststapel legt dieses Flag fest, um anzugeben, dass sich die Standardgröße des Empfangsfensters (InitialRcvWnd in der TCP_OFFLOAD_STATE_CACHED-Struktur) geändert hat. Wenn der Wert von InitialRcvWnd von der aktuellen Empfangsfenstergröße des Auslagerungsziels (RcvWnd in der TCP_OFFLOAD_STATE_DELEGATED-Struktur) abweicht, muss das Auslagerungsziel dem Peer eine neue Empfangsfenstergröße ankündigen.
InitialRcvWnd
Das Standardmäßige Empfangsfenster (aus Socketoption SO_RCVBUF).
RcvIndicationSize
Bei Nicht-NULL die optimale Anzahl von Datenbytes, die das Auslagerungsziel in einem einzelnen Aufruf des NdisTcpOffloadReceiveHandler-Funktion . Diese Zahl, die in der Regel zwischen Zehn und Hunderten von Bytes liegt, ist ein Vorschlag und keine Anforderung. Das Auslagerungsziel kann mehr oder weniger als RcvIndicationSize-Datenbytes angeben. Für eine optimale Leistung sollte das Auslagerungsziel jedoch angeben
RcvIndicationSize-Datenbytes . Weitere Informationen finden Sie unter NdisTcpOffloadReceiveHandler.
Bei NULL ist RcvIndicationSize nicht angegeben. In diesem Fall sollte das Auslagerungsziel RcvIndicationSize ignorieren und in Aufrufen der NdisTcpOffloadReceiveHandler-Funktion so viele Daten wie möglich angeben.
KaProbeCount
Die Anzahl der Keepalive-Tests, die das Auslagerungsziel senden soll, um zu bestimmen, ob eine TCP-Verbindung intakt ist (siehe RFC 1122).
KaTimeout
Dieses Element gibt in Takttakten das Timeoutintervall für Inaktivität vor dem Senden eines Keepalive-Tests an (siehe RFC 1122).
KaInterval
Dieses Element gibt in Takt-Ticks das Timeout an, nach dem ein Keepalive-Frame erneut übertragen werden soll, wenn keine Antwort auf einen Keepalive-Test empfangen wird (siehe RFC 1122).
MaxRT
Dieses Element gibt in Takttakten die maximale Zeit an, die das Auslagerungsziel für die erneute Übertragung eines Segments aufwenden soll. Wenn der Wert von MaxRT ungleich 0 ist, setzt MaxRTTcpMaximumRetransmissions im NDIS_TASK_TCP_CONNECTION_OFFLOAD Struktur. Der Standardwert für ist MaxRT ist 0. Dies bedeutet, dass TcpMaximumRetransmissions die maximale Häufigkeit festlegt, mit der das Auslagerungsziel ein Segment über eine TCP-Verbindung erneut übertragen soll. Wenn der Wert von MaxRT FFFFFFFF (oder -1) ist, gibt es keine Begrenzung für die maximale Anzahl von Erneutübertragungen. Wenn MaxRT nichtzero ist, sollte das Auslagerungsziel die TotalRT-Variable im delegierten TCP-Zustand für die Verbindung zurücksetzen. TotalRT gibt die Gesamtzeit in Takten an, die das Auslagerungsziel für die erneute Übertragung des aktuellen TCP-Segments aufgewendet hat.
FlowLabel
Dieses Mitglied kennzeichnet pakete mit Hostbeschriftung für die spezielle Verarbeitung durch Eingreifen von Routern , z. B. nicht standardmäßige QoS oder "Echtzeitdienst" (siehe RFC 2460). Diese Variable wird über eine Socketoption festgelegt und kann während der Lebensdauer der TCP-Verbindung variieren. Diese Variable ist nur sinnvoll, wenn die TCP-Verbindung über IPv6 besteht.
TtlOrHopLimit
Wenn die TCP-Verbindung über IPv4 besteht, gibt dieses Mitglied die Laufzeit an (siehe RFC 791). Diese Variable wird über eine Socketoption festgelegt und kann während der Lebensdauer der TCP-Verbindung variieren.
Wenn die TCP-Verbindung über IPv6 besteht, gibt dieser Member die Anzahl von Routern an, die das Paket durchlaufen kann (siehe RFC 2460). Diese Variable wird über eine Socketoption festgelegt und kann während der Lebensdauer der TCP-Verbindung variieren.
TosOrTrafficClass
Wenn die TCP-Verbindung über IPv4 besteht, gibt dieses Mitglied den Typ des Diensts für das Routing eines Pakets an (siehe RFC 2474). Diese Variable wird über eine Socketoption festgelegt und kann während der Lebensdauer der TCP-Verbindung variieren.
Wenn die TCP-Verbindung über IPv6 besteht, priorisiert dieser Member Die Werte für Pakete entsprechend den Datenverkehrstypen, was angibt, wie bereit der Absender ist, die Pakete verwerfen zu lassen (siehe RFC 2460). Diese Variable wird über eine Socketoption festgelegt und kann während der Lebensdauer der TCP-Verbindung variieren.
UserPriority
Ein 3-Bit-Prioritätswert. Wenn das Auslagerungsziel 802.1p-Paketinformationen unterstützt, muss es diesen Prioritätswert in den Tagheader aller Pakete einfügen, die es über die entladene TCP-Verbindung sendet. Wenn das Auslagerungsziel keine 802.1p-Paketinformationen unterstützt, sollte UserPriority ignoriert werden . Weitere Informationen zur Unterstützung von 802.1p-Paketinformationen finden Sie unter 802.1Q- und 802.1p-Verarbeitung bei einer entladenen TCP-Verbindung.
Hinweise
Zwischengespeicherte Variablen sind eigentum und werden vom Hoststapel verwaltet. Ein Auslagerungsziel darf den Wert einer zwischengespeicherten Variablen nur ändern, wenn dies vom Hoststapel angefordert wird. Wenn sich der Wert einer zwischengespeicherten Variablen ändert, fordert der Hoststapel eine Aktualisierung der Variablen an, wodurch NDIS die MiniportUpdateOffload-Funktion des Auslagerungsziels aufruft. Wenn der Hoststapel die Auslagerung eines oder mehrerer Zustandsobjekte beendet, indem NDIS dazu führt, dass das Auslagerungsziel des Ziels aufgerufen wird MiniportTerminateOffload-Funktion , gibt das Auslagerungsziel nicht den Wert der ausgeladenen Konstantenvariablen an den Hoststapel zurück.
Beachten Sie, dass das Auslagerungsziel folgendes ausführen muss, wenn das TCP_FLAG_MAX_RT_RESTART-Flag einer entladenen TCP-Verbindung festgelegt ist:
- Setzen Sie die delegierte KeepaliveProbeCount-Variable dieser Verbindung zurück, wenn der Hoststapel die zwischengespeicherte KaProbeCount-Variable dieser Verbindung aktualisiert.
- Setzen Sie die delegierte KeepaliveTimeoutDelta-Variable dieser Verbindung zurück, wenn der Hoststapel die zwischengespeicherten KaTimeout- und/oder KaInterval-Variablen dieser Verbindung aktualisiert.
Anforderungen
Anforderung | Wert |
---|---|
Header | ndischimney.h (include Ndischimney.h) |