mobile-shell / mobile-shell/mosh

Blend sshuttle like TCP tunneling

Open
#416 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature Reliable byte stream
Dominant language
C++
Stars
14.5k
Forks
865
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file, test, or entry point is named. Start by reading the linked sshuttle project and understanding mosh's existing transport design, then determine how TCP streams could be multiplexed over UDP without TCP-over-TCP. Done means a settled implementation design and demonstrated faster or more reliable TCP tunneling.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.