다음을 통해 공유


NDIS PacketDirect 공급자 인터페이스 소개

PDPI(PacketDirect Provider Interface)는 물리적 환경과 가상 환경 모두에 대해 가속 I/O 모델로 NDIS를 확장하여 초당 처리되는 패킷 수를 크기 단위로 늘리고 기존 NDIS I/O 경로와 비교할 때 지터를 크게 줄일 수 있습니다.

배경

Windows의 기존 I/O 모델은 다양한 특성을 가진 여러 미디어 형식에서 작동하도록 의도된 다목적 일반 I/O 플랫폼으로 구현되었으며 네트워킹은 전체 시스템의 한 측면일 뿐입니다. 오늘날 네트워크 가상화가 데이터 센터에서 널리 사용되는 기술이 됨에 따라 Windows Server OS의 기존 NDIS I/O 모델은 점점 더 일반화될 것으로 예상되는 네트워크 집약적 워크로드를 따라잡기에 충분하지 않을 뿐만 아니라 네트워크 I/O 처리에 리소스를 바치는 부적절한 모델이기도 합니다. 데이터 센터 환경에서는 일반적으로 하드웨어 어플라이언스를 위해 예약된 기능을 수행하는 네트워킹 전용 단일 용도 컴퓨터를 구현하는 것은 드문 일이 아닙니다. 이러한 네트워크 어플라이언스의 예로는 소프트웨어 부하 분산 장치, DDoS 어플라이언스 및 전달 게이트웨이가 있습니다. 설상가상으로, 가상 어플라이언스와 같은 네트워크 집약적 애플리케이션을 빌드하기 위해 이러한 대체 OS의 기본 플랫폼으로 만드는 I/O를 가속화하는 다른 OS의 메커니즘이 있습니다.

PD(PacketDirect)는 초당 패킷 수(pps)에 최적화된 가속 네트워크 I/O 경로로 현재 NDIS 모델을 확장합니다. 이 작업은 다음을 통해 수행됩니다.

  • 대기 시간 감소
  • 감소된 주기/패킷
  • 추가 시스템 리소스를 사용하여 선형 속도 향상

PacketDirect는 기존 모델과 나란히 존재합니다. 새 PD 경로는 애플리케이션이 선호하는 경우 사용할 수 있으며 이를 수용하기에 충분한 하드웨어 리소스가 있습니다. PD는 기존 I/O 모델을 대체하기 위한 것이 아니며 PD 인터페이스에 쓰는 클라이언트에 시스템 토폴로지를 기반으로 하는 기본 리소스에 대한 엄격한 분할 요구 사항이 있다고 가정합니다. PD는 Windows 시스템이 전통적으로 하드웨어에서 수행된 높은 pps 워크로드를 대체하여 데이터 센터 소유자에게 수백만 달러의 인프라 비용을 절감하는 데 도움이 되는 새로운 고속 데이터 경로입니다.

PacketDirect 개념

PD는 PD 클라이언트가 NIC(네트워크 어댑터)에서 네트워킹 트래픽을 명시적으로 관리할 수 있도록 허용하여 작동합니다. PD는 PDCI(PacketDirect 클라이언트 인터페이스)를 통해 PD 클라이언트가 NIC의 고성능 송신 및 수신 기능을 제어할 수 있도록 합니다. 내부적으로 PDCI 송신/수신 함수는 PDPI에 직접 매핑됩니다. PD 송신/수신 함수는 PD 지원 NIC의 PD 클라이언트에서 만든 PD 큐에서 작동합니다. PD는 PD 클라이언트의 요구 사항에 따라 매우 구체적인 유형의 트래픽 또는 매우 일반적인 트래픽에 대한 사용자 지정 필터를 설정할 수 있는 기능을 PD 클라이언트에 제공합니다. 이렇게 하면 PD 클라이언트가 들어오는 특정 패킷을 해당 PD 큐로 전송할 수 있습니다. PD 모델의 패킷 처리는 항상 PD 클라이언트가 소유(또는 제어/조정)하는 실행 컨텍스트에서 발생합니다. PD 지원 NIC 드라이버는 완전히 수동적입니다. 즉, DPC 또는 작업자 스레드와 같은 드라이버 소유 실행 컨텍스트에서 PD 클라이언트에 전송된 패킷에 대한 들어오는 패킷 또는 완료 표시를 적극적으로 전달하지 않습니다.

PD 클라이언트가 패킷을 처리하는 방법을 이해하지 못하거나 ARP, LLDP 또는 기타 프로토콜 패킷과 같은 큐 중 하나에서 제어 패킷을 수신하는 경우 PD 클라이언트는 처리를 위해 패킷을 현재 I/O 경로로 다시 라우팅할 수 있습니다. 이를 통해 PD는 트래픽 제어에 대한 주기를 낭비하지 않고 컨텍스트가 있는 패킷을 계속 처리할 수 있습니다.

중요 넷 어댑터당 하나의 PD 공급자와 하나의 PD 클라이언트가 있을 수 있습니다. 따라서 단일 시스템에 여러 PD 클라이언트 및 PD 공급자가 있을 수 있습니다.

PD 클라이언트는 시스템의 PD에 할당된 리소스를 제어할 수 있습니다. 네트워크 트래픽이 많은 경우 PD 클라이언트는 OS가 다른 워크로드에 응답할 수 있도록 워크로드를 최소화해야 합니다.

Windows에서 구현한 PacketDirect 플랫폼은 클라이언트 인터페이스를 공급자 인터페이스에 매핑합니다. 플랫폼은 버퍼 관리 및 PD를 통해 받은 패킷을 현재 NDIS 수신 경로에 다시 삽입하는 기능을 제어합니다. 또한 PD 데이터 경로 성능을 저해하지 않는 방식으로 NIC 사용 안 함, 저전력, 시스템 종료 및 깜짝 제거와 같은 NDIS 제어 경로 요구 사항을 충족하기 위해 PD 클라이언트와의 상호 작용을 처리합니다.

PDPI(PacketDirect Provider Interface)

PDPI를 사용하면 NIC 드라이버가 고성능 송신 및 수신 기능을 Windows OS에 노출할 수 있습니다. 구현된 함수는 전체 MiniPort 기능의 하위 집합이며 PD를 구현하는 모든 NIC에 일반적입니다. PDPI에 대한 참조 설명서는 PacketDirect PDPI(공급자 인터페이스) 참조를 참조하세요.

PDCI(PacketDirect 클라이언트 인터페이스)

PDCI를 사용하면 자사 Windows 서비스/애플리케이션(예: 부하 분산 장치, NAT, VM 스위치 등)이 PD 클라이언트를 사용하여 PacketDirect I/O 모델을 활용하여 데이터 경로의 속도를 높일 수 있습니다. 이 인터페이스는 현재 NDIS 송신/수신 인터페이스와 마찬가지로 계층 2 인터페이스입니다. PDPI 액세스 외에도 PDCI가 제공하는 기본 기능은 PD 패킷 버퍼 할당/관리, 일반 NDIS 수신 경로에 패킷을 다시 삽입하기 위한 백 채널, NDIS 전원/PnP 이벤트 처리입니다.

PacketDirect PDPI(공급자 인터페이스) 참조