计算机 · 2023年2月9日 0

vmware的NAT不支持TCP window scaling option

cubic tcp流的发送窗口同时受到接收者的接收窗口和拥塞窗口两个限制,且只有在不受接收窗口限制并且拥塞窗口不够时,才轮到cubic算法去增大拥塞窗口。按kernel源码来说,只有在is_cwnd_limited(sk)为true时,cubic才会去增加拥塞窗口。在虚拟机测试中,由于tcp发送流(从虚拟机向外面的主机发数据)首先受到了接收窗口的限制,导致发报受限和拥塞窗口不能向上增长,进而限制了可用cubic流的可用带宽。为什么会受到接收窗口的限制?因为vmware的NAT转换daemon没有支持window scaling option,导致接收端的window scaling option被丢掉了!TCP window scale flag dropped cross VMWare NAT device进而导致虚拟机向外发送数据的tcp连接的接收端窗口很小,不超过64kB。