线上验证,不只是单元测试
Section titled “线上验证,不只是单元测试”quicz 的握手与 stream 路径由真实 UDP 探针覆盖:进程内 loopback、独立进程 Zig,以及 启用证书校验的 Go / Rust 对端。
$ examples/interop/run_external_interop.sh all# 对 quic-go (Go)、quiche (Rust)、s2n-quic (Rust) 的证书校验互通:# 握手 + 传输,stream 0/4 上带 FIN 的 echo —— 全程开启证书校验。quicz 目前已实现
Section titled “quicz 目前已实现”- 纯 Zig TLS 1.3 + 0-RTT —— 无 C 密码学;ECDSA P-256、X25519、X25519Kyber768(后量子)、AES-128/256-GCM、ChaCha20-Poly1305、会话恢复。
- QUIC v1 & v2 transport —— stream、flow control、连接迁移、path validation、Retry、stateless reset、密钥更新、版本协商、DATAGRAM、multipath、ECN、PMTUD、GSO/GRO、连接池、qlog。
- Loss recovery + NewReno / CUBIC —— 报文 pacing、HyStart++、PTO jitter、快速重传、app-limited 检测。
- 异步 I/O 运行时 —— 事件驱动
std.Ioserver/client,每连接独立 handler(std.http 模型)。 - HTTP/3 —— 完整连接管理、SETTINGS、GOAWAY、stream 状态机、QPACK 静态 + 动态表。
- WebTransport(完整会话管理)+ HTTP Datagrams (RFC 9297) + 流重置部分交付。
- 线路级互通验证:quic-go、quiche、s2n-quic。
const std = @import("std");const quicz = @import("quicz");const Client = quicz.runtime.client.Client;
pub fn main() !void { var gpa: std.heap.DebugAllocator(.{}) = .init; defer _ = gpa.deinit(); var io_ = std.Io.Threaded.init(gpa.allocator(), .{}); defer io_.deinit(); const io = io_.io();
var client = try Client.init(gpa.allocator(), io, .{ .server_port = 4433, .server_name = "localhost", .alpn = &.{"hq-interop"}, }); defer client.deinit(); _ = try client.runEchoSession("hello");}推荐生产 API 是异步 std.Io 运行时(quicz.runtime)——事件驱动 server + 每连接
独立 handler、async client 会话。低层 Connection packet API 供精细控制使用。见
快速开始。
| 对端 | 语言 / 协议栈 | 探针 |
|---|---|---|
| quic-go | Go | 启用证书校验的 echo client/server + run_external_interop.sh |
| quiche | Rust | 启用证书校验的握手 + 传输 |
| s2n-quic | Rust | 启用证书校验的握手 + 传输 |
| QUIC-Interop-Runner | — | handshake、transfer、retry 自测 |
自己跑一遍:示例指南。
quicz 横向对比
Section titled “quicz 横向对比”权威功能矩阵在四个协议栈上追踪 41 项能力,覆盖率汇总如下:
| 指标 | quic-go | quiche | s2n-quic | quicz |
|---|---|---|---|---|
| 传输层(19 项) | 19/19 | 14/19 | 14/19 | 19/19 |
| 拥塞控制(8 项) | 6/8 | 6/8 | 7/8 | 7/8 |
| 密码套件(5 项) | 5/5 | 5/5 | 5/5 | 5/5 |
| 应用层(6 项) | 6/6 | 3/6 | 0/6 | 6/6 |
| 平台(3 项) | 2/3 | 0/3 | 1/3 | 1/3 |
| 合计(41 项) | 38/41 | 28/41 | 27/41 | 40/41 |
quicz 覆盖全部传输、密码套件与应用层能力(40/41);缺口仅为 BBR(主动移除)与平台 特有的 FIPS / XDP。完整 41 行逐项对比见功能对比。
~390 MB/s
单流 · 真实握手
21.7 μs
回声延迟 · P50
~304 MB/s
4 流聚合
secnetperf 风格的 macOS loopback 微基准,真实 TLS 1.3 握手(无 GSO / XDP);跨实现数字仅为指示性参考;installed-keys(旁路握手)上限约 1.94 GB/s。完整吞吐图、延迟百分位、丢包恢复与方法见性能页。
- BBR —— 2026-08 主动移除,改用 CUBIC。
- FIPS 140-3 —— 仅 quic-go(Go 1.26+)。
- XDP 零拷贝 I/O —— 仅 s2n-quic。
权威状态与验收证据见传输任务矩阵。 API 趋于稳定但仍在演进。