Optimizes memory usage by removing buffering from TCP connections.
Implements TCP backpressure by blocking tcpConn.Write until all data is written to LWIP.
Performance:
Benchmarked the original and optimized code through a local iperf3 server/client.
Routed a sentinel IP address through tun2socks running a direct connection handler that redirects the sentinel IP to localhost, where the iperf3 server is listening. The iperf3 client connects to the server through the sentinel IP so the traffic goes through tun2socks.
Average speeds:
Original code: ~631 Mbps (download); ~1.67 Gbps (upload)
tcpConn.Write
until all data is written to LWIP.iperf3
server/client.iperf3
server is listening. Theiperf3
client connects to the server through the sentinel IP so the traffic goes through tun2socks.tcpConn.Write
allocates ~98% of memory (pprof allocs report)tcpConn.Write
does not allocate extra memory (pprof allocs report)