V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nuk
V2EX  ›  程序员

multi path 一般怎么做,测试 TCP 基本惨不忍睹

  •  
  •   nuk · 2023-08-12 19:44:59 +08:00 · 1457 次点击
    这是一个创建于 454 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做一个基于 multi path tcp 的东西,现在是基于 TAP 接口的。 因为想着二层可以偷懒不用重排。

    在内网测试 TCP 和 UDP 基本都能有 300Mbps 左右。 接着在公网测试,延迟 150ms ,UDP4 条流有 160Mbps 左右,TCP 大概只有几 Mbps

    不知道现在有没有现成的好用的 multi path tcp 的用户态实现,不是基于 UDP 的。

    目前只看到有个蓝灯的实现,里面多了重传和基于 RTT 的发送 https://github.com/getlantern/multipath

    第 1 条附言  ·  2023-08-12 21:29:43 +08:00
    写了个基于蓝灯的 multipath 的 tcp 代理,发现基本可以跑满速,结帖
    第 2 条附言  ·  2023-08-12 23:19:15 +08:00
    iperf 测试可以打到 400Mbps ,但是在上面的 tinc 隧道还是只能 70M ,不知道瓶颈在哪里。
    6 条回复    2023-08-13 15:05:02 +08:00
    pagxir
        1
    pagxir  
       2023-08-12 20:19:31 +08:00 via Android
    用一下 bbr 吧。mptcp 不是这么用的
    deorth
        2
    deorth  
       2023-08-12 20:34:20 +08:00 via Android
    有个 multipath quic 的 draft ,你可以找找有没有现成的实现
    nuk
        3
    nuk  
    OP
       2023-08-12 21:09:51 +08:00
    @deorth 阿里有个 xquic 实现了,但是这个不是基于 TCP 连接的
    nuk
        4
    nuk  
    OP
       2023-08-12 21:28:32 +08:00
    @pagxir 这个和 bbr 没关系吧,tcp 单条流最多 70M ,但是只要多条流就可以好几个 70M ,这种场景 bbr 也能加速?
    sofukwird
        5
    sofukwird  
       2023-08-13 09:43:24 +08:00 via Android
    tinc 是只用单核的,所以瓶颈是在 tinc 这里
    你可以跑下 tinc 的 iperf 测试看看
    但话又说回来,就算 tinc 只能用单核在我电脑上也能和 wireguard-go 用多核的性能差不多
    nuk
        6
    nuk  
    OP
       2023-08-13 15:05:02 +08:00   ❤️ 1
    @sofukwird tinc 跑了 iperf ,大概 500M 左右,wireguard-go 肯定比 tinc 高,因为我用的就是 wireguard-go ,从 windows 连接电信测速线速 1000M 能跑满。但是两个 wireguard-go 之间跑,大概也只能 500M 。
    tinc 我试过把加密直接用 memcpy 替换,还是只能 500M 左右,我估摸着是 tap 接口的限制。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:48 · PVG 09:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.