Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Npcap to support NDIS 6.89 #737

Open
anrossi opened this issue Jun 7, 2024 · 3 comments
Open

Update Npcap to support NDIS 6.89 #737

anrossi opened this issue Jun 7, 2024 · 3 comments

Comments

@anrossi
Copy link

anrossi commented Jun 7, 2024

This is a feature request is to update NpCap so the MajorNdisVersion and MinorNdisVersion in NDIS_FILTER_DRIVER_CHARACTERISTICS passed to NdisFRegisterFilterDriver are updated to NDIS 6.89.

NDIS 6.89 adds support for a new hardware offload, UDP RSC Offload (URO).
To ensure that existing and legacy NDIS Lightweight Filters (LWFs) are not broken by receiving large coalesced UDP packets, NDIS will disable URO on the NIC when an LWF or NDIS protocol driver binds to the stack, that targets a lower NDIS version.

Currently, this means that Windows 11 systems with a NIC that supports URO, that install npcap, will see URO disabled until npcap is uninstalled.

If NpCap already handles TCP Receive Segment Coalescing (RSC), then supporting URO should be very little work.

@fyodor
Copy link
Member

fyodor commented Jun 10, 2024

Thanks for the suggestion, @anrossi. Deciding which NDIS versions to support is tricky since we need to create a different driver for each platform for each release for each NDIS version we support. Npcap 1.79 includes the following drivers:

x64 platform: We have the following three drivers:

  • NDIS 6.50 (mostly for Windows 10 and 11 and Windows Server 2016 and 2022)
  • NDIS 6.30 (mostly for Windows 8, 8.1, and Windows Server 2012)
  • NDIS 6.20 for Windows 7 and Windows Server 2008R2

x86 (32-bit) platform: We have three drivers supporting the same NDIS versions as on x64. Microsoft doesn't support this platform on Windows 11 or Windows Server 2012 and later, so we don't expect to expand this set of drivers.

ARM: We currently just have one driver (NDIS 6.50) for this since it's a much newer platfrom.

Microsoft has some useful details on their Overview of NDIS versions page.

With the NDIS improvements made since 6.50, it probably is about time that we split off a newer driver for x64 and ARM to support the latest features. Is NDIS 6.89 supported on mainstream Windows releases already or are you using a preview release?

We probably can't get this into the upcoming Npcap 1.80 release, but hopefully the next one!

@fyodor fyodor changed the title Update NpCap to support NDIS 6.89 Update Npcap to support NDIS 6.89 Jun 10, 2024
@anrossi
Copy link
Author

anrossi commented Jun 11, 2024

Hi @fyodor,
Thanks for the explanation of how Npcap handles NDIS versions. Given the broad range of OSes supported by Npcap, I was wondering how it did it all.
NDIS 6.89 is stated to ship with Windows 11 24H2 (at the link you shared), when that goes out of preview. I agree that this support only needs to be added to the x64 and ARM drivers, since those are the platforms Microsoft continues to support for the foreseeable future.
I appreciate you looking at this and getting it scheduled for the release after 1.80. What kind of timeline does that leave until then?

@fyodor
Copy link
Member

fyodor commented Sep 19, 2024

An issue somewhat related to this is the desire for hardware timestamp support discussed in #581 . That one requires NDIS 6.82 or newer, which is also newer than we currently use.

dmiller-nmap added a commit that referenced this issue Oct 18, 2024
See #737 (NDIS 6.89 support), #581 (support for hardware timestamps)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants