zenith-http1 0.1.0

Zenith HTTP/1.1 协议解析器(RFC 7230):零堆分配热路径、流式解析、CRLF 防注入
Documentation
# Zenith(齐天)

> **L2→L7 全栈网络安全数据面框架**:AF_XDP + eBPF + TLS 1.3 + HTTP/1-2-3 + Web + Proxy + WAF + Cache + Fingerprint + Forward
>
> 从内核旁路到应用层的完整 Rust 网络框架,既能构建系统级网络防火墙,也能构建 CDN 边缘节点和 API 网关。

[项目介绍](PROJECT_INTRO.md) · [快速上手](TUTORIAL.md) · [安全报告](SECURITY.md) · [赞助公示](SPONSORS.md) · [参与贡献](CONTRIBUTING.md) · [商业授权](COMMERCIAL.md)

Zenith 是一个面向极端性能场景的**L2→L7 全栈网络安全数据面框架**,采用 **feature-gated facade** 设计,
用户可按需启用所需能力,避免拖入不必要的重依赖(如 `libbpf-rs`、`rustls`、`ring`)。
在 Linux 上启用 AF_XDP/eBPF/io_uring 零拷贝数据面,在 Windows/其他平台自动降级到 `std::net` 仍全功能可用。

## 📚 文档导航

| 文档 | 说明 |
| :--- | :--- |
| [项目介绍]PROJECT_INTRO.md | 架构分层、Crate 一览、安全与性能特性总览 |
| [快速上手]TUTORIAL.md | 安装、示例与快速启动指南 |
| [安全报告]SECURITY.md | 漏洞报告流程、报告模板与支持范围 |
| [参与贡献]CONTRIBUTING.md | 如何提交代码、报告问题与商业合作 |
| [赞助公示]SPONSORS.md | 赞助方式、分级与致谢名单 |
| [商业授权]COMMERCIAL.md | 多许可证选型、企业支持与 SLA |

## 📜 许可证

Zenith 采用**多许可证模型**发布,您可以为自己的用例任选其一:

- [GPL-2.0]LICENSE-GPL2 — 适用开源项目与社区贡献
- [MIT]LICENSE-MIT — 适用追求最大灵活性、易于集成的场景
- [Apache-2.0]LICENSE-APACHE — 适用需要明确专利授权与企业合规的场景

有关企业支持、闭源商用与许可证选型的详细信息,请参阅 [COMMERCIAL.md](COMMERCIAL.md)。

## ⚙️ 核心能力

