架构概览
状态:Current
最后核对:2026-05-16
仓库
nexus-backend:Rust 控制面、REST API、secure gRPC Agent 控制、PostgreSQL、部署逻辑、凭据和仪表盘数据。nexus-agent:Rust 节点 Agent、L4 gateway、TCP/UDP forwarding、Noise/REALITY、Quinn QUIC REALITY、QUIC DATAGRAM、L3 TUN 数据面和指标。nexus-frontend:Next.js 控制台。nexus-docs:规范文档。
控制面
当前控制面由 nexus-backend 实现:
/apiREST API。- JWT 认证和 RBAC。
- PostgreSQL 迁移。
- secure control stream 中的节点认证、心跳和数据库权威
RuntimeConfigSnapshot配置推送。 - 接收 Agent 上报的运行时端口 listener 状态,并提供
/api/nodes/ports/runtime。 - L4 chain 持久化和部署。
- L3 tunnel 持久化和部署。
- 上游、TLS、X25519 和 REALITY profile 管理。
- 仪表盘和审计 API。
运行时使用 Rust 2024、Axum、Tonic、SQLx/PostgreSQL。Redis 在 compose 中作为支撑服务和后续限流/辅助能力。
Agent 面
nexus-agent 负责:
- 使用 secure control stream 连接后端。
- 接收数据库权威
RuntimeConfigSnapshot,其中包含PingoraConfig、L3TunnelConfig和NodeConfig。 - 运行 TCP、UDP、TLS、REALITY 和 Quinn QUIC REALITY listener。
- 应用
TcpProxyRule、UdpRule、QuicRule、L3TunnelRule、上游和 TLS 证书。 - 当流量可通过 SNI、REALITY short ID、UDP Noise key、QUIC Initial 检测或 RAW fallback 区分时,合并同端口 route table。
- 上报指标和运行时 listener 表。
关键模块:
src/gateway/mod.rs:L4 gateway 编排和测试。src/gateway/udp.rs:UDP 会话、Noise、QUIC REALITY DATAGRAM upstream,以及嵌入式 QUIC REALITY route 的共享 UDP socket 分发。src/gateway/crypto.rs:Noise/ENC 辅助。src/gateway/quic.rs:Quinn QUIC REALITY listener、client pool、stream relay、DATAGRAM relay、L3 context 和指标。src/l3/*:L3 TUN、路由、packet、dataplane、transport 和 metrics。crates/reality-core:REALITY/TLS 原语。crates/reality-io:TCP REALITY stream/session 辅助。crates/quinn-reality:Quinn crypto trait 的 REALITY bridge。
前端
当前控制台页面:
- Login
- Dashboard
- Nodes
- Gateway L3 tunnels
- Gateway L4 chains
- Gateway L4 upstreams
- Gateway security credentials
- Audit
- Settings and users
当前数据面
| 路径 | 状态 |
|---|---|
| TCP over TCP RAW | 完成 |
| TCP over TCP TLS | 完成 |
| TCP over TCP REALITY | 完成 |
| UDP over UDP RAW | 完成 |
| UDP over UDP Noise | 完成 |
| TCP over QUIC REALITY | 完成 |
| UDP over QUIC REALITY DATAGRAM | 完成 |
| IP over QUIC REALITY DATAGRAM | 完成 |
手写 quic-core runtime 路线已经被 Quinn 实现取代。
数据面方向
Kernel DCO 是未来的项目级 offload 方向,不只属于 QUIC REALITY。它覆盖 TCP、UDP、QUIC 和 L3 dataplane 中可用的 kernel/eBPF/socket/TUN/helper 加速点,但当前仓库没有自定义 DCO 实现。
See: