How to Configure PacketDirect on Network Adapters in Windows 11 Using PowerShell

Modern enterprise, trading, and real-time media streaming environments require sub-millisecond networking latency and sustained high packet-per-second (PPS) throughput. Traditional networking stacks process packets by generating CPU interrupts, allocating memory structures through multiple NDIS driver tiers, and traversing kernel boundary transitions, introducing context-switch overhead. In Windows 11 and Windows Server, PacketDirect (part of the PacketDirect Provider Interface specification) extends NDIS to provide ultra-low latency, high-throughput packet processing by creating direct, hardware-accelerated user-mode and kernel queues that bypass intermediate networking layers. Using PowerShell, network administrators can inspect, enable, and manage PacketDirect capabilities across physical and virtual network interfaces.

Understanding PacketDirect Architecture in Windows

PacketDirect is an advanced hardware acceleration extension within the Windows Network Driver Interface Specification (NDIS):

  • Bypassing Kernel Overhead: PacketDirect establishes direct shared-memory ring buffers between the physical network card controller and the application or Hyper-V virtual switch, drastically reducing context switches.
  • High Packet-Per-Second Scalability: Optimised for small-packet workloads (such as DNS flood mitigation, VoIP aggregation, financial market telemetry, and virtual router appliances) where raw packet counts, rather than total byte volume, overwhelm CPU interrupt handlers.
  • Polling vs Interrupt Mode: In addition to traditional interrupt-driven processing, PacketDirect supports controlled polling modes, eliminating hardware interrupt latency spikes during peak network traffic bursts.
  • Compatibility Requirements: Requires a physical network interface card with dedicated PacketDirect NDIS 6.40+ miniport driver support (such as Mellanox ConnectX or Intel high-performance enterprise adapters).

Auditing PacketDirect Capabilities with Get-NetAdapterPacketDirect

To inspect whether the network adapters installed in your system support PacketDirect, open an elevated PowerShell prompt and run Get-NetAdapterPacketDirect:

Get-NetAdapterPacketDirect

The command queries the NDIS driver stack and displays the operational state:

Name                   Enabled OperationalState Supported TxQueues RxQueues
----                   ------- ---------------- --------- -------- --------
Ethernet               True    Operational      True      8        8
Wi-Fi                  False   NotSupported     False     0        0
vEthernet (Internal)   False   NotSupported     False     0        0

To inspect a single adapter by name:

Get-NetAdapterPacketDirect -Name "Ethernet"

The output indicates whether PacketDirect is currently Enabled, the number of allocated transmit (Tx) and receive (Rx) queues, and whether the driver reports hardware capability.

Enabling PacketDirect via PowerShell

To activate PacketDirect acceleration on a compatible network card, execute the Enable-NetAdapterPacketDirect cmdlet:

Enable-NetAdapterPacketDirect -Name "Ethernet"

If you need to configure the number of dedicated transmit and receive ring buffers (for instance, assigning 4 dedicated hardware queues to match specific CPU affinities):

Enable-NetAdapterPacketDirect -Name "Ethernet" -TxQueues 4 -RxQueues 4

Verify that the configuration is active and the operational state reports as operational:

Get-NetAdapterPacketDirect -Name "Ethernet"

Disabling PacketDirect via PowerShell

While PacketDirect delivers unmatched packet-per-second performance, certain third-party endpoint security agents, legacy packet capture drivers, or non-compliant virtual switch extensions can conflict with direct-queue memory mapping. To revert the adapter to standard NDIS packet processing, run Disable-NetAdapterPacketDirect:

Disable-NetAdapterPacketDirect -Name "Ethernet"

Confirm that the feature is deactivated:

Get-NetAdapterPacketDirect -Name "Ethernet"

The adapter returns to standard interrupt-driven networking immediately without requiring a full system reboot.

Inspecting Driver-Level Advanced Properties

In enterprise network adapters, hardware vendors provide granular driver keys controlling queue depth, interrupt moderations, and DMA buffer sizes. To inspect vendor-specific PacketDirect settings via PowerShell, use Get-NetAdapterAdvancedProperty:

Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object { $_.DisplayName -match "PacketDirect|PDPI|Direct Queues" }

You can adjust specific driver keys using Set-NetAdapterAdvancedProperty to tune queue thresholds for specific algorithmic trading or media streaming workloads.

Verifying Throughput and Packet Health

After configuring PacketDirect, benchmark and monitor network adapter performance:

  1. Generate high packet-per-second traffic using a synthetic workload generator (such as pktgen or iperf3 with small packet sizes):
    iperf3.exe -c 10.0.0.10 -u -b 1G -l 64 -t 30
  2. Observe CPU utilisation using Get-Counter:
    Get-Counter "\Network Interface(*)\Packets/sec" -Continuous
  3. Verify that the adapter sustains millions of packets per second without accumulating interface drops or buffer overflow errors.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.