структура 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.
Требования
Требование | Ценность |
---|---|
заголовка | ndischimney.h (включая Ndischimney.h) |