
In particular, we examined Mosh to determine whether it achieves its stated goal of improving keystroke response time over delayed and lossy networks.

One of the recurring pain points in shell usage is the poor latency and connectivity experience caused by the wide variety of changing network conditions in today’s computing environments. The goal of our work was to examine the performance and behavior of Mosh under challenging network conditions. Since the system uses a unique UDP port for each connection, and connection state is tracked based on filtering for authenticated packets rather than checking source IP address, the system also allows roaming. This allows the system to significantly reduce latency and data transfer requirements. Rather than sending raw octets from one machine to another that ultimately represent some more complex pattern of information (such as a terminal display), Mosh works to synchronize the client’s model of the terminal display with the server’s model by synchronizing keystrokes and screen updates. Mosh works through the use of a new protocol called the State Synchronization Protocol (SSP). For frequent users of terminal sessions, network issues such as these can lead to a very poor user experience via dropped sessions, long delays, and lost data. Most lab computers will not allow mosh connectivity unless you are on the VPN.Mosh (“mobile shell”) is a new terminal application designed to be robust to intermittent connectivity, changes in IP addresses, packet loss, and long round-trip times. Details can be found at:Ī handful of systems are externally accessible via mosh – including ada/babbage.cs and ruby/rita.cs. You will need to get a mosh client for your platform/device. This means that mosh is only a substitute for SSH when you desire the human-interactive aspect, mosh can’t tunnel traffic or do any of the other fancy tricks that SSH can do. Mosh is also less like SSH and more like a remote dumb terminal that transmits your keystrokes to the server and, and information about what the terminal looks like on the other end back to the client. Because Mosh uses UDP for transport it’s more likely to be filtered by aggressive firewalls (especially on public WiFi access points), so it isn’t always the right tool to use.

A mosh session is bootstrapped by starting an SSH session to establish trust, and then moving into a separate fully-encrypted UDP-based connection.

Mosh is an SSH-like remote access protocol that uses UDP for network traffic, enabling it to be able to heal connection issues faster when network connectivity is less than ideal. Mosh is another option that can help you stay productive with less interruptions. But if the drops are frequent enough the hassle of doing this can still be frustrating. Depending on the work you are doing the best answer might be to run a screen or tmux session that allows your processes to stay alive when your network connection drops. In these cases your SSH session can fail frequently. Sometimes you are in an environment where network connectivity is flakey or intermittent, or you end up moving between different wireless access points that don’t support transparently roaming between them without changing your ip address.
