X-Tunnel :面向低延迟的 长连接隧道
基于 WebSocket over TLS 1.3(wss://) 的多通道长连接隧道。 通过 Cloudflare CDN 访问服务端,结合 ECH(Encrypted Client Hello)、 0-RTT 会话恢复潜力、竞速选路与上下行链路自动发现,面向复杂网络环境实现更稳定、更低时延的数据转发。
技术线路(端到端)
从本地代理入口到 Cloudflare CDN,再到服务端拨号与回传:每一步都围绕“稳定与低延迟”设计。
-
01入口:本地监听(SOCKS5 / HTTP / TCP)将应用流量统一收敛到 X-Tunnel 客户端。支持认证、CONNECT、以及 TCP 端口映射式转发。
-
02承载:多通道 WSS 长连接(TLS 1.3)客户端维护若干条 WebSocket 连接(可按 IP * 通道数扩展)。 通过 Ping/Pong 保活与写队列调度,持续承载数据帧。
-
03中间层:Cloudflare CDN 前置访问服务端以 CDN 作为入口:改善可达性与链路分布;对外仅呈现标准 WSS 行为。 在 TLS 1.3 场景中可利用会话恢复带来的 0-RTT(库/环境支持时)降低重连代价。
-
04服务端:按连接 ID 维护状态(TCP / UDP)服务端为每条内层连接创建状态机,支持:TCP 拨号、UDP Relayer、以及(可选)SOCKS5 前置代理。
-
05回传:下行链路自动选择与绑定客户端对同一连接的多通道回包进行“竞速”,由首个有效回包触发下行通道绑定; 上行通道在服务端确认后回告,从而形成稳定的 TX/RX 双向路径。
- •外层:WSS/TLS 1.3 长连接,减少频繁握手与 ClientHello 暴露。
- •内层:TLV-like 二进制帧,按连接 ID 复用,支持 TCP/UDP 多路复用。
- •低延迟:多通道并发 + 下行竞速选择 + 上行确认绑定。
- •网络策略:IP 优先规则(IPv4/IPv6)与 UDP 端口封锁(默认阻断 443 以规避 QUIC/HTTP3 形态)。
- •隐私增强:ECH 支持(可回落普通 TLS 1.3)。
低延迟机制:竞速与上下行链路自动查找
核心思想:把“不确定的网络抖动”留给并行通道,让业务连接尽快绑定到最优路径。
客户端按“每个 IP × 连接数”建立 WebSocket 通道。 每个通道独立保活(PingInterval)、读写超时控制,并通过全局写队列限制避免拥塞扩散。
每条内层连接以 ConnID 识别。 上行(TX):由服务端在接受 Connect 后回发 MsgUplink 标记。 下行(RX):客户端对首个到达的回包通道发送 MsgSelectDownlink,完成绑定。
- 1多通道并行:把不稳定链路的尾延迟转化为“最先返回者胜”。
- 2一次绑定:连接建立后固定 RX 通道,避免回包抖动在不同通道间来回切换。
- 3UDP 竞速:UDP 关联通过 StartUDPRace 先广播连接请求,再在拿到 uplink 后切换到定向发送。
私有协议:TLV-like 二进制封装
外层是标准 WebSocket(二进制帧);内层是一套固定头 + 变长字段的帧格式,用于多路复用 TCP/UDP 与状态控制。
Header: [Type:1][ConnIDLen:1][MetaLen:2][PayloadLen:4]。 然后依次拼接:ConnID、Meta、Payload。
0 1 3 7
+---------------+---------------+---------------+---------------+
| Type (1) | ConnIDLen (1) | MetaLen (2) | PayloadLen(4) |
+---------------+---------------+---------------+---------------+
| ConnID (variable) | Meta (var) | Payload (var) |
+---------------------------------------------------------------+
Type: 消息类型(TCP/UDP/控制)
ConnID: 连接标识(字符串,最多 255 字节)
Meta: 元信息(例如:IP 策略 + 目标地址)
Payload:数据负载(TCP/UDP 数据)
安全与抗干扰:长连接、ECH 与减少握手暴露
重点不是“花哨加密”,而是把连接行为尽可能收敛为常见形态,并减少可被干预的握手次数。
外层采用 WebSocket 长连接承载大量内层连接数据。 相比“每条业务连接都重新 TLS 握手”,长连接能显著减少 TLS ClientHello 出现频率,降低被中间设备触发阻断/干扰的机会。
客户端支持通过 DoH 查询 ECHConfigList,并在 TLS 1.3 握手中携带 ECH 参数。 这有助于隐藏 SNI/握手中的敏感信息,使连接行为更接近常见的 CDN TLS 访问形态。 若 ECH 不可用,可启用 fallback 回落到普通 TLS 1.3。
在 TLS 1.3 会话恢复场景下,协议具备 0-RTT 早期数据能力。 对于“断线重连”型网络,若运行环境启用会话票据与早期数据,可进一步降低重连时延。
网络策略能力:IP 优先规则 & UDP 端口封锁
把“能控制的”变成策略:让连接优先走更可用的地址族,避免某些 UDP 端口带来的流量形态(例如 QUIC/HTTP3)。
客户端通过参数解析得到 IPStrategy,在发起 Connect 时写入 Meta 的首字节。 服务端据此在直连模式下进行 TCP 拨号/UDP 解析: 支持 仅 IPv4、仅 IPv6、以及 IPv4 优先 / IPv6 优先。
客户端可配置 UDP 端口拦截列表(默认包含 443)。 对于 UDP 代理/转发场景,这能阻止某些 QUIC/HTTP3 类流量直接通过 UDP 443 发送,减少可识别的流量特征,并让流量回到更可控的 TCP/WSS 承载。