kcp 基于Rust的KCP实现(BBR流控&数据结构优化)

xesrikrc  于 2022-10-25  发布在  其他
关注(0)|答案(3)|浏览(332)

最近自己写项目的时候需要在大流量的情形下使用KCP,于是基于原版使用Rust编写了略微修改的KCP实现:

  • 在协议本身不做调整,完全兼容。
  • 相较于C实现进行了架构上的些许调整(回调改为poll,分离配置变量,去除 check + update )。
  • 在C实现的基础之上,使用链表+滚动数组优化大窗口下的发送性能。
  • 在C实现的基础之上,使用小根堆优化RTO计时器的效率,提升重传性能。
  • 将BBR拥塞控制算法进行一定修改后试验性地运用到KCP中。

具体可以参考 这篇博文
代码可以参考 这个Gist ,或博文里的链接。

供大家参考:)

2nbm6dog

2nbm6dog1#

good 👍
魔改的不错。

fjaof16o

fjaof16o2#

有必要优化网络收发包定时器性能,大多情况下定时器不会被触发(重传,ping,idle,)采用惰性删除(标记失效)。下次加入直接从当前位置上下调整,可以大量减少不必要的堆操作。
我在google quic项目中优化了定时器性能,测试100个活跃连接,服务器小堆定时器每秒达30w/s级别弹出和插入,优化后性能大幅度提升,perf top看不到任何堆耗时操作了。

0ejtzxu1

0ejtzxu13#

bbr我也尝试过魔改移植,效果其实不明显

相关问题