Topic: Linux Kernel Splice(适用于 Android、路由器等 Linux 环境)
What's Splice
Splice 是 Linux Kernel 提供的函数,系统内核直接转发 TCP,不再经过 Xray 的内存,大大减少了数据拷贝、CPU 上下文切换的次数。XTLS Direct Mode 读取数据时不需多余处理,此前引入了默认的全平台 ReadV 增强,性能已与 VLESS 裸奔持平。而现在,你可以选择性开启 Splice 增强:经测试,性能达到了 VLESS 裸奔的两倍。你没看错,比现在的裸奔更省资源。
Scene Limits
- Linux 环境,入站为 任意门、Socks、HTTP 等纯净的 TCP 连接。
- 出站为 VLESS XTLS。Trojan XTLS、裸奔等尚未增加此项优化。
Usage
- 客户端 flow 改为
xtls-rprx-splice
。若不需拦截 QUIC,填写xtls-rprx-splice-udp443
。 - 服务端 flow 保持 Direct。以后服务端也会有 Splice 优化。
More
- 若你开了流量统计,Splice 转发完一整条 TCP 才会反馈数据量。
- 其实应用 Splice 后,性能已与软件架构无关,只取决于你的机器和系统内核的表现,非常纯粹。
Xray-core 1k stars 啦,感谢各位的支持!文档 coming soon
Performance
- 与 v2ray-core v4.32.1、v4.33.0 的一些 测试与对比,含 Splice 的数据
- 实际环境中,硬路由上 XTLS Splice 的上限已是普通 TLS 的数倍。
Other Changes
- 修改包名:去除包名中的
v1
。#6 2dust/AndroidLibXrayLite#1 - 日志中路径不再包含包名,更加清晰。Mentioned in #23 (comment) #36 5a43fa7
- API Handlers 添加对
v2ray.core
开头的兼容,解决 v2rayN 等无法显示流量统计的问题(但请优先调用XRAY
)。2dust/v2rayN#1141 - @qjebbs 新的
xray api
指令,执行xray help api
查看用法。输出格式均为 JSON。#8 #32 (comment)
Chores
- Regenerate .pb.go files
- Use Go 1.15.6
- Upgrade dependencies
- Update geoip.dat, geosite.dat
Notices
- 新增 Xray-android-arm64-v8a.zip,建议 Magisk 和 Termux 优先用此版本。
- 可执行文件均 Reproducible,相同版本 Go 交叉编译即可验证。