-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
xmux for grpc and h2 #3823
Comments
Why there is no minConnections? and what about H1 |
What does "xmux" just means that it uses the "native mux of HTTP" (H2 mux or QUIC). H1 cannot be done, as HTTP/1.1 has no mux capability. there will always be some transports that can't do it, in fact most transports can't (only the h2, h3 based ones) |
Create multiple physical connection initially and use both from the beginning like roundRobin load balance
oh I thought it means Xray's Multiplex |
H2 准备删掉,用 streaming request 代替,gRPC 可以有 xmux,先不改 mux,此贴终结 |
我仔细看了一下,原则应当是 xmux 写在哪就作用在哪,比如 xhttp、grpc、mux,以及暂时先不要管用户配置了双层 mux 的情况 |
以及对于 grpc,Xray 已经改了太多了,我想的是重新设计一下命名为 xgrpc,然后把 grpc |
大概就是建议迁移至 xhttp 和 xgrpc,2025 移除 h2 和 grpc |
Personal opinion, create xhttp, xgrpc, ... first, long before deprecating the other stuff. In hindsight, the removal of QUIC would've probably been better if xhttp3 (that is, streaming upload, streaming download, over QUIC) was already launched, because there would've been clear empirical evidence that one is working better (or just as good) as the other. However, QUIC transport itself has few users, so it's fine. I feel differently about gRPC and H2. For example, there is the assumption that xhttp is a killer for h2 because it has the ability to pass nginx. But from my understanding, xhttp will inherently consume more resources due to the global sessions map, and if we assume this protocol will be fully embraced by users, then we have to assume that these additional anti-censorship properties are so useful in practice that users are happy to make this tradeoff. This is not yet clear to me, so I'd like to A/B test all of this. I still believe in "let a thousand flowers bloom", but not because the user should just try random protocols until one works, but because when I have to "remote-debug" somebody else's firewall, it's useful to know things like "the plain http3 transport got blocked, but splithttp with the weird upload worked fine". The other thing is that you say "xray does what it thinks is right", but actually I feel that nowadays it has to coexist with other software. Lots of people nowadays use sing-box on mobile and xray on the server. I feel that it is already pretty hard today to find a protocol that works in this combination. |
grpc别删吧 很多人还在用 一来它可以双向流过cf 二来是算在代理软件里通用的一个多路复用的协议(v2fly clashmeta singbox ...) |
I agree with you deleting grpc just break compatibility with other core and it not a good move for xray I think it better to add hystria2 because all other cores added that |
I agree with mmmray on this since xray is also a tool to analyze gfw behaviour - people will analyze and log the loopholes using the multiple transport and many options in xray its truly a shame we don't have many transports in xray since its the base platform and core for distribution firewall bypassing configurations |
Personal opinion:
|
Personal Opinion: a) Better not to remove HTTP/2 and gRPC, at least until the next next year. |
Relax, |
先说下 h2 传输层,v5ray 已经删了,REALITY 救了它一命,不然用的人不会比 QUIC 传输层多多少,且跨代理软件时人们更喜欢用 grpc 传输层。XHTTP streaming request 就跟 h2 传输层差不多,分离的请求与响应以支持 chrome(browser dialer)和那些反代软件,加了 header padding,我觉得 h2 传输层实在没必要留下来对比,此外支持 xmux, 然后是 grpc 传输层,毫无疑问 xgrpc 经过设置一定能兼容现有的 grpc,我只是想改个名 |
v5ray 没有删 h2 呀 姑且不说用的人多少 我喜欢它的简单 |
v5ray 的文档中没有 h2 传输层,可能是因为比较 buggy(fly 的 h2 没修过),代码没删应该是为了是兼容 v4 多一个 h2 传输层就要多一些工作,比如要不要给它加 header padding、要不要加 xmux 支持,过于重复了 若实在想留着这种“最简单的东西”,可以把它变成 XHTTP 的一个 mode,即全双工,默认给 REALITY 用 其实现在我也不喜欢“HTTP 传输层”这个命名,和 HTTP 出入站还重名了,所以更倾向于干脆删掉它 |
这样的话就干脆说是把 SplitHTTP 和 h2 传输层和 @yuhan6665 pr 的 h3 传输层合并为 XHTTP 吧,支持 header padding 与 xmux |
I hate to point out how jaw-dropping the comment supporting the removal of HTTP/2 transport is.
Is it really as you claim? HTTP/2 has been one of the longest-existing transports among the *ray ecosystem, and is currently one of the few transports to offer implementation-agnostic multiplexing support, predating gRPC by a long margin. As one of the fundamental transports, the existence of REALITY doesn't really matter for the adoption of HTTP/2. If it's really an argument that V2Fly removed it in version 5... Well they marked VLESS as deprecated, and they added Hysteria 2 support. Is Xray going to follow suit? Feel free to merge the vanilla HTTP/2 into some other transport and provide an alias, but do not remove it. gRPC? Until it could have custom header support... |
@PoneyClairDeLune 你的认知太浅薄我懒得说,如果你有问题,去 fork 一个 Yray |
@PoneyClairDeLune 说白话,你最大的问题就是没有看明白我要删 h2 传输层并不是因为 v2fly 删了,然后给我扯什么 vless 和 hy2。我要删 h2 传输层主要是出于自己的考虑,只是他们提到了与其它软件的兼容性,我才说 h2 传输层的老家早就不要它了,也就 Xray 主导的 REALITY 会用一下。还有 h2 传输层存在久不代表它用得多,没 REALITY 的话它比 XTLS 少得多,几乎没人用。 错误太多本来懒得喷,而且最关键的是,我不是来跟你们辩论的, |
看完之后感觉能接受。 |
|
@mmmray So the plan is:
|
|
|
I'm waiting for XHTTP, and I will not release the next version of Xray-core until XHTTP is ready, |
gRPC has no xmux yet? or just undocumented? |
(trying to "plan" this thing so that the designing doesn't happen on the PR itself)
xmux is a setting in splithttp. however, the principle can be applied to h2 and grpc transports. there are a few ways to port it:
Option 1: Just copy it to
grpcSettings
Option 2: Make it global
xmux
replaces themux
key. For transports that supportxmux
, it is used. For transports that do not supportxmux
, mux.cool is used:can add a
"type"
setting like sing-box, but IMO it can be chosen automatically (for each transport, there is an "obvious best" one)thoughts?
The text was updated successfully, but these errors were encountered: