吞吐量是衡量网络设备每秒所能处理的网络流量的一个指标,而在现实中,网维人员常用流量这个词来衡量设备的性能,二者如何对应,到底是1比1还是1比2的关系?困扰着很多人。
首先我们明确一下概念:
流量:是个含糊的词,它不是设备的指标术语,在这里既然是跟吞吐量做对比,我们把它理解为每秒钟流经某台设备的数据量(单位为bps)。
吞吐量的英文单词为throughput,中英文两个词起的都很贴切,through是穿过,通过的意思,从一头进去,另一头出去叫做通过,吞吐顾名思义:吞进去并吐出来。当我们把概念吃够之后就容易分析了。
大多数人对于流量和吞吐量的混淆来自于设备物理端口的全双工,假设一个物理端口是千兆全双工(每条线缆有两根线,各能同时跑1G的数据),一个端口能够传输的总数据量就是2G,那么真正的数据流量是否就是2G呢?
我们通过下图来分析一下:
假设现在我们测试switch1的流量和吞吐量(为了简化,假设switch1只有两个端口),switch1是串接在网络中,各自用一个端口跟switch2和switch3相连(我们知道每个端口线缆内部是两根线),上行数据由switch2到switch1再到switch3,下行数据由switch3到switch1再到switch2。
在某一秒的时间内,假设有1G数据如红色线方向从下联switch2这一端进入switch1设备并且从上联switch3一端出去,我们称为switch1处理了1G的数据(吞吐量1Gbps),同样也称为转发了1G的流量。同一秒内,如果也有1G数据如蓝色线方向从上联switch3折一端进入switch1并且从下联switch2一端出去,所以switch1也处理了1Gps的数据(又是1G的吞吐量),向下转发了1G的流量。此时switch1的两个端口全双工已经用满了,但是我们可以看出吞吐量和流量的计算出来的都是2Gbps。
以上方式是串接,比较直观一点,我们再来看一下旁路接入,是否同样如此?
Switch1旁挂在Switch2上,无论是上行数据还是下行数据都是从switch2发到switch1,然后switch1处理后发回给switch2.
假设一秒内,上行数据是200M,Switch2经过红色线发给Switch1,Switch1经过蓝色线转发回Switch2, 下行数据是800M,Switch2也是经过红色线转发给Switch1,Switch1经过蓝色线转发回Switch2, 这个时候上下行加起来是1G数据,而红色线和蓝色线上流经的数据都是200M+800M=1G,两根线也都占满。所以旁路方式,一个端口跑满了,只有1G的数据流量(也就是1G的吞吐量)。而不是像端口全双工那样计算起来是2G。
原因是什么呢?
最根本的原因全双工端口线缆中两根线实际上跑的是同样的数据。
如下图右边所示,红色线和蓝色线是端口线缆中的两根线,1G数据从switch2经过红色线到达switch1,再经蓝色线从发出来,恰好占满了一个端口的全双工,而实际上两根线传输的是相同的内容,所以流量就是1G,吞吐量计算出来也是1Gbps。
所以一个全双工的千兆端口,每秒钟实际传输的数据最多就是1G(对于串接方式,我们从第一个图可以看出,1G数据在一秒内同时占用了端口1的一根线和端口2的一根线,反过来也是,两个端口实际传输了2G数据)。
在现实中计算流量,显然不能把重复数据相加,最后我们可以得出结论,一台设备所能处理的吞吐量和一台设备每秒能处理的流量是一致的,二者可以等同。而把一台设备上所有端口上的进出数据加在一起当作设备所转发的流量是错误的。但是如果对于串接方式,看半边端口的进出总数据作为流量来计算应该是正确的,例如下联内网的端口把进出该端口的流量加起来,就是通过该台设备的总流量。
(wyl)
本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/749788