패킷 컬레스징 개요
특정 IP 버전 4(IPv4) 및 IP 버전 6(IPv6) 네트워크 프로토콜에는 패킷을 브로드캐스트 또는 멀티캐스트 주소로 전송하는 작업이 포함됩니다. 이러한 패킷은 IPv4/IPv6 서브넷의 여러 호스트에서 수신됩니다. 대부분의 경우 이러한 패킷을 수신하는 호스트는 이러한 패킷을 사용하여 아무 작업도 수행하지 않습니다. 따라서 이러한 원치 않는 멀티캐스트 또는 브로드캐스트 패킷을 수신하면 수신 호스트 내에서 불필요한 처리 및 전원 소비가 발생합니다.
예를 들어 호스트 A는 호스트 B의 이름을 확인하기 위해 IPv6 서브넷에 LLMNR(링크 로컬 멀티캐스트 이름 확인) 요청을 보냅니다. 호스트 A를 제외하고 이 LLMNR 요청은 서브넷의 모든 호스트에서 수신됩니다. 호스트 B를 제외하고 다른 호스트에서 실행되는 TCP/IP 프로토콜 스택은 패킷을 검사하고 패킷이 의도된 것이 아님을 확인합니다. 따라서 프로토콜 스택은 패킷을 거부하고 NdisReturnNetBufferLists 호출하여 패킷을 미니포트 드라이버로 반환합니다.
NDIS 6.30부터 네트워크 어댑터는 NDIS 패킷 병합을 지원할 수 있습니다. 임의 브로드캐스트 또는 멀티캐스트 패킷의 병합을 통해 수신 인터럽트 수를 줄이면 시스템에서 처리 오버헤드 및 전력 소비가 크게 줄어듭니다.
패킷 병합에는 다음 단계가 포함됩니다.
TCP/IP 프로토콜 스택과 같은 오버리싱 드라이버는 브로드캐스트 및 멀티캐스트 패킷을 화면으로 표시하는 데 사용되는 NDIS 수신 필터를 정의합니다. 오버리싱 드라이버는 패킷 병합을 지원하는 기본 미니포트 드라이버에 이러한 필터를 다운로드합니다. 다운로드되면 미니포트 드라이버는 패킷 병합 수신 필터를 사용하여 네트워크 어댑터를 구성합니다.
이러한 필터에 대한 자세한 내용은 패킷 병합 수신 필터참조하세요.
수신 필터와 일치하는 수신 패킷은 네트워크 어댑터에서 캐시되거나 병합된. 어댑터는 병합된 패킷에 대한 수신 인터럽트를 생성하지 않습니다. 대신 어댑터는 다른 하드웨어 이벤트가 발생할 때 호스트를 중단합니다.
이 인터럽트를 생성할 때 어댑터는 인터럽트를 사용하여 수신 이벤트를 나타내야 합니다. 이렇게 하면 네트워크 어댑터가 네트워크 어댑터에서 받은 병합된 패킷을 처리할 수 있습니다.
예를 들어 패킷 병합을 지원하는 네트워크 어댑터는 다음 이벤트 중 하나가 발생할 때 수신 인터럽트를 생성할 수 있습니다.
만료 시간이 해당 수신 필터의 최대 병합 지연 값으로 설정된 하드웨어 타이머의 만료입니다.
하드웨어 병합 버퍼 내에서 사용 가능한 공간이 어댑터에서 지정한 최저 수위 표시에 도달합니다.
병합 필터와 일치하지 않는 패킷이 수신됩니다.
송신 완료 이벤트와 같은 또 다른 인터럽트 이벤트가 발생했습니다.
이 프로세스에 대한 자세한 내용은 패킷 병합 수신 필터처리를 참조하세요.
다음 사항은 NDIS의 패킷 병합 지원에 적용됩니다.
NDIS는 실제 네트워크 어댑터에 할당된 기본 NDIS 포트(포트 0)에서 수신된 패킷에 대한 패킷 병합을 지원합니다. NDIS는 가상 네트워크 어댑터에 할당된 NDIS 포트에서 패킷 병합을 지원하지 않습니다. 자세한 내용은 NDIS 포트개요를 참조하세요.
NDIS는 네트워크 어댑터의 기본 수신 큐에서 수신된 패킷에 대한 패킷 병합을 지원합니다. 이 수신 큐에는 NDIS_DEFAULT_RECEIVE_QUEUE_ID식별자가 있습니다.