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

John Goerzen
2021-08-24T02:32:31Z

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