v0.3.0
v0.3.0 是一次大版本重构, 引入了 Simplex 单工信道传输框架、SR-ARQ 可靠传输协议、yamux 多路复用等核心能力, 同时对协议栈、CLI 接口、编译体系进行了全面现代化改造。
新功能
Simplex 单工信道传输框架
新增 x/simplex 包, 在各种协议上建立全双工隧道:
- [feat] DNS 信道 (
simplex+dns://), 通过 DNS TXT/CNAME 记录传输 - [feat] OSS 信道 (
simplex+oss://), 通过阿里云 OSS 对象存储传输 - [feat] HTTP 信道 (
simplex+http://), 通过 HTTP 轮询传输
SR-ARQ 可靠传输协议
新增 x/arq 包, 为不可靠信道提供可靠传输:
- [feat] Selective-Repeat ARQ, 滑动窗口 + 选择性重传
- [feat] NACK-only 机制, 减少控制开销
- [feat] 大数据自动分片/重组, ARQSession 实现
net.Conn接口
多连接管理 (ConnHub)
- [feat] ConnHub 连接管理器, 三种负载均衡:
random/fallback/round-robin - [feat] 上下行分离信道 (Duplex),
up-/down-URL 前缀, 拆分上下行到不同通道
新增传输层
- [feat] HTTP/2 隧道 (
h2://) - [feat] StreamHTTP 隧道 (
streamhttp://), SSE 下行 + HTTP POST 上行 - [feat] DNS 隧道 (
dns://) - [feat] WireGuard 传输 (
wg://), hash-based tun_ip
CLI 接口变更
- [feat]
-s/-c分离参数, 明确区分 server (-s) / client (-c) - [feat]
--list列出已注册的 tunnel/service/wrapper - [feat]
--retry/--retry-interval/--retry-max-interval重连参数 - [feat]
--lb负载均衡算法: random / fallback / round-robin - [feat] URL Query 参数:
?tls,?wrapper=,?retry=,?lb= - [feat] 支持从环境变量读取配置
其他
- [feat] 加密算法注册中心 (
x/cryptor): aes, sm4, twofish, tripledes, cast5, blowfish, tea, xtea, xor - [feat] 编码器库 (
x/encoders): base32, base58, base64, hex, gzip, images - [feat] Agent 自动恢复 (
SafeGoWithRestart) - [feat] Server 重启热重连 (RST 通知)
- [feat] 动态轮询间隔调整 (Reconfigure 消息)
架构重构
- [refactor] 消息协议: protobuf → 手写 wire protocol, 移除 protobuf 依赖
- [refactor] 多路复用: hashicorp/yamux → 内置
x/yamux - [refactor] CLI: go-flags → 标准库 flag
- [refactor] TLS: 抽取
x/xtls包统一管理证书
性能优化
- [perf] token bucket 限速器 sync.Cond 替代自旋等待
- [perf] SOCKS5 sync.Pool 复用 bufio.Reader
- [perf] CWND 拥塞控制
Bug 修复
- [fix] ARQ session goroutine 泄漏和数据丢失
- [fix] SimplexBuffer 包边界未保留
- [fix] yamux keepalive → 应用层 ping/pong, 修复高延迟假死
- [fix] HTTP transport server→client 数据传递错误
- [fix] redirect 路由未跟随 alias
- [fix] bridge close data race
- [fix] agent Handler 返回后未 close
- [fix] DNS simplex 自定义 DNS 服务器不生效
- [fix] 大量边界 bug 修复
⚠️ 破坏性变更
| 变更 | 旧用法 | 新用法 |
|---|---|---|
| 连接参数 | 单一位置参数 | -s addr (server) / -c addr (client) |
| 消息协议 | protobuf | wire protocol (不兼容旧版本) |
| 加密 wrapper | aes/xor |
x/cryptor 注册, ?wrapper=aes-128-cfb |
| 依赖 | protobuf, go-flags | 标准库 flag |
| 默认 transport | tcp, udp, http, icmp | tcp, udp, icmp |
Full Changelog: v0.2.4...v0.3.0