Replies: 2 comments 3 replies
-
Using a generic splitter is a very good idea, especially for Iranians. Some of its advantages include:
|
Beta Was this translation helpful? Give feedback.
-
Share my two cents: C ===== wall? ===== S --------- Dest Assumption is single outbound config manages the connection from proxy server (S) to dest. Then what ever we do between C and S could be open to config, Mux, Split, DialerProxy. Seems to me these can be put at the same level of current "mux" object. |
Beta Was this translation helpful? Give feedback.
-
splithttp has some connection splitting built-in but not exposed, and there is a desire to have it for a few reasons:
There are many ways to satisfy those usecases, and I am not sure what is the best to implement.
Option A: Generic TCP splitter
Essentially, the functionality inside splithttp is ignored, and another transport is built. On the client:
The serverside config is TODO. The idea is that a different protocol can be used for upload vs download. For example, if the "upload CDN" supports websocket, but the "download CDN" supports nothing, one can use chunked transfer for download, but websocket for upload.
The downside here is that this is difficult to write, and I think the config for mobile will be really messy.
Option B: SplitHTTP can tag its traffic for routing
This is less flexible than Option A, many transport types cannot be combined. On the other hand, the overhead is lower, because there is no additional "session management" hashmap just for splitting connections.
Option C: Honor HTTP redirects in splithttp
This is the easiest to build.
Basically, nothing changes about the config. Instead, in splithttp the download
GET /<sessionid>
is changed so that it follows HTTP redirects across domains.When a user establishes a connection with splithttp to
example.com
, the server can redirect the download using301 Location: https://otherexample.com/...
. And now the connection is split!When this happens, the SNI and Host header is reset, and there is no way to do domain fronting. It has also very weird characteristics when establishing the connection.
On the other hand, this setup is easily compatible with sharelinks and most GUI clients, as most of the splitting can be controlled by the server.
@RPRX Any opinions about what should be pursued? Any suggestions about the config format? I don't really have a lot of opinion about this,
this will be painful to build no matter what.Beta Was this translation helpful? Give feedback.
All reactions