? ? ? ? 接口限速功能測試的時候發(fā)現(xiàn)一個問題,使用iperf3打流總是打不滿接口上配置的速率瘸味,而使用iperf卻可以楣嘁。而且在使用iperf3 的時候迹栓,我嘗試過調(diào)大接口限速所使用的令牌桶的桶深,發(fā)現(xiàn)桶深達到一定程度的時候僧免,流量可以達到接口速率刑赶。很容易讓人想到突發(fā)流量導致丟包,從而導致無法打滿接口速率懂衩。
? ? ? ? 令牌桶算法的桶深就是為突發(fā)流量提供一個緩沖撞叨,以使限速可以更加平滑,一般至少大于接口MTU浊洞,一些廠家會提供一些計算方式牵敷,如juniper就有一段描述(https://www.juniper.net/documentation/en_US/junos/topics/concept/policer-mx-m120-m320-burstsize-determining.html) ,但效果還是需要根據(jù)實際需求調(diào)整法希。桶深在流量持續(xù)且均勻的時候作用不大枷餐,但在有突發(fā)流的情況下作用很大。配置太小苫亦,會丟棄大量的突發(fā)報文毛肋,效果上看實際速率會小于接口限速;配置太大屋剑,在持續(xù)突發(fā)流的情況下润匙,會放過很多需要限速的報文,效果上看實際速率會大于接口限速饼丘,但這種情況使用iperf工具很難構(gòu)造趁桃,需要改寫軟件,或者使用專業(yè)的打流測試儀(非常貴)肄鸽。
? ? ? ? 那iperf3打的是突發(fā)流卫病?iperf打的較均勻的流量嗎?一般一個工具的不同版本不會有著么大的差別典徘,但不需要看源碼蟀苛,抓個包看看就行了,也不浪費時間逮诲。
? ? ? ? 如上圖帜平,iperf3工具每100ms發(fā)一輪報文幽告,每次在2、3ms內(nèi)瞬間發(fā)完裆甩;
? ? ? ? 如上圖冗锁,iperf工具則均勻的發(fā)送報文,證明 iperf 和 iperf3的發(fā)包機制確實是有差別的嗤栓,接口限速使用 iperf3 作為測試工具需要調(diào)整令牌桶參數(shù)以達到最佳效果冻河。