Linux上的TCP缓冲

Linux上的TCP缓冲,tcp,linux-kernel,Tcp,Linux Kernel,我有一个USB外设,它以183 MBit/s的速率发送数据样本。我希望通过以太网发送此数据,以太网限制为

我有一个USB外设,它以183 MBit/s的速率发送数据样本。我希望通过以太网发送此数据,以太网限制为<100 Mbit/s。是否可以通过增加TCP套接字缓冲区来发送此数据而不发生溢出(即丢失数据)?

简短的回答是,这取决于


如果数据是突发的,增加缓冲区(在发送器处)会有所帮助。如果平均速率也取决于接收器窗口的大小。即使有100Mbit,发送方也会根据接收方可用的窗口大小推送数据。未启用缩放功能的TCP窗口大小最多只能达到64kb。在您的情况下,这个大小是不够的,因为它至少需要(100-183Mbits)10MB的缓冲区。在Windows7及更高版本的Linux操作系统中,默认情况下TCP支持窗口扩展,可将大小扩展到1GB。启用TCP窗口缩放选项后,您可以将套接字缓冲区增加到更大的大小,例如50MB,这将提供所需的缓冲

设备是否始终以相同的速度生成此数据?缓冲不能改变以太网速度。