本發(fā)明涉及一種測(cè)速方法,尤其是一種網(wǎng)絡(luò)帶寬測(cè)速方法。
背景技術(shù):
:電信運(yùn)營(yíng)商為客戶(hù)提供一定帶寬的Internet接入;為了檢驗(yàn)帶寬是否達(dá)標(biāo),一般均由客戶(hù)使用個(gè)人電腦在網(wǎng)頁(yè)上直接測(cè)速。但是隨著智能網(wǎng)關(guān)的流行,測(cè)速轉(zhuǎn)由網(wǎng)關(guān)來(lái)進(jìn)行;客戶(hù)通過(guò)相應(yīng)測(cè)速應(yīng)用來(lái)發(fā)起測(cè)速并查看結(jié)果。當(dāng)前的測(cè)速方法通常由網(wǎng)關(guān)使用測(cè)速應(yīng)用下載特定服務(wù)器的特定文件來(lái)計(jì)算網(wǎng)絡(luò)帶寬;測(cè)速應(yīng)用如wget、axel等;當(dāng)今網(wǎng)關(guān)使用的SoC,雖然其轉(zhuǎn)發(fā)包處理能力多為線速,但是真正CPU的包處理能力并不強(qiáng)。處理Linux內(nèi)核封包能力有限;而測(cè)試應(yīng)用處理的封包需經(jīng)過(guò)Linux內(nèi)核IP協(xié)議棧的處理后才能被此類(lèi)測(cè)試應(yīng)用處理,故無(wú)法勝任大帶寬(比如大于1Gbps)測(cè)速,實(shí)效性以及準(zhǔn)確性難以保證,而且小帶寬的準(zhǔn)確性不高;越接近網(wǎng)關(guān)CPU處理能力上限測(cè)速結(jié)構(gòu)越不精準(zhǔn),存在較大誤差;因此目前在網(wǎng)關(guān)上直接測(cè)速還無(wú)法滿(mǎn)足在高帶寬的場(chǎng)景下測(cè)試出實(shí)際運(yùn)營(yíng)商提供給客戶(hù)帶寬能力的需求。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的不足,提供一種基于Linux內(nèi)核驅(qū)動(dòng)的網(wǎng)絡(luò)帶寬測(cè)速方法,此方法縮短了Linux內(nèi)核包處理、應(yīng)用層的開(kāi)銷(xiāo),極大地利用了有限的網(wǎng)關(guān)CPU資源,實(shí)現(xiàn)更高帶寬的測(cè)速,滿(mǎn)足在高帶寬的場(chǎng)景下測(cè)試出實(shí)際運(yùn)營(yíng)商提供給客戶(hù)帶寬能力的需求。本發(fā)明采用的技術(shù)方案是:一種基于Linux內(nèi)核驅(qū)動(dòng)的網(wǎng)絡(luò)帶寬測(cè)速方法,包括以下步驟:步驟S1,測(cè)速開(kāi)始,測(cè)速應(yīng)用和測(cè)速服務(wù)器建立TCP連接,測(cè)速應(yīng)用和測(cè)速服務(wù)器的傳輸建立,透過(guò)HTTP或FTP協(xié)議從測(cè)速服務(wù)器找到需要下載的資料并開(kāi)始下載;IP協(xié)議棧緩存部分資料;步驟S2,測(cè)速應(yīng)用立即透過(guò)信息通訊界面告知Linux內(nèi)核需要測(cè)速驅(qū)動(dòng)參與下載;Linux內(nèi)核把與測(cè)速服務(wù)器建立的TCP連接的五元組信息告知測(cè)速驅(qū)動(dòng);測(cè)速驅(qū)動(dòng)添加一條測(cè)速信息條目用于后續(xù)處理;步驟S3,測(cè)速驅(qū)動(dòng)在上行流方向檢查途徑的報(bào)文,抓取IP協(xié)議棧與測(cè)速服務(wù)器的上行ACK報(bào)文,一旦抓取到匹配的上行ACK報(bào)文后,測(cè)速驅(qū)動(dòng)會(huì)學(xué)習(xí)上行ACK報(bào)文中所帶的信息;步驟S4,學(xué)習(xí)到上行ACK報(bào)文后,測(cè)速驅(qū)動(dòng)開(kāi)始檢查下行資料的報(bào)文,匹配到條目后,對(duì)下行資料的報(bào)文進(jìn)行分析,分析并學(xué)習(xí)下行資料報(bào)文中的信息;然后測(cè)速驅(qū)動(dòng)組建一個(gè)測(cè)速驅(qū)動(dòng)回復(fù)測(cè)速服務(wù)器的ACK報(bào)文,填入學(xué)習(xí)到的信息;向測(cè)速服務(wù)器返回測(cè)速驅(qū)動(dòng)回復(fù)測(cè)速服務(wù)器的ACK報(bào)文;接下來(lái)的資料報(bào)文由測(cè)速驅(qū)動(dòng)處理;步驟S5,測(cè)速結(jié)束后,上層測(cè)速應(yīng)用負(fù)責(zé)從測(cè)速驅(qū)動(dòng)取回測(cè)速資料。進(jìn)一步地,步驟S1中,測(cè)速應(yīng)用不實(shí)際接收資料文件。進(jìn)一步地,步驟S2中,建立的測(cè)速信息條目用于記錄:Linux內(nèi)核與測(cè)速服務(wù)器建立的TCP連接的五元組信息,學(xué)習(xí)以獲得的IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記,以及統(tǒng)計(jì)信息。進(jìn)一步地,步驟S3中,測(cè)速驅(qū)動(dòng)學(xué)習(xí)到的上行ACK報(bào)文中的信息包括:IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記。進(jìn)一步地,步驟S4中,測(cè)速驅(qū)動(dòng)學(xué)習(xí)到的下行資料報(bào)文中的信息包括:IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記。進(jìn)一步地,步驟S4中,測(cè)速驅(qū)動(dòng)組建一個(gè)測(cè)速驅(qū)動(dòng)回復(fù)測(cè)速服務(wù)器的ACK報(bào)文,資料報(bào)文由測(cè)速驅(qū)動(dòng)處理。進(jìn)一步地,步驟S4中,測(cè)速驅(qū)動(dòng)對(duì)收到的下行資料的報(bào)文作丟棄處理,不再發(fā)回IP協(xié)議棧以及上層的測(cè)速應(yīng)用。本發(fā)明的優(yōu)點(diǎn)在于:本發(fā)明提供的方法縮短了Linux內(nèi)核包處理、應(yīng)用層的開(kāi)銷(xiāo),以及Linux內(nèi)核網(wǎng)絡(luò)棧中TCP重傳的影響,直接在Linux內(nèi)核驅(qū)動(dòng)層對(duì)TCP包進(jìn)行處理,從而極大地利用了有限的網(wǎng)關(guān)CPU資源,實(shí)現(xiàn)更高帶寬的測(cè)速,滿(mǎn)足在高帶寬的場(chǎng)景下測(cè)試出實(shí)際運(yùn)營(yíng)商提供給客戶(hù)帶寬能力的需求。附圖說(shuō)明圖1為本發(fā)明的實(shí)施例結(jié)構(gòu)組成示意圖。圖2為本發(fā)明的測(cè)速驅(qū)動(dòng)的主要邏輯示意圖。具體實(shí)施方式下面結(jié)合具體附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。實(shí)施例整體架構(gòu)如圖1所示,測(cè)試應(yīng)用通過(guò)Linux內(nèi)核與測(cè)速服務(wù)器通信;在Linux內(nèi)核中,設(shè)有IP協(xié)議棧、PON驅(qū)動(dòng);PON驅(qū)動(dòng)用于與網(wǎng)絡(luò)中的OLT(光線路終端)通信,測(cè)速服務(wù)器連接OLT;基于Linux內(nèi)核驅(qū)動(dòng)的網(wǎng)絡(luò)帶寬測(cè)速方法,通過(guò)設(shè)置一個(gè)測(cè)速驅(qū)動(dòng)于上行媒介收發(fā)驅(qū)動(dòng)處,上下行報(bào)文均會(huì)流經(jīng)此處;由于IP協(xié)議棧龐大而復(fù)雜,不宜也不易放在測(cè)速驅(qū)動(dòng)內(nèi);圖1中上行為PON驅(qū)動(dòng)向測(cè)速服務(wù)器方向;正常情況下測(cè)速驅(qū)動(dòng)不工作,Linux內(nèi)核接收到的資料由PON驅(qū)動(dòng)對(duì)接Linux內(nèi)核的IP協(xié)議棧;本測(cè)速方法被設(shè)計(jì)成HTTP協(xié)議及FTP協(xié)議由上層測(cè)速應(yīng)用負(fù)責(zé),等傳輸建立完后再透過(guò)信息通訊界面通知測(cè)速驅(qū)動(dòng),測(cè)速驅(qū)動(dòng)收到特定信息(TCP連接的五元組信息)后在測(cè)速驅(qū)動(dòng)內(nèi)建議一條測(cè)速信息條目;由測(cè)速驅(qū)動(dòng)學(xué)習(xí)IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記;一旦學(xué)習(xí)成功,立刻截?cái)嘤嘘P(guān)下行測(cè)速流,改由測(cè)速驅(qū)動(dòng)負(fù)責(zé)處理TCP報(bào)文;同時(shí)統(tǒng)計(jì)下載資料信息,統(tǒng)計(jì)成功后,應(yīng)用層負(fù)責(zé)讀取信息并回報(bào)給相應(yīng)的測(cè)速應(yīng)用;測(cè)速驅(qū)動(dòng)的主要處理邏輯如圖2所示,包括四大部分:1)測(cè)速信息條目,測(cè)速信息是一筆資料結(jié)構(gòu),包含了測(cè)速驅(qū)動(dòng)處理的五元組信息、IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記,以及統(tǒng)計(jì)信息等;2)上行流處理,上行流處理主要負(fù)責(zé)學(xué)習(xí)測(cè)速連接的信息,用于后續(xù)下行接替IP協(xié)議棧處理下行報(bào)文;3)下行流處理,下行流處理只有在上行流處理完才會(huì)介入,主要負(fù)責(zé)資料包統(tǒng)計(jì),協(xié)議分析,然后根據(jù)需要回復(fù)ACK報(bào)文,收到的資料報(bào)文作丟棄處理,不發(fā)回IP協(xié)議棧和上層測(cè)速應(yīng)用;4)資料管理及異常處理,這一部分負(fù)責(zé)添加刪除測(cè)速信息,處理各種正常和異常情況,比如下載時(shí)間到,下載結(jié)束,學(xué)習(xí)失敗,下載異常等;在測(cè)速時(shí),包括以下步驟:步驟S1,測(cè)速開(kāi)始,測(cè)速應(yīng)用和測(cè)速服務(wù)器建立TCP連接,測(cè)速應(yīng)用和測(cè)速服務(wù)器的傳輸建立,透過(guò)HTTP或FTP協(xié)議從測(cè)速服務(wù)器找到需要下載的資料并開(kāi)始下載;測(cè)速應(yīng)用不實(shí)際接收資料文件,但Linux內(nèi)核已經(jīng)開(kāi)始下載,IP協(xié)議棧緩存一部分資料;步驟S2,測(cè)速應(yīng)用立即透過(guò)信息通訊界面告知Linux內(nèi)核需要測(cè)速驅(qū)動(dòng)參與下載;Linux內(nèi)核把與測(cè)速服務(wù)器建立的TCP連接的五元組信息告知測(cè)速驅(qū)動(dòng);測(cè)速驅(qū)動(dòng)添加一條測(cè)速信息條目用于后續(xù)處理;步驟S3,測(cè)速驅(qū)動(dòng)在上行流方向檢查途徑的報(bào)文,由于Linux內(nèi)核的IP協(xié)議棧會(huì)緩存一部分資料,因此可以抓取到IP協(xié)議棧與測(cè)速服務(wù)器的上行ACK報(bào)文,一旦抓取到匹配的上行ACK報(bào)文后,測(cè)速驅(qū)動(dòng)會(huì)學(xué)習(xí)上行ACK報(bào)文中所帶的一些信息,比如IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記;這些學(xué)習(xí)到的信息會(huì)用于測(cè)速驅(qū)動(dòng)組建測(cè)速驅(qū)動(dòng)回復(fù)測(cè)速服務(wù)器的ACK報(bào)文;步驟S4,學(xué)習(xí)到上行ACK報(bào)文后,測(cè)速驅(qū)動(dòng)開(kāi)始檢查下行資料的報(bào)文,匹配到條目后,對(duì)下行資料的報(bào)文進(jìn)行分析,分析并學(xué)習(xí)下行資料報(bào)文中的各信息,比如IP層的標(biāo)識(shí)、TCP層的序號(hào)(SequenceNumber)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記;然后測(cè)速驅(qū)動(dòng)組建一個(gè)測(cè)速驅(qū)動(dòng)回復(fù)測(cè)速服務(wù)器的ACK報(bào)文,填入學(xué)習(xí)到的信息,包括IP層的標(biāo)識(shí)、TCP層的序號(hào)、TCP層窗口大小、及可選的時(shí)間戳標(biāo)記;向測(cè)速服務(wù)器返回測(cè)速驅(qū)動(dòng)回復(fù)測(cè)速服務(wù)器的ACK報(bào)文;這樣測(cè)速驅(qū)動(dòng)就完美替換了IP協(xié)議棧以及測(cè)速應(yīng)用的功能;此步驟中,測(cè)速驅(qū)動(dòng)對(duì)收到的下行資料的報(bào)文作丟棄處理,不再發(fā)回IP協(xié)議棧以及上層的測(cè)速應(yīng)用;此處省去了IP協(xié)議棧處理,以及Linux內(nèi)核到應(yīng)用層(測(cè)速應(yīng)用處于應(yīng)用層)的資料拷貝動(dòng)作,資料報(bào)文收到后經(jīng)過(guò)簡(jiǎn)單判斷即被忽略,因此效率極高;步驟S5,當(dāng)下載完成或者下載時(shí)間到了后,上層測(cè)速應(yīng)用負(fù)責(zé)從測(cè)速驅(qū)動(dòng)取回測(cè)速資料。經(jīng)實(shí)際測(cè)試,本發(fā)明提供的方法,對(duì)于高帶寬場(chǎng)景下的測(cè)試結(jié)果遠(yuǎn)優(yōu)于傳統(tǒng)方法的測(cè)試結(jié)果。如下表所示:運(yùn)營(yíng)商實(shí)際帶寬傳統(tǒng)方法本發(fā)明的方法100M95M98M240M220M236M1G350M965M當(dāng)前第1頁(yè)1 2 3