структура TCP_OFFLOAD_STATE_CACHED (ndischimney.h)
[Функция разгрузки tcp chimney является устаревшей и не должна использоваться.]
Структура TCP_OFFLOAD_STATE_CACHED содержит кэшированные переменные объекта состояния tcp-подключения.
Синтаксис
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;
Члены
Header
Структура OFFLOAD_STATE_HEADER . NDIS задает для элемента Lengthзаголовка размер (в байтах) структуры TCP_OFFLOAD_STATE_CACHED. Элемент RecognizedOptionsзаголовка зарезервирован.
Flags
Битовая маска, для которую можно задать нулевое значение или любой из следующих флагов, в сочетании с побитовой или:
TCP_FLAG_KEEP_ALIVE_ENABLED
Стек узла устанавливает этот флаг, чтобы включить параметр keepalive для подключения. Стек узлов очищает этот флаг, чтобы отключить параметр keepalive для подключения. Дополнительные сведения о параметре keepalive см. в статье RFC 1122.
TCP_FLAG_NAGLING_ENABLED
Стек узла устанавливает этот флаг, чтобы включить алгоритм Nagle для подключения. Стек узла очищает этот флаг, чтобы отключить алгоритм Nagle для подключения. Дополнительные сведения об алгоритме Nagle см. в статье RFC 896.
TCP_FLAG_KEEP_ALIVE_RESTART
Стек узла устанавливает этот флаг, чтобы целевой объект разгрузки сбросил таймер хранения до нуля.
TCP_FLAG_MAX_RT_RESTART
Стек узла устанавливает этот флаг, чтобы целевой объект разгрузки сбросил переменную TotalRT в делегированном состоянии TCP для подключения к нулю.
TCP_FLAG_UPDATE_RCV_WND
Стек узла устанавливает этот флаг, чтобы указать, что размер окна приема по умолчанию (InitialRcvWnd в структуре TCP_OFFLOAD_STATE_CACHED) изменился. Если значение InitialRcvWnd отличается от текущего размера окна получения целевого объекта разгрузки (RcvWnd в структуре TCP_OFFLOAD_STATE_DELEGATED), целевой объект разгрузки должен объявить новый размер окна получения для однорангового узла.
InitialRcvWnd
Окно получения по умолчанию (из параметра сокета SO_RCVBUF).
RcvIndicationSize
Если значение не равно NULL, оптимальное количество байтов данных, которое целевой объект разгрузки должен предоставить в одном вызовеФункция NdisTcpOffloadReceiveHandler. Это число, которое обычно составляет от десятков до сотен байтов, является предложением, а не требованием. Целевой объект разгрузки может указывать больше или меньше байтов данных RcvIndicationSize . Однако для оптимальной производительности целевой объект разгрузки должен указывать
RcvIndicationSize data bytes. Дополнительные сведения см. в разделе NdisTcpOffloadReceiveHandler.
Значение RcvIndicationSize не указано при значении NULL. В этом случае целевой объект разгрузки должен игнорировать RcvIndicationSize и указывать как можно больше данных в вызовах функции NdisTcpOffloadReceiveHandler .
KaProbeCount
Количество проб отслеживания, которые должен отправлять целевой объект разгрузки, чтобы определить, не повреждено ли TCP-подключение (см. RFC 1122).
KaTimeout
Этот элемент указывает в тактах часов интервал времени ожидания для бездействия перед отправкой пробы сохранения (см. RFC 1122).
KaInterval
Этот элемент указывает в тактах часов время ожидания, после которого будет повторно передаваться кадр keepalive, если ответ на пробу сохранения не получен (см. RFC 1122).
MaxRT
Этот член указывает в тактах часов максимальное время, которое целевой объект разгрузки должен потратить на повторную передачу сегмента. Если значение MaxRT не равно нулю, MaxRT переопределяет TcpMaximumRetransmissions в структура NDIS_TASK_TCP_CONNECTION_OFFLOAD . Значение maxRT по умолчанию равно нулю. Это означает, что TcpMaximumRetransmissions задает максимальное количество раз, когда целевой объект разгрузки должен повторно передавать сегмент в TCP-подключении. Если значение MaxRT равно FFFFFFFF (или -1), максимальное число повторных передач не ограничено. Если значение MaxRT не равно нулю, целевой объект разгрузки должен сбросить переменную TotalRT в делегированном состоянии TCP для подключения. TotalRT указывает общее время (в тактах часов), которое целевой объект разгрузки потратил на повторную передачу текущего сегмента TCP.
FlowLabel
Этот член помечает пакеты с метками узла для специальной обработки путем взаимодействия маршрутизаторов, например службы качества обслуживания или службы "реального времени" (см. RFC 2460). Эта переменная задается с помощью параметра сокета и может меняться в течение времени существования TCP-подключения. Эта переменная имеет смысл только в том случае, если TCP-подключение установлено через IPv6.
TtlOrHopLimit
Если TCP-подключение установлено по протоколу IPv4, этот член указывает время жизни (см. RFC 791). Эта переменная задается с помощью параметра сокета и может меняться в течение времени существования TCP-подключения.
Если TCP-подключение установлено по протоколу IPv6, этот член указывает количество маршрутизаторов, через которые может пройти пакет (см. RFC 2460). Эта переменная задается с помощью параметра сокета и может меняться в течение времени существования TCP-подключения.
TosOrTrafficClass
Если TCP-подключение установлено по протоколу IPv4, этот член указывает тип службы для маршрутизации пакета (см. RFC 2474). Эта переменная задается с помощью параметра сокета и может меняться в течение времени существования TCP-подключения.
Если TCP-подключение выполняется по протоколу IPv6, то этот член определяет приоритеты для пакетов в соответствии с типами трафика, указывая, насколько отправитель хочет отменить пакеты (см. RFC 2460). Эта переменная задается с помощью параметра сокета и может меняться в течение времени существования TCP-подключения.
UserPriority
3-разрядное значение приоритета. Если целевой объект разгрузки поддерживает сведения о пакете 802.1p, он должен вставить это значение приоритета в заголовок тега всех пакетов, передаваемых при разгрузке TCP-подключения. Если целевой объект разгрузки не поддерживает сведения о пакете 802.1p, следует игнорировать UserPriority . Дополнительные сведения о поддержке сведений о пакетах 802.1p см. в разделах Обработка 802.1Q и 802.1p в разгруженном TCP-подключении.
Комментарии
Кэшированные переменные принадлежат стеку узлов и поддерживаются ими. Целевой объект разгрузки не должен изменять значение кэшированных переменных, если только это не запрашивается стеком узла. Если значение кэшированных переменных изменяется, стек узла запрашивает обновление переменной, в результате чего NDIS вызывает функцию MiniportUpdateOffload целевого объекта разгрузки. Когда стек узла завершает разгрузку одного или нескольких объектов состояния, вызывая NDIS для вызова целевого объекта разгрузкиФункция MiniportTerminateOffload, целевой объект разгрузки не возвращает значение выгруженных константных переменных в стек узла.
Обратите внимание, что если установлен флаг TCP_FLAG_MAX_RT_RESTART для разгрузки TCP-подключения, целевой объект разгрузки должен:
- Сбросьте делегированную переменную KeepaliveProbeCount этого подключения, когда стек узлов обновляет кэшированную переменную KaProbeCount этого подключения.
- Сброс делегированной переменной KeepaliveTimeoutDelta этого подключения, когда стек узла обновляет кэшированные переменные KaTimeout и (или) KaInterval этого подключения.
Требования
Требование | Значение |
---|---|
Заголовок | ndischimney.h (включая Ndischimney.h) |