RSS 해시 형식

개요

RSS 해시 형식은 NIC가 RSS 해시 값을 계산하는 데 사용해야 하는 수신된 네트워크 데이터의 부분을 지정합니다.

드라이버를 오버리싱하면 해시 유형, 함수 및 간접 참조 테이블이 설정됩니다. 오버리싱 드라이버가 설정하는 해시 형식은 미니포트 드라이버가 지원할 수 있는 형식의 하위 집합일 수 있습니다. 자세한 내용은 RSS 구성을 참조하세요.

해시 형식은 다음 플래그의 유효한 조합의 OR입니다.

  • NDIS_HASH_IPV4
  • NDIS_HASH_TCP_IPV4
  • NDIS_HASH_UDP_IPV4
  • NDIS_HASH_IPV6
  • NDIS_HASH_TCP_IPV6
  • NDIS_HASH_UDP_IPV6
  • NDIS_HASH_IPV6_EX
  • NDIS_HASH_TCP_IPV6_EX
  • NDIS_HASH_UDP_IPV6_EX

유효한 플래그 조합 집합은 다음과 같습니다.

  • IPv4(NDIS_HASH_IPV4, NDIS_HASH_TCP_IPV4 및 NDIS_HASH_UDP_IPV4 조합)
  • IPv6(NDIS_HASH_IPV6, NDIS_HASH_TCP_IPV6 및 NDIS_HASH_UDP_IPV6 조합)
  • 확장 헤더가 있는 IPv6(NDIS_HASH_IPV6_EX, NDIS_HASH_TCP_IPV6_EX 및 NDIS_HASH_UDP_IPV6_EX 조합)

NIC는 IPv4 집합의 조합 중 하나를 지원해야 합니다. 다른 집합과 조합은 선택 사항입니다. NIC는 한 번에 둘 이상의 집합을 지원할 수 있습니다. 이 경우 수신된 데이터 형식에 따라 NIC에서 사용하는 해시 유형이 결정됩니다.

일반적으로 NIC가 수신된 데이터를 올바르게 해석할 수 없는 경우 해시 값을 계산해서는 안됩니다. 예를 들어 NIC가 IPv4만 지원하고 올바르게 해석할 수 없는 IPv6 패킷을 수신하는 경우 해시 값을 계산해서는 안 됩니다. NIC가 지원하지 않는 전송 유형에 대한 패킷을 수신하는 경우 해시 값을 계산해서는 안 됩니다. 예를 들어 NIC가 TCP 패킷에 대한 해시 값을 계산해야 할 때 UDP 패킷을 수신하는 경우 해시 값을 계산해서는 안 됩니다. 이 경우 패킷은 RSS가 아닌 경우와 같이 처리됩니다. 비 RSS 수신 처리에 대한 자세한 내용은 비 RSS 수신 처리를 참조하세요.

IPv4 해시 형식 조합

IPv4 집합의 유효한 해시 형식 조합은 다음과 같습니다.

NDIS_HASH_IPV4

이 플래그만 설정하면 NIC는 다음 IPv4 헤더 필드에 대해 해시 값을 계산해야 합니다.

  • Source-IPv4-Address
  • Destination-IPv4-Address

참고

NIC가 IP 및 TCP 헤더가 모두 있는 패킷을 수신하는 경우 NDIS_HASH_TCP_IPV4 항상 사용해서는 안 됩니다. 조각화된 IP 패킷의 경우 NDIS_HASH_IPV4 사용해야 합니다. 여기에는 IP 및 TCP 헤더를 모두 포함하는 첫 번째 조각이 포함됩니다.

NDIS_HASH_TCP_IPV4

이 플래그만 설정된 경우 NIC는 수신된 데이터를 구문 분석하여 TCP 세그먼트가 포함된 IPv4 패킷을 식별해야 합니다.

NIC는 존재하는 모든 IP 옵션을 식별하고 건너뛰어야 합니다. NIC가 IP 옵션을 건너뛸 수 없는 경우 해시 값을 계산해서는 안 됩니다.

