mux cool: Add maxReuseTimes#4231
Conversation
之前我也发现了这个,我觉得现在要加参数的话不如加上与 XMUX 等价的所有参数, |
这个我支持R佬 |
|
我也不反对 不过这都是后话了 其他部分还有包括让它支持range什么的都需要一定的修改 而且就连xmux自己刚刚都还有一些参数修改 这里只是把这个已经有的逻辑暴露出来 |
|
|
I think you should try to integrate this pr and then it will be completed in the rest of the version, But still, your opinion is preferable |
|
@alphax-hue3682 I'm not intend to introduce unstable changes between v24.12.31 and v25.1.1. The diffs should be tiny. |
f60c5ee to
7073450
Compare
|
这个可以考虑了吧 不过我在想不要把限制 65535 顶满了 改成硬限制 65000 或者 60000 剩下一点点作为保留 类似xudp使用的子连接 ID 0 作为特殊用途 |
|
比如一些连接控制信息 用65001发送 六万多个子连接ID不够用 用65002发送后面再加一个可边长子连接ID再接真正的请求 |
|
想发个新版,关于这个 PR 我本来想的是要不先把 128 这个数值改大点,然后想到现在 XMUX 也是限制复用几百次,先不改吧 |
|
嗯 主要是这样可以一条连接赖着不死开几个小时(我专门加了一个日志记录) 使用体验区别不会很大 |
|
大多数运营商应该会倾向于 Q 掉时间过长的 TCP 连接,对 QUIC 则更加严苛 |
我想了一下 可以这么扩展mux cool的策略 不过和xmux的想法不太兼容 concurrency 如果一个mux的活跃连接达到concurrency 标记为已满 达到maxReuseTimes标记为已关闭/等待关闭 把mux worker放在一个数组里 先从后往前遍历所有worker 忽略已满和已关闭 如果发现这个连接的活跃连接小于expectedConcurrency 直接将即将发送的请求分配给它 如果没有 在没被忽略的连接里选择活跃子连接数最少的 |
8e4f881 to
cbade89
Compare
9ebd6ad to
d418401
Compare
|
|
7a371c6 to
10e280d
Compare
e2701be to
a904850
Compare
a904850 to
af60cac
Compare
af60cac to
a0bf239
Compare
9529a82 to
2320416
Compare
…imes) XTLS#6258 — XHTTP Custom sessionID: - sessionIDTable: base62 / hex / HEX / 自定义 ASCII 表 - sessionIDLength: RangeConfig 控制长度 - GenerateSessionID() 替代 uuid.New().String() XTLS#4231 — Mux cool maxReuseTimes: - mux ClientStrategy 支持 MaxReuseTimes 替代固定 128 - 默认 60000,可通过 maxReuseTimes 配置下调 - outbound handler 传递配置到 mux 策略
…imes) - sessionIDTable: base62 / hex / HEX / 自定义 ASCII 表 - sessionIDLength: RangeConfig 控制长度 - GenerateSessionID() 替代 uuid.New().String() - mux ClientStrategy 支持 MaxReuseTimes 替代固定 128 - 默认 60000,可通过 maxReuseTimes 配置下调 - outbound handler 传递配置到 mux 策略
- PR XTLS#6261 (ECH H2C fix): TLS ECH h2c:// 查询正确处理 - PR XTLS#6254 (brutal): TCP 暴力加速器 - PR XTLS#6258 (Custom sessionID): XHTTP sessionIDTable/sessionIDLength - PR XTLS#4231 (mux maxReuseTimes): Mux 连接复用次数上限 - PR XTLS#6058 (freedom compatibility): Freedom 出站兼容性改进 - XUDP: 改进 UDP over XUDP 传输效率 - 新增 xray.go 配置框架

字面意思
现 mux cool 逻辑:
MaxConcurrency 为一个连接里的最大活动子连接数
还有一个神秘的 MaxConnections 参数 硬编码为128 实际上就是最大复用次数 我不知道为什么叫这个 这个PR将其重命名了
我修改了一下 允许手动指定 maxReuseTimes 并把默认值变成了65535(mux.cool两位流ID允许的最大上限)
这些限制仅存在于客户端 服务端没有限制 旧的可以正常工作