mobile-shell / mosh

Mobile Shell
https://mosh.org
GNU General Public License v3.0
12.61k stars 729 forks source link

Blend sshuttle like TCP tunneling #416

Open leleobhz opened 11 years ago

leleobhz commented 11 years ago

https://github.com/apenwarr/sshuttle

The idea is do data-over-UDP more or less like sshutle does:

"But you can't safely just forward TCP packets over a TCP session (like ssh), because TCP's performance depends fundamentally on packet loss; it must experience packet loss in order to know when to slow down! At the same time, the outer TCP session (ssh, in this case) is a reliable transport, which means that what you forward through the tunnel never experiences packet loss. The ssh session itself experiences packet loss, of course, but TCP fixes it up and ssh (and thus you) never know the difference. But neither does your inner TCP session, and extremely screwy performance ensues.

sshuttle assembles the TCP stream locally, multiplexes it statefully over an ssh session, and disassembles it back into packets at the other end. So it never ends up doing TCP-over-TCP. It's just data-over-TCP, which is safe."

If this kind of code can be implemented in mosh, TCP packages can be assembled in client and data-over-UDP can be sent. Fixes issue with TCP-over-TCP and make things faster using UDP.

eMBee commented 10 years ago

does udp not already solve this problem? port-forwarding in mosh would be tcp over udp, so i wonder if any special handling is still necessary.

greetings, eMBee.