待解决问题
关于设备的:包转发率(吞吐量)的疑问 (进入论坛模式)
离问题结束还有0天0小时 |
提问者:jonas19861202
|
提问时间:2013-5-30 11:46
[attach]211563[/attach]
图片是一页先容如何计算设备包转发率的PPT
由图中以太网帧结构得知:一个数据包的最小总长度是12+7+1+6+64
那么数据包的最小总长度bit是:(12+7+1+6+64)*8
那么GE口的吞吐量为:1000M/[(12+7+1+6+64)*8]=1.488Mpps
但是这里有个问题就是这个计算方法中数据包采用的是64这个数值,而不是1518
也就是吞吐量计算出来的值是最大值,可实际传输设备中数据长短不一,1.488这个值并没有什么实际意义。
而且如果考虑设备性能,我觉得64~1518这个可变帧长度中,应该使用1518这个值来计算更合理。
图片是一页先容如何计算设备包转发率的PPT
由图中以太网帧结构得知:一个数据包的最小总长度是12+7+1+6+64
那么数据包的最小总长度bit是:(12+7+1+6+64)*8
那么GE口的吞吐量为:1000M/[(12+7+1+6+64)*8]=1.488Mpps
但是这里有个问题就是这个计算方法中数据包采用的是64这个数值,而不是1518
也就是吞吐量计算出来的值是最大值,可实际传输设备中数据长短不一,1.488这个值并没有什么实际意义。
而且如果考虑设备性能,我觉得64~1518这个可变帧长度中,应该使用1518这个值来计算更合理。
问题答案 ( 13 条 )
有意义,设备处理小包和大包的包头开销是相同的,因此用小包计算可得设备的理论最大包转发率,在实际环境中是混合包,肯定会大于这个值。实际上,完整的性能测试中对大包,小包和仿真混合包都要测。
不管是大包还是小包,当算上20byte的IPG+preamble之后,GE端口的吞吐量用bps来表示的都是一样的,1Gbps。为什么考量设备的性能要用64byte?因为当包长越小,pps就越高,在1秒内交换设备需要处理的次数就越多,包括查表、读写memory等等一系列的操作。很显然,这时候交换设备的性能越好,1秒内的处理次数肯定越多,所以需要用64byte来考量设备性能。
关键在于1518在未达到最大的性能时已经完成了端口线速,你无法衡量真正的性能,一个跑20Mpps的CPU跑满1GE端口,1Mpps的CPU用1518也能跑满GE端口
小包转发时对CPU/NE的开销更大,因此同样吞吐量下,小包的负荷比大包高。
同时给出吞吐量和小包转发率规格,就说明无论何种情况都能达到这个吞吐量;如果给出的规格是吞吐量和大包转发率,则在小包时无法达到这个吞吐量。
同时给出吞吐量和小包转发率规格,就说明无论何种情况都能达到这个吞吐量;如果给出的规格是吞吐量和大包转发率,则在小包时无法达到这个吞吐量。
我觉得你们都误会我的意思了,我是说:这个吞吐量不是技术手册上的一个实际值,我现在怀疑的是这个1.488没什么含义。首先1G的端口速率是设备固定值,那么如果都安1518来算,显然设备的吞吐量没这么大。也就是这个1.488的吞吐量没什么意义。我并不是在质疑设备性能。
我觉得你误会我的意思了,你想表达的是如果小包都能转发,那大包肯定都能转发。
你的出发点是CPU的性能
而我的意思是:在考虑真正实际情况中,既有大包也有小包,那么这个1.488值是不准确的。
我只是想表达这个1.488吞吐量值的不准确性,而不是去质疑这个计算的合理性
:handshake
这个就是最大值啊,就比如说吞吐率是1G,难道只用100M就不行么?
1G是端口速率啊,在通过每个数据包的大小可以算出吞吐量吧?
可是如果数据包按64那个最小的算,那么得出的1.488的吞吐量是不是就是最大吞吐量?
可实际传输中不可能所有数据都是64B的最小值,也就是说实际传输中的吞吐量必然小于1.488这个值对吧?
那么这个1.488吞吐量是不是毫无意义?
我是这个意思啊
有意思。truelance已经把逻辑都讲清楚了。
按照最小值计算可以横向比较设备转发性能,这是理论值,但是在实际生产网中往往按照平均包长大小计算的。
这孩子纠结的让万年潜水的我都看不下去了……
吞吐量数值是要跟包大小绑定的,对于GE端口,说1.488Mpps必然要注明是64bytes包。
但是,吞吐量不是衡量端口速率的参数,而是衡量交换芯片/CPU最大处理能力的参数,你为啥一定要觉得没有意义呢?
就比如同样一个4.0寸的屏,720p的分辨率跟1280p的分辨率,你说有区别么?
吞吐量不是衡量端口速率的参数,而是衡量交换芯片/CPU最大处理能力的参数
我开始不明白吞吐量是衡量什么的,现在有这句话就不纠结了:L
热点问题