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는 헤더Length 멤버를 TCP_OFFLOAD_STATE_CACHED 구조체의 크기(바이트)로 설정합니다. HeaderRecognizedOptions 멤버가 예약되어 있습니다.

Flags

비트 OR와 결합된 다음 플래그 중 0 또는 임의의 플래그로 설정할 수 있는 비트 마스크입니다.

TCP_FLAG_KEEP_ALIVE_ENABLED

호스트 스택은 연결에서 keepalive 옵션을 사용하도록 이 플래그를 설정합니다. 호스트 스택은 연결에서 keepalive 옵션을 사용하지 않도록 설정하기 위해 이 플래그를 지웁니다. keepalive 옵션에 대한 자세한 내용은 RFC 1122를 참조하세요.

TCP_FLAG_NAGLING_ENABLED

호스트 스택은 연결에서 Nagle 알고리즘을 사용하도록 설정하도록 이 플래그를 설정합니다. 호스트 스택은 연결에서 Nagle 알고리즘을 사용하지 않도록 설정하기 위해 이 플래그를 지웁니다. Nagle 알고리즘에 대한 자세한 내용은 RFC 896을 참조하세요.

TCP_FLAG_KEEP_ALIVE_RESTART

호스트 스택은 이 플래그를 설정하여 오프로드 대상이 유지 타이머를 0으로 다시 설정합니다.

TCP_FLAG_MAX_RT_RESTART

호스트 스택은 이 플래그를 설정하여 오프로드 대상이 연결에 대해 TCP 위임된 상태에서 TotalRT 변수를 0으로 다시 설정하도록 합니다.

TCP_FLAG_UPDATE_RCV_WND

호스트 스택은 이 플래그를 설정하여 기본 수신 창 크기(TCP_OFFLOAD_STATE_CACHED 구조의 InitialRcvWnd)가 변경되었음을 나타냅니다. InitialRcvWnd 값이 오프로드 대상의 현재 수신 창 크기(TCP_OFFLOAD_STATE_DELEGATED 구조의 RcvWnd)와 다른 경우 오프로드 대상은 새 수신 창 크기를 피어에 보급해야 합니다.

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 값이 0이 아니면 MaxRT는 에서 TcpMaximumRetransmissions를 재정의합니다. NDIS_TASK_TCP_CONNECTION_OFFLOAD 구조체입니다. 의 기본값은 MaxRT 가 0입니다. 즉, TcpMaximumRetransmissions 는 오프로드 대상이 TCP 연결에서 세그먼트를 다시 전송해야 하는 최대 횟수를 설정합니다. MaxRT 값이 FFFFFFFF(또는 -1)인 경우 최대 재전송 횟수에는 제한이 없습니다. MaxRT가 0이 아닌 경우 오프로드 대상은 연결에 대한 TCP 위임된 상태에서 TotalRT 변수를 다시 설정해야 합니다. TotalRT 는 오프로드 대상이 현재 TCP 세그먼트를 재전송하는 데 소요된 총 시간(클록 틱)을 나타냅니다.

FlowLabel

이 멤버는 라우터(예: 기본값이 아닌 QoS 또는 "실시간" 서비스)를 개입하여 특별한 처리를 위해 호스트 레이블이 지정된 패킷을 표시합니다(RFC 2460 참조). 이 변수는 소켓 옵션을 통해 설정되며 TCP 연결의 수명 동안 달라질 수 있습니다. 이 변수는 TCP 연결이 IPv6을 통해서만 의미가 있습니다.

TtlOrHopLimit

TCP 연결이 IPv4를 통한 경우 이 멤버는 TCP 연결 시간을 지정합니다(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 패킷 정보를 지원하는 방법에 대한 자세한 내용은 오프로드된 TCP 연결에서 802.1Q 및 802.1p 처리를 참조하세요.

설명

캐시된 변수는 호스트 스택에서 소유하고 유지 관리합니다. 호스트 스택에서 요청하지 않는 한 오프로드 대상은 캐시된 변수의 값을 변경해서는 안됩니다. 캐시된 변수의 값이 변경되면 호스트 스택은 변수의 업데이트를 요청하므로 NDIS는 오프로드 대상의 MiniportUpdateOffload 함수를 호출합니다. 호스트 스택이 하나 이상의 상태 개체의 오프로드를 종료하는 경우 NDIS가 오프로드 대상을 호출하도록 합니다. MiniportTerminateOffload 함수인 오프로드 대상은 오프로드된 상수 변수의 값을 호스트 스택에 반환하지 않습니다.

오프로드된 TCP 연결의 TCP_FLAG_MAX_RT_RESTART 플래그가 설정된 경우 오프로드 대상은 다음을 수행해야 합니다.

  • 호스트 스택이 해당 연결의 캐시된 KaProbeCount 변수를 업데이트할 때 해당 연결의 위임된 KeepaliveProbeCount 변수를 다시 설정합니다.
  • 호스트 스택이 해당 연결의 캐시된 KaTimeout 및/또는 KaInterval 변수를 업데이트할 때 해당 연결의 위임된 KeepaliveTimeoutDelta 변수를 다시 설정합니다.
오프로드 대상에 전달되면 TCP_OFFLOAD_STATE_CACHED 구조체가 과 연결됩니다. NDIS_OBJECT_HEADER 구조체로 형식이 지정된 헤더를 포함하는 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체입니다. 이 경우 NDIS_OBJECT_HEADER 구조체의 Revision 멤버는 TCP_OFFLOAD_STATE_CACHED 구조체의 수정 번호를 지정합니다.

요구 사항

요구 사항
헤더 ndischimney.h(Ndischimney.h 포함)

추가 정보

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED