在做个项目,要求聚合多路 TCP 流,实现极高可靠性的数据流传输。 目前实现了 tcp over kcptun over udp(s) over tcp(s),即将 kcptun 的每个数据包通过随机 TCP 流发送,若丢包则用 kcp 的机制自动重传。 以上方法保障了可靠性,长期测试通过。然而,带宽限制在了 10Mbps 左右,甚至低于单路 TCP 流的带宽,推测是由于各路 TCP 流的延迟不同造成的(50ms 至 300ms)。 我不是科班出身,检索了相关文献也没找到相关算法/实现。请教下各位,在延迟随机场景下,有什么更适合的实现吗?
你把 kcp 底层从 udp 改成了 tcp ,那么自然会受到掉包 rtt 的影响。 我看有方法提到,可以在 linux 上把 tcp window size 窗口完全关闭,可以改善响应速度。 用默认 udp 不是挺好的。tcp 多流复用还挺复杂,至少要抓包,才能知道卡顿的具体原因。