V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
my2492
V2EX  ›  宽带症候群

宽带的限速对 KCP 无效吗?

  •  
  •   my2492 · 2020-08-14 21:23:07 +08:00 · 4495 次点击
    这是一个创建于 1562 天前的主题,其中的信息可能已经有所发展或是发生改变。
    50M 的上行,正常测速在 60M 左右,但是用 KCP 往外上传有 150M 左右,看了路由器上的实时网速,确实 WAN 口上行在 150Mbps,这是怎么回事?是多倍发包,多的被丢包了吗?实际服务器收到的流量大概是 30Mbps
    19 条回复    2024-06-29 14:00:41 +08:00
    noe132
        1
    noe132  
       2020-08-14 21:43:40 +08:00
    假设你是 ISP,你给你的客户提供了 50M 的上行。他按照 100M 的速度发包,你该怎么办?

    当然是限速。通常来说被 traffic shaping 后,一些包被随机丢弃了
    LPeJuN6lLsS9
        2
    LPeJuN6lLsS9  
       2020-08-14 22:23:46 +08:00
    太天真了,怎么可能无效。而且 kcp 窗口设太大反而降低你自己的体验
    https://zhuanlan.zhihu.com/p/24938843
    my2492
        3
    my2492  
    OP
       2020-08-14 23:08:52 +08:00 via Android
    @noe132 那为什么 tcp 包的实时流量就是和带宽相符的,kcp 会显示发出去那么多?
    ccsexyz
        4
    ccsexyz  
       2020-08-14 23:26:10 +08:00
    tcp 丢包之后会主动降低发送速率
    jousca
        5
    jousca  
       2020-08-15 01:16:58 +08:00
    @my2492 出现这样的情况是因为 udp 协议的基本原理 ------UDP 发送端无法检测拥塞,它不知道带宽是否占满。所以它就是发出去 1000Mbps 的包都可以,但是上端路由器一般都具备包队列和丢弃技术,会对你多发的 UDP 进行丢弃,以降低 UDP 流量。所以你才会发现服务器只能收到 30Mbps 的包。
    jousca
        6
    jousca  
       2020-08-15 01:23:30 +08:00
    所以 KCP 发包速度自己控制下,不要超过自己实际上行带宽 70%。 不要没完没了的发,运营商对你线路进行 UDP QOS 你就哭去把。
    kokutou
        7
    kokutou  
       2020-08-15 07:44:53 +08:00 via Android
    你发包是你发包,但是运营商可以丢弃啊

    你检测的是从你路由器本地出去的速度,到运营商那边就给你丢了

    kcp 不要超过带宽,超过带宽就没多大意义了。。。
    brMu
        8
    brMu  
       2020-08-15 08:00:03 +08:00 via Android
    测下速,看接受端实际接受速度是多少
    my2492
        9
    my2492  
    OP
       2020-08-15 09:49:48 +08:00 via Android
    @brMu 比 tcp 还低,实际接收是 30Mbps 左右
    cjpjxjx
        10
    cjpjxjx  
       2020-08-15 10:02:50 +08:00 via iPhone   ❤️ 11
    就像是你妈对你进行每秒 10 句的唠叨,上传带宽为 100b/s,但你每秒只听进去了 1 句,接收带宽为 10b/s,其他都被你丢弃了
    DGideas
        11
    DGideas  
       2020-08-15 10:11:36 +08:00
    @cjpjxjx 哈哈哈哈哈哈, #10 非常形象!
    hyperbin
        12
    hyperbin  
       2020-08-15 10:24:44 +08:00 via Android   ❤️ 1
    TCP 会主动检测丢包情况降低速度,UDP 不会,就像拿脸盆往老鼠洞泼水,很多水都没进去,TCP 会检测这些没进去的水,改成拿杯子倒来确保水都能进去,最后报告:这个鼠洞每秒大约能进 100ml 水,
    UDP 用大水缸倒水后报告:刚才 1 秒内往鼠洞倒了 300 斤水(至于进去多少它才在乎)
    hyperbin
        13
    hyperbin  
       2020-08-15 10:25:43 +08:00 via Android
    @hyperbin 更正:UDP 不在乎倒进去多少
    brMu
        14
    brMu  
       2020-08-15 12:12:34 +08:00
    @my2492 接受端只有 30M,这就证明了实际没有突破限制带宽
    sujin190
        15
    sujin190  
       2020-08-15 15:08:26 +08:00   ❤️ 1
    kcp 发包只要不超过你物理连接速度就可以啊,带宽限速在运营上那边,又不在路由这,而且就现实来说,流量越大的重要程度越低,所以从运营商那边来说,同等带宽想,优先保证低流量业务更有利于提升用户体验节省成本,再说你长时间满带宽使用或者超带宽发送数据包那么滥用可能就越高,那么给你更低的发包优先级和更高丢包优先级再正常不过了
    bclerdx
        16
    bclerdx  
       2020-08-15 23:53:35 +08:00
    @cjpjxjx 干的漂亮。
    bclerdx
        17
    bclerdx  
       2020-08-15 23:54:38 +08:00
    水流以最细的那根为你的最大速率哦,这就是木桶效应。
    james19820515
        18
    james19820515  
       147 天前
    1.把带宽余量跑出来了。
    2.限速有效,不然就跑出千兆了。
    james19820515
        19
    james19820515  
       147 天前
    超过余量的丢包。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:57 · PVG 22:57 · LAX 06:57 · JFK 09:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.