Flowtable corrupts large TCP packets on BananaPi BPI-R4-PRO-8X

Dears,

Hardware: BananaPi BPI-R4-PRO-8X SoC: MediaTek MT7988A (Filogic 880), 4x ARM Cortex-A73 OpenWrt: 24.10-SNAPSHOT, kernel 6.6.93, target mediatek/filogic Symptoms

  • SSH connections to remote hosts fail consistently via router, work fine with direct ISP connection:
> ssh [email protected]
Connection reset by 1.1.1.1 port 22
  • Websites load slowly, stall, or partially load
  • Short HTTP requests work fine; large/long-lived TCP connections break

Root cause

The board ships with /etc/flowtable.conf, a board-specific nftables config that enables hardware-accelerated packet forwarding via the MT7988A flowtable engine:

table inet filter {
flowtable f {
hook ingress priority filter + 1;
devices = { eth0,eth1,eth2,lan0,lan3,mxl_lan0,mxl_lan1,mxl_lan2,mxl_lan3,mxl_lan5 };
flags offload;
counter;
}
chain forward {
type filter hook forward priority filter; policy accept;
meta l4proto { tcp, udp } flow add @f;
}
}

The flowtable silently truncates large TCP segments in transit. Verified via tcpdump:

# Client sent 1672-byte SSH key exchange packet:
client → serverseq 23:1695 length 1672[P.]

# Server acknowledged only 1471 bytes — 224 bytes missing:
server → clientack 1471length 1120[P.]

# Client sent next chunk (unaware of gap):
client → serverseq 1695:2903 length 1208[P.]

# Server received out-of-sequence data → RST:
server → clientRST

224 bytes (bytes 1471–1694) never reached the server despite MTU being 1500 on all hops (tracepath confirmed pmtu 
1500 end-to-end).

Both hardware and software offload modes are affected. Removing only flags offload (software flowtable) does not fix the truncation — ruling out the hardware DMA engine specifically and pointing to a bug in the flowtable fastpath itself.

Fix

Remove /etc/flowtable.conf and optionally flush the runtime table without rebooting:

# Permanent fix (survives reboot):
mv /etc/flowtable.conf /etc/flowtable.conf.bak

# Apply immediately without reboot:
nft delete table inet filter 2>/dev/null

Impact of the fix

Slightly reduced forwarding throughput — every packet goes through the full netfilter stack instead of the fastpath. On MT7988A (4x Cortex-A73) this is negligible for 1Gbps routing. Only noticeable if simultaneously saturating multiple 2.5G/10G ports.

2 Likes

This is because perhaps your “fix” has disabled HW offload.

I haven’t looked closely at nor used 24.x. I didn’t recall seeing “/etc/flowtable.conf” in master-snapshot before 25.x fork and as well as in 25.x. Perhaps a 24.x thing? I would expect firewall/offload is configured in “/etc/config/firewall”

For R4 (non Pro), HW offload works well in 25.x release.

1672 bytes look too much for mtu,wonder why there is an ack.

24.x from bpi may use the older tagging protocol and different vlan stack. So can you test with lower mtu (e.g. 1490) on the dsa user port?

Exclude port 22 from this rule?

What is your MTU size? I do not think ppe will support much more then 1500.

HIya, I was facing the same issue and I was wondering why I couldn’t establish a connection from behind the router on my laptop/desktop/mobile using SSH:

$ ssh -T [email protected]
Connection reset by 20.26.156.215 port 22

Your fix seems to have fixed it for me:

# Permanent fix (survives reboot):
mv /etc/flowtable.conf /etc/flowtable.conf.bak

# Apply immediately without reboot:
nft delete table inet filter 2>/dev/null

I wonder how this was missed during the development stage or even testing?

I am using the official Banana Pi provided image as listed on https://docs.banana-pi.org/en/BPI-R4_Pro/BananaPi_BPI-R4_Pro#_r4pro_4e_openwrt.

How would you do that? Do you mind sharing the commands to run? Thanks a lot.

You can check MTU first with “ip a”. It should be not more than 1500 byte.

