kcptunB, 解决存在已久的卡死问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
cs8425

kcptunB, 解决存在已久的卡死问题

  •  1
     
  •   cs8425
    cs8425 Mar 23, 2019 1841 views
    This topic created in 2592 days ago, the information mentioned may be changed or developed.

    kcptunB, B 是指 Breaking fixes/features.

    跟原版的差异是加入了一些不相容旧版的修复以及功能(可手动关闭), 由于需要同时更新伺服端以及客户端才有作用, 原作者目前不打算合并

    改变 /改善:

    1. 修复"快写慢读的 stream 造成整个 session 卡死"的问题, 不相容旧版, 预设启用
    2. 修复 keepalive, 解决某些情况下网路正常但仍然断线, 预设启用
    3. 加入简单的 socks5/http proxy (不需使用另外的 port)
    4. 新功能可手动关闭以维持原版相容(等于原版), 如需使用新功能, 伺服端以及客户端都必须更新到此版并启用功能
    5. 加入 ARMv8/aarch64/arm64 的执行档, 可以直接在安卓上执行
    6. 解决安卓版 DNS resolve 问题

    github: https://github.com/cs8425/kcptunB

    download: https://github.com/cs8425/kcptunB/releases

    如果有使用的欢迎回报感想 /问题, 看有没有机会合并回原版

    Supplement 1    Mar 25, 2019
    加入可能没啥用的 TCP Fast Open
    目前支持 linux, darwin, freebsd
    只有 linux 有实测确认正常(安卓部分尚未确认)
    darwin 跟 freebsd 需要再确认
    windows 理论上能启用, 但是还未实作...
    13 replies    2019-03-30 09:10:17 +08:00
    noli
        1
    noli  
       Mar 23, 2019 via iPhone
    请问你在改善一中提到的,快写慢读的情况什么情形下会出现?
    whoisghost
        2
    whoisghost  
       Mar 23, 2019
    不错!我都是自己从头到尾写一个。
    cs8425
        3
    cs8425  
    OP
       Mar 23, 2019   1
    @noli #1
    当`--sockbuf`较小, "网站 A --> kcptun"的速度远大于"kcptun --> 使用者"的速度时会发生
    常见于使用者高速下载东西的同时还想要浏览其他网页时会卡卡的
    会发现这问题是因为很久之前看油管都是同时搜寻+连开分页载入影片
    结果只有一个分页有载入, 其他分页会卡住(包括搜寻的页面)
    原本以为是频宽问题
    多方尝试后最终确认是 multiplexing 的 smux 造成的
    `--sockbuf`不够大, 其中一个 stream 快写慢读会造成 buffer 用尽导致其他 stream 都卡住
    已经可以由 test 复现问题, 请移驾到 smux 专案察看详情
    noli
        4
    noli  
       Mar 23, 2019
    配置文件的格式和 kcptun 是兼容的吗?有示例吗?
    cs8425
        5
    cs8425  
    OP
       Mar 23, 2019
    @noli #3
    兼容, 不过建议把`--keepalive`换成`--keepalivems`
    其他比较可能会用到的参数为: `--keepalive-timeout`, `--streambuf`, `--ser`, `--dns`
    noli
        6
    noli  
       Mar 23, 2019
    @cs8425 #5

    如果要用 json 文件使用 built-in SOCKS 或者 http proxy 该怎么写?
    cs8425
        7
    cs8425  
    OP
       Mar 23, 2019
    @noli #6
    依样画葫芦, json 设定跟 cli 选项名称一样, 加上`"ser": "socks5",`就好
    run2
        8
    run2  
       Mar 23, 2019
    能成功编译 for iOS 的么?
    cs8425
        9
    cs8425  
    OP
       Mar 24, 2019
    @sobigfish #8
    暂时不能, 等您提交 golang cross compile for iOS 的 PR
    noli
        10
    noli  
       Mar 30, 2019
    v2.0.4 client_freebsd_amd64

    Failed to set necessary TCP_FASTOPEN socket option: operation not permitted

    无其他报错,但是无法连接成功;同时服务端报一个 broken pipe
    noli
        11
    noli  
       Mar 30, 2019
    @noli #10 Sorry 是误报
    noli
        12
    noli  
       Mar 30, 2019
    @noli #11 好了,这次确定不是误报了,同样的配置双端都是 v2.0.2 能成功连接,而双端都是 v2.0.4 时则不能
    错误信息如上述,freebsd amd64
    cs8425
        13
    cs8425  
    OP
       Mar 30, 2019
    @noli #10 #12
    刚刚去装了台 VM 测试
    如果`net.inet.tcp.fastopen.server_enable`设为 0 是有错误讯息没错
    但是仍可以正常连线
    无法复现不能连线的状况, 请提供更详细的资讯
    版本: FreeBSD freebsd 12.0-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC amd64
    About     Help     Advertise     Blog     API     FAQ     Solana     974 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 20:34 PVG 04:34 LAX 13:34 JFK 16:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86