Skip to content

Hatedatastructures/forward-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ForwardEngine

C++23 Platform License Build Architecture

个人独立开发的现代高性能协程代理引擎

📖 项目简介

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
Loading

快速开始

环境要求

  • 编译器: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 -j

Linux/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/ 目录:

教程

技术手册

协议文档

参考资料

项目管理

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

ForwardEngine - 为现代网络而生的高性能协程代理引擎

About

基于 C++23 与 Boost.Asio/Beast 构建的协程代理

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors