Skip to content

Releases: npanel-dev/OmnXT

OmnXT Node v0.1.67

Choose a tag to compare

@EUForest EUForest released this 08 Oct 08:56

OmnXT Node v0.1.67

本版本更新 Node 与 CLI,程序版本均为 0.1.67。源码为
980139c32c0c6ba61fcbbff972b4603e47ead6dc,分支为 development。

修复内容

  • SimNet SDK 会话在上传写入受到背压时,仍能接收下行数据、处理消费返窗和控制帧。发送保持有界,容量统计覆盖待编码、已编码和部分写入数据;OPEN 完整写出后才完成,Ping 超时从完整提交开始计时。
  • SimNet Node 不再等待某条流的满上传队列,避免一个慢目标阻塞同会话其他流与 Pong。上传按目标 TCP 实际接受字节返还信用,保留待交付 DATA 的预算与顺序;FIN、Reset、接收端退出及 GOAWAY 后的回收均有回归。
  • ClientOpen 通告客户端实际接收窗口,覆盖非对称窗口、AF 抖动、旧合同与恢复;StreamOpen 的既有合同保持。
  • 包含上版发布后提交的 VLESS/REALITY 修复:完整处理 REALITY 记录及首批缓冲写入。

默认 H2/逻辑窗口、并发容量、AF 配置及 Release 优化参数保持原值。

构建与产物

沿用 v0.1.66 的双架构 GNU Linux 产物合同,本地构建并发布四个附件:

omnxt-node-x86_64-unknown-linux-gnu.tar.gz
omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256
omnxt-node-aarch64-unknown-linux-gnu.tar.gz
omnxt-node-aarch64-unknown-linux-gnu.tar.gz.sha256

使用 Rust 1.94.1、cargo-zigbuild 0.22.3、Zig 0.14.0,目标指定 .2.28,默认 features 与仓库 Release 配置,显式注入 Node 源码 revision。本地构建,不使用 GitHub Actions。包内保留 bin/omnxt-node、bin/omncli、DEPLOY.md 和 manifest.json。

实际二进制和归档 SHA256、GLIBC 需求、构建身份及产物验证记录见 发布清单。

验证结果与限制

SimNet/proxy-stream 相关测试 421 项通过、12 项既有忽略,格式与 workspace 编译检查通过。旧实现的窗口方向、Node 阻塞上传和 SDK H2 回压问题已有失败复现及修复后通过记录;版本同步后再次通过 workspace 检查。发布产物另核对两架构 ELF、GLIBC 需求、程序版本、源码 revision、CLI 配置与有限 Node 启动。

相同依赖、编译参数及默认配置的真实 SDK + Node + TLS/H2/AF Release 对照,本地下载中位差异在 ±1% 内,上传未见下降;所有传输完整性校验通过。100Mbps、200ms RTT 合成链路五组交错对照,下载中位数 87.27→88.14Mbps,小请求中位数 356.9→384.7ms,最大约 1.34s。保留这项延迟疑点,不承诺高 Ping 已全部修复,也不能认定客户约 40Mbps 的全部原因已消除。

升级说明

本轮 Node 上传队列与生命周期修复需要升级 Node。完整 SimNet 修复还需要客户端采用从同一源码构建的新 SDK;本次附件交付 Node/CLI,未重新交付平台 SDK。本次发布没有升级或重启客户服务器,客户设备及真实链路复测仍待完成。

安装指定版本:

curl -fsSL https://raw.githubusercontent.com/npanel-dev/OmnXT/main/install.sh | sudo bash -s -- 0.1.67

下载归档后,在同一目录手动校验:

sha256sum -c omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256

ARM64 替换为对应 .sha256 文件名。现有安装脚本没有自动执行该校验。

OmnXT Node v0.1.66

Choose a tag to compare

@EUForest EUForest released this 07 Oct 15:40

OmnXT Node v0.1.66

本版本更新 Node 与 CLI,程序版本均为 0.1.66。源码为
948b54ad450a6a27f02add92dc6f36358661b3f3,
包含本轮 SimNet 下载推进修复和基础 VLESS relay 修复。

修复内容

  • 按 ClientOpen 中实际 offer 安装 Node 发送窗口,纠正 ServerAccept 的客户端窗口视角;
    不对称窗口、真实抖动 offer、新旧线上合同夹具及完整闲置会话恢复均有回归。
  • 消费信用可靠归还,队列满保留已消费债务,小尾债使用持久 deadline;reset 后迟到 DATA
    不再因等待仅写 flush 卡住健康流。
  • 待发数据按流轮转,target 读取前联合预留真实发送信用与物理预算;零信用仍能识别 EOF,
    未读 payload 保持先 DATA 后 FIN。空闲 target 不提前占用读取信用;会话仍有信用时,
    可绕过零信用流的待发队列。共享会话信用被耗尽时仍会对其他流形成背压。
  • 载体由一个 owner 独立推进读写,采用有界就绪批处理和控制优先,保持部分帧与同流顺序;
    在复制、编码和 HMAC 前检查队列容量,减少拥塞时的重复工作。
  • 基础 VLESS 两方向独立推进,部分写更新活动计数,保持响应头、FIN、取消与超时策略。
    默认逻辑窗口、H2 参数和 TCP 缓冲未调整,Vision/Encryption legacy relay 正文保持原实现。

构建与产物

按上一个正式版 v0.1.65 的 Linux 产物合同,本地构建两个 GNU Linux 架构,发布四个附件:

omnxt-node-x86_64-unknown-linux-gnu.tar.gz
omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256
omnxt-node-aarch64-unknown-linux-gnu.tar.gz
omnxt-node-aarch64-unknown-linux-gnu.tar.gz.sha256

使用 Rust 1.94.1、cargo-zigbuild 0.22.3、Zig 0.14.0,目标指定 .2.28,默认 features 与
仓库 Release 配置。构建命令保持 --release --locked,显式注入 Node 源码 revision。
未使用 GitHub Actions 构建。包内保留顶层目录及 bin/omnxt-node、bin/omncli、
DEPLOY.md 和 manifest.json;归档不包含 macOS ._* 文件。

二进制与归档校验值、实际动态 GLIBC 需求及打包生成时间记录在 发布清单。
Node 诊断输出带源码 revision;CLI 的源码身份由构建清单与二进制 SHA256 固定。

验证结果与限制

传输修复完成了 407 项相关测试,12 项既有忽略;格式、diff check 与 Linux workspace check 通过。
版本同步后重新执行了 workspace check,发布产物另核对 ELF 架构、动态 GLIBC 需求、程序版本、
CLI 配置校验及 Node 启动诊断。具体产物验证状态见发布清单。

严格匹配依赖和编译参数的本地 H2 Release 对照,三轮吞吐中位数约 +0.13%,没有观察到稳定回退;
并发小响应由 336–529 ms 降至 5–18 ms,响应预算峰值约 69.3 MB 降至 2.13 MB。
Debug 吞吐中位数仍下降约 5.56%,默认窗口持续慢读的协议 Pong 仍等待约 14 秒。
该测试使用真实 H2 和 loopback TCP,慢读由载体应用包装器模拟;未包含 WAN、TLS、真实 SDK
连接池或客户设备,不能承诺现场提速。

升级说明

本轮服务端窗口、调度和载体修复需要更新 Node。客户端消费返窗修复还需要应用对应的新 SDK;
只升级 Node 不等于完整应用两端改动。旧合同互通由帧编解码与 runtime 夹具覆盖,不能替代旧版本
二进制和客户设备互通验收。本次发布没有重启或升级客户服务器。

安装指定版本:

curl -fsSL https://raw.githubusercontent.com/npanel-dev/OmnXT/main/install.sh | sudo bash -s -- 0.1.66

下载归档后可在同一目录手动校验:

sha256sum -c omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256

ARM64 对应替换文件名为 omnxt-node-aarch64-unknown-linux-gnu.tar.gz.sha256。
现有安装脚本没有自动验证这个 checksum 文件,不把提供校验文件称为安装器已执行校验。

OmnXT Node v0.1.65

Choose a tag to compare

@EUForest EUForest released this 10 Aug 17:04

修复内容

  • 为 Node 中全部 SimNet inbound 增加共享的 512 MiB 目标响应字节预算,避免慢客户端或 carrier 写阻塞时响应数据持续累积。
  • 每次目标 TCP 读取前先申请 32 KiB 额度;预算耗尽时暂停读取并通过 TCP 接收窗口向目标端传播反压,不丢弃业务数据。
  • 预算许可贯穿事件通道、pending 队列、scheduler 与 carrier 写任务,只在真实写入完成或连接关闭丢弃数据后释放。
  • 控制帧不占响应预算,避免 WINDOW_UPDATE、FIN、RESET 与 keepalive 因数据预算耗尽而死锁。
  • 新增当前占用、峰值、等待数、累计等待次数/时长等 Node metadata 指标,并直接合并运行中长连接的实时快照。

构建信息

  • 源码 PR: SunGreatSage/OmnXT#65
  • development merge: a132fd4ee1f2ec7a62cd2a00a7c7eedc4b8e09c8
  • 本地构建:cargo-zigbuild 0.22.3 / Zig 0.14.0(未使用 GitHub Actions 构建或发布)
  • Linux 兼容基线:glibc 2.28

校验

  • cargo fmt --all -- --check
  • cargo check --locked -p omnxt-protocol-simnet -p omnxt-node
  • cargo test --locked -p omnxt-protocol-simnet --lib(137 passed)
  • cargo test --locked -p omnxt-protocol-simnet --test e2e(5 passed)
  • Node SimNet 组装器、指标聚合、用户热更新与 H2 全链路定向测试通过
  • 344,512 用户 SimNet Registry 发布前回归通过
  • Node 全量 lib 测试中本次相关用例通过;既有 AnyTLS/Reality/控制面并行场景仍有失败,另一个 SimNet 重载用例因本机正在运行的 Node 占用 TCP 9080 无法执行,未停止该进程
  • 双架构产物均验证为 stripped ELF,最高 GLIBC 符号版本为 2.28

SHA256

  • x86_64: 61d7025dbd73c6cfbab02b8a19df4cbb24d42db4cf149edad31bcd5378dd9d28
  • aarch64: 7fb26d3bb8ce6248c62ed3d45d4a7b6ce3fd1f3ee3d785aadc681ec1903592db

OmnXT Node v0.1.64

Choose a tag to compare

@EUForest EUForest released this 08 Aug 12:20

修复内容

  • 将 Node 控制面 HTTP 总请求超时从 20 秒调整为 30 秒,并保留 timeout/connect/read 等结构化失败原因。
  • 修复控制同步虽记录指数退避、但调度器仍每分钟请求的问题;失败期间现在真正停止重复拉取。
  • 为 PPanel /v1/server/user 全量刷新持久化尝试/失败状态;全量失败后 30 分钟内退回条件请求,避免反复构造大用户快照。
  • Linux Node 默认通过进程级 PR_SET_THP_DISABLE 关闭透明大页,降低大快照和 SimNet Registry 临时分配对 RSS/AnonHugePages 的放大;可通过 OMNXT_THP_DISABLE=0 关闭该调优。
  • 服务循环改用真实时钟;新增用户拉取大小/耗时、退避截止时间、SimNet Registry 构建耗时与变更量日志,且请求 URL/secret_key 不写入错误详情。

构建信息

  • 源码 PR: SunGreatSage/OmnXT#64
  • development merge: bd0ecde69db3ace9a300bdfda781d4f9289a0c00
  • 本地构建:cargo-zigbuild 0.22.3 / Zig 0.14.0(未使用 GitHub Actions 构建发布包)
  • Linux 兼容基线:glibc 2.28

校验

  • cargo fmt --all -- --check
  • cargo test --locked -p omnxt-control(102 passed)
  • cargo test --locked -p omnxt-state(50 passed)
  • cargo test --locked -p omnxt-glibc(11 passed)
  • cargo test --locked -p omnxt-runtime(5 passed)
  • cargo test --locked -p omnxt-protocol-simnet --lib(127 passed)
  • cargo check --locked -p omnxt-node
  • Node 控制同步、PPanel 用户热更新、SimNet Registry 热更新定向测试通过
  • 固定 TCP 443 的重载测试因本机 Docker Desktop 占用端口无法执行,属于本机构建环境冲突

