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


структура TCP_OFFLOAD_STATE_CACHED (ndischimney.h)

[Функция разгрузки дымохода TCP не рекомендуется и не должна использоваться.]

Структура 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 задает элемент длины заголовка размером в байтах структуры TCP_OFFLOAD_STATE_CACHED. Распознаваемыеoptions элемент заголовка зарезервирован.

Flags

Битовая маска, которая может быть задана равным нулю или любому из следующих флагов, в сочетании с битовой ИЛИ:

TCP_FLAG_KEEP_ALIVE_ENABLED

Стек узлов задает этот флаг, чтобы включить параметр сохранения подключения. Стек узлов очищает этот флаг, чтобы отключить параметр сохранения подключения. Дополнительные сведения о параметре сохранения см. в статье 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 байт данных. Дополнительные сведения см. в разделе NdisTcpOffloadReceiveHandler.

Если значение NULL, RcvIndicationSize не указано. В этом случае целевой объект разгрузки должен игнорировать rcvIndicationSize и указывать максимальное количество данных в вызовах функции NdisTcpOffloadReceiveHandler.

KaProbeCount

Количество хранимых проб, которые целевой объект разгрузки должен отправлять, чтобы определить, является ли TCP-подключение нетронутым (см. RFC 1122).

KaTimeout

Этот элемент указывает интервал времени ожидания для бездействия перед отправкой пробы хранения (см. RFC 1122).

KaInterval

Этот элемент указывает время ожидания в часах, время ожидания, после которого повторно передавать хранимый кадр, если ответ не получен в хранимую пробу (см. RFC 1122).

MaxRT

Этот элемент указывает, в часах, максимальное время, когда целевой объект разгрузки должен тратить повторную передачу сегмента. Если значение MaxRT не равно нулю, MaxRT переопределяет TcpMaximumRetransmissions в структура NDIS_TASK_TCP_CONNECTION_OFFLOAD. Значение по умолчанию — MaxRT равно нулю, что означает, что TcpMaximumRetransmissions задает максимальное количество раз, когда целевой объект разгрузки должен повторно передавать сегмент в TCP-подключении. Если значение MaxRT равно FFFFFFFFFF (или -1), ограничение на максимальное количество повторных передач отсутствует. Если MaxRT ненулевое значение, целевой объект разгрузки должен сбросить переменную TotalRT в делегированном состоянии TCP для подключения. TotalRT указывает общее время (в часах), что целевой объект разгрузки потратил повторное передача текущего сегмента TCP.

FlowLabel

Этот член помечает пакеты с метками узла для специальной обработки путем взаимодействия маршрутизаторов, например, службы QoS или "real-time" (см. 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-подключения.

Замечания

Кэшированные переменные принадлежат и поддерживаются стеком узлов. Целевой объект разгрузки не должен изменять значение кэшированных переменных, если это не запрашивается стеком узлов. Если значение кэшированных переменных изменяется, стек узлов запрашивает обновление переменной, что приводит к вызову функции целевого объекта разгрузки 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. В данном случае элемент редакции структуры 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