V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
YUX
V2EX  ›  分享创造

我用 Zig 重写(并重新设计)了 frp 和 rathole

  •  1
     
  •   YUX ·
    PRO
    ·
    YUX · 21 小时 54 分钟前 · 1111 次点击
    ███████╗██╗      ██████╗  ██████╗
    ██╔════╝██║     ██╔═══██╗██╔═══██╗
    █████╗  ██║     ██║   ██║██║   ██║
    ██╔══╝  ██║     ██║   ██║██║   ██║
    ██║     ███████╗╚██████╔╝╚██████╔╝
    ╚═╝     ╚══════╝ ╚═════╝  ╚═════╝
    
    
    Dependencies:  Floo      ∅ (zero)          ⭐
                   Rathole   ████████████████████████████ (27+ crates)
                   FRP       █████████████████████████████████ (34+ packages)
    
    Binary Size:   Floo      ▌ 671 KB total (394 KB + 277 KB)  ⭐
                   Rathole   ████ ~2-4 MB total
                   FRP       ████████████████████████████████ ~24+ MB total
    
    Throughput:    Floo      ██████████████████████████████ 29.4 Gbps ⭐
                   Rathole   ██████████████████ 18.1 Gbps
                   FRP       ██████████ 10.0 Gbps
    

    floo

    floo github

    最近尝试了一下 vibe coding ,在整理一些之前自己写过的一些小工具,有很多没有发出来是因为从一个自己用的工具到一个公开的,可能对很多人有用的工具之间,有一些我不太擅长处理的步骤,比如写一个好看的 README ,写一个好看的介绍页面,研究一下 GitHub 的一些新操作,就像是快递的最后一公里。最近订阅了一下 codex 和 claude code ,正好把这部分工作完成了,当然还有一些代码审查,单元测试等繁琐的工作。

    Feature Floo Rathole FRP
    Language Zig Rust Go
    Dependencies 0 27+ crates 34+ packages
    Max Throughput (M1) 29.4 Gbps 18.1 Gbps 10.0 Gbps
    vs Rathole +62% faster baseline -45% slower
    vs FRP +194% faster +81% faster baseline
    Encryption Noise XX + PSK Noise NK, TLS, WS TLS
    Ciphers 5 AEAD (AEGIS, AES-GCM, ChaCha20) ChaCha20-Poly1305 TLS standard
    TCP Forwarding
    UDP Forwarding
    Multi-Service ✅ Per tunnel ✅ Per tunnel ✅ Per process
    Parallel Tunnels ✅ Round-robin (1-16) 🔶 Not documented ✅ Connection pool
    Token Auth ✅ Per-service + default ✅ Per-service + default ✅ Global + OIDC
    Hot Config Reload ✅ SIGHUP (both) ✅ Dynamic services ✅ Admin API
    Heartbeat ✅ Configurable ✅ Configurable ✅ Configurable
    Auto-Reconnect ✅ Exponential backoff ✅ Exponential backoff ✅ Reconnection
    Built-in Diagnostics --doctor, --ping 🔶 Logging only ✅ Dashboard, Prometheus
    Config Format TOML TOML TOML, INI, YAML
    CLI Overrides ✅ Port, host, target, proxy 🔶 Limited ✅ Via flags
    IPv6 Support
    Proxy Client ✅ SOCKS5, HTTP CONNECT ✅ SOCKS5, HTTP ✅ HTTP, SOCKS5
    Compression ❌ Planned
    HTTP Features ✅ Virtual hosts, auth
    P2P Mode ✅ XTCP, STCP
    Load Balancing ✅ Round-robin tunnels 🔶 Not documented ✅ Multiple backends
    Binary Size 394 KB + 277 KB ~1-2 MB each ~12-13 MB compressed
    Platform macOS, Linux (Windows planned) Linux, macOS, Windows All platforms
    17 条回复    2025-11-07 12:30:04 +08:00
    dreamk
        1
    dreamk  
       20 小时 37 分钟前   ❤️ 2
    经典米氏对比法。zig 用户最爱炫的这句 zero dependencies 不是生态不足的表现吗
    YUX
        2
    YUX  
    OP
    PRO
       20 小时 27 分钟前
    @dreamk 也是爽点
    tinkerer
        3
    tinkerer  
       19 小时 43 分钟前
    对比的话应该再加上 cpu, mem 使用情况
    tinybaby365
        4
    tinybaby365  
       19 小时 42 分钟前
    加密算法不一样,性能数据就没有比较的意义
    Judoon
        5
    Judoon  
       19 小时 41 分钟前   ❤️ 1
    floo-aarch64-linux-gnu.tar.gz 在树莓派 5 ( Debian 12 )上跑不起来: "Illegal instruction"

    但在 macos m4 上的 aarch64 linux 虚拟机里面能跑
    yb2313
        6
    yb2313  
       19 小时 36 分钟前   ❤️ 1
    好怪, 你的 gh 账户看起来又新又旧的
    Aixtuz
        7
    Aixtuz  
       18 小时 21 分钟前
    说实话,就个人使用的话,表中有不少元素感觉不到影响,也压根不在乎。
    反而更在意:简单、够用、稳定。
    ahu
        8
    ahu  
       18 小时 20 分钟前
    看起来不错!

    尽快把中文文档什么的完善一下,估计会有更多用户 :)
    bxb100
        9
    bxb100  
       17 小时 58 分钟前
    UP 现在 zig 写多线程爽不爽啊, 心智负担如何
    YUX
        10
    YUX  
    OP
    PRO
       12 小时 48 分钟前
    @Judoon GitHub Actions 的脚本改过来了。floo-aarch64-linux-gnu-rpi.tar.gz

    @ahu 完善了一下配置示例,应该比较易用
    YUX
        11
    YUX  
    OP
    PRO
       12 小时 39 分钟前   ❤️ 1
    @bxb100 没有隐藏的 runtime , 没有 GC ,不会偷偷 spawn 线程 没有线程池框架,任务系统,纯裸多线程 有种纯粹的控制感,爽点在这。
    因为实现很清晰,所以心智负担不重。非常 deterministic
    可以等一手 0.16 的 async I/O 出来再看看
    96368a
        12
    96368a  
       5 小时 2 分钟前
    P2P Mode 有计划实现吗
    ahu
        13
    ahu  
       4 小时 7 分钟前
    @YUX #11 昨晚研究了一晚上,差点没用明白 😫 发现跟 FRP 很不一样。

    我是直接在本机测试的。感觉 flooc.toml 的 local_port 概念有点反直觉。然后服务端和客户端都有 target_host 和 target_port 是不是太冗余了?
    guotie
        14
    guotie  
       2 小时 58 分钟前
    zig 这性能确实是离谱了
    guotie
        15
    guotie  
       2 小时 56 分钟前
    Dependencies 这一项 不需要拿来比较,没啥意义
    bxb100
        16
    bxb100  
       2 小时 36 分钟前
    @YUX #11 了解, 多谢回复
    YUX
        17
    YUX  
    OP
    PRO
       1 小时 59 分钟前
    @ahu 今天会再更新一个版本,简化配置
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5515 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:29 · PVG 14:29 · LAX 22:29 · JFK 01:29
    ♥ Do have faith in what you're doing.