V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
nowjust
V2EX  ›  云计算

关于端口转发速率的疑问

  •  
  •   nowjust · 2020-10-04 23:20:24 +08:00 · 6300 次点击
    这是一个创建于 1510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教下各位大牛,我有一台国内的 nat vps,我试过直接从 vps 上通过 scp 或 wget 的方式下载欧洲的服务器里的资源,速率可以达到 7-8M/s 。我在本地通过 scp 方式下载 nat vps 的资源,速率可达到 10M 。 可是通过 nat vps 上设置的端口转发方式,从本地下载欧洲的服务器里的资源最多只有 3M/s,我先怀疑是不是转发工具性能的问题,但我先后试了 socat 、haproxy 、realm 、firewalld 等多种转发工具,发现速度还是超不过 3m/s,这是怎么回事呢?端口转发会有这么大的损耗吗?大牛们有遇到过吗?谢谢!

    23 条回复    2020-10-08 11:37:58 +08:00
    ericbize
        1
    ericbize  
       2020-10-04 23:33:48 +08:00 via iPhone
    bbr 试一下
    nowjust
        2
    nowjust  
    OP
       2020-10-04 23:47:37 +08:00
    nat vps 和欧洲服务器都装了
    heiher
        3
    heiher  
       2020-10-05 01:26:34 +08:00 via Android
    试试用户态转发,不是直接包转发。
    laminux29
        4
    laminux29  
       2020-10-05 09:25:46 +08:00
    1.监视一下整个 vps 的对于每条链接的传输速度,来排查一下是不是端口转发造成损耗。

    举个例子,vps 到你家里的链路传输速度为 5MB/s,但实际数据速度只有 1MB/s,那就相当于损耗了 4MB/s 的数据。

    这种数据损耗的原因有很多,比如这种端口转发协议比不上直接 scp,或者端口转发协议被 gfw 或运营商识别了,等等。



    2.分别测试:
    欧洲服务器-vps

    vps-你家

    欧洲服务器-vps-你家

    三种模式的延迟。我觉得问题应该卡在这里了。出现这种问题的可能原因,要不是端口转发程序的内部 bug 或业务逻辑导致产生延迟,要不是协议对这种端口转发模式支持不好造成了延迟。



    3.无论是以上哪种问题,建议都别做端口转发了,做存储转发。
    vszs
        5
    vszs  
       2020-10-05 11:13:37 +08:00
    运营商 qos 的可能比较大
    flynaj
        6
    flynaj  
       2020-10-05 11:16:34 +08:00 via Android
    试试 gost
    nowjust
        7
    nowjust  
    OP
       2020-10-05 11:27:01 +08:00
    @flynaj 谢谢,试过了,效果更差
    nowjust
        8
    nowjust  
    OP
       2020-10-05 11:27:44 +08:00
    @vszs 两段的单独连接都没有问题,应该与 QOS 关系不大
    nowjust
        9
    nowjust  
    OP
       2020-10-05 11:31:05 +08:00
    @laminux29 感谢分析,我来试一试延迟情况。另外,我在 nat 上用 iftop 做了个监测,从监测情况看,欧服到 nat 段的速率总要比 nat 到本地的速率慢个 1-200k,感觉像是欧服到 vps 段的速度限制了整个转发速率。
    nowjust
        10
    nowjust  
    OP
       2020-10-05 11:31:37 +08:00
    @heiher 有什么现成的工具可以使用吗?
    heiher
        11
    heiher  
       2020-10-05 11:58:23 +08:00 via Android
    @nowjust nginx stream proxy 应该也可以
    nowjust
        12
    nowjust  
    OP
       2020-10-05 12:17:26 +08:00
    @heiher 试了 nginx,稍微好一点点,和 haproxy 差不多
    nowjust
        13
    nowjust  
    OP
       2020-10-05 12:19:28 +08:00
    @laminux29 不知存储转发有没有现成的工具呢,还是需要自己造轮子?谢谢!
    flynaj
        14
    flynaj  
       2020-10-05 13:40:54 +08:00
    @nowjust #7 用 kcp 协议 直接来!
    mepwang
        15
    mepwang  
       2020-10-05 17:28:30 +08:00 via iPhone
    好像通用 Linux 转发效率本身就不高,绕过操作系统协议栈的用户态转发速度快很多,比如基于 DPDK 的包转发工具
    vduang
        16
    vduang  
       2020-10-05 19:29:39 +08:00 via Android
    端口转发没这么大损耗。做转发的时候实际占用带宽是你下载速度的 2 倍,所以你的 vps 下行速度已经达到 6m 了,可能已经接近带宽限制了。另外 dns 解析到的 ip 也可能影响下载速度,换成直接用 ip 去 wget 试试
    kangsheng9527
        17
    kangsheng9527  
       2020-10-05 20:19:31 +08:00
    只要能重现问题就能找出问题甚至解决问题。。。
    luguiyao
        18
    luguiyao  
       2020-10-06 05:44:25 +08:00
    也可以尝试 nginx 反代
    alect
        19
    alect  
       2020-10-06 08:42:27 +08:00
    这种情况下,虽然你只有 3M,但中转服务器的速率是 3+3,上下行一起跑的
    nowjust
        20
    nowjust  
    OP
       2020-10-06 16:22:26 +08:00
    @vduang @alect nat 机是上下行分别限速的,所以还没有达到带宽限制。这两天经过反复折腾,发现应该是 scp 协议的锅,至于是被 QoS 还是协议缺陷就不知道了,后来更换了其它协议,速度就能上升到 7-8M 了,下次有人遇到类似情况也可以考虑更换协议试试。感谢各位大牛
    vduang
        21
    vduang  
       2020-10-06 19:00:33 +08:00 via Android
    @nowjust 换成啥协议了,是基于 udp 的协议吗?
    epson3333
        22
    epson3333  
       2020-10-07 22:23:22 +08:00
    开锐速脱胎换骨
    nowjust
        23
    nowjust  
    OP
       2020-10-08 11:37:58 +08:00
    @vduang 不是,换成基于 HTTP 的协议了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:31 · PVG 07:31 · LAX 15:31 · JFK 18:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.