系列文章目录
kcp协议产品化
前言
现实网络下,弱网情况下,经常出现音视频正常,但是媒体信令却已经断开的情况下,还有就是信令和音视频不同步都能情况,为了解决这个问题,我们继承了kcp、quic等udp实时传输协议
一、kcp是什么?
KCP 是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如 UDP) 的收发,需要使用者自己定义下层数据包的发送方式,以 callback 的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。
整个协议只有 ikcp.h, ikcp.c 两个源文件,可以方便的集成到用户自己的协议栈中。 也许你实现了一个 P2P,或者某个基于 UDP 的协议,而缺乏一套完善的 ARQ 可靠协议实现, 那么简单的拷贝这两个文件到现有项目中,稍微编写两行代码,即可使用。
二、使用步骤
1.正常网络情况下,kcp与wensokcet的rtt对比情况,实际消息传输效果:
正常网络情况下,websocket实际消息rtt:
kcp实际消息rtt:
实际弱网,上下行30%丢包情况下,kcp与wensokcet的rtt对比情况,实际消息传输效果:
websocket实际消息rtt:
kcp实际消息rtt:
总结
可见在网络不稳定下,kcp的实际传输效果更佳,延时更低,保证了用户信令传输的稳定和低延时