| 层级 | Crate | 说明 |
|---|---|---|
| L7 | `zenith-web` | 编译期 Trie 路由、类型化 Extractor、中间件 DAG、静态文件服务、`ProtocolServer`(H1/H2/H3)、SecurityPipeline 8 步安全管道、**RuntimeConfig 无锁原子热更新**(WAF/指纹/监听/缓存/HTTP 各协议参数全旋钮) |
| L7 | `zenith-waf` | WAF(SQLi/XSS/SSRF/命令注入/路径穿越/BotThreat 6 检测器,50ms 预算 fail-closed,解码后 NULL 字节压缩);规则集运行时增删改查/启停/自定义检测器 |
| L3-L7 | `zenith-fingerprint` | 全链路指纹识别与阻断(34 采集器结构体、37 collect 入口、256B 特征向量、决策引擎、XDP/L4/L7 三级阻断) |
| L7 | `zenith-cache` | CDN 缓存(16 分片、条件请求 304/206/416、stale-while-revalidate、租户隔离);容量运行时热更新 |
| L7 | `zenith-proxy` | 反向代理(6 种负载均衡 + 熔断器 + 连接池 + H3 真实 QUIC 客户端 + Auto 最优路径);`ProxyConfig` 20+ 旋钮运行时热更新 |
| L7 | `zenith-http1/2/3` | RFC 7230 / 7540 / 9114 全协议实现 |
| L6 | `zenith-tls` | TLS 1.3 引擎(rustls+ring)、证书代际管理、SNI/ALPN 路由、JA3/JA4/JA4S/JA4O/JA4H 指纹 |
| L4 | `zenith-forward` | L4 TCP/UDP 转发(TcpRelay 跨平台统一 API)、CIDR 白名单 SSRF 防护、协议转换、背压与带宽配额;`ForwardConfig` 容量/带宽运行时热更新 |
| L4 | `zenith-net` | TCP 状态机 / UDP 会话表 / 端口过滤 / QUIC 传输(RFC 9000,真实 QuicServer);每包解析预算可配 |
| L3 | `zenith-net` | SourceAdmissionEngine IP 黑名单/白名单、协议+端口三维过滤 |
| L2 | `zenith-linux` | AF_XDP Socket + UMEM + 四环、io_uring 批量 IO、splice/sendfile 零拷贝、CPU 亲和;`XskConfig` 收发缓冲/预填分块可配 |
| L2 | `zenith-ebpf` | eBPF 预编译字节码嵌入、libbpf 加载、双 Bank 热更新;config_map 键(MTU/协议白名单/fail-closed)热更新 |
| API | `zenith-api` | 三协议收敛到 CanonicalRequest/Response,固定容量数组,零堆分配 |
| Core | `zenith-core` | FramePool、资源账本、时间轮、恒定时间比较、Huffman、varint |
| Runtime | `zenith-runtime` | 全局 Tokio 运行时、三级 Supervisor、ChangeSet 八态热切换、AutoOptimizer |
| Capability | `zenith-capability` | 环境探测、PermissionSet 能力安全、Profile 三级自动降级 |
| Observability | `zenith-observability` | Prometheus 指标、审计日志、故障快照、分布式追踪 |
| Testkit | `zenith-testkit` | 测试工具、Demo、压力测试 |

## 🛡️ 系统级网络防火墙能力(L2→L4)

Zenith 区别于普通 Web 框架的核心——具备构建**系统级网络防火墙**的全部基础组件:

| 层级 | 组件 | 能力 | 等效系统工具 |
|------|------|------|-------------|
| L2 | AF_XDP + eBPF/XDP | 网卡驱动层线速包过滤(XDP_DROP/XDP_PASS) | xdp-bpf / tc-bpf |
| L3 | SourceAdmissionEngine | 源 IP 精确匹配黑名单/白名单 | iptables -s / nft |
| L3 | AddressWhitelist CIDR | 子网级过滤(/8, /16, /24) | iptables -s 10.0.0.0/8 |
| L4 | 端口过滤 | 源端口/目标端口精确匹配 | iptables -p tcp --dport |
| L4 | 协议过滤 | TCP(6)/UDP(17)/ICMP(1,58)/Any | iptables -p |
| L4 | TcpRelay | 端口转发/协议转换(TCP↔UDP) | iptables DNAT / socat |
| L4 | ForwardEngine | L4 转发 + 双向白名单 SSRF 防护 | haproxy mode tcp |

## 🔐 安全能力

| 能力 | 说明 |
|------|------|
| WAF | SQLi/XSS/SSRF/命令注入/路径穿越/BotThreat 6 检测器,50ms 预算 fail-closed;解码后就地删除(压缩)NULL 字节防注入绕过(保留 NULL 后载荷,杜绝截断漏检) |
| TLS 指纹 | JA3/JA4/JA4S/JA4O/JA4H/JA4L blocklist 前缀阻断 + 64 分片速率限制;**TCP/TLS 与 HTTP/3(QUIC) 连接均采集**(QUIC 裸 handshake ClientHello 经 `from_quic_client_hello` 解析,`fingerprint_h3_block_test` 实测黑名单 403) |
| 全链路指纹 | 34 采集器结构体(L3×5 + L4 TCP×6 + L4 UDP×3 + L6 TLS×8 + L6 QUIC×1 + L7 HTTP×5 + L7 H2×2 + L7 H3×2 + Timing×2,共 37 collect 入口),256B 固定宽度特征向量(Copy、零堆分配),决策引擎(规则+加权评分+黑白名单+64 分片速率+LRU 信誉),XDP/L4/L7 三级阻断 |
| 身份一致性 | SNI ↔ Host ↔ :authority 四元一致,不一致 → 421 |
| 请求走私防护 | HTTP/1.1 CL.TE/TE.CL/TE.TE 检测 |
| 恒定时间比较 | DCID/Token/密码/模式匹配防时序侧信道,`ct_compare` 使用 `core::hint::black_box` 增强 |
| 私钥零化 | `CertGeneration` 使用 `Zeroizing<PrivateKeyDer>`,作用域结束自动擦除私钥材料 |
| CORS 安全默认 | `allow_origin` 默认为空——不发送任何 CORS 头,需显式 `with_origin` 配置 |
| X-Forwarded-For | 反向代理自动追加客户端 IP 到 XFF 头 |
| H3 响应限制 | `drive_h3` 强制 `max_response_bytes`,与 H1 路径对齐 |
| QUIC 帧解析 | STOP_SENDING(0x05)独立解析,CRYPTO 缓冲区限制 65536 字节,Initial 保留位 Fixed Bit(0x40) 校验 |
| 连接池安全 | `ForwardLease` 实现 `Drop` + `pool_idx` 跟踪,panic 时防止连接池泄漏 |
| TCP 连接表 | `ConnectionTable` 使用 `free_stack` 实现 O(1) 槽位分配 |
| BPF redirect 安全 | `bpf_redirect_map` 使用 `XDP_PASS` flags,XSKMAP 竞态删除时回退到内核协议栈 |
| 审计日志默认脱敏 | `log()` 默认执行 IP 脱敏与敏感字段脱敏,`log_raw()` 保留原始写入 |
| PermissionSet u16 | 位掩码从 u8 扩展为 u16,编译期断言防止溢出 |
| QoS 继承 | 新 Worker 扩容后强制重放当前 QoS 设置 |
| TCP ACK 校验一致 | SynReceived 状态 ACK 序列号校验客户端/服务端一致(RFC 9293 §3.10) |
| 指纹向量槽位独立 | 每个采集器写入独立 FingerprintField 变体,消除数据覆盖丢失 |
| /metrics 认证 | 未配置 `metrics_auth_token` 时端点返回 404,配置时校验 `Authorization: Bearer` 恒定时间比较 |
| QPACK 总字节上限 | `decode_field_lines` 内同步累加 name+value 总字节,超 `MAX_TOTAL_HEADER_SIZE` 拒绝(解压炸弹防护) |
| ForwardEngine 三态 | None=允许透明转发,Some(empty)=fail-closed 拒绝全部,Some(non-empty)=按白名单过滤 |
| UMEM incref 安全 | `compare_exchange` 循环消除 load-then-fetch_add TOCTOU 窗口,ref_count=0 时 incref 失败 |

## 🔄 跨平台自动降级

```
高性能环境 (XDP Native + AF_XDP + 零拷贝 + BTF/CO-RE)
  → Performance (tier=3)  splice(2) + io_uring + AF_XDP + eBPF 全启用

中等环境 (XDP Generic + BPF,无 Native/零拷贝)
  → Balanced (tier=2)  XDP Generic + BPF,io_uring 可用

低能力环境 (无 XDP/AF_XDP/eBPF,如 Windows/最小容器)
  → Minimal (tier=1)  仅 std::net basic_socket,TcpRelay 回退 std::io::copy
  → WAF/代理/缓存/路由/转发 全功能可用
```

`EnvironmentDetector` 真实探测 → `ProfileSelector` 多目标评分自动选择 → `degrade()` 三级降级链。

## 🔄 运行时热更新(全链路 L2→L7)

作为**依赖库**,除固定协议规范标准外,所有运行参数均支持运行时热更新(无需重建服务器/引擎),实现最高自由度:

