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


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

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

Структура TCP_OFFLOAD_STATE_DELEGATED содержит делегированные переменные объекта состояния TCP-подключения.

Синтаксис

typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
  OFFLOAD_STATE_HEADER         Header;
  TCP_OFFLOAD_CONNECTION_STATE State;
  USHORT                       Flags;
  ULONG                        RcvNxt;
  ULONG                        RcvWnd;
  ULONG                        SndUna;
  ULONG                        SndNxt;
  ULONG                        SndMax;
  ULONG                        SndWnd;
  ULONG                        MaxSndWnd;
  ULONG                        SendWL1;
  ULONG                        CWnd;
  ULONG                        SsThresh;
  USHORT                       SRtt;
  USHORT                       RttVar;
  ULONG                        TsRecent;
  ULONG                        TsRecentAge;
  ULONG                        TsTime;
  ULONG                        TotalRT;
  UCHAR                        DupAckCount;
  UCHAR                        SndWndProbeCount;
  struct {
    UCHAR ProbeCount;
    ULONG TimeoutDelta;
  } KeepAlive;
  struct {
    UCHAR Count;
    ULONG TimeoutDelta;
  } Retransmit;
  union {
    struct {
      PNET_BUFFER_LIST SendDataHead;
      PNET_BUFFER_LIST SendDataTail;
    };
    ULONG SendBacklogSize;
  };
  union {
    PNET_BUFFER_LIST BufferedData;
    ULONG            ReceiveBacklogSize;
  };
  ULONG                        DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;

Члены

Header

Структура OFFLOAD_STATE_HEADER . NDIS задает для элемента Lengthзаголовка размер структуры TCP_OFFLOAD_STATE_DELEGATED в байтах. Элемент RecognizedOptionsзаголовка зарезервирован.

State

Текущее состояние TCP-подключения (см. RFC 793) в качестве одного из следующих TCP_OFFLOAD_CONNECTION_STATE значений:

TcpConnectionClosed

Состояние подключения отсутствует.

TcpConnectionListen

Ожидание запроса на подключение из любого удаленного TCP и порта.

TcpConnectionSynSent

Ожидание соответствующего запроса на подключение после отправки запроса на подключение.

TcpConnectionSynRcvd

Ожидание подтверждения запроса на подключение после получения и отправки запроса на подключение.

TcpConnectionEstablished

Открытое подключение: полученные данные могут быть доставлены пользователю. Нормальное состояние для этапа передачи данных подключения.

TcpConnectionFinWait1

Ожидание запроса на завершение подключения от удаленного TCP или подтверждения запроса на завершение подключения, отправленного ранее.

TcpConnectionFinWait2

Ожидание запроса на завершение подключения от удаленного TCP.

TcpConnectionCloseWait

Ожидание запроса на завершение подключения от локального пользователя.

TcpConnectionClosing

Ожидание подтверждения запроса на завершение подключения от удаленного TCP.

TcpConnectionLastAck

Ожидание подтверждения запроса на завершение подключения, отправленного ранее в удаленный TCP, который включает подтверждение запроса на завершение подключения.

TcpConnectionTimeWait

Ожидание достаточного времени, чтобы убедиться, что удаленный TCP получил подтверждение своего запроса на завершение подключения.

Обратите внимание, что стек узлов может разгрузить TCP-подключение, если соединение находится в любом состоянии, кроме TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,

Состояние TcpConnectionSynSent или TcpConnectionTimeWait . Стек узлов может запрашивать, обновлять, аннулировать или завершать TCP-подключение независимо от состояния соединения.

Flags

Зарезервировано для системного использования.

RcvNxt

Порядковый номер для следующего сегмента получения (см. RCV. ДАЛЕЕ в RFC 793).

RcvWnd

Размер окна получения в байтах (см. RCV. WND в RFC 793).

SndUna

Порядковый номер первого байта неподтвержденных данных (см. раздел SND. UNA в RFC 793). Дополнительные сведения см. в разделе Отправка данных, содержащих данные для повторной передачи.

SndNxt

Порядковый номер для следующего байта, отправляемого при подключении (см. раздел SND. NXT в RFC 793). Дополнительные сведения см. в разделе Отправка данных, содержащих данные для повторной передачи.

SndMax

Максимальный порядковый номер, отправленный при подключении. Дополнительные сведения см. в разделе Отправка данных, содержащих данные для повторной передачи.

SndWnd

Размер окна отправки в байтах (см. SND. WND в RFC 793).

MaxSndWnd

Максимальный размер окна отправки в байтах (см. RFC 813).

SendWL1

Порядковый номер сегмента, используемый для последнего обновления окна (см. раздел SND. WL1 в RFC 793).

CWnd

Размер окна перегрузки в байтах (см. cwnd в RFC 2581).

SsThresh

Порог медленного запуска в байтах (см. ssthresh в RFC 2581).

SRtt

Сглаженное время кругового пути в часах (см. SRTT в RFC 793 и 2988). Поддерживается для каждого подключения, так как он учитывает путь, узел, а иногда и поведение приложения.

RttVar

Вариация времени кругового пути в тактах часов (см. RTTVAR в RFC 2988).

TsRecent

Значение метки времени для отправки в следующем ACK (см. TS. Последние в RFC 1323)

TsRecentAge

Продолжительность времени с момента получения последней метки времени (см. RFC 1323).

TsTime

Текущее значение скорректированной метки времени.

TotalRT

Общее время в тактах часов, затраченное на повторную передачу текущего сегмента TCP.

DupAckCount

Количество ACL, принятых для одного и того же порядкового номера (см. RFC 1323).

SndWndProbeCount

Текущий цикл проверки окна отправки. Описание цикла проверки окна отправки см. в разделе Сохранение таймера.

KeepAlive

Этот член является объединением, состоящим из следующих членов:

KeepAlive.ProbeCount

Количество отправленных проб проверки активности, которые не получили ответа (см. RFC 1122).

KeepAlive.TimeoutDelta

Оставшееся время в часах тикает до следующего тайм-аута (см. RFC 1122). Обратите внимание, что значение -1 сразу после разгрузки TCP-подключения указывает на то, что таймер keepalive не был запущен при разгрузке подключения. Если таймер сохранения целевого объекта разгрузки не запущен, целевой объект разгрузки должен возвращать значение -1 в этом элементе при ответе на вызов функции MiniportQueryOffload или MiniportTerminateOffload.

Retransmit

Этот член является объединением, состоящим из следующих членов:

Retransmit.Count

Количество отправленных повторных передач (см. RFC 2581).

Retransmit.TimeoutDelta

Время в часах, оставшееся до следующего тайм-аута повторной передачи (см. RFC 2581). Обратите внимание, что значение -1 сразу после разгрузки TCP-подключения указывает на то, что таймер повторной передачи не выполнялся при разгрузке подключения. Таймер повторной передачи не был запущен, так как при разгрузке подключения не было незавершенных данных отправки. Если таймер повторной передачи целевого объекта разгрузки не запущен, целевой объект разгрузки должен возвращать значение -1 в этом элементе при ответе на вызов функции MiniportQueryOffload или MiniportTerminateOffload.

SendDataHead

Указатель на структуру NET_BUFFER_LIST . Эта NET_BUFFER_LIST структура находится в связанном списке, на который указывает элемент NetBufferListChain NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуру, которая непосредственно предшествует структуре TCP_OFFLOAD_STATE_DELEGATED. Если указатель NetBufferListChain имеет значение NULL, SendDataHead не имеет значения.

Указатель SendDataHead указывает на первую NET_BUFFER_LIST структуру, NET_BUFFER структура которой буферизовала связанные с ней данные отправки.

Эта переменная используется только при инициировании разгрузки или завершении операции разгрузки. Дополнительные сведения об использовании этой переменной см. в разделах Обработка необработанных данных отправки во время и после операции разгрузки и Обработка необработанных данных отправки во время операции завершения разгрузки.

SendDataTail

Указатель на структуру NET_BUFFER_LIST . Эта NET_BUFFER_LIST структура находится в связанном списке, на который указывает элемент NetBufferListChain структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, непосредственно перед структурой TCP_OFFLOAD_STATE_DELEGATED. Если указатель NetBufferListChain имеет значение NULL, SendDataTail не имеет значения.

Указатель SendDataTail указывает на последнюю NET_BUFFER_LIST структуру, NET_BUFFER структура которой буферизовала связанные с ней данные отправки.

Эта переменная используется только при инициировании разгрузки или завершении операции разгрузки. Дополнительные сведения об использовании этой переменной см. в разделах Обработка необработанных данных отправки во время и после операции разгрузки и Обработка необработанных данных отправки во время операции завершения разгрузки.

SendBacklogSize

Целевой объект разгрузки задает это значение, чтобы указать количество байтов данных, которые должны быть незаполненными в стеке узлов в целевом объекте разгрузки для обеспечения оптимальной производительности. (Это количество байтов отправки, которые были переданы целевому объекту разгрузки, но еще не были завершены целевым объектом разгрузки.) Конкретные переменные и алгоритм, которые целевой объект разгрузки использует для вычисления размера невыполненной работы по отправке, зависят от реализации. Размер невыполненной работы по отправке может быть функцией времени круговой передачи (RTT) для подключения, пропускной способности интерфейса и других параметров. Целевой объект разгрузки может, например, использовать минимальную пропускную способность или задержку продукта и объявленное окно получения. Обратите внимание, что размер невыполненной работы по отправке не зависит от количества байтов данных, которые в настоящее время передаются для передачи по подключению.

Стек узла может запросить делегированное состояние TCP для подключения, чтобы получить размер невыполненной работы по отправке. Кроме того, целевой объект разгрузки может указывать на изменение размера невыполненной работы по отправке путем вызоваФункция NdisTcpOffloadEventHandler.

Если целевой объект разгрузки не поддерживает функцию send-backlog-size, он должен записать значение 0xFFFFFFFF в SendBacklogSize при запросе делегированного состояния TCP для подключения. Переменная SendBacklogSize не используется в операции завершения разгрузки.

BufferedData

Указатель на буферизованное получение данных. Стек узла может передавать такие данные в целевой объект разгрузки при разгрузке TCP-подключения. (Дополнительные сведения см. в разделе Обработка буферизованного получения данных во время и после операции разгрузки.) Целевой объект разгрузки может передавать такие данные в стек узлов при отправке TCP-подключения. (Дополнительные сведения см. в разделе Обработка буферизованного получения данных во время завершения операции разгрузки.)

ReceiveBacklogSize

Целевой объект разгрузки задает это значение, чтобы указать количество байтов данных о получении, которые буферикуются в целевом объекте разгрузки для разгруженного TCP-подключения. Стек узлов может запросить делегированное состояние TCP для подключения, чтобы получить это значение. Стек узлов использует это значение для отправки одного или нескольких запросов на получение в подключении, которые достаточно велики для хранения всех буферизированных данных.

Если целевой объект разгрузки не поддерживает функцию размера невыполненной работы по получению, он должен записать значение 0xFFFFFFFF в ReceiveBacklogSize .

DWnd

Комментарии

Стек узлов предоставляет начальные значения для делегированных переменных TCP при разгрузке этих переменных в целевой объект разгрузки. После разгрузки делегированные переменные TCP принадлежат целевому объекту разгрузки и поддерживаются ими. Только целевой объект разгрузки может изменять значение разгруженной делегированной переменной TCP. Целевой объект разгрузки не уведомляет стек узлов об изменениях значений разгруженных делегированных переменных TCP. Однако стек узла может запрашивать значение разгруженных делегированных переменных TCP, что приводит к тому, что NDIS вызывает функцию MiniportQueryOffload целевого объекта разгрузки. Когда стек узлов завершает разгрузку объекта состояния TCP-подключения, вызывая NDIS для вызова целевого объекта разгрузки.Функция MiniportTerminateOffload, целевой объект разгрузки передает значение делегированных переменных TCP в объекте состояния завершенного TCP-подключения обратно в стек узлов.

При передаче в целевой объект разгрузки структура TCP_OFFLOAD_STATE_DELEGATED связана с NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структура, содержащая заголовок, отформатированный как структура NDIS_OBJECT_HEADER . В данном случае элемент Revision структуры NDIS_OBJECT_HEADER указывает номер редакции TCP_OFFLOAD_STATE_DELEGATED структуры.

Требования

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

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

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST