I have a remote system that is only accessible by satellite link. Latency is on the order of 2000ms and the upload bandwidth is in bps. I'm having trouble understanding how to administrate the system. My default method for troubleshooting faults is to SSH in and poke at the logs, but that doesn't work here. How should I be managing this system?
-
1https://stackoverflow.com/questions/18629242/how-to-use-ssh-with-an-unstable-internet-connection – ceejayoz May 28 '19 at 14:32
-
Perhaps part of this solution could be resolving that incredibly high latency? 2 seconds isn't workable for most solutions. Perhaps the dish should be re-pointed or similar. – Spooler May 28 '19 at 16:31
2 Answers
First, 2000ms is pretty atypical for a sat-link (I work for a VSAT company). Typical round-trip times for GEO satellite links is ~650ms. Secondly, you're running into an issue with the fundamental design of TCP. Windowing. Essentially, TCP has a built-in timer that when/if it does not get a response within a period of time, it will throttle the TCP connection's bandwidth down in order to reduce the number of re-transmits and lost packets. Because the round-trip time is so high, it reduces the TCP connection's bandwidth quite quickly, to a few hundred kbps, or even a few kbps... or worse.
The only fix, is to implement some sort of TCP Spoofing, or a UDP proxy for TCP connections. This requires some sort of appliance on both ends that would intercept the TCP session, and then relay the traffic over the sat link (usually over a UDP tunnel) which then establishes a 2nd TCP link to the endpoint. Windowing doesn't become an issue, because both ends of the link get their SYNs and ACKs back very quickly. Some tunnel software allows you to pre-configure the link's bandwidth or will attempt to detect the available bandwidth, and it will force endpoints to throttle their links as expected for the available bandwidth.
In some cases, you can hand-configure fixed windows sizes within the operating system itself, but this is usually a lot more headache than it is worth.
![](../../users/profiles/52450.webp)
- 7,349
- 16
- 23
You could try using mosh instead of ssh — with local echo and support for intermittent connectivity, it ought to make the experience more bearable.
![](../../users/profiles/28731.webp)
- 7,903
- 29
- 26