SHA256

  • x86_64: 61f56291e7ec2dfd4afff5b62926691f0e841984186b8372c17c8be1636e87b7
  • aarch64: 36c1be4e804c7af0ad6a3f179ba1f212395d9b63bc2c996624d42556d83bff2f

OmnXT Node v0.1.63

Choose a tag to compare

@EUForest EUForest released this 07 Aug 10:59

修复内容

  • 修复 Node 服务重载时递归调用导致上一代 Registry、Listener、Tracker 与 SimNet 工作集持续存活的问题;现在旧一代资源会在下一轮启动前完整释放。
  • 启动完成后立即释放大规模 SimNet 用户工作集;仅在最终退出时重新读取必要元数据。
  • 释放大型工作集后主动归还 glibc 堆页,并增加默认每 900 秒一次的低频 trim;可通过 OMNXT_MALLOC_TRIM_INTERVAL_SECS 调整或关闭。

构建信息

  • 源码 PR: SunGreatSage/OmnXT#63
  • development merge: 7325c98f1d4c68cf9bd92362432036859c940a65
  • 本地构建:cargo-zigbuild 0.22.3 / Zig 0.14.0(未使用 GitHub Actions)
  • Linux 兼容基线:glibc 2.28

校验

  • cargo check --locked -p omnxt-node
  • cargo test --locked -p omnxt-glibc(9 passed)
  • cargo test --locked -p omnxt-protocol-simnet --lib(127 passed)
  • Node 重载相关定向测试通过

SHA256

  • x86_64: 4c72531be9fa58299cc17c642755dce3df2cbd6639b7b0285f0d94982e8fcc0b
  • aarch64: 7997673486cdb6079e609fdbd1497f483e71db105301f989d97fdd168dfae1f9

OmnXT Node v0.1.62

Choose a tag to compare

@EUForest EUForest released this 03 Aug 03:39

Node memory stabilization

This release follows the production investigation of slow RSS growth on long-lived, busy SimNet Node servers.

  • Reclaim an empty SimNet FrameQueue entry immediately after its final frame is written, so a long-lived H2 carrier no longer retains one allocation per historical stream.
  • Avoid creating an empty stream queue when a stream first hits the scheduler buffer limit.
  • After a large SimNet user-registry refresh (10,000 or more users), drop the temporary working set and ask GNU libc to return completely free heap pages with malloc_trim(0).
  • Keep the existing bounded glibc arena configuration from v0.1.61.

Source: SunGreatSage/OmnXT PR #47, merged into development as c88c0bf1c51eceefc5b9df225102d575e790b556.

Local build and verification

  • Built locally with cargo-zigbuild 0.22.3 and Zig 0.14.0; GitHub Actions was not used.
  • Targets: x86_64-unknown-linux-gnu.2.28 and aarch64-unknown-linux-gnu.2.28.
  • Both omnxt-node and omncli are stripped ELF binaries with a maximum required glibc symbol version of 2.28.
  • SimNet protocol tests passed: 126 unit tests and 5 protocol E2E tests.
  • A 100,000-stream long-lived scheduler regression proves completed stream queues return to zero retained entries.
  • The Node SimNet user hot-reload test and full-stack H2/TLS E2E test passed.
  • Package checksums were verified after copying to /Users/mac/Project/Go/NP/OmnXT.

OmnXT Node v0.1.61

Choose a tag to compare

@EUForest EUForest released this 02 Aug 15:21

Node memory stabilization

This release addresses the slow private-memory growth observed on busy Node servers.

  • Replace one operating-system thread per session-release callback with one bounded dispatcher: 4 reusable workers and a queue capacity of 1024.
  • Limit glibc allocator arenas to 4 by default on GNU/Linux to reduce retained heap amplification. Operators can override this with OMNXT_MALLOC_ARENA_MAX=1..64, or disable it with 0/off/false/disabled.
  • Bound global-limit user history at 256 retained users while preserving a cumulative enforcement counter.
  • Bound the live upstream-success cache at 4096 entries.

Source: SunGreatSage/OmnXT PR #45, merged into development as 807cec4294fe84c8b7dd6ea63bb23a96286828e8.

