发布网友 发布时间:2024-09-27 19:46
共1个回答
热心网友 时间:2024-09-29 16:14
在网络数据传输中,我们经常遇到'Mbps'这个单位。与此同时,GbE或1 GigE的网卡已经成为当前流行的选择,被许多用户亲切地称为 '千兆网卡'
然而,当我们描述磁盘的大小时,我们通常使用GB或MB这两种单位,也就是我们熟知的Gigabyte或Megabyte。此外,当我们讨论文件大小或磁盘空间时,GiB或MiB这样的单位也会频繁出现在我们的讨论中。
对比GB与GiB的关系,实际上就像上面所讲的数字单位定义。KB、MB、GB及TB这些单位源自于10进制的三位区分计数法,即每三位数后加一个逗号,这是源于欧美的计数方法,被称为“短级差制(short scale)”,即1000个前数,比如1 billion = 1000 million,也就是10亿 = 1000个百万。但是这种计数法本身可能会造成混淆。敏感的读者看到“短级差制”后,可能会想到“长级差制(long scale)”,后者是以百万(10的6次方)为基础的,所以在长级差制中,1 billion 表示的是“万亿”,代表100万个百万,也就是10的12次方。
“短级差制和长级差制都在欧洲被使用,这就容易引起混淆。为了避免这种混淆,国际标准化组织根据短级差制定义了一套标准化的词头计数方式,以10的3次方为一级,也就是我们所熟知的千、兆、吉、太、拍、艾、泽等计数单位。
“在二进制中,我们以2的n*10次方来计算数字的大小,所以就有了一个二进制词头,它的写法和国标词头类似,只是在英文中,后两位根据发音习惯替换成了bi,例如Giga替换为Gibi,Tera替换为Tebi,MB(megabyte)则替换为mebibyte,也就是简写的MiB。
回到初始的问题:1000Mbps的网络,换算成MB是多少?首先,我们需要明白1000Mbps即GbE,是“吉比特以太网(Gigabit Ethernet)”。注意这里的Giga,表示的是10进制计算,也就是说,每秒可以传输1,000,000,000个比特。
我们都知道的是一个字节(Byte)由8个比特(Bit)组成。按理论上来说,1000Mbps的网络传输带宽在一秒钟之内可以传递125MegaByte的数据。
但是,我们得知道,在网络传输的时候并不是光传输你所需要的数据,在传输的过程中还需要将数据改变成网络数据包,所谓的打包数据就是在各个网络层为数据增加相应的标记信息。
这些信息对传输文件本身这件事并不会有太大的意义,只是为了能够完成网络传输。这时候,你在文件管理器中传输文件的时候看到的速度就已经不是网卡的速度了,而是在传输后层层打包后的净文件流数据获取速度。
因此,有的人就在问,为什么明明是千兆网卡,传输速度却不会达到125MB/秒?这里损失的一部分速度就是打包数据包所占用的传输流量。
所以速度达不到125MB/秒并不是网络的问题,而是正常现象。
那么有没有可能让传输速度进一步提高,尽量接近125MB/秒的极限呢?也是可以的。我们就得从数据链路层的以太网帧来入手了。
之前给大家讲过以太网帧,其中有一个MTU设置,叫做最大传输单元(Maximum Transmission Unit),每个以太网帧可以被定义为一个传输单元。以太网所定义的一个帧的大小为1538。
在网络设备上开始传输的时候设备会先发出7个字节的先导码,然后按照固定的格式分节来传输后面的数据。这个过程叫做一个传输单元,最终一个帧会以四个字节的校验码结束。其中最多会在Data这一节承载1500字节的数据。
如果我们把一个帧当作一辆卡车的话是这样的:
车头、车架、车轮都是数据包的封装结构,车厢就是数据包中的数据。
即便是数据再少,车头、车架、车轮也是精简不掉的。
但我们可以尽量的增加车厢的大小,让一趟车尽量的运送更多的货物。这就是降低了每次传输数据包的损耗率。
所以,我们可以知道的传输速率是可以计算出来的,大致上 效率=真正的传输数据内容/帧大小,因此可以计算在一个MTU为1500的以太网上的效率计算则是 1500/(1500+38)=97.53%,这还是干净的以太网帧,如果我们在交换机上附带了Vlan等设置,我们就需要再加入VLan的封包子节数。还拿卡车做例子就是这样的感觉:
一辆卡车被作为货物装入另一辆卡车。
这时候Vlan的四个字节的标记也得加进去,就成了1500/(1500+38+4)=97.28%。
所以说,在网络传输效率上,一般以千兆太网是可以做到975.3Mbps的真实传输效率的,如果加了VLan可以做到972.8Mbps的传输效率。当然了,这是理论最高数值。
这个数值除以8是不是就算是网络能传文件的字节数了呢?还不是!
一般我们用SMB做文件分享和传输,这是TCP协议集里面的一个协议:
看——也有包头、控制、基础数据等等一系列的额外内容在里面。因此 975.3Mbps 除以8 的121.9MB/秒也不会是一个文件传输的真实数值,还得打折扣。
还是卡车,这个SMB是卡车车厢里面的货物而已但不是你的文件。
例如这辆卡车里面装的是苹果笔记本电脑,你要的也是一台苹果笔记本电脑,但是只要不是买二手,大部分电脑运送的时候还是有包装箱的,这个包装箱的一包就是SMB传输的数据包。
而在你的购买行为里面却默认只是要层层包装里面的一台电脑。多余的东西实际上都是运输损耗。
了解这些背景信息,你就会发现,带宽1000Mbps不变的情况下,你需要降低附带的这些协议包的损耗。怎么办?加大车厢!
换一个更大车厢一次性装更多的数据就好了。这里就要用到交换机上的巨型帧了,是指MTU大于1500的帧。按照规范来说,巨型帧(jumbo frames)可以设置到9000字节。这个大小远远突破了IEEE 802.3以太网协议的。它可以做到在一个封装好的以太网帧中最多传输9000字节的数据,也就是MTU=9000。
我们按照之前的效率算法来计算一下就可以知道 效率=9000/(9000+38)= 99.58%,比起默认以太网的97.53要多压榨出了一些网络传输性能。
但是,要知道的是网络上不仅仅只是来回交换文件传输数据包的内容,还会不停的传输一些小包指令。
这时候一个巨大的帧内有可能只传输一些极小的负载。例如一辆大集装箱卡车里面只装了一小件货物:
和卡车司机的困扰一样,以太网要传输小包数据实际上也会占用相同的以太网帧大小。于是十几个字节的数据在巨型帧的交换机上也得占用几百倍的传输带宽。这样就会导致网络的性能不增反降。
一般的做法是将两种交换机分离开,专门做大型数据传输的使用设置好巨型帧的交换机进行传输,而一般的小指令小数据包的传输会利用普通的MTU设置为1500的以太网交换机进行传输。
这就把存储的网络和普通业务网络进行分离。为了配合存储需求,也就出现了iscsi等专门跑在以太网上的存储协议。当然了,也有一些光纤通道交换机专门跑存储业务。这就有点脱离开大家经常用到的以太网的范畴了。