Subject: Re: ANN: Tunnelling NNCP over (ssh, sudo, tor, S3, Nextcloud, syncthing, uucp)

From: John Goerzen <[email-masked]>
Date: Mon, 23 Aug 2021 21:31:19 -0500

On Sat, Aug 21 2021, Sergey Matveev wrote:

> Well, technically it should be of course slightly less efficient 
> because
> of PPP, IP and TCP header sizes, but with high MTU it should be 
> not so
> considerable overhead. The main issue is window scaling 
> algorithm and
> TCP on null-modem and similar links is good enough. Also PPP 
> exists in
> OS (*BSD) out of box, comparing to UUCP or ZModem-utilities. And 
> also it
> allows online protocol usage immediately. I am not trying to 
> persuade
> PPP usage, just personally my struggles stopped me at that 
> solution :-)

I totally get it!  I'm also not trying to say it's bad, just for 
the odd circumstances I've found myself in, it's not great.  If a 
person had a 115200bps null-modem serial link and a firewall it 
would be perfect.

So one of my hobbies is radio.  I've worked with 1200bps amateur 
packet radio, across which you can actually run a TCP/IP stack 
using a protocol called AX.25.  It works but it is painful.  Some 
more modern techniques involve LoRA and XBee SX radios (and a 
whole bunch of newer amateur things too).

Virtually every radio channel is half-duplex.  Things like wifi 
simulate full-duplex by using techniques like operating on 
multiple frequencies or having carefully-chosen timing for 
alternating transmit windows, etc.  With low-bandwidth, 
long-distance technologies, generally you can't cover it up.  It 
is still half-duplex.

I was early-on testing things over my LoRA stack and everything 
went fine until I tried to run ssh over it - then the whole thing 
went to pieces with endless collisions and retransmits.  Turns out 
it was all taken down by the fact that both the ssh client and 
server wanted to transmit at the beginning without waiting for 
each other, and the nonexistent collision detection in LoRA, 
combined with its very slow speeds and TCP retransmits, wound up 
taking down the link.  I had to add some collision-prevention 
logic in my code.

Taylor UUCP does still have half-duplex support in various 
protocols!  In fact, I wished the code was more modular, because 
they are some of the best protocols I am aware of for doing file 
transfer over unreliable, slow, half-duplex links.  Someday in my 
Very Limited Free Time (after I learn Go so I can hack on NNCP), I 
would love to implement something like UUCP protocols for socat. 
But alas, my free time is indeed very limited so... unlikely 
anytime soon!

- John