网络吞吐量的估算

在写数据传输程序的时候我们会关心服务器和客户端之间通信的网络延迟有多大?数据收发的吞吐量最大有多少?

tcp socket 客户端和服务端之间的通信延迟受到很多因素影响,基本没办法准确的估算出来,比如传输距离,网络路由跳数,交换机处理时间,网卡处理延迟,cpu处理延迟,丢包率等。其中的传输距离影响比较大,虽然电信号以光速传播,其延迟也不能随便忽略,比如10公里的距离光传播的延迟就有33微妙。假如两端之间的线路情况基本是固定的,因此延迟也基本是固定的,因此测量两点间的延迟可以用专门的工具来做,比如 qperf或者netperf。

这里假设我们已知两点间的网络延迟为L,TCP滑动窗口size为W,那么最大的网络吞吐量是 W /  L。

如果两点间的带宽为1G,延迟为L,那么需要调整滑动窗口大小,使得传输带宽能够打满整条线路,如果调小了那么滑窗将成为瓶颈,如果调大了那么网络线路将成为瓶颈,因此存在一个滑窗最优值:带宽*网络延迟

因此 吞吐量,滑窗大小,线路带宽,线路延迟这几个量之间是存在相关关系的。

要缩短网络传输延迟,要么调大滑窗,要么缩短距离。

猜你喜欢

转载自rrsongzi-gmail-com.iteye.com/blog/2295255