- **L7 web**`server.update_runtime(|r| ...)` 无锁原子热更新:WAF 开关/按 host 黑白名单/规则集、指纹安全/限流/阻断、UDP/L4 转发会话、Supervisor 熔断、HTTP/1.1 请求上限/空闲超时、请求体上限、读/写缓冲、HTTP/2 帧长/并发流、HTTP/3 字段段、/metrics 令牌、监听地址、缓存容量
- **L7 代理**`set_proxy_config`/`update_proxy_config``ProxyConfig` 20+ 旋钮;转发超时对既有路由立即生效,池/健康阈值对新路由生效
- **L4 转发**`set_forward_config``ForwardConfig`(并发会话上限/单会话带宽)即时生效
- **L2/L3** — eBPF `config_map`(MTU/协议白名单/fail-closed/期望策略)、`XskConfig` 收发缓冲/预填分块、每包解析预算 `parse_packet_with_budget`

> **性能**:热路径标量一律 `AtomicU64`/`AtomicBool` 单指令原子加载(零锁零竞争);host 名单仅启用时才触碰 `RwLock`;写(热更新)低于微秒级,不触碰读热路径,更新对所有 `clone` 副本立即生效。
> **固定内容**:协议规范常量(头长、帧长、MTU 标准值、QUIC 版本等)与 Worker `MAX_BATCH_SIZE`(固定栈数组零堆分配优化)不可改。

## 📦 按需导入

Zenith 默认仅启用最小核心(`api` + `core`),其余能力按需开启。

### 最小依赖(仅类型定义)

```toml
[dependencies]
zenith = { path = "...", default-features = false, features = ["api"] }
```

```rust
use zenith::api::{CanonicalRequest, Method};

let mut req = CanonicalRequest::empty();
req.method = Method::Get;
req.set_path("/api/users");
```

### 仅 Web 框架(不拖入 AF_XDP / eBPF / 运行时数据面)

```toml
[dependencies]
zenith = { path = "...", default-features = false, features = ["web"] }
```

```rust
use zenith::web::{App, WebError};
use zenith::api::{CanonicalRequest, CanonicalResponse};

let mut app = App::new();
app.get("/health", |_req, _params| Ok(CanonicalResponse::new(204)));
```

### 仅 HTTP 协议解析(无 Linux 数据面)

```toml
[dependencies]
zenith = { path = "...", default-features = false, features = ["http"] }
```

### 完整生产协议栈

```toml
[dependencies]
zenith = { path = "...", features = ["full-stack"] }
```

### 全部能力(含测试工具)

```toml
[dependencies]
zenith = { path = "...", features = ["full"] }
```

## 🧩 Feature 矩阵

| Feature | 启用能力 | 重依赖 |
|---|---|---|
| `api` | 公共类型定义(CanonicalRequest/Response 等) ||
| `core` | 核心基础设施(FramePool/账本/ct_compare/时间轮) | `thiserror` |
| `net` | L2-L4 协议解析、TCP/UDP/QUIC 状态机、SourceAdmissionEngine、Worker | `core``linux` 数据面由 `linux` feature 开启 |
| `linux` | AF_XDP Socket、UMEM、四环、io_uring、splice | `libc``io_uring` 可选) |
| `ebpf` | eBPF 程序加载、双 Bank 热更新 | `libbpf-rs``libc` |
| `tls` | TLS 1.3 引擎、证书代际、JA3/JA4/JA4S/JA4O/JA4H 指纹 | `rustls``ring` |
| `http1`/`http2`/`http3` | HTTP 协议解析器 | 依赖 `net` |
| `web` | Web 框架(路由/中间件/静态文件/SecurityPipeline,默认 full) | `serde``serde_json``rustc-hash``ring` |
| `proxy` | 反向代理、6 种负载均衡、熔断器、连接池 | `rustls``quinn-proto``bytes``smallvec` |
| `cache` | HTTP 缓存层(16 分片、条件请求) ||
| `waf` | Web 应用防火墙(6 检测器、50ms 预算) ||
| `fingerprint` | 全链路指纹识别与阻断(L3-L7 采集 + 决策 + 阻断) | 独立运行 |
| `forward` | L4 转发(TcpRelay、CIDR 白名单、协议转换) | `linux` feature 启用 splice |
| `runtime` | 全链路数据面运行时(Supervisor、ChangeSet、AutoOptimizer) | 依赖 `net` + `linux` + `ebpf`,并升级 `zenith-web``full` |
| `capability` | 环境探测、能力安全、Profile 三级自动降级 ||
| `observability` | 指标、tracing、审计日志、故障快照 ||
| `audit` | cargo-audit(netlink 链路) | `audit`(仅 Linux) |
| `testkit` | 测试工具、Demo、压力测试 | 依赖 `full` |
| `http` | 组合:http1 + http2 + http3 ||
| `full-stack` | 组合:完整生产协议栈 ||
| `full` | 组合:全部能力 ||

