I have been trying to solve this for a number of months with no success. Nor can I find any posts where someone else has already found a solution. If someone knows of an existing solution please point me to it.
My Raspberry Pi is setup such that the WIFI is a hot spot with port forwarding/NAT to the wired Ethernet port. All is working great, except for this one weird problem. The problem is that the wired connection will stop working for a time, if a large amount of data is sent out at once. For example. if a large web page (I am using lighty) is to be displayed, or a large file is to be transferred via ftp. With the web page case, it will typically succeed 2/3 times. With a file of a few megabytes, it fails every time.
Here are some specifics:
1) The wired connection will usually recover on it's own after several minutes.
2) This is weird, the wired connection will recover, right away, if I have the PI ping another machine on the LAN, and not appear to fail at all if ping is continuously running in another terminal., (it does fail but recovers right away, I can see brief pauses in ftp traffic)
3) The ARP table, and ifconfig both look the same when all is well and when the Ethernet is broken.
4) The WIFI port continues to work, communicating to lighty (port 80) even when Ethernet is broken. The WIFI port does not have fail when sending out a large web page.
5) IPtraf, observing eth0, shows that when broken, UDP packets are still being received, while TCP packets are not
6) I have seen this problem on both the PI-2 and PI-3, I am running Jessie
7) I can transfer large files into the PI (uploading), but not out of the PI (downloading), using FTP, over Ethernet.
8) When the PI is in a failed state, SSH is broken, and it appears that all other TCP traffic fails, even connections already established.
9) Wireshark and various /var/log files have not provided a clue, the PI just stops sending packets, with no clue I can find to explain it.
10) The problem exists whether Ethernet is set up as using dynamic addressing or static addressing.
11) ifdown eth0 then ifup eth0 will usually fix it, but they sometimes have to be done twice.
12) Not sure this is relevant, but I am using a hardware tree file to set the UART port back to the GPIO pins.
Perhaps I need more buffers, but free does not indicate this. Perhaps I need to adjust the pacing of transmission, but I am not sure how to do this. Also top does not indicate a CPU overload.
Please help if you can,
Robert





