To debug things like this, I know of only one truly effective way, and it's a little involved. 1) While doing transfers, capture tcpdumps of them (all TCP packets) at each end. Having both lets one separate an endpoint not sending a packet from the packet not arriving at the other. 2) Install xplot (in pkgsrc), and use tcpdump2xplot. Read the explanation in the xplot sources. Read all the TCP congestion-control RFCs. Analyze the plots to see what's wrong. But seriously, step 2 isn't that hard, if your problem is not that subtle. I am happy to look at the plots, if you want to provide either the raw tcpdump files or the tcpdump2xplot output.
Attachment:
pgpkWBfg2YXuU.pgp
Description: PGP signature