## 📥 直接引用子 crate

除使用 facade 外,也可直接引用单个子 crate(适合只需求某一独立能力的场景):

```toml
[dependencies]
zenith-web = { path = ".../zenith/crates/zenith-web" }
```

子 crate 的 `default` 特性均为空,仅包含必需依赖。

## 🎯 设计原则

- **Fail-Closed**:探测/构建/解析失败取安全默认值,永不 panic
- **热路径零堆分配**:固定容量数组替代 String/Vec
- **单线程本地存储**:无锁访问、对象池复用
- **编译期路由注册**:运行期零开销分发
- **unsafe 隔离**:所有 unsafe 封装在 `zenith-linux`/`zenith-ebpf` 内部,上层零 unsafe
- **Copy 语义**:核心类型支持 Copy,避免 Clone 开销
- **代际安全**:证书/配置双 Bank 原子切换
- **恒定时间比较**:DCID/Token/密码/模式匹配防时序侧信道,`core::hint::black_box` 增强
- **L2→L7 全栈**:从网卡驱动层包过滤到应用层 WAF,单一代码库覆盖完整网络安全数据面
- **跨平台兼容**:Linux 极致性能,Windows/其他平台自动降级仍全功能可用

## ✅ 协议合规验证(真实进程级)

| 协议 | 工具 | 结果 |
|------|------|------|
| HTTP/1.1 Plain | wrk -t4 -c200 -d8s | **60,359 req/s**,p50 5.14ms(483k 请求),0 socket errors(WSL Ubuntu 26.04,`0.0.0.0`|
| HTTP/1.1 Plain 低并发 | wrk -t2 -c20 -d5s | **90,706 req/s**,p50 249µs |
| HTTP/1.1 Plain POST | wrk -t4 -c200 -d8s -s bench/post.lua | **32,881 req/s**(服务器按 405 正常处理) |
| HTTP/1.1 Plain 非保活 | wrk -t4 -c200 -d8s -s bench/close.lua | **26,327 req/s**(每请求建连) |
| HTTP/1.1 TLS | curl.exe -k(wrk 4.1.0 不支持 TLS) | 200(TLS 1.3,ALPN h2/http1.1) |
| HTTP/2 | h2spec | 146/146 通过 |
| HTTP/2 | curl.exe --http2 | 200(TLS ALPN h2 协商成功) |
| HTTP/3 | curl.exe --http3 | 200(QUIC + io_uring 批量收发) |
| HTTP/3 | h3spec | 49/49 通过(IPv4 + IPv6) |
| HTTP/3 互操作 | curl --http3-only | 外部 curl(nghttp3/ngtcp2)真实 QUIC 握手 + HTTP/3 200 + 连接复用 |
| TLS 1.3 | curl -vk | TLS_AES_256_GCM_SHA384 / X25519 / ALPN h2 |
| hping3 TCP | hping3 -S | SYN 全应答,服务存活(2000 包无丢包) |
| WAF | curl 攻击 payload | SQLi/XSS/SSRF/命令注入/路径穿越/NULL 字节注入 全拦截 403;BotThreat UA(sqlmap/nikto 等)403(Plain/TLS/H3 三模式) |
| IPv6 | curl [::1] | 200(Plain + TLS + H3 模式;WSL curl 与 Windows curl.exe 双端验证) |
| 指纹阻断 | curl.exe Ja3/Ja4 | TCP/TLS 与 HTTP/3(QUIC) 黑名单 403 均真实生效 |
| CVE | cargo-audit | 无风险 |
| 内存 | 进程级 RSS 观测 | 200 连接负载下稳定于 ~74MB 平台,无泄漏 |

## 🧪 测试

```bash
# 全量测试(含所有特性)
cargo test --workspace --all-features

# 仅默认特性
cargo test -p zenith

# 单 crate 测试
cargo test -p zenith-web
```

当前测试基线:**3235 项通过 / 0 失败(53 套件,`cargo test --workspace --all-features`)**。安全审计修复后基线:aws-lc-rs 已从依赖树彻底移除(rustls + ring 为唯一密码学后端)。

### 安全审计修复项

**v1 审计修复(9 项代码 + 4 项文档):**
- `detection.rs``VmLk` 字段名修正(原 `MaxLockedMemory` 不存在于 `/proc/self/status`- `runtime.rs``start()` 控制线程失败时回滚状态到 `Created`
- `static.rs``read_range` 统一使用 `open_nofollow`(TOCTOU 符号链接窗口)
- `cert_manager.rs`:代际 ID 溢出改用 `saturating_add`
- `quic.rs``cipher_suite()``negotiated_cipher_suite()` 读取实际协商结果
- `audit.rs``clear()` 增加置 `None` 清理残留字节
- `supervisor.rs``DomainSupervisor::shutdown` 清理 `queues` ChildSet
- `sni.rs``Sniprovider``SniProvider`;SNI 统一 `to_ascii_lowercase()`
- `graph.rs``InsufficientResources` 字段语义修正 + `worker_id_counter` 溢出保护

**v2 综合审计(31 个任务,约 100 个子任务):2 CRITICAL + 4 HIGH + 9 P1 MEDIUM + 9 P2 + 8 LOW**
- AuthMiddleware 凭据校验(默认 `require_non_empty`,可选恒定时间比较)
- QUIC 流表索引(H3 stream ID 取模 u64 空间)
- H3 响应大小限制(`drive_h3` 强制 `max_response_bytes`- TCP 连接表 off-by-one(`free_stack` O(1) 槽位)
- ForwardLease Drop(panic 时防连接池泄漏)
- WAF NULL 字节过滤 + SQLi/XSS/路径穿越模式扩展
- 私钥零化(`Zeroizing<PrivateKeyDer>`- CORS 安全默认(`allow_origin` 默认为空)
- X-Forwarded-For、ct_compare black_box、QUIC STOP_SENDING 独立解析、CRYPTO 缓冲 65536、ChunkedDecoder trailer 8192、TimerWheel 钳位、连接池精确索引

**v3 22 维度审计(4 High + 21 Medium + 18 Low):**
- BPF `bpf_redirect_map` flags 改为 `XDP_PASS`
- `detect_locked_memory_kb``getrlimit(RLIMIT_MEMLOCK)` 读取上限
- `ct_compare` 衍生函数添加 black_box
- 指纹评分模型引入白名单/黑名单
- 指纹向量槽位冲突修复(新增 `TlsAlertSig`/`QuicExtOrder`/`TimingRttMs` 独立变体)
- `DecisionAction→EnforcementAction` 映射、`ForwardEngine` 无白名单 fail-closed
- LRU/FIFO 用 BTreeMap O(log n)、Histogram Prometheus 格式、`PermissionSet` u16、QoS 继承、TCP ACK 校验、审计脱敏

**v4 22 维度系统级再审计(6 P0 + 12 P1 + 20 P2):**
- `ct_compare` 全函数 black_box、`ChunkedSig` 槽位拆分、Blacklist FxHashSet O(1)
- TCP SynReceived 簿记修正、`ExpectationConfig` 布局对齐、/metrics Bearer 认证
- QPACK 总字节上限接线、`ForwardEngine` 三态、Histogram 双花括号、timer_wheel 死重移除、UMEM incref TOCTOU、smuggling 去重、escape_json 去重

**v5-v7 深度再审计(多轮闭环):**
- QUIC 保留位 Fixed Bit(0x40) 校验(RFC 9000 §17.2)
- BPF `queue_map` 跨 crate 缺失(Rust `BpfMaps` 移除残留字段)
- BPF 分片策略首分片逃逸(`frag_off & 0x3FFF`,重编 .o)
- WAF NULL 字节 SQLi fail-open 修复(就地压缩删除,保留 NULL 后载荷)
- runtime `assign_domain` 防超卖 + `extreme_planner` 容错
- 指纹评分 RTT 维度覆盖、`XdpPolicyWriter` 恒 Err 移除、死代码清理(workspace 0 警告)

**v8 全链路修复与加固(`zenith-fix-hardening`,246 项审计发现中可落地项):**
- **恒定时间比较**(CORE-001/002/026):`ct_compare` 5 函数移除提前返回,长度差经累加器聚合,消除令牌/签名时序侧信道
- **FramePool/Ledger 一致性**(CORE-004/006/007/008/009/011/012/013/023/024/031):release 错误路径回滚、守恒等式异常路径不破坏、双重计数修正
- **L4 转发资源耗尽**(APP-010/030):中继 SO_RCVTIMEO + splice 超时双向 shutdown 回收半开连接
- **HTTP/1-2-3 解析**(HTTP-002/004/015/016/020/023/027/035):HPACK 动态表溢出、CONTINUATION 非法通过、QPACK Huffman 位复核(HTTP-025 为审计误报);额外修复 hpack `decode_integer` 绝对/相对步长 bug(http2 10 fail 清零)
- **0-RTT 重放/降级**(TLS-003/004/011):默认 `max_early_data_size=0` + 60s 重放窗口 + TLS1.3 强制校验
- **eBPF/XDP 过滤链**(NET-016/011/010/013/014):默认 Bank 走 `xdp_main`、IPv6 扩展头 PASS、分片策略 1 fail-closed、白名单单一权威来源(WSL2 无法真实挂载,静态修复 + `make -C bpf` clang 编译验证)
- **WAF 误报收敛**(APP-014/015/017):裸单字符操作符/内网 IP 全段扫描收敛,威胁仍 403、良性 200
- **系统/运行时/代理**(SYS-005/006/008/011/014/016/021/024/026 + APP-023/026/028 + NET-018/019/028):背压账本、自动降级阈值、CPU 亲和映射、Cache-Control 严格合并、审计环形缓冲 fail-closed、Header 合并 DoS、H2 响应头上限、HalfOpen 限并发、带宽真实节流、CIDR 匹配、跨族通配、SYN-ACK ISN 校验
- **TCP 状态机加固**(NET-020/021):`handle_new_syn` 非监听 fail-closed、off-path FIN/RST 接入 `is_seq_in_rcv_window` 窗口校验
- **错误分层**(ENG-006/007/012/013/015):`ServerError::Http3` 统一 H3 双路径、`WebError` 结构化、前缀整数/varint 收敛 core、方法单一解析器
- **H3 coalesced 1-RTT 竞态**:quic_server 三处守卫(coalesced long/short + 独立 short 路径)握手未完成时推迟到 pending_1rtt,消除 DecryptError
- **验证**:h2spec 146/146、h3spec 49/49、四协议 curl.exe 全 200、IPv6 200、wrk 55,847/79,006 req/s(远超 25k 门槛)、hping3 SYN 514k/UDP 902k 洪水后存活、威胁 403/良性 200、JA3/JA4 阻断(含 H3 QUIC)、L2/L3/L4 23/23+10/10、热更新 18/18

## 🛠️ 构建要求

- Rust 1.97.1+(Stable,禁止 Nightly/Beta),edition 2024
- Linux 内核 5.4+(启用 `linux` / `ebpf` / `runtime` 特性时)
- libbpf 1.0+(启用 `linux` / `ebpf` 特性时)
- Windows/macOS:无需特殊依赖,自动降级到 `std::net`

## 📜 License

Zenith 采用多许可证模型发布,您可以为自己的用例任选其一:

- **GPL-2.0** — 见 [LICENSE-GPL2]LICENSE-GPL2
- **MIT** — 见 [LICENSE-MIT]LICENSE-MIT
- **Apache-2.0** — 见 [LICENSE-APACHE]LICENSE-APACHE

完整的选型指南、企业支持与闭源商用方案请参阅 [COMMERCIAL.md](COMMERCIAL.md)。