Skip to content

v1.0.28

Choose a tag to compare

@bcblr1993 bcblr1993 released this 25 Sep 12:37
· 14 commits to main since this release

v1.0.28 发布验收说明

2026-09-25,完成 TUN 内核数据包缓冲区队列溢出(ENOSPC / ENOBUFS)无损回退重试机制、探测会话自愈重构(防止因网络拓扑变动/路由陈旧引发的误回滚死锁)、Tart 虚拟机构建挂载与 Apple Silicon 物理真机(10.4 Gbps 吞吐)全量回归测试:

核心优化与演进落地:

  1. TUN 内核发送队列溢出无损回退与异步重试机制(CoreBridge.swift):

    • 问题深度定位:在高并发下载、大流量猝发或网卡缓冲区瞬间拥塞时,RustCoreBridge.flushPendingPackets 批量将数据包写入 Darwin 内核虚拟网卡(self.packetFlow.writePackets)。当 Darwin utun 内核发送队列达到硬上限时,系统调用返回 false(底层 ENOSPC / ENOBUFS,即设备空间不足或内核套接字缓冲满);旧实现忽略了该返回值,导致数据包被内核静默丢弃,引发严重的 TCP 丢包重传、拥塞窗口暴跌、甚至长时间“假死断流”;
    • 解决方案:
      • 将每次入核数据包的最大批次限制为 maximumPacketBatchSize = 32,防止突发流量洪峰瞬间撑爆内核驱动队列;
      • 严格捕获 self.packetFlow.writePackets 返回值;一旦返回 false(内核缓冲溢出),立即将当前批次数据包完整插回待发送队列头部(pendingPackets.insert(..., at: 0)),确保包序绝对无损;
      • 触发 2ms 的异步排空退避调度(packetQueue.asyncAfter(deadline: .now() + .milliseconds(2))),给 Darwin 内核驱动充足的时间排空硬件网卡缓冲区,彻底消除断流假死;
      • 设置队列高水位硬限制 maximumPendingPackets = 4096,在极限异常死锁下丢弃最老数据包,保障内存边界绝对安全。
  2. 数据面探测会话动态自愈防回滚机制(TunnelManager+ConnectionLifecycle.swift):

    • 问题定位:currentRouteDataPlaneStatus 原先使用静态单例 probeSession。当发生网卡切换、网络休眠唤醒或路由规则调整时,静态 URLSession 底层的 HTTP/TCP 连接池仍尝试复用已失效的旧套接字,导致抛出 NSURLErrorNetworkConnectionLost 或 NSURLErrorCannotConnectToHost;探测失败后错误判定为代理节点不可用,进而触发回滚逻辑,导致网络连接异常中断;
    • 解决方案:
      • 重构为动态线程安全的探测会话管理器(resolveProbeSession / refreshProbeSession);
      • 当捕获到 .notConnectedToInternet、.networkConnectionLost、.cannotConnectToHost、.dnsLookupFailed、.timedOut 等网络路由状态变动导致的瞬断错误时,主动销毁陈旧连接池并重建纯净会话进行一次无感重试,彻底杜绝误报回滚;
      • 在启动与状态重置流程中主动执行探测会话刷新。
  3. 协议矩阵指纹证据对齐与版本推进(ProtocolCoreEvidence.json、project.yml):

    • 版本号推进至 MARKETING_VERSION: "1.0.28", CURRENT_PROJECT_VERSION: "2026092501";
    • 官方 Rust 核心产物 SHA256 签名(libclashrs.a: 25d6e5b...,libclashrs-direct.a: 416f0a...)与协议矩阵证据文件完全一致。

真实硬件与环境自动化验证结论:

  1. 物理真实设备实机验证(chenxu@100.64.0.3 Apple Silicon Mac mini):

    • 远程门禁执行:AETHERROUTE_ALLOW_REMOTE_GATE=YES ./scripts/test_remote_arm64.sh chenxu@100.64.0.3 fast;
    • 门禁结论:100% PASS(测试凭证落盘:outputs/test-evidence/remote-arm64-20260925T044300Z-fast);
    • 极限性能表现:
      • TCP 单流/多流吞吐实测达到 10.4 Gbps(10,488 Mbps),达到硬件总线与网卡物理线速极限;
      • UDP 完整性测试:10,000 个高频连续数据报传输实现 0 丢包;
      • Go 授权服务竞态测试、DMG 升级回滚验证、UI 线程隔离性与协议互操作性测试全部一次性通过。
  2. Tart 虚拟机 6 维网络矩阵与自动化回归(aether-diag-1434):

    • 执行脚本:./scripts/test_vm_acceptance_matrix.sh(Candidate: 1.0.28 build-2026092501);
    • 验收结果:
      • tun/rule: all checks passed (100% PASS)
      • tun/global: all checks passed (100% PASS)
      • tun/direct: all checks passed (100% PASS)
      • transparent/rule: all checks passed (100% PASS)
      • transparent/global: all checks passed (100% PASS)
      • transparent/direct: all checks passed (100% PASS)
    • 清理验收:测试完成后已彻底清理 VM 内临时测试文件、解压目录及日志,虚拟机保持初始干净状态并安全关机。
  3. 本地静态与安全门禁核查:

    • ./scripts/verify_protocol_matrix.sh:12 种代理协议、21 个互操作用例全部验证通过;
    • 单元回归与全量逻辑测试 100% 通过。

正式发布规范执行核验:

  1. 采用标准生产核心(Normal Core Variant),完全剥离 QA 自动化测试标记;
  2. 主程序(com.aetherroute.desktop)及网络扩展(com.aetherroute.desktop.tunnel、com.aetherroute.desktop.transparent-proxy)均采用 Developer ID 签名与 Hardened Runtime;
  3. 提交 Apple Notarization 官方公证并完成双重票据装订(Stapled App + Stapled DMG);
  4. Sparkle 自动更新清单采用官方专用 Ed25519 密钥签名并经反向验签断言通过;
  5. Cloudflare Pages 静态官网及发布专页同步更新并完成发布。