Setting can be done when interface is down with sonething like this

ip link set dev interface mtu 1500 up

Hiya, Frank! I am on the Banana Pi BPI-R4 Pro (4E) if that makes a difference.

So nothing is above what you recommended except the loopback interface:

$ ip -c a s | rg -i mtu               
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-wan state UP group default qlen 1000
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
5: lan0@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
6: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
7: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
8: mxl_lan0@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
9: mxl_lan1@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
10: mxl_lan2@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
11: mxl_lan3@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
12: mxl_lan5@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default qlen 1000
13: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
14: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
15: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000
16: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
17: br-wan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
34: phy0.1-ap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
35: phy0.2-ap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

The seems to work if and only if, HW offloading is not set to HW in the Firewall section of the UI. If it is even with the below file:

table inet filter {
	flowtable f {
		hook ingress priority filter + 1;
		devices = { eth0,eth1,eth2,lan0,lan2,lan3,mxl_lan0,mxl_lan1,mxl_lan2,mxl_lan3,mxl_lan5 };
		flags offload;
		counter;
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
		tcp dport 22 return;
		tcp sport 22 return;
		meta l4proto { tcp, udp } flow add @f;
	}
}

It will fail.

I just wanted to make sure it is no mtu related issue like the trace above looks like.

Should not make a difference (8x vs.4e) except it is r4pro where lan-ports are from mxl switch and i guess a bug here with ppe and like described above just delete the mapping to the flowtable (not complete inet chain).

Just this line has to be dropped:

meta l4proto { tcp, udp } flow add @f;

Then it should work (of course for complete cleanup the flowtable should be removed too to be not an unsed chain).

I tried (suggestion of Claude) the below as well:

for i in lan0 lan2 lan3 mxl_lan0 mxl_lan1 mxl_lan2 mxl_lan3 mxl_lan5; do
  ip link set dev $i down
  ip link set dev $i mtu 1490
  ip link set dev $i up
done

It made no difference.

Anyway: The biggest problem I am having is compiling OpenWrt. I simply do not know which commands to run to produce an image that can be flashed to a SD card. I would also like to enable kernel-level debugging so if anything turns up I can step through the code but all the available versions I can find do not compile with debugging information available. I really wish someone could help me.

For basic steps:

https://wiki.fw-web.de/doku.php?id=en:bpi-r4:start#openwrt

Just use the right board profile

For kernel options use “make kernel_menuconfig”

You could try removing the mxl_lanX ports from this line, if the mxl switch is the problem.

Also

And

So eth0 and eth2 should not be in the devices line I believe.

Newer kernel versions and also openwrt (r4pro PR) do not use the mxl_prefix anymore. And using flow offload only on the internal port imho does not make much sense…but this can be used to track issue down with ssh…the lan5 port should not break.

What I meant was that this line:

devices = { eth0,eth1,eth2,lan0,lan3,mxl_lan0,mxl_lan1,mxl_lan2,mxl_lan3,mxl_lan5 };

Should be:

devices = { eth1,lan0,lan3,mxl_lan0,mxl_lan1,mxl_lan2,mxl_lan3,mxl_lan5 };

And when skipping the mxl ports, it should be:

devices = { eth1,lan0,lan3 };

The fact that eth0 and eth2 are somewhere within this path, it is all handled in underlying switchdev (dsa) drivers. They should not be placed in this devices line.

I created an issue on issue on their official repository: https://github.com/BPI-SINOVOIP/BPI-R4PRO-4E-OPENWRT-V24.10.0-Master-Devel/issues/1. Hopefully (fingers crossed) it will get looked at and fixed.

CCing @sinovoip.

@itsfin3, I am starting to think that your fix of removing the flowtable at /etc/flowtable.conf isn’t the right thing to be doing:

  1. Login to the router and run this command: conntrack -E --src 192.168.1.158 --dst 20.26.156.215 replacing 192.168.1.158 with whatever your local IP address is and 20.26.156.215 with whatever ssh -T [email protected] returns. See [1].
  2. Try establishing a SSH connection from something behind the router: ssh -T [email protected]. See [2].
  3. After around 8 attempts the SSH connections is established: See [2].

