Closed adwpc closed 3 years ago
做了一下测试: 高延迟下发送大于MTU的数据,效果不理想,希望指导下是哪里出了问题,感谢 :)
重点是:在高延迟网络,发送超过MTU的数据,latency增大很多。 这个场景很常见,比如使用kcp代理下载一个5KB图片
参考:https://github.com/skywind3000/kcp/issues/202#issuecomment-490797457 在不同丢包+延迟+数据量情况下,测试latency分布,做成散点图(x轴是latency,y轴是低于x轴的点分布的百分比) 比如x=400 y=60%,表示:有60%的latency,小于400ms 波形越靠近左上角表明效果越好,表示更高百分比的点分布在更低的区间
{ "streammode":true, 流模式 "key": "PASSWORD", 密钥 "crypt": "aes-128", 加密方法 "mode": "fast3", 注意:极速模式3,参考下一个表格,会覆盖下边的四个参数,这个需要注意!!!!!! "mtu": 1400, 包mtu,超过会拆包 "sndwnd": 1024, 发送窗口 "rcvwnd": 1024, 接收窗口 "datashard": 10, 凑齐多少个包,开启生成冗余包 "parityshard":3, 冗余包生成多少个 "dscp": 46, QOS标记,先不管 "nocomp": true, 不压缩 "acknodelay": false, 延迟ack "nodelay": 1, 开启nodelay,RTO=RTO+0.5RTO,否则RTO=RTO+RTO, 极速模式3场景下 值设为1 "interval": 40, 内部轮训周期,多久处理一批包,极速模式3场景下 值设为10 "resend": 2, 快速重传,2次ACK跨越将会直接重传,极速模式3场景下 值设为2 "nc": 1, 不开拥塞控制,即不退让,只受收发窗口控制,cwnd=min(snd_wnd,rmt_wnd),极速模式3场景下 值设为1 "sockbuf": 4096, socket缓冲区 "tcp": false 不使用tcp传输 }
更新: KCP在 “延迟10ms,丢包0%,发送5KB,接收500KB的场景” 下的latency,恶化比较严重。 目前观察到服务端,收到500K,然后往回发,这两步之间间隔时间较长
使用工具模拟延迟10ms: comcast --device=lo0 --latency=5(上下行各延迟5ms)
更新:通过设置读写buffer改善了,kcp确实在丢包+延迟+不限带宽场景下,能够显著降低latency
做了一下测试: 高延迟下发送大于MTU的数据,效果不理想,希望指导下是哪里出了问题,感谢 :)
1 测试结果
重点是:在高延迟网络,发送超过MTU的数据,latency增大很多。 这个场景很常见,比如使用kcp代理下载一个5KB图片
2 测试场景
参考:https://github.com/skywind3000/kcp/issues/202#issuecomment-490797457 在不同丢包+延迟+数据量情况下,测试latency分布,做成散点图(x轴是latency,y轴是低于x轴的点分布的百分比) 比如x=400 y=60%,表示:有60%的latency,小于400ms 波形越靠近左上角表明效果越好,表示更高百分比的点分布在更低的区间
3 kcp设置