Поделиться через


структура 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 этого подключения.
При передаче в целевой объект разгрузки структура TCP_OFFLOAD_STATE_CACHED связана с NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуры, которая содержит заголовок, отформатированный как структура NDIS_OBJECT_HEADER . В данном случае элемент Revision структуры NDIS_OBJECT_HEADER указывает номер редакции TCP_OFFLOAD_STATE_CACHED структуры.

Требования

Требование Значение
Заголовок ndischimney.h (включая Ndischimney.h)

См. также раздел

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED