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


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

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.

состояние TcpConnectionSynSynSentили состояние tcpConnectionTimeWa it. Стек узлов может запрашивать, обновлять, отменять или завершать 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 в RFCs 793 и 2988). Поддерживается на основе каждого подключения, так как он учитывает путь, узел и иногда поведение приложения.

RttVar

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

TsRecent

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

TsRecentAge

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

TsTime

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

TotalRT

Общее время в часах, которое было потрачено повторной передачи текущего сегмента TCP.

DupAckCount

Число акций, принятых для одного и того же номера последовательности (см. RFC 1323).

SndWndProbeCount

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

KeepAlive

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

KeepAlive.ProbeCount

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

KeepAlive.TimeoutDelta

Время, оставшееся в часах, до следующего тайм-аута (см. RFC 1122). Обратите внимание, что значение -1 сразу после разгрузки TCP-подключения указывает, что таймер хранения не запущен при отключении подключения. Если таймер разгрузки целевого объекта не выполняется, целевой объект разгрузки должен возвращать -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. Если указатель NetBufferListChainNULL, 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.

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