AdguardTeam / AdguardTeam/AdguardForWindows

AdGuard WFP callouts disable Windows RSC (IPv4FailureReason: WFPCompatibility) on a 10GbE adapter

Aperta
#6,120 13 commenti 0 reazioni 1 assegnatario Assegnata a @northis Vedi su GitHub
Bug Priority: P4
Lingua principale
Nessun dato sulla lingua
Stelle
887
Fork
84
Merge medio
27m
PR unite (30g)
2

Descrizione

### Please answer the following questions for yourself before submitting an issue

- [x] Filters were updated before reproducing an issue
- [x] I checked the [knowledge base](https://adguard.com/kb/) and found no answer
- [x] I checked to make sure that this issue has not already been filed

### AdGuard version

7.22.9 (5282)

### Browser version

Firefox 153.0.3

### OS version

Windows 11 IoT Enterprise LTSC 2024, Version 2009 (OS Build 26100)

### Traffic filtering

- [x] yes, I do

### Ad Blocking

_No response_

### Privacy

_No response_

### Social

_No response_

### Annoyances

_No response_

### Security

_No response_

### Other

_No response_

### Language-specific

_No response_

### Which DNS server do you use?

DNS protection disabled

### DNS protocol

None

### Custom DNS

_No response_

### What Stealth Mode options do you have enabled?

_No response_

### Support ticket ID

_No response_

### Issue Details

Steps to reproduce:

1. Use AdGuard for Windows 7.22.9 (5282) on a Windows system with a Mellanox ConnectX-3 10GbE adapter.

2. With the AdGuard kernel WFP driver `adgnetworkwfpdrv.sys` loaded, enable IPv4 RSC on the 10GbE adapter:

`Enable-NetAdapterRsc -Name "Ethernet 3" -IPv4`

3. Check the RSC state:

`Get-NetAdapterRsc -Name "Ethernet 3" | Format-List IPv4Enabled,IPv4OperationalState,IPv4FailureReason`

With the AdGuard WFP driver loaded, Windows reports:

IPv4Enabled : True
IPv4OperationalState : False
IPv4FailureReason : WFPCompatibility

4. Run an iperf3 test from a Linux 10GbE host to the Windows machine.

Linux -> Windows, 1 TCP stream:
~1.6-1.7 Gbit/s

Linux -> Windows, 8 TCP streams:
~1.4-1.5 Gbit/s with thousands of TCP retransmissions.

The opposite direction (Windows -> Linux) reaches about 8.5 Gbit/s with a single TCP stream, so the physical 10GbE link, cable and NICs are capable of much higher throughput.

5. Stop AdGuard, disable the `adgnetworkwfpdrv` kernel driver and reboot Windows.

After reboot:

IPv4Enabled : True
IPv4OperationalState : True
IPv4FailureReason : NoFailure

Repeating exactly the same Linux -> Windows iperf3 tests now gives:

1 TCP stream:
5.95 Gbit/s average, 0 retransmissions
(up to about 7 Gbit/s during the test)

8 TCP streams:
9.25 Gbit/s sender
9.24 Gbit/s receiver
0 retransmissions

The WFP state dump also shows an "Adguard Stream Callout" registered directly on `FWPM_LAYER_INBOUND_IPPACKET_V4`.

This appears to show that `adgnetworkwfpdrv.sys` causes Windows to disable operational Receive Segment Coalescing because of WFP compatibility, resulting in a severe 10GbE receive-performance regression.

Hardware / driver:
- Mellanox ConnectX-3 Ethernet Adapter
- 10 Gbps full duplex
- Windows NIC driver: 5.50.14695.0
- MTU: 1500
- RSS enabled, 8 receive queues

### Expected Behavior

AdGuard's WFP driver should not prevent RSC from operating or cause such a large reduction in receive throughput on a 10GbE adapter.

With AdGuard enabled, the Windows system should retain approximately the same 10GbE receive performance as without the AdGuard WFP driver (about 9 Gbit/s in this setup), without excessive TCP retransmissions.

### Actual Behavior

With the AdGuard WFP kernel driver `adgnetworkwfpdrv.sys` loaded, Windows reports:

IPv4Enabled : True
IPv4OperationalState : False
IPv4FailureReason : WFPCompatibility

At the same time, receive throughput on the 10GbE Mellanox ConnectX-3 adapter is severely reduced.

Measured with iperf3:

- Linux -> Windows, 1 TCP stream: about 1.6-1.7 Gbit/s
- Linux -> Windows, 8 TCP streams: about 1.4-1.5 Gbit/s with thousands of TCP retransmissions
- Windows -> Linux: about 8.5 Gbit/s with a single TCP stream

After disabling the AdGuard kernel driver and rebooting Windows, RSC becomes operational:

IPv4Enabled : True
IPv4OperationalState : True
IPv4FailureReason : NoFailure

The same Linux -> Windows test then reaches 9.24 Gbit/s with 8 streams and 0 retransmissions.

### Screenshots

The following images are reconstructed terminal excerpts from the command outputs collected during troubleshooting. The values shown are taken from the actual test results.

1. RSC blocked while the AdGuard WFP driver is active
Image

With `adgnetworkwfpdrv.sys` active, IPv4 RSC is enabled in the NIC settings but is not operational. Windows reports `WFPCompatibility` as the failure reason.

2. RSC operational after disabling adgnetworkwfpdrv and rebooting
Image

After disabling the AdGuard kernel driver `adgnetworkwfpdrv` and rebooting Windows, the driver is stopped and RSC becomes fully operational with `NoFailure`.

3. 10GbE throughput after disabling the AdGuard WFP driver
Image

After RSC became operational, the same Linux-to-Windows iperf3 test with 8 TCP streams reached 9.24 Gbit/s receiver throughput with 0 retransmissions.

### Additional Information

The AdGuard network filtering driver is installed as:

Service name: `adgnetworkwfpdrv`
Driver path: `system32\drivers\adgnetworkwfpdrv.sys`
Driver type: KERNEL_DRIVER
Startup type while AdGuard is installed normally: SYSTEM_START

With the driver loaded, Windows reports:

IPv4Enabled : True
IPv4OperationalState : False
IPv4FailureReason : WFPCompatibility

A Windows WFP state dump confirms that an `Adguard Stream Callout` is registered on:

`FWPM_LAYER_INBOUND_IPPACKET_V4`

For troubleshooting, I disabled only the AdGuard service and `adgnetworkwfpdrv`, then rebooted Windows.

After reboot:
- `adgnetworkwfpdrv` was STOPPED
- AdGuard Service was STOPPED
- RSC immediately changed to:
- IPv4Enabled: True
- IPv4OperationalState: True
- IPv4FailureReason: NoFailure

No changes were made to the Mellanox NIC, cable, switch, MTU, RSS settings or Linux host between the slow and fast tests.

This makes the issue highly reproducible and strongly suggests that the AdGuard WFP driver prevents Windows RSC from becoming operational on this system.

System details:
- Mellanox ConnectX-3 Ethernet Adapter
- Link speed: 10 Gbps full duplex
- Mellanox Windows driver: 5.50.14695.0
- MTU: 1500
- RSS: enabled
- 8 receive queues
- AdGuard for Windows: 7.22.9 (5282)
- OS: Windows 10 IoT Enterprise LTSC 2024, Version 2009, OS Build 26100

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.