W1700K HW2.1: routed IPv6-PD (/60+) flows blackhole with nft_flow_offload/PPE #18
-
|
I think I found a potential reproducible IPv6 hardware flow offload issue Device / build:
With hardware flow offload enabled: uci set firewall.@defaults[0].flow_offloading='1'
uci set firewall.@defaults[0].flow_offloading_hw='1'
uci commit firewall
/etc/init.d/firewall restartIPv4 works fine, but forwarded IPv6 TCP traffic almost dies. Typical results from the wired client: Example IPv6 results with HW offload enabled: With hardware flow offload disabled: uci set firewall.@defaults[0].flow_offloading='1'
uci set firewall.@defaults[0].flow_offloading_hw='0'
uci commit firewall
/etc/init.d/firewall restartIPv6 becomes stable again: This is not Wi-Fi related, since the test client is wired. The generated fw4 forward chain normally contains: If I restrict the flowtable rule to IPv4 only: nft 'replace rule inet fw4 forward handle 39 meta nfproto ipv4 meta l4proto { tcp, udp } flow add @ft'then IPv4 still gets hardware offload, and IPv6 remains stable on the software path. After that workaround: So the local workaround I am using is to make fw4 generate an IPv4-only flowtable rule. In to: After restarting firewall, the generated nft rule is: This keeps IPv4 fast with PPE/hardware offload while avoiding the broken IPv6 hardware offload path. This looks like an IPv6 PPE/NPU offload issue for routed forwarded flows. I can provide a redacted config/debug bundle if useful. |
Beta Was this translation helpful? Give feedback.
Replies: 6 comments 13 replies
-
|
Hey, |
Beta Was this translation helpful? Give feedback.
-
|
@tompointexe thanks for the update. That matches my setup. I retested on the latest UBI2 build:
The issue is still present here with the default fw4 flowtable rule: IPv4 remains fast with hardware offload, but forwarded IPv6 TCP/UDP becomes unusable or extremely unstable once it enters the hardware flow offload/PPE path. The IPv4-only flowtable workaround is still stable: With that workaround, IPv4 still uses hardware offload and IPv6 stays stable on the software path. So yes, this looks consistent with your self-update: the bug may be tied to routed delegated-prefix IPv6, at least with a /60 PD. |
Beta Was this translation helpful? Give feedback.
-
|
Going to need some debugging to see what's going on.
|
Beta Was this translation helpful? Give feedback.
-
|
One last confirmation. I've added a "Raw FOE entry bytes" section to the diag that prints exactly that. Could you grab the updated ppe-v6-diag.sh, put your WAN back to the broken config, start a Scaleway IPv6 download so it's stalling, and while it's stalling run:
|
Beta Was this translation helpful? Give feedback.
-
|
That capture nailed it thanks, arnaud-devops! Your stalling flow is being programmed into the offload engine correctly, VLAN 100 tag and all. But the hardware then forwards zero packets on it. So this isn't a config or driver mistake: the AN7581 chip simply can't hardware-offload IPv6 traffic that needs a VLAN tag added on the WAN side. That's why it only affects people with a tagged WAN like yours, untagged WANs and LAN-side VLANs use a different path and work fine. So it's not a HW1-vs-HW2 issue. Since the chip can't handle this case (above my pay grade to change), I'll patch the kernel to skip hardware offload for that specific scenario and fall back to software instead, which should resolve the stalling. IPv4 and normal IPv6 traffic keep full hardware offload. I'll build a patched image for testing and post the link here once it's ready. |
Beta Was this translation helpful? Give feedback.
-
|
Maybe OpenWRT-fanboy can spin up a test image for the guys on HW.2.1. to test out? |
Beta Was this translation helpful? Give feedback.
That capture nailed it thanks, arnaud-devops!
Your stalling flow is being programmed into the offload engine correctly, VLAN 100 tag and all. But the hardware then forwards zero packets on it. So this isn't a config or driver mistake: the AN7581 chip simply can't hardware-offload IPv6 traffic that needs a VLAN tag added on the WAN side. That's why it only affects people with a tagged WAN like yours, untagged WANs and LAN-side VLANs use a different path and work fine. So it's not a HW1-vs-HW2 issue.
Since the chip can't handle this case (above my pay grade to change), I'll patch the kernel to skip hardware offload for that specific scenario and fall back to software instead, which should r…