一台路由器缓冲区稍微大一点,你知道会带来多大的益处吗?稍微小一点,你知道会带来多少的悲哀吗?
跑高速的时候,有时候两辆车轻微碰擦,就会带来几十公里的拥堵....这就是局部事故引发全局连锁反应。前年,沪嘉高速施工,拆除中心绿化带,取消硬路肩,将二车道改为三车道,你可别小看这一根车道,作用大了。
对于网络而言,数据包在网线上的时候,绝对安全,绝对是全速前进,最危险的就是到达转发设备内部,设备处理数据包带来的固有延迟导致数据包必须有机会被缓冲,处理加速比一定要和缓冲区大小对应,此时增加缓冲区大小就类似于高速公路增加车道,作用大了去了。不管增加多少,缓冲区大小和线路带宽之间有个公式,说实话,TCP为这个公式帮了大忙。
我们知道,UDP无状态无连接,丢了就丢了,谁也不知道,一切默默地。所以转发设备没法衡量到底设置多大的缓冲区。但是TCP可以帮忙。TCP有一个RTT,即一个数据包一个来回所需要的时间,开启时间戳之后,这个测量是很精准的,因此,转发设备的缓冲区大小设置就和这个相关了。也就是说,缓冲区必须能够保存一个TCP来回时间持续到达的数据包,能持续到达多少呢?这个由带宽决定。如果缓冲区大小小于这个值,一旦内部发生队列阻塞或者延迟,TCP就会持续丢包。因此,越是高速的链路,缓冲区大小越是要大,网络带宽持续提高的今天,设备如何在单位时间缓冲存储如此巨量的数据,是一个大问题。固然,TCP发现丢包会降速,那么UDP呢?
归根结底,转发设备缓冲区大小的决定因素就是内存访问效率,目前什么样的存储设备能满足要求啊?数据量巨量,直接就把昂贵的东西给pass了,不考虑并行性,什么才是神器?