延迟和丢包率会直接影响到TCP性能,具体取决于不同的拥塞控制算法
比如Linux默认的CUBIC就是纯基于丢包判断拥塞情况来控制TCP流的传输速度,一旦丢包起飞他就认为网络堵了,然后速度就炸了
BBR速度较快的一方面原因是它将丢包以外的其他因素(比如链路rtt,步进速率)加入了拥塞控制的算法中,所以相对而言低丢包环境下链路速度依然可观,而缺点就是BBRV1被人诟病对同网络下其他用户不公平,
跑带宽让别人无带宽可跑(其实不是),这才有了后面的BBRV2,然而V2的公平性一改完更难绷了,至少Windows的实现确实难绷
延迟影响主要体现在TCP发包确认这个环节上,系统的TCP协议栈需要预留缓冲区给要发送的数据,在高延迟链路上,发送完数据包等待ACK的时间会有所延长,就好像“地月通信”会有延迟一样,在发出去的包被ACK之前TCP拥塞控制需要做一定程度上的等待,因此发送速率会被影响进而无法达到预期的带宽利用。所以高延迟链路上一般会通过提高TCP发送缓冲区(发送的数据量大小)来提高链路利用率,这一点可以参考
带宽时延乘积 了解。