Build and verification

  • Built locally with cargo-zigbuild 0.22.3 and Zig 0.14.0; GitHub Actions was not used.
  • Targets: x86_64-unknown-linux-gnu.2.28 and aarch64-unknown-linux-gnu.2.28.
  • Both omnxt-node and omncli are stripped ELF binaries with a maximum required glibc symbol version of 2.28.
  • Targeted allocator, session-dispatcher, bounded-history, bounded-cache, listener-runtime, traffic-ledger, and SimNet generation tests passed before merge.

OmnXT Node v0.1.60

Choose a tag to compare

@EUForest EUForest released this 02 Aug 11:50

Node memory-retention fixes

  • Streams large PPanel user-list responses into a bounded temporary file while calculating SHA256, avoiding a second full in-memory response copy for 300k+ users.
  • Adds a semantic user hash so reordered or reformatted HTTP 200 responses no longer rebuild an unchanged SimNet user registry.
  • Replaces per-refresh SimNet runtime generations with shared reloadable credential and identity registries. Existing long-lived HTTP/2 connections now follow the current registry, allowing obsolete 300k-user generations to be released.
  • Preserves the active runtime, target handler, resource counters, and caches during user-only refreshes.
  • Globally expires and bounds the target DNS and failure caches (16,384 entries each by default), and exposes their live entry counts in diagnostics.
  • Demotes successful per-stream TCP dial logs from info to debug to reduce high-frequency allocation and log pressure.

Source: SunGreatSage/OmnXT PR #42, merged to development at 54723a33deb2f044b6047b00b75f0f8a9e071927.

Validation covered PPanel streaming and semantic-hash tests, SimNet credential/identity generation-release regressions, bounded target-cache tests, a 344,512-user registry regression, Node hot-reload behavior, and protocol/transport unit suites. Both Linux targets were compiled locally with cargo-zigbuild; no GitHub Actions build artifacts were used. The resulting binaries are stripped and require at most GLIBC 2.28.

OmnXT Node v0.1.59

Choose a tag to compare

@EUForest EUForest released this 02 Aug 10:57

SimNet Node throughput improvements

  • Raises the Node-specific SimNet HTTP/2 receive windows to 4 MiB per stream and 16 MiB per connection, removing the previous 64 KiB client-to-Node flow-control bottleneck on higher-RTT links.
  • Adds the simnet_connection_window_size Node setting while preserving the existing simnet_initial_window_size override.
  • Replaces one-new-TCP-connection-per-request Redis global-limit access with a bounded reusable connection pool.
  • Adds global_limit_redis_pool_size Node metadata configuration (default 8, accepted range 1-64).

Source: SunGreatSage/OmnXT PR #41, merged to development at f722fcd923969430cac4dd22af3ac5b8abff2280.

Validation included Redis pool unit tests, SimNet HTTP/2 configuration tests, seven real HTTP/2 socket tests, and the Node HTTP/2 full-stack E2E test. Both Linux targets were compiled locally with cargo-zigbuild; the release does not use GitHub Actions build artifacts. The resulting binaries are stripped and require at most GLIBC 2.28.

OmnXT Node v0.1.58

Choose a tag to compare

@EUForest EUForest released this 02 Aug 08:31

Node sustained-memory stability

  • Bounds successful SimNet session histories and per-user diagnostics so long-running nodes do not retain an unlimited number of completed-session records.
  • Rebases acknowledged PPanel traffic against the live counters, preserves traffic arriving while the report request is in flight, and prunes inactive zero-pending users.
  • Removes the duplicate PPanel pull worker and reuses the existing control-sync schedule.
  • Removes the full traffic-ledger JSON copy from runtime metadata and avoids large temporary string/hex maps during SimNet hot reload.
  • Reuses one shared HTTP client and connection pool for control-plane requests.

Source: SunGreatSage/OmnXT PR #40, merged to development at 0ea42762762c76e0ffe28917f8be24f50386a719.

Validation included targeted Node/PPanel regression tests and a 344,512-user SimNet registry test. Both Linux targets were compiled locally with cargo-zigbuild; the release does not use GitHub Actions build artifacts. The resulting binaries are stripped and require at most GLIBC 2.28.