今天在看《TCP/IP详解》的时候看到一个缓冲区膨胀的问题,大致的意思是,网络中的路由设备,其缓冲区的大小不是越大越好,过大的缓冲区反而会导致网络拥塞。
对此表示不解,于是简单进行了搜索,发现这个问题还是很有趣的,所以拿出来讲一下。先说结论,网络设备的缓冲区并不是越大越好,也不是越小越好,而是需要根据链路速率和RTT进行计算,得到一个经验值。
缓冲区过小
缓冲区过小的问题很明显,如果缓冲区太小,很容易就被写满了,只要不能进行适当的排队,丢包率会高,导致传输效率差。
缓冲区过大
缓冲区过大的时候事情就变得有趣了,理论来说,缓冲区大了,丢包率下降,传输质量应该上升啊?但是实际上不是的,我们需要考虑以下问题:
1,丢包率下降到一定程度之后,丢包率下降带来的传输质量提升非常有限
2,设备的接收速率不一