There is something else at hand here, and changing the MTU does not fix the issue.

Any know how to debug this? @frank-w, @itsfin3, @kvic and @ericwoud, any ideas?

Confirmation

Would someone please try the conntrack thing I just did and see if that also fixes the issue for them?

Logs

[1]: conntrack logs

root@OpenWrt:/etc# conntrack -E --src 192.168.1.158 --dst 20.26.156.215
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 packets=4 bytes=2984 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058 packets=4 bytes=1456 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058
[DESTROY] tcp      6 299 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=49058 dport=22 packets=1 bytes=192 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49058 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 packets=4 bytes=3016 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070 packets=3 bytes=1404 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070
[DESTROY] tcp      6 299 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=49070 dport=22 packets=1 bytes=96 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=49070 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 packets=4 bytes=2984 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360 packets=4 bytes=1456 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360
[DESTROY] tcp      6 300 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=46360 dport=22 packets=1 bytes=192 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46360 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 packets=4 bytes=4192 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370 packets=2 bytes=116 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370
[DESTROY] tcp      6 299 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=46370 dport=22 packets=1 bytes=192 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46370 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 packets=4 bytes=2984 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382 packets=4 bytes=1456 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382
[DESTROY] tcp      6 300 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=46382 dport=22 packets=1 bytes=192 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46382 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 packets=4 bytes=2984 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384 packets=4 bytes=1456 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384
[DESTROY] tcp      6 300 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=46384 dport=22 packets=1 bytes=192 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46384 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 packets=4 bytes=2984 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396 packets=4 bytes=1456 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396
[DESTROY] tcp      6 300 CLOSE src=192.168.1.158 dst=20.26.156.215 sport=46396 dport=22 packets=1 bytes=192 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46396 packets=1 bytes=40
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
    [NEW] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED] mark=0
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 packets=4 bytes=2984 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 packets=4 bytes=1456 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
[DESTROY] tcp      6 7440 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 packets=4 bytes=268 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 packets=4 bytes=848 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 [ASSURED]
[DESTROY] tcp      6 120 FIN_WAIT src=192.168.1.158 dst=20.26.156.215 sport=46406 dport=22 packets=4 bytes=304 src=20.26.156.215 dst=178.255.93.241 sport=22 dport=46406 packets=2 bytes=104 [ASSURED]
[DESTROY] tcp      6 LAST_ACK src=192.168.1.158 dst=20.26.156.215 sport=36342 dport=443 packets=12 bytes=624 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=36342 packets=0 bytes=0
    [NEW] tcp      6 120 SYN_SENT src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 60 SYN_RECV src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
    [NEW] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 300 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702
 [UPDATE] tcp      6 7440 src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702 [ASSURED]
    [NEW] tcp      6 300 ESTABLISHED src=192.168.1.158 dst=20.26.156.215 sport=59702 dport=443 [UNREPLIED] src=20.26.156.215 dst=178.255.93.241 sport=443 dport=59702

[2]: git authentication attempts

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Connection reset by 20.26.156.215 port 22

mbana in asus-zenbook-14 in @192.168.1.158 ~ 
❯ ssh -T [email protected]
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi mbana! You've successfully authenticated, but GitHub does not provide shell access.

Hiya, are you using the SFP+ port as the WAN port?

I am using the Banana Pi BPI-R4 Pro 4E and one of the SFP+ ports I use as the WAN port since I have a 5 Gbps symmetrical internet (soon to be 10 Gbps), and I use a 10 Gbps DAC SFP+ on the other port.

I tried on the official image, BPI-R4PRO-4E-OPENWRT-V24.10.0-Master-Devel, and a custom built one but the result is the same.

@sinovoip, any luck in reproducing the issue?

You are using the bpi image right? Than bpi is the only one who can help as most users here working on upstream systems.

Do you have the /etc/flowtable.conf file in your image? It that or something related to conntrack because my previous comment shows just running conntrack causes it to pass sometimes.

To answer your question, yes, I am using the BPI image.