How Low Can You Go?
Every since my days on dial-up internet and telnet MUD’s, I’ve always been interested in low-bandwidth utilities. After all, not every user get’s to live in an area that provides unlimited high-speed broadband. Some, like those who depend on cellular or satellite internet, have to choose between work and watching a few YouTube videos.
This post will introduce some tools that will help you make the most out of a limited or high-latency Internet connection.
Mosh
zypper in mosh
(SLES, Leap, Tumbleweed)
What does it do?
Mosh is a replacement for SSH. It uses the normal SSH protocol to initiate the connection to the remote server. However, after connecting, MOSH’s true magic begins. Rather than continuing using TCP port 22, MOSH changes to UDP, yet it is still encrypted. Due to its fault-tolerance nature, TCP tends to be quite slow and unresponsive when bandwidth is low and latency is high. UDP, on the other hand, isn’t worried about getting every byte correct. If a packet or two gets dropped, the connection stays up and continues working. Recently, I took a train from Prague to Nuremberg using the train’s complementary wifi. While traveling through rural areas, the connection often dropped to a crawl and yet my connection to my home computer never dropped.
How do I use it?
Install mosh on the computer that you are using and the computer that you want to connect to, the connect like you would using ssh.
mosh jsevans@myserver
Really, it’s that easy. There’s no extra daemon to start or configure. Mosh uses SSH to connect to the other server and activate Mosh on the receiving end and the two communicate.
Alpine
https://www.washington.edu/alpine/
zypper in alpine
(Leap, Tumbleweed)
What does it do?
Alpine is a text-based email client. Why would anyone use an antique like that? Easy, if email is important and your internet is limited, then Alpine might be your best option. With that said there is a learning curve, but it’s not as crazy as it seems at first.
How do I use it?
Below is a sample of what you will see at the main menu.
ALPINE 2.20 MAIN MENU Folder: INBOX No Messages
? HELP - Get help using Alpine
C COMPOSE MESSAGE - Compose and send a message
I MESSAGE INDEX - View messages in current folder
L FOLDER LIST - Select a folder to view
A ADDRESS BOOK - Update address book
S SETUP - Configure Alpine Options
Q QUIT - Leave the Alpine program
For Copyright information press "?"
\[Folder "INBOX" opened with 0 messages\]
? Help P PrevCmd R RelNotes O OTHER CMDS > [ListFldrs] N NextCmd K KBLockH
Help, Compose, Setup, and Quit are self-explanatory. Message Index opens your Inbox and Folder List lists all of your email folders. The hardest part is setting it up for the first time. The University of Virginia has a fantastic tutorial for first-time installation using Gmail.
Screen
https://www.gnu.org/software/screen/
What does it do?
Many system administrators know about Screen, but it’s one of those tools that seems a little too mysterious for many new users. The main use of Screen is to create persistent shells. That means that if you start a new Screen session using the screen command, you can close that window and return to exactly where you left off.
How do I use it?
Try it for yourself. Run screen, then yast to get to console-mode yast, then close the window. If you were using yast on a remote server and the connection dropped, you might have lost all of your work. Open a new terminal window and type screen -x and you’ll see yast exactly how you left it. Screen has many more uses than that and the following tutorial will help you get the most out of it.
Using Screen in conjunction with Mosh can make even dial-up speeds bearable at the command line.
And now for something completely different.
There’s enough material out there to write a book or two on different text-based applications that can make life easier when bandwidth is limited, but I wanted to show something that could actually make system administration much easier for the admin who needs to work in the field. Did you know you can install a VM with KVM or Xen using only the console?
How do I do it?
There are basically three steps. First, install the virt-install application on your client machine.
sudo zypper in virt-install
Secondly, log into the remote machine and create an image to be used for storage for the new VM
qemu-img create -f qcow2 ./workspace/VM/opensuse42.2.qcow2 60G
Finally, the following command will use the ssh protocol to create the new VM and you will see everything in your console. Sadly, it doesn’t work with Mosh, but it does work quite well with Screen. Didn’t know that SUSE products had a text-only installation mode? It’s there and it works beautifully.
virt-install –connect qemu+ssh://jsevans@10.0.1.35/system –name leap42 –ram 2048 –disk path=/workspace/VM/opensuse42.2.qcow2 –vcpus 1 –os-type linux –os-variant generic –network network=default –graphics none –console pty,target_type=serial –location ‘http://download.opensuse.org/distribution/leap/42.2/repo/oss/' –extra-args ‘console=ttyS0,115200n8 serial’
Rather than giving one long command, it’s sometimes easier to break them down like this. You can still copy and paste the text here to test it for yourself. Just remember to replace my information with your own. On the second line of the command, I use the connect option to connect to the remote server with /system at the end of the command. Most of these options probably seem normal if you’re used to creating VM’s in virt-manager in KVM or even in VMWare for that matter. However, the location and extra-args options need some explanation. This installation technique only works with network installs so basically you need to install from a remote HTTP or FTP server and supply the URL or you’ll need to mount an ISO and serve the files via HTTP or FTP. You can see the url in the location option. The extra-args option tells KVM to emulate a serial connection similar to plugging in a serial cable to the back of a server and connecting directly. There is no virtual video card so there will be not be a remote VNC to view a GUI. There is only the serial connection. One difference in the final installation is that the kernel line will include directions for sending all text to the serial output. This makes booting your new VM easier to troubleshoot when booting. This technique isn’t limited to just SUSE products. Raymii.org has a fantastic guide on how to do remote installations with several other distributions.