Introdução à interface do provedor de pacotes do NDIS
A PDPI (Interface do Provedor de PacketDirect) estende o NDIS com um modelo de E/S acelerado, para ambientes físicos e virtuais, que podem aumentar o número de pacotes processados por segundo por uma ordem de magnitude e diminuir significativamente a tremulação em comparação com o caminho de E/S de NDIS tradicional.
Tela de fundo
O modelo de E/S tradicional no Windows foi implementado para ser uma plataforma de E/S geral multiuso que se destinava a trabalhar com vários tipos de mídia com muitas características diferentes e onde a rede era apenas um aspecto do sistema geral. Hoje, como a virtualização de rede se tornou uma tecnologia predominante em datacenters, o modelo de E/S de NDIS tradicional no sistema operacional Windows Server não só não é suficiente para acompanhar as cargas de trabalho com uso intensivo de rede que esperamos tornar-se cada vez mais comuns, mas também um modelo inadequado para dedicar recursos ao processamento de E/S de rede. Em ambientes de datacenter, não é incomum implementar um computador de finalidade única dedicado à rede executando funções que geralmente eram reservadas para dispositivos de hardware. Exemplos desses dispositivos de rede incluem balanceadores de carga de software, dispositivos DDoS e gateways de encaminhamento. Para piorar as coisas, há mecanismos em outros sistemas operacionais para acelerar a E/S que tornam esses sistemas operacionais alternativos a plataforma preferencial para criar aplicativos com uso intensivo de rede, como soluções de virtualização.
PacketDirect (PD) estende o modelo NDIS atual com um caminho de E/S de rede acelerado otimizado para pps (pacote por segundo) conta uma ordem de magnitude maior do que o que foi visto com o modelo de E/S de NDIS tradicional. Isso é feito por meio de:
- Latência reduzida
- Ciclos/pacotes reduzidos
- Aceleração linear com o uso de recursos adicionais do sistema
PacketDirect existe lado a lado com o modelo tradicional. O novo caminho de PD pode ser usado quando um aplicativo prefere e há recursos de hardware suficientes para acomodá-lo. A PD não se destina a substituir o modelo de E/S tradicional e pressupõe que um cliente que está gravando na interface PD terá requisitos de particionamento estritos para os recursos subjacentes com base na topologia do sistema. O PD deve ser o novo caminho de dados de alta velocidade que ajudará um sistema Windows a substituir cargas de trabalho de pps altas que têm sido tradicionalmente feitas em hardware, economizando milhões de proprietários de data center em custos de infraestrutura.
Conceitos de PacketDirect
O PD funciona permitindo que um cliente PD gerencie explicitamente o tráfego de rede de um adaptador de rede (NIC). O PD fornece ao cliente PD o controle da funcionalidade de envio e recebimento de alto desempenho da NIC por meio da interface do cliente PacketDirect (PDCI). Internamente, as funções de envio/recebimento PDCI são mapeadas diretamente para o PDPI. As funções de envio/recebimento de PD operam em filas PD criadas pelo cliente PD em NICs compatíveis com PD. O PD fornece aos clientes PD a capacidade de definir filtros personalizados para tipos muito específicos de tráfego ou tráfego muito genérico, com base nas necessidades do cliente PD. Isso permite que o cliente PD direcione determinados pacotes de entrada para suas filas PD. O processamento de pacotes no modelo PD sempre ocorre em um contexto de execução que pertence (ou controlado/coordenado) pelo cliente PD. O driver NIC compatível com PD é completamente passivo, o que significa que ele não encaminha ativamente pacotes de entrada ou indicações de conclusão para pacotes enviados para o cliente PD em um contexto de execução de propriedade do driver, como um DPC ou um worker-thread.
Se um cliente PD não entender como processar um pacote ou receber um pacote de controle em uma de suas filas, como um ARP, LLDP ou outros pacotes de protocolo, o cliente PD poderá redirecionar o pacote de volta para o caminho de E/S atual para processamento. Isso permite que a PD continue processando os pacotes para os quais tem contexto e não ciclos de desperdício no tráfego de controle.
Importante Pode haver um provedor de PD e um cliente PD por adaptador de rede. Portanto, pode haver vários clientes PD e provedores de PD em um único sistema.
O cliente PD tem controle sobre os recursos alocados para PD no sistema. Em casos de alto tráfego de rede, o cliente PD é responsável por minimizar sua carga de trabalho para que o sistema operacional possa responder a outras cargas de trabalho.
A plataforma PacketDirect implementada pelo Windows mapeia a interface do cliente para a interface do provedor. A plataforma controla o gerenciamento de buffers e a capacidade de injetar novamente os pacotes recebidos via PD no caminho de recebimento do NDIS atual. Ele também lida com a interação com clientes PD para atender aos requisitos de caminho de controle do NDIS, como desabilitação da NIC, entrada em baixa potência, desligamento do sistema e remoção surpresa de uma forma que NÃO dificulta o desempenho do caminho de dados do PD.
Interface do provedor PacketDirect (PDPI)
O PDPI permite que os drivers NIC exponham a funcionalidade de envio e recebimento de alto desempenho para o sistema operacional Windows. As funções implementadas são um subconjunto da funcionalidade miniport completa e são genéricas para todas as NICs que implementam PD. Para obter a documentação de referência do PDPI, consulte Referência da PDPI (Interface do Provedor Dedireto de Pacotes).
Interface do cliente PacketDirect (PDCI)
O PDCI permite que serviços/aplicativos primários do Windows (por exemplo, Balanceador de carga, NAT, comutador de VM etc.) acelerem seu caminho de dados aproveitando o modelo de E/S PacketDirect por meio do uso dos clientes PD. Essa interface é uma interface de camada 2, assim como a interface de envio/recebimento do NDIS atual. A funcionalidade main que a PDCI fornece (além do acesso ao PDPI) é a alocação/gerenciamento do buffer de pacotes PD, um canal de fundo para injetar pacotes de volta no caminho de recebimento regular do NDIS, manipulando eventos de energia/PnP do NDIS.