-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XHTTP: The real upload / download splitting #3955
Conversation
@decorativefamily 如果这东西经测试能用,合了这个 PR 就发新版 |
|
@junx964 |
To Q. E.:去程回程当然能使用不同的服务器啊,你甚至能叠上去程使用流量、回程使用家宽, |
总之就是,在此之前的代理,上下行的源 IP、目标 IP 都不变,GFW 可以直接逮着狠狠分析,比如分析下有没有 TLS in TLS 但是你把上行多路复用了下行却没有,叠加上下行目标 IP 不同,甚至再叠加上下行连源 IP 都不同,GFW 就没那么舒服了 |
不晓得实际各种网络场景里,上下分离后的包丢弃会怎样,响应会怎样,类似流媒体效能的降低是否在可承受范围。。 |
@kingskill 你的两条线路原本是怎么样就还是怎么样,你看视频的话就取决于下行线路,没有什么流媒体效能降低 |
To Lampadu Ao:你想上行移动家宽、下行联通家宽的话配置不同的 sockopt interface 就行了,这就是 #3955 (comment) 所指的 |
H3长连接被Qos严重,请问定时随机换客户端udp端口在路上了吗? |
@tomxiang1 XMUX 就相当于会随机换客户端 UDP 端口,现在还有默认值,不用任何设置就有“定时随机换客户端udp端口” |
To 6:XMUX 是相当于是为一部分新的子连接使用新的客户端 UDP 端口,而不是影响旧的子连接, |
To 073a8af9cfe4:如果 sockopt interface 是坏的请发个 issue,我觉得这个挺重要的,在 GFW 看来就像是两个不相干的连接 |
这东西怎么配置不用我写了吧, 客户端在原有的 splithttpSettings 里加个 服务端比如你有一个 TLS 有一个 REALITY,就配置 VLESS RAW,然后用 fallbacks 把内层明文流量导至同一明文 SplitHTTP 入站 |
@dragonbreath2000 需要把这样的能力加给 VLESS,#3816 (comment) 有提到,但 SplitHTTP 的兼容性特别强,直连、过 CDN 都能用,且现在只有 TLS 类、QUIC 类能过墙,所以 SplitHTTP 事实上已经覆盖了所有过墙场景,再加给 VLESS 的好处有限 下一步可以做上下行都预设多个线路,随机取用之类的 |
@tomxiang1 #3955 (comment) 已经说了没有迁移旧的子连接,但想迁移很简单因为换个本地端口就行了,我说它有特征是因为 CID 没变且是明文的、GFW 看得到的,而浏览器的 QUIC 大概不会在 CID 不变时没事换个端口,所以不一定会做迁移功能 |
移动设备已经很多了,在从一个wifi到另一个wifi切换很常见了吧,浏览器很大概率换端口。应该不会有明显特征吧。 |
@tomxiang1 切换网络的话,浏览器不需要换端口,只是比如对外 IP 加端口变了,但不换对外 IP 却不停换端口就有点怪了 |
aff354a
to
5540b7a
Compare
今天心情好是因为早些时候我试了下,这两个小时写完、未经测试的代码竟然直接跑通了,一遍过, |
此功能有点野,想象空间有点大 |
这个上下行分离 那可以把流量路由到其他机器回来吗 |
学校上行ipv4免流量,下行计费。可以上行直连,下行挂代理吗 |
@MiniKoro 举个例子,你可以用 VPS A 接收上行,用 VPS B 接收下行,然后均转发至 VPS C,最后由同一 XHTTP 入站处理即可 |
想请教一下上面的客户端 outbounds 示例的 downloadSettings 配置项的意思是否就是通知服务器端使用8443端口发送返程流量给客户端? 谢谢! |
曾经的设想被一步步实现了呢,真好。大佬真厉害。分流之后可操作空间就大多了。我甚至想过分流后,小流量的http上行套phproxy使用。 |
上传流量有没有可能共享一个入口(可以限制上传速度),然后再由入口转发给各自的下行VPS。 |
大佬真乃天下第一奇才。比起马斯克有过之而无不及! |
试用后稳定吗?你是怎么用的?用了几个VPS? |
看线路,本身比较稳定,但是因为上行采用 XMUX 实际会对线路有点要求。如果线路本来就稳体验还是可以的。
其实单个 VPS 也可以用,拆端口或者同一个端口也可以用,就是在反流量分析上面不知道效果会不会差点。 |
反流量分析肯定差,这本身就类似于tor,如果只有一台小鸡,那么用这个简直是脱裤子放屁 |
gfw:凭尔几路来,吾只一路去 |
Just make L3 splitter-out / joiner-in. Packets from all app connections must be (weighted)-randomly distributed between reality/cdn/ss/any-proxy connections, then sent to one place to be organized back in sequence to then send them to freedom. Each proxy connection will have actually random payload with no other characteristic. |
这回是真看不懂了 大脑烧了🤣 |
Quick question here, when we use Reality with XHTTP (like OP) then there is no CDN support, right? |
大佬,我想问,v2rayN 如何 使用 XHTTP-H2-REALITY 和 XHTTP-H2-TLS ?在 network 选择 http 还 SplitHTTP |
@RPRX 例子里面的服务端能否简化为?
|
|
需要体现出是两套公私钥和 fallbacks,不适合简化 |
本来我想的是 如果不靠 CDN 上行下行分别走 ipv4 ipv6 (不同线路)或者一个tcp(H2)一个UDP(H3)(不同审查系统)就足够好了 |
To cargoo:并非严格的“只发不收”或“只收不发”,比如分离上行仍有 HTTP response,分离下行仍有 HTTP request,还有心跳包等 |
那甚至不需要分端口,服务端几乎不用改,只改客户端配置就行 |
Hi @RPRX, |
本来以为需要一天,结果两个小时就写好了合并 #3816 时想到的,如果只是 SplitHTTP in REALITY 的话比 H2 in REALITY 就只是多了 header padding 和 XMUX,但如果利用 SplitHTTP 天生的特性实现真正的上下行分离,事情就会比较有意思了
比如,你可以 XHTTP-H3-CDN 上行,结合 XHTTP-H2-REALITY 下行,给 GFW 整点麻烦 🎃,
这下又开启了一个崭新的时代客户端注意:
目前下行无多路复用#3965 ,下行 path 直接取自上行 path,所以需要一致#3977服务端注意:目前需要用 VLESS fallbacks 把内层明文流量导至同一 XHTTP 入站
但我还没有测试,主要是懒得写配置,可能存在 bug,大家测试一下,尤其是 @yuhan6665 @Fangliding @mmmray未来可能会把 address 和 port 加到 streamSettings,覆盖写在出站协议里的值,
这个 PR 也只需要加一项配置了已经做了别忘了支持一下 Project X NFT:Announcement of NFTs by Project X #3633
服务端 inbounds 示例,一个明文 XHTTP,两个 REALITY(可换成 Nginx),443 为 example.com,8443 为 example.net:
客户端 outbounds 示例,多填一项 downloadSettings 即可: