OpenWrt/LEDE Project

  • Status Unconfirmed
  • Percent Complete
    0%
  • Task Type Bug Report
  • Category Kernel
  • Assigned To No-one
  • Operating System All
  • Severity Low
  • Priority Very Low
  • Reported Version openwrt-19.07
  • Due in Version Undecided
  • Due Date Undecided
  • Private
Attached to Project: OpenWrt/LEDE Project
Opened by Yuxiang Zhu - 04.04.2021

FS#3722 - Software flow offloading breaks ECMP routing

Supply the following if possible:
- Device problem occurs on

 x86_64 Router

- Software versions of OpenWrt/LEDE release, packages, etc.

 OpenWrt 19.07.7 r11306-c4a6851c72, Linux 4.14.221 #0 SMP Mon Feb 15 15:22:37 2021 x86_64 GNU/Linux

- Steps to reproduce

Hey guys,

I met this issue when I was using ECMP (Equal Cost Multi-Path) routing with software flow offload enabled.

Suppose we have topology:

LAN 1 (192.168.1.0/24) ←—> (eth1: 192.168.1.1/24) OpenWRT (eth2: 192.168.2.1/24) ←—> (192.168.2.51-53/24) Other routers ←—> (192.168.150.0/24) LAN 2

1. Add ECMP routes:

$ ip route add 192.168.150.0/24 nexthop via 192.168.2.51 dev eth2 \
                                nexthop via 192.168.2.52 dev eth2 \
                                nexthop via 192.168.2.53 dev eth2

$ ip route
192.168.150.0/24 
	nexthop via 192.168.2.51 dev eth2 weight 1 
	nexthop via 192.168.2.52 dev eth2 weight 1 
	nexthop via 192.168.2.53 dev eth2 weight 1 

2. Setting multipatch hash policy:

sysctl net.ipv4.fib_multipath_hash_policy=1

3. Initiate TCP connections from LAN 1 (192.168.1.0/24) to LAN 2 (192.168.150.0/24) should succeed. Connections are balanced over 3 next hop routers (192.168.2.51-53).
4. Enable software flow offloading on LuCI.
5. Open a TCP connection from LAN 1 (192.168.1.0/24) to LAN 2 (192.168.150.0/24) will likely be broken because each packet for a single TCP connection could use a different next hop router to get to the destination.

I’m not sure if this is an OpenWRT issue or upstream kernel issue. Any help would be greatly appreciated.

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing