That’s a brilliant tip. I have the usual tools on my iPad: ping / traceroute and many more, and I could IPv4-ping my wife’s iPad successfully going out via 4G and back in through the main DSL WAN i/f because the firewall knows to let my 4G IP in, that being one of a number of special inbound holes.
TCP options = 020405b4010303060101080a359068bd0000000004020000
MTU = 1500
MTU is fully optimized for broadband.
MSS = 1460
Maximum useful data in each packet = 1448, which is less than MSS because of Timestamps, or other TCP/IP options used.
Default TCP Receive Window (RWIN) = 131712
RWIN Scaling (RFC1323) = 6 bits (scale factor: 2^6=64)
Unscaled TCP Receive Window = 2058
RWIN is not multiple of MSS. If your OS supports setting RWIN directly, consider changing it to a multiple of MSS for optimum performance.
Other RWIN values that might work well with your current MTU/MSS:
64240 (up to 2 Mbit lines, depending on latency. MSS * 44)
128480 (1-5 Mbit lines, depending on latency. MSS * 44 * 2)
256960 (2-20 Mbit lines, depending on latency. MSS * 44 * 2^2)
513920 (20-100 Mbit lines, depending on latency. MSS * 44 * 2^3)
1027840 (80+ Mbit lines up to Gigabit connections, depending on latency. MSS * 44 * 2^4)
bandwidth * delay product (Note this is not a speed test):
Your current TCP Window limits you to: 527 Mbps (~53 Megabytes/s) @ 200ms latency
Your current TCP Window limits you to: 211 Mbps (~21 Megabytes/s) @ 500ms latency
Note: You can expect up to ~90% of this throughput considering line overhead.
MTU Discovery (RFC1191) = ON
Time to live left = 53 hops
TTL value is ok.
Timestamps (RFC1323) = ON
Note: Timestamps add 12 bytes to the TCP header of each packet, reducing the space available for useful data.
Selective Acknowledgements (RFC2018) = ON
IP type of service field (RFC1349) = 00000000 (0)
How can the MSS for IPv4 be 1460? Don’t we also have to take off the 12 bytes for TCP timestamps as it mentions? So going down to 1448?
And who’s to say that it’s IPv4? Could be 1428 for IPv6 + timestamps, no? So I don’t understand the point about optimising the RWIN in that case - would there be two different RWIN values for IPv4 vs IPv6 or would you just end up optimising TCP for one IP version and completely messing up the other if you get it wrong?