怎么測試一個設(shè)備下載速度的極限?
** 測試場景 **
通過 http 或者 FTP下載,客戶端查看下載速率设拟,
查看設(shè)備能夠達(dá)到的下載極限是多少?
這方面專門有個標(biāo)準(zhǔn)-----TR143協(xié)議文檔慨仿。
為什么主要關(guān)注下載速率久脯?
普通終端用戶,絕大部分場景是下載镰吆,看網(wǎng)頁是下載帘撰,看視頻也是下載,點播節(jié)目還是下載万皿,上傳也有摧找,但是不構(gòu)成瓶頸。
設(shè)備下載速率慢的原因是什么呢?
這個原因與環(huán)境相關(guān)的因素有很多牢硅,網(wǎng)絡(luò)環(huán)境中丟包蹬耘,亂序,服務(wù)器或者終端擁塞……减余,一個與環(huán)境無關(guān)的一個重要因素是 客戶端的報文的處理流程太長.
要想到達(dá)極限速率综苔,外在因素需要盡量排除環(huán)境的影響。內(nèi)在因素需要減少TCP報文位岔,在終端的處理流程休里。
具體來看,在物理端口收到報文之后,都要經(jīng)過,下面幾個步驟:
L1-->L2-->L3-->L4-->CPU-->L4-->L3-->L2--L1 的層層解析,層層處理,最后再發(fā)出設(shè)備赃承。
已有的優(yōu)化流程
首包走全流程妙黍,后續(xù)包從2.5層快轉(zhuǎn)掉。
在下載的流程中,只有首包(第一個出的TCP SYN報文),需要走這個過程,但是建立TCP鏈接之后,就沒有必要走全部的流程了.
通過第一個報文(首包)記錄下來,SMAC, DMAC,SIP,DIP,Sport,Dport,也就是說的五元組瞧剖。
其實不止這些東西,還有VLAN,pppoe的sessionId等,記錄這些的目的是為了在這個TCP連接里面的其他報文沒有必要再走一遍首包的流程,只用按照首包的流程轉(zhuǎn)發(fā)就可以了.
這里還要注意要想達(dá)到極限的下載速度,就要快速回ACK,因此ACK里面的信息一定是需要的 .
還要考慮其他情況,
比如分片報文:
分片報文對首包,回復(fù)ACK,非首包就不用回復(fù)了.
非測速報文:
不進(jìn)入,測速的緩存收包隊列
滑動窗口也要能動態(tài)的調(diào)整
重傳的情況?
重傳的報文直接丟棄,怎么判斷重傳,根據(jù)序列號來,如果序列號小于當(dāng)前就丟棄,那么序列號翻轉(zhuǎn)的情況呢?----翻轉(zhuǎn)的流程要放在這個的前面處理
怎么才能做好這個需求?
1:熟悉TCP的流程,怎么才能熟悉TCP的流程?
對著TCP/IP 卷一里面TCP章節(jié)的內(nèi)容,看看各個過程中的注意事項.
怎么創(chuàng)建環(huán)形隊列?
怎么在環(huán)形隊列中插入刪除?
不能進(jìn)入環(huán)形隊列的報文需要丟棄還是緩存?如果是緩存緩存隊列多大?
為了提高效率,環(huán)形隊列中申請的內(nèi)存不能釋放,需要增加內(nèi)存使用與否的標(biāo)記.