ForwardEngine 是一款基于 C++23 协程 与 Boost.Asio 构建的高性能代理引擎。
它采用了现代 C++ 的最新特性——纯协程架构与PMR 内存模型,专为低延迟、高并发的网络转发场景打造。无论是作为代理网关、网络中间件,还是边缘转发节点,ForwardEngine 都能提供极致的性能与优雅的代码体验。
💡 设计哲学:用协程消灭回调地狱,用内存池消除堆分配,用零拷贝减少数据搬移。
| 特性 | 说明 |
|---|---|
| 🚀 纯协程架构 | 核心链路全程 co_await,无回调地狱,代码可读性极高 |
| 💾 PMR 内存策略 | 全局内存池 + 帧分配器,热路径零堆分配 |
| 🔌 智能连接池 | TCP 连接复用,僵尸检测、空闲超时、端点缓存上限 |
| 🔀 透明隧道转发 | 握手后双向透传 TCP 字节流,零协议感知开销 |
| 🔍 动态协议识别 | 首包嗅探 HTTP/SOCKS5/TLS,自动分流处理 |
| ⚖️ 负载均衡与反压 | 基于评分的 Worker 选择,过载检测与滞后机制 |
| 🎯 Clash 兼容 | 支持 Clash 客户端配置,自动切换路由 |
| 协议 | 状态 | 说明 |
|---|---|---|
| HTTP/HTTPS | ✅ | HTTP 正向代理与 CONNECT 隧道 |
| SOCKS5 | ✅ | RFC 1928,TCP CONNECT + UDP ASSOCIATE |
| TLS | ✅ | 服务端 TLS 终止,解密后按 HTTP 处理 |
| Trojan | ✅ | Trojan over TLS,凭据验证 + 流量转发 |
graph TB
subgraph 接入层
L[Listener] --> B[Balancer]
B --> W1[Worker 1]
B --> W2[Worker 2]
B --> W3[Worker N]
end
subgraph 执行层
W1 --> S[Session]
S --> H[Handler]
H --> R[Router]
R --> P[Connection Pool]
end
subgraph 协议层
H --> HTTP
H --> SOCKS5
H --> TLS
H --> Trojan
end
subgraph 上游
P --> Target[目标服务器]
end
- 编译器:GCC 13+ / Clang 16+ / MSVC 2022+(支持 C++23)
- 构建系统:CMake 3.15+
- 依赖:Boost(system)、BoringSSL、spdlog、glaze
Windows(MinGW)
cmake -S . -B build_release -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build_release -jLinux/macOS
cmake -S . -B build_release -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build_release -j程序默认读取 src/configuration.json,监听 8081 端口:
build_release/src/Forward.exe验证代理功能:
curl -v -x http://127.0.0.1:8081 http://www.baidu.com
curl -v -x http://127.0.0.1:8081 https://www.baidu.com
curl -v -x socks5://127.0.0.1:8081 http://www.baidu.com配置文件位于 src/configuration.json,核心配置项:
| 字段 | 描述 | 默认值 |
|---|---|---|
addressable |
监听端点 | localhost:8081 |
positive |
后端服务或者上游代理(可选) | - |
certificate |
TLS 证书配置 | ./cert.pem, ./key.pem |
pool.max_cache_per_endpoint |
单端点最大缓存连接数 | 32 |
pool.max_idle_seconds |
空闲连接最大存活时间 | 60 |
authentication.credentials |
凭据列表(SHA224 哈希) | - |
详细配置说明请参阅 配置详解。
ForwardEngine/
├── include/forward-engine/ # 核心库头文件
│ ├── exception/ # 异常定义
│ ├── loader/ # 配置加载
│ ├── agent/ # 代理核心逻辑
│ ├── core/ # 核心配置
│ ├── fault/ # 错误码与工具
│ ├── memory/ # PMR 内存管理
│ ├── protocol/ # 协议实现
│ ├── rule/ # 规则引擎
│ ├── trace/ # 日志系统
│ ├── transformer/ # 数据转换
│ └── transport/ # 传输层
├── src/ # 实现与入口
├── test/ # 测试
├── docs/ # 文档
│ ├── tutorial/ # 用户指南
│ ├── manual/ # 开发者指南
│ ├── protocols/ # 协议文档
│ ├── reference/ # 参考资料
│ ├── examples/ # 示例配置
│ └── project/ # 项目管理
└── CMakeLists.txt# 运行所有测试
ctest --test-dir build_release --output-on-failure
# 关键测试用例
./build_release/test/session_test # 会话生命周期
./build_release/test/socks5_test # SOCKS5 协议
./build_release/test/connection_test # 连接池复用- SOCKS5 仅支持无认证模式,密码验证待实现
- 反向代理路由表暂不支持热更新
详细文档位于 docs/ 目录:
- 架构设计 - 架构能力分析、时序链、关键实现细节
- 模块设计 - front、worker、session 等模块详解
- 运行时流程 - Session 创建、协议检测、隧道转发流程
- 路由与分发 - Registry 单例模式、Handler 工厂
- API 参考 - 公开 API 入口与头文件组织
- HTTP 协议 - HTTP 请求调用流程
- SOCKS5 协议 - SOCKS5 握手与地址解析
- Trojan 协议 - Trojan SSL 握手与凭据验证
- TLS 协议 - TLS 握手与协议检测
- 开发进度 - 项目概况、版本状态、路线图
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
ForwardEngine - 为现代网络而生的高性能协程代理引擎