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

IPv6 routing doesn't work with LRO and GRO switched off (or on) #23

Open
andrejpodzimek opened this issue Nov 29, 2020 · 4 comments
Open

Comments

@andrejpodzimek
Copy link

I'm using an AQC107 device on an ASRock x570 Creator with kernel 5.9.11 and ArchLinux. Based on this howto I thought that disabling LRO and GRO would make routing possible. Unfortunately, IPv6 routing doesn't work at all; for traffic both from and to the atlantic-driven interface. (Well, actually, when I left ping running for an entire day, ~10 packets made it through somehow. That's not many, out of ~86400.)

IPv4 routing works, however, even with LRO and GRO on.

IPv6 across one hop works fine as well, tested with both 10 Gb/s and 1 Gb/s links.

The same machine has other ethernet cards (USB and PCIe) and runs a hostapd WiFi AP. IPv6 routing works flawlessly for all those other interfaces, with pretty much the same configuration. The only difference from the other interfaces (in the .link file for systemd-networkd) would be:

GenericReceiveOffload=false
LargeReceiveOffload=false

But as already mentioned, this^^^ makes no difference in terms of IPv6 routing, which just doesn't work. (Of course I tried to set it directly with ethtool to double-check.)

Module versions I've tried:

  • the default one in the mainline kernel
  • 2.4.7 from this package
  • 2.4.10 (by just tweaking the package)

I would have never thought that this could be a driver-related issue, but considering the fact that all the other interfaces route IPv6 just fine with the same configuration, an issue with this driver appears to be quite plausible.

From a tcpdump standpoint, packets heading out do appear on the incoming atlantic LAN interface, but then they don't appear on the WAN interface at all. Yet ip route get shows reasonable values and routing works fine from/to all other LAN interfaces. (Of course I've tried to disable nftables and all possible culprits a gazillion times.)

@andrejpodzimek
Copy link
Author

I've just tried to use the atlantic card as a WAN interface instead of LAN, to make sure this is not just an issue with the network card on the other side. Well, nope, it was unable to forward anything over IPv6 to/from the provider (while IPv4 did work). A simple USB ethernet adapter in exactly the same spot of the "infrastructure" works fine, including IPv6 forwarding.

I'm still puzzled by the fact that a NIC driver is somehow IP(v6)-aware etc. As a client device (i.e., without any forwarding), this card works great at 10 Gb/s (with an Intel counterpart in my case). Once forwarding is on, IPv6 goes away.

@cail
Copy link
Member

cail commented Dec 8, 2020

Andrej, that could be a packet construction problem, recently discovered in the driver.
It was fixed in upstream:
http://patchwork.ozlabs.org/project/netdev/patch/MWHPR1001MB23184F3EAFA413E0D1910EC9E8FC0@MWHPR1001MB2318.namprd10.prod.outlook.com/

You may try applying similar patch to the out of box driver from this github repo, or try patching in-kernel driver.

@andrejpodzimek
Copy link
Author

It was fixed in upstream:
http://patchwork.ozlabs.org/project/netdev/patch/MWHPR1001MB23184F3EAFA413E0D1910EC9E8FC0@MWHPR1001MB2318.namprd10.prod.outlook.com/

You may try applying similar patch to the out of box driver from this github repo, or try patching in-kernel driver.

I can confirm that IPv6 routing works for me with this patch. 👍 I haven't made any changes to the GRO and LRO settings, so it works just fine with whatever the defaults are.

(I could only test it with a 1 Gb/s counterpart though, because I've decommissioned that machine's 10 Gb/s friend in the meantime.)

I've commented on the AUR package on how to build the patched module.

@cail
Copy link
Member

cail commented Dec 14, 2020

Thank you for the confirmation!

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