NIC는 다음 필드에 대해 해시 값을 계산해야 합니다.

  • Source-IPv4-Address
  • Destination-IPv4-Address
  • 원본 TCP 포트
  • 대상 TCP 포트

NDIS_HASH_UDP_IPV4

이 플래그만 설정된 경우 NIC는 수신된 데이터를 구문 분석하여 UDP 데이터그램이 포함된 IPv4 패킷을 식별해야 합니다.

NIC는 존재하는 모든 IP 옵션을 식별하고 건너뛰어야 합니다. NIC가 IP 옵션을 건너뛸 수 없는 경우 해시 값을 계산해서는 안 됩니다.

NIC는 다음 필드에 대해 해시 값을 계산해야 합니다.

  • Source-IPv4-Address
  • Destination-IPv4-Address
  • 원본 UDP 포트
  • 대상 UDP 포트

NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4

이 플래그 조합이 설정된 경우 NIC는 NDIS_HASH_TCP_IPV4 사례에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 TCP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV4 사례에 지정된 대로 해시 값을 계산해야 합니다.

NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

이 플래그 조합이 설정된 경우 NIC는 NDIS_HASH_UDP_IPV4 사례에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 UDP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV4 사례에 지정된 대로 해시 값을 계산해야 합니다.

NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

이 플래그 조합이 설정된 경우 NIC는 패킷의 전송에 지정된 해시 계산을 수행해야 합니다. 그러나 패킷에 TCP 또는 UDP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV4 사례에 지정된 대로 해시 값을 계산해야 합니다.

IPv6 해시 형식 조합

IPv6 집합의 유효한 해시 형식 조합은 다음과 같습니다.

NDIS_HASH_IPV6

이 플래그만 설정하면 NIC는 다음 필드에 대해 해시를 계산해야 합니다.

  • Source-IPv6-Address
  • Destination-IPv6-Address

NDIS_HASH_TCP_IPV6

이 플래그만 설정하면 NIC는 수신된 데이터를 구문 분석하여 TCP 세그먼트가 포함된 IPv6 패킷을 식별해야 합니다. NIC는 패킷에 있는 모든 IPv6 확장 헤더를 식별하고 건너뛰어야 합니다. NIC가 IPv6 확장 헤더를 건너뛸 수 없는 경우 해시 값을 계산해서는 안 됩니다.

NIC는 다음 필드에 대해 해시 값을 계산해야 합니다.

  • Source-IPv6 -Address
  • Destination-IPv6 -Address
  • 원본 TCP 포트
  • 대상 TCP 포트

NDIS_HASH_UDP_IPV6

이 플래그만 설정된 경우 NIC는 수신된 데이터를 구문 분석하여 UDP 데이터그램이 포함된 IPv6 패킷을 식별해야 합니다. NIC는 패킷에 있는 모든 IPv6 확장 헤더를 식별하고 건너뛰어야 합니다. NIC가 IPv6 확장 헤더를 건너뛸 수 없는 경우 해시 값을 계산해서는 안 됩니다.

NIC는 다음 필드에 대해 해시 값을 계산해야 합니다.

  • Source-IPv6-Address
  • Destination-IPv6-Address
  • 원본 UDP 포트
  • 대상 UDP 포트

NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6

이 플래그 조합이 설정된 경우 NIC는 NDIS_HASH_TCP_IPV6 사례에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 TCP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV6 사례에 지정된 대로 해시를 계산해야 합니다.

예를 들어 패킷이 조각화된 경우 TCP 헤더가 포함되지 않을 수 있습니다. 이 경우 NIC는 IP 헤더를 통해서만 해시를 계산해야 합니다.

NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

이 플래그 조합이 설정된 경우 NIC는 NDIS_HASH_UDP_IPV6 사례에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 UDP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV6 사례에 지정된 대로 해시를 계산해야 합니다.

예를 들어 패킷이 조각화된 경우 UDP 헤더가 포함되지 않을 수 있습니다. 이 경우 NIC는 IP 헤더를 통해서만 해시를 계산해야 합니다.

NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

이 플래그 조합이 설정된 경우 NIC는 패킷의 전송에 지정된 해시 계산을 수행해야 합니다. 그러나 패킷에 TCP 또는 UDP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV6 사례에 지정된 대로 해시 값을 계산해야 합니다.

예를 들어 패킷이 조각화된 경우 TCP 또는 UDP 헤더가 포함되지 않을 수 있습니다. 이 경우 NIC는 IP 헤더를 통해서만 해시를 계산해야 합니다.

확장 헤더 해시 형식 조합이 있는 IPv6

확장 헤더가 설정된 IPv6의 유효한 조합은 다음과 같습니다.

NDIS_HASH_IPV6_EX

이 플래그만 설정하면 NIC는 다음 필드에 대해 해시를 계산해야 합니다.

  • IPv6 대상 옵션 헤더의 홈 주소 옵션에서 홈 주소입니다. 확장 헤더가 없는 경우 원본 IPv6 주소를 사용합니다.
  • 연결된 확장 헤더의 Routing-Header-Type-2에 포함된 IPv6 주소입니다. 확장 헤더가 없는 경우 대상 IPv6 주소를 사용합니다.

NDIS_HASH_TCP_IPV6_EX

이 플래그만 설정하면 NIC는 다음 필드에 대해 해시를 계산해야 합니다.

  • IPv6 대상 옵션 헤더의 홈 주소 옵션에서 홈 주소입니다. 확장 헤더가 없는 경우 원본 IPv6 주소를 사용합니다.
  • 연결된 확장 헤더의 Routing-Header-Type-2에 포함된 IPv6 주소입니다. 확장 헤더가 없는 경우 대상 IPv6 주소를 사용합니다.
  • 원본 TCP 포트
  • 대상 TCP 포트

NDIS_HASH_UDP_IPV6_EX

이 플래그만 설정하면 NIC는 다음 필드에 대해 해시를 계산해야 합니다.

  • IPv6 대상 옵션 헤더의 홈 주소 옵션에서 홈 주소입니다. 확장 헤더가 없는 경우 원본 IPv6 주소를 사용합니다.
  • 연결된 확장 헤더의 Routing-Header-Type-2에 포함된 IPv6 주소입니다. 확장 헤더가 없는 경우 대상 IPv6 주소를 사용합니다.
  • 원본 UDP 포트
  • 대상 UDP 포트

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX

이 플래그 조합이 설정된 경우 NIC는 NDIS_HASH_TCP_IPV6_EX 사례에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 TCP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV6_EX 사례에 지정된 대로 해시를 계산해야 합니다.

NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

이 플래그 조합이 설정된 경우 NIC는 NDIS_HASH_UDP_IPV6_EX 사례에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 UDP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV6_EX 사례에 지정된 대로 해시를 계산해야 합니다.

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

이 플래그 조합이 설정된 경우 NIC는 패킷 전송에 지정된 대로 해시 계산을 수행해야 합니다. 그러나 패킷에 TCP 또는 UDP 헤더가 없는 경우 NIC는 NDIS_HASH_IPV6_EX 사례에 지정된 대로 해시를 계산해야 합니다.

참고

미니포트 드라이버가 NIC에 대한 NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 및/또는 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX 기능을 보고하는 경우 NIC는 프로토콜 드라이버가 설정한 IPv6 확장 해시 형식에 따라 해시 값(IPv6 확장 헤더의 필드를 통해)을 계산해야 합니다. NIC는 확장 해시 형식 또는 일반 해시 형식을 해시 값이 계산되는 IPv6 패킷의 NET_BUFFER_LIST 구조에 저장할 수 있습니다.

미니포트 드라이버는 수신된 데이터를 나타내기 전에 NET_BUFFER_LIST 구조체에서 해시 형식을 설정합니다. 자세한 내용은 RSS 수신 데이터 표시를 참조하세요.