Skip to content

v0.3.0

Latest

Choose a tag to compare

@M09Ic M09Ic released this 23 Mar 11:25

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