North9LLC/Seam
GitHub: North9LLC/Seam
基于 Rust 实现的后量子加密 UDP 传输协议库,内置 FEC、多流复用和抗 DDoS 握手,解决高丢包高延迟环境下 TCP/QUIC 性能不足和队头阻塞问题。
Stars: 1 | Forks: 0
# Seam
**后量子加密传输协议 — 使用 Rust 编写。**
UDP · 多流 · 内置 FEC · Noise_XX + ML-KEM-768
[](https://github.com/North9LLC/Seam/actions/workflows/ci.yml)
[](LICENSE)
[](#getting-started)
Seam 是一个用户空间传输协议,适用于 TCP 或 QUIC 性能表现不佳的应用场景。它在一个库中提供了加密、匀速发送的 UDP 传输,支持多流复用、前向纠错以及混合后量子握手。
| 功能 | 详情 |
|---|---|
| Transport | UDP,采用 CUBIC 拥塞控制 + 令牌桶匀速发送 |
| Encryption | ChaCha20-Poly1305 数据包加密 + 头部保护 |
| Handshake | Noise_XX + ML-KEM-768(后量子混合,247 µs) |
| Reliability | ARQ + GF(2⁸) 前向纠错 |
| Multiplexing | 优先级调度流(0–7,0 = 最高) |
## 为什么选择 Seam
- **无队头阻塞。** 各流独立调度 — 停滞的大批量传输绝不会延迟控制消息。
- **默认后量子安全。** ML-KEM-768 已内置到握手中。“现在收集,以后解密”的攻击无法获取会话密钥。
- **传输层 FEC。** 数据包丢失在本地即可恢复,无需往返重传。
- **匀速发送,而非突发。** 令牌桶匀速控制器以 `cwnd/srtt` 字节/秒的速率运行,消除了困扰原生 UDP 的突发性队列堆积。
- **抗 DDoS 握手。** 无状态 Cookie 验证 — 在客户端证明其能在声称的地址接收数据之前,不进行堆内存分配。
## 性能
**在 1400 B MTU 下,每个核心的加密吞吐量为 568 MiB/s(约 4.76 Gbps)。包含 ML-KEM-768 在内的完整握手仅需 247 µs。**
### 数据包编码 — ChaCha20-Poly1305 + 头部保护
| 负载 | 耗时 | 吞吐量 |
|---|---:|---:|
| 64 B | 350 ns | ~303 MiB/s |
| 256 B | 644 ns | ~455 MiB/s |
| 512 B | 1.03 µs | ~519 MiB/s |
| 1400 B | 2.43 µs | **~568 MiB/s** |
### FEC 编码/恢复 — 1400 B 符号
| 配置 | 编码 | 恢复 1 个丢失 |
|---|---:|---:|
| k=4, r=1 | ~5.5 µs | ~10.4 µs |
| k=8, r=2 | ~11 µs | ~21 µs |
| k=10, r=3 | ~16 µs | ~32 µs |
### 握手 — Noise_XX + ML-KEM-768
| 操作 | 耗时 |
|---|---:|
| `IdentityKeypair::generate` | 17.8 µs |
| `PacketKeys::derive_from_secret` | 370 ns |
| `CookieFactory::generate` | 91 ns |
| `CookieFactory::verify` | 88 ns |
| **完整握手(3 条消息)** | **247 µs** |
### 会话刷新吞吐量
| 负载 | 1 个流 | 4 个流(同等优先级) | 4 个流(混合优先级) |
|---|---:|---:|---:|
| 256 B | 1.76 µs / 139 MiB/s | 3.27 µs | 3.35 µs |
| 4 KB | 8.4 µs / 462 MiB/s | 9.2 µs | 9.3 µs |
| 16 KB | 30.5 µs / 513 MiB/s | — | — |
优先级调度开销:与同等优先级相比多出 **~2.4%**。
## 对比
| | Seam | TCP + TLS 1.3 | QUIC | Raw UDP |
|---|:---:|:---:|:---:|:---:|
| 队头阻塞 | ✅ 无 | ❌ 整个流 | ⚠️ 单个流内 | ✅ 无 |
| 内置 FEC | ✅ | ❌ | ❌ | ❌ |
| 流优先级 | ✅ 原生 0–7 | ❌ | ⚠️ 上层实现 | ❌ |
| 突发控制 | ✅ 令牌桶 | ⚠️ 内核拥塞控制 | ⚠️ 依赖实现 | ❌ |
| 后量子 KEM | ✅ ML-KEM-768 | ❌ 视情况而定 | ❌ 视情况而定 | ❌ |
| 抗 DDoS 握手 | ✅ Cookie | ❌ | ✅ | — |
## 快速入门
```
# 添加到 Cargo.toml
# seam-protocol = { git = "https://github.com/North9LLC/Seam" }
cargo build --all-targets
cargo test --all-targets
cargo bench
```
### 客户端 / 服务端
```
use seam_protocol::{api::{Client, Server}, handshake::IdentityKeypair};
// Server
let id = IdentityKeypair::generate();
let mut server = Server::bind("0.0.0.0:4433".parse()?, id).await?;
let conn = server.accept().await.unwrap();
// Client
let id = IdentityKeypair::generate();
let mut client = Client::bind("0.0.0.0:0".parse()?, id).await?;
let conn = client.connect(server_addr, &server_x25519, &server_kem_pk).await?;
```
### 复用流
```
use seam_protocol::tunnel::SeamMux;
let mux = SeamMux::new(conn);
// Locally-initiated stream
let mut stream = mux.open_stream().await;
// Accept a remote-initiated stream
let mut stream = mux.accept_stream().await.unwrap();
// SeamStream implements AsyncRead + AsyncWrite + Unpin
tokio::io::copy_bidirectional(&mut stream, &mut other).await?;
```
## 仓库结构
```
src/
├── api.rs # Client, Server, SeamConn
├── tunnel.rs # SeamMux + SeamStream (AsyncRead + AsyncWrite)
├── crypto/ # ChaCha20-Poly1305, header protection, anti-replay
├── handshake/ # Noise_XX + ML-KEM-768, DDoS-resistant cookie
├── session/ # Streams, ARQ, flow control, priority scheduling
├── fec/ # GF(2⁸) arithmetic, systematic RS codec, FEC/ARQ arbiter
└── transport/ # Connection, endpoint, CUBIC CC, pacer, path probing
benches/ # Criterion benchmarks
fuzz/ # cargo-fuzz targets
```
## 许可证
Seam 采用双重许可:
- **开源:** [GNU Affero General Public License v3.0](LICENSE) — 免费用于开源项目和个人使用
- **商业:** 如用于专有软件、政府、SaaS 或 OEM 用途,请联系 [licensing@north9.org](mailto:licensing@north9.org)
详情请参阅 [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL)。标签:ChaCha20-Poly1305, CUBIC, FEC, ML-KEM-768, Noise协议框架, Rust, UDP协议, 令牌桶 pacing, 传输层安全, 低延迟, 内核驱动, 前向纠错, 加密通信, 可视化界面, 可靠传输, 后量子密码学, 多路复用, 安全传输协议, 抗量子加密, 拥塞控制, 无队头阻塞, 混合密钥交换, 用户态网络, 网络协议, 网络安全, 网络流量审计, 通知系统, 防DDoS, 隐私保护, 高吞吐量