首页 > 生活美容 > 心理 > 如何计算TCP吞吐量

如何计算TCP吞吐量

   来源:秀美库    阅读: 9.7K 次
字号:

用手机扫描二维码 在手机上继续观看

手机查看
如何计算TCP吞吐量

快速计算一下从一个主机经过长距离的链路到另一个主机之间实际上你可以获得的 TCP 吞吐量是多少。

  使用 TCP 传输数据时,两个最重要的因素是 TCP 窗口大小 和 往返延迟。如果你知道这两个参数,你就可以计算出两个主机间的最大吞吐量,不管带宽是多少。

计算 TCP吞吐量的公式

  TCP窗口大小(bits) / 延迟(秒)  =  每秒吞吐量(bits)

  举一个简单的例子。从芝加哥到纽约有 1G 的以太网链路,往返延迟 30ms。如果使用 FTP 在芝加哥的一台服务器和纽约的一台服务器之间传输一个大文件,所能期望的最大吞吐量是多少

  首先把 TCP窗口大小 从字节变成位。这个例子中我们使用 Windows 标准的 64K 窗口大小。

   64KB = 65536 Bytes.   65536 * 8 = 524288 bits

  接着,把用位表示的窗口大小除以用秒表示的往返延迟。延迟 30ms 的话,在计算中使用 0.03秒。

   524288 bits / 0.030 seconds = 17476266 bits per second throughput = 17.4 Mbps maximum possible throughput

   这样的话,尽管在数据中心之间我有 1G 的链路带宽,但是基于 给定的窗口大小 和 往返延迟,在传输文件时我所能期望的最大的吞吐量是 17.4 Mbps。

  做什么才能变快  增加窗口大小 或 缩减延迟。

  为了增加 TCP窗口大小,可以在每个服务器上做出手动调整,传递更大的窗口大小。这产生了一个问题:你将使用多大的窗口大小可以使用上面公式的反向计算来确定最优的窗口大小。

计算最优 TCP窗口大小 的公式

  带宽(bits每秒) * 往返延迟(秒) = TCP窗口大小(bits) / 8 = TCP窗口大小(字节)

  因此在芝加哥和纽约之间 1G 的带宽和 30ms 的延迟的例子中,可以计算如下:

   1,000,000,000 bps * 0.030 seconds = 30,000,000 bits / 8 = 3,750,000 Bytes

  因此为 FTP连接 配置 3750KB 的 TCP窗口大小,将会填充管道,获得 1Gbps  的吞吐量。

  服务器增加 TCP窗口大小,其中一个缺点是需要更多的缓冲内存,因为未应答的数据必须存储在内存中为了应对可能的重传。另一个潜在的缺陷是性能(是不是很讽刺),发生在包丢失时,因为窗口内任何的包丢失都会导致整个窗口重传 - 除非你的 TCP协议栈使用一种 TCP增强技术,叫做选择性应答(selective acknowledgements),但是大部分服务器没有使用此种技术。

  另一个选择就是在需要更大窗口的一端放置广域网加速器(WAN accelerator) 和 在加速器之间使用其他TCP优化,比如选择性应答,对服务器不需要特殊的调优或额外的内存。加速器可能也使用第7层应用具体的优化来减少往返次数。

  减少延迟这怎么可能 除非你能克服光速的限制,否则对于缩减延迟你什么都做不了。再一次,你有一个选择,就是设置加速器,加速器应答本地服务器的报文段,愚弄服务器让它认为看到非常低的局域网延迟。因为服务器看到非常快速的局域网应答,而不是等待远处的服务器应答,这就是为什么我们不需要调整服务器的窗口大小的原因。

举例 :tcp的收发窗口大小为1024Byte,网络的链路带宽是1Mb/s,往返时延RTT是50ms,问最大吞吐率带宽1Mb/S=125000 Byte/sPacket =1024+20+20+14+12+8+4=1102Byte线速的话125000/1102≈113pps 因往返时延50ms,所以1s内packet为1000ms/50ms=20次往返,小于线速113pps,于是最大吞吐率=(1102Byte*20)/125000Byte/s=17.632%

减肥
家居
健康
情感
婚姻
亲子
星座
宠物