两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種網(wǎng)絡(luò)擁塞處理方法及裝置與流程

文檔序號(hào):12132049閱讀:243來(lái)源:國(guó)知局
一種網(wǎng)絡(luò)擁塞處理方法及裝置與流程

本發(fā)明實(shí)施例涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),尤其涉及一種網(wǎng)絡(luò)擁塞處理方法及裝置。



背景技術(shù):

隨著網(wǎng)絡(luò)大數(shù)據(jù)的不斷發(fā)展,由于網(wǎng)絡(luò)擁塞導(dǎo)致系統(tǒng)服務(wù)器卡死的情況時(shí)常出現(xiàn)。

當(dāng)路由器中存在大量數(shù)據(jù)流時(shí),頻繁網(wǎng)絡(luò)軟中斷的系統(tǒng)CPU(Central Processing Unit,中央處理器)的占用率可能會(huì)達(dá)到100%,由于軟中斷的級(jí)別比普通應(yīng)用進(jìn)程的級(jí)別高,導(dǎo)致路由器本地房屋得不到執(zhí)行。

針對(duì)上述問(wèn)題,目前常用的解決方式有:一、以太網(wǎng)驅(qū)動(dòng)支持NAPI調(diào)度的方式。該方法在網(wǎng)絡(luò)數(shù)據(jù)量大時(shí),可縮短輪詢(xún)處理包的頻率或者每次輪詢(xún)處理包的個(gè)數(shù),避免軟中斷耗盡CPU資源。但是,該方法在網(wǎng)絡(luò)擁塞時(shí)不能選擇性丟包,導(dǎo)致關(guān)鍵業(yè)務(wù)數(shù)據(jù)包丟失,同時(shí),網(wǎng)絡(luò)數(shù)據(jù)量適中時(shí),會(huì)出現(xiàn)軟中斷與輪詢(xún)兩種調(diào)度方式的頻繁切換,影響系統(tǒng)性能。二、應(yīng)用QOS(Quality of Service,服務(wù)質(zhì)量)限定接口帶寬的方式。該方法可限定總帶寬的大小,也可根據(jù)業(yè)務(wù)需要進(jìn)行選擇性丟包,但是TC流量控制方式本身耗費(fèi)大量CPU,且在當(dāng)CPU緊張時(shí)會(huì)導(dǎo)致隊(duì)列運(yùn)算不準(zhǔn)確,并失去對(duì)數(shù)據(jù)流的控制,當(dāng)不能壓制總帶寬時(shí),會(huì)加劇CPU的負(fù)載。三、縮小以太網(wǎng)接收和發(fā)送的緩存區(qū)的大小。但是該方式不能實(shí)現(xiàn)丟包率的動(dòng)態(tài)調(diào)整,不能對(duì)數(shù)據(jù)包的選擇性丟包。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種網(wǎng)絡(luò)擁塞處理方法及裝置,以實(shí)現(xiàn)可動(dòng)態(tài)調(diào)整的選擇性丟包,保證系統(tǒng)的正常運(yùn)行。

第一方面,本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)擁塞處理方法,該方法包括:

獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)所述當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理;

當(dāng)確定進(jìn)行丟包處理時(shí),根據(jù)所述當(dāng)前CPU占用率確定當(dāng)前丟包率;

根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量;

根據(jù)所述當(dāng)前丟包率和所述滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

進(jìn)一步的,根據(jù)所述當(dāng)前CPU占用率確定當(dāng)前丟包率,包括:

根據(jù)所述當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值;

根據(jù)所述當(dāng)前丟包權(quán)值確定所述當(dāng)前丟包率。

進(jìn)一步的,根據(jù)所述當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值,包括:

判斷所述當(dāng)前CPU占用率是否大于第一閾值;

若所述當(dāng)前CPU占用率大于所述第一閾值,則確定所述當(dāng)前丟包權(quán)值加1,若所述當(dāng)前CPU占用率小于或等于所述第一閾值,則判斷所述CPU占用率是否小于第二閾值;

若所述當(dāng)前CPU占用率小于所述第二閾值,則進(jìn)一步判斷所述當(dāng)前丟包權(quán)值是否為零,若是,則確定所述當(dāng)前丟包權(quán)值不變,若不是,則確定所述當(dāng)前丟包權(quán)值減1;

若所述當(dāng)前CPU占用率大于或等于所述第二閾值,則在預(yù)設(shè)時(shí)間間隔后循環(huán)獲取新的CPU占用率。

進(jìn)一步的,根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量,包括:

獲取數(shù)據(jù)包信息,其中,所述數(shù)據(jù)包信息包括數(shù)據(jù)包的協(xié)議類(lèi)型、數(shù)據(jù)包長(zhǎng)度、源端口和目的端口;

檢測(cè)所述數(shù)據(jù)包的所述協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型,若不是預(yù)設(shè)協(xié)議類(lèi)型,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若是預(yù)設(shè)協(xié)議類(lèi)型,對(duì)數(shù)據(jù)包進(jìn)行預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,并檢測(cè)所述數(shù)據(jù)包的所述數(shù)據(jù)包長(zhǎng)度是否大于預(yù)設(shè)長(zhǎng)度;

若所述數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度小于或等于所述預(yù)設(shè)長(zhǎng)度,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若所述數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度大于所述預(yù)設(shè)長(zhǎng)度,則確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量加1。

進(jìn)一步的,在檢測(cè)所述數(shù)據(jù)包的協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型之前,所述方法包括:

檢測(cè)所述數(shù)據(jù)包是否含有預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,若是,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則檢測(cè)所述數(shù)據(jù)包的所述協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型。

進(jìn)一步的,在確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量之后,所述方法還包括:

檢測(cè)所述數(shù)據(jù)包的源端口和/或目的端口是否是預(yù)放開(kāi)端口,若是,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則確定所述數(shù)據(jù)包滿(mǎn)足所述丟包條件。

進(jìn)一步的,根據(jù)所述當(dāng)前丟包率和所述滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包,包括:

根據(jù)所述當(dāng)前丟包率和所述滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量確定丟包數(shù)量;

在滿(mǎn)足丟包條件的數(shù)據(jù)包中隨機(jī)選擇所述丟包數(shù)量的數(shù)據(jù)包進(jìn)行丟包處理。

第二方面,本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)擁塞處理裝置,該裝置包括:

丟包處理判斷模塊,用于獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)所述當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理;

丟包率確定模塊,用于當(dāng)確定進(jìn)行丟包處理時(shí),根據(jù)所述當(dāng)前CPU占用率確定當(dāng)前丟包率;

數(shù)據(jù)包數(shù)量確定模塊,用于根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量;

丟包控制模塊,用于根據(jù)所述當(dāng)前丟包率和所述滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

進(jìn)一步的,所述丟包率確定模塊包括:

丟包權(quán)值確定單元,用于根據(jù)所述當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值;

丟包率確定單元,用于根據(jù)所述當(dāng)前丟包權(quán)值確定所述當(dāng)前丟包率。

進(jìn)一步的,所述丟包權(quán)值確定單元包括:

第一閾值判斷子單元,用于判斷所述當(dāng)前CPU占用率是否大于第一閾值;

第一丟包權(quán)值確定子單元,用于若所述當(dāng)前CPU占用率大于所述第一閾值,則確定所述當(dāng)前丟包權(quán)值加1;;

第二閾值判斷子單元,用于若所述當(dāng)前CPU占用率小于或等于所述第一閾值,則判斷所述CPU占用率是否小于第二閾值;

第二丟包權(quán)值確定子單元,用于若所述當(dāng)前CPU占用率小于所述第二閾值,則進(jìn)一步判斷所述當(dāng)前丟包權(quán)值是否為零,若是,則確定所述當(dāng)前丟包權(quán)值不變,若不是,則確定所述當(dāng)前丟包權(quán)值減1;

CPU占用率循環(huán)獲取子單元,用于若所述當(dāng)前CPU占用率大于或等于所述第二閾值,則在預(yù)設(shè)時(shí)間間隔后循環(huán)獲取新的CPU占用率。

進(jìn)一步的,所述數(shù)據(jù)包數(shù)量確定模塊包括:

數(shù)據(jù)包信息獲取單元,用于獲取數(shù)據(jù)包信息,其中,所述數(shù)據(jù)包信息包括數(shù)據(jù)包的協(xié)議類(lèi)型、數(shù)據(jù)包長(zhǎng)度、源端口和目的端口;

協(xié)議類(lèi)型判斷單元,用于檢測(cè)所述數(shù)據(jù)包的所述協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型,若不是預(yù)設(shè)協(xié)議類(lèi)型,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件;

數(shù)據(jù)包長(zhǎng)度判斷單元,用于若所述數(shù)據(jù)包的協(xié)議類(lèi)型是預(yù)設(shè)協(xié)議類(lèi)型,對(duì)數(shù)據(jù)包進(jìn)行預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,并檢測(cè)所述數(shù)據(jù)包的所述數(shù)據(jù)包長(zhǎng)度是否大于預(yù)設(shè)長(zhǎng)度;

數(shù)據(jù)包數(shù)量確定單元,用于若所述數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度小于或等于所述預(yù)設(shè)長(zhǎng)度,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若所述數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度大于所述預(yù)設(shè)長(zhǎng)度,則確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量加1。

進(jìn)一步的,所述數(shù)據(jù)包數(shù)量確定模塊包括:

標(biāo)記檢測(cè)單元,在檢測(cè)所述數(shù)據(jù)包的協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型之前,檢測(cè)所述數(shù)據(jù)包是否含有預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,若是,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則檢測(cè)所述數(shù)據(jù)包的所述協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型。

進(jìn)一步的,所述數(shù)據(jù)包數(shù)量確定模塊還包括:

端口檢測(cè)單元,用于在確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量之后,檢測(cè)所述數(shù)據(jù)包的源端口和/或目的端口是否是預(yù)放開(kāi)端口,若是,則確定所述數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則確定所述數(shù)據(jù)包滿(mǎn)足所述丟包條件。

進(jìn)一步的,所述丟包控制模塊包括:

丟包數(shù)量確定單元,用于根據(jù)所述當(dāng)前丟包率和所述滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量確定丟包數(shù)量;

丟包控制單元,用于在滿(mǎn)足丟包條件的數(shù)據(jù)包中隨機(jī)選擇所述丟包數(shù)量的數(shù)據(jù)包進(jìn)行丟包處理。

本發(fā)明實(shí)施例通過(guò)根據(jù)可動(dòng)態(tài)調(diào)節(jié)的當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包,解決了現(xiàn)有技術(shù)中軟中斷導(dǎo)致網(wǎng)絡(luò)擁塞時(shí),無(wú)法選擇性丟包處理或者選擇性丟包處理增大CPU負(fù)載的問(wèn)題,實(shí)現(xiàn)了可動(dòng)態(tài)調(diào)整的選擇性丟包,保證系統(tǒng)的正常運(yùn)行。

附圖說(shuō)明

圖1是本發(fā)明實(shí)施例一提供的網(wǎng)絡(luò)擁塞處理方法的流程圖;

圖2是本發(fā)明實(shí)施例二提供的網(wǎng)絡(luò)擁塞處理方法的流程圖;

圖3是本發(fā)明實(shí)施例三提供的網(wǎng)絡(luò)擁塞處理方法的流程圖;

圖4是本發(fā)明實(shí)施例四提供的網(wǎng)絡(luò)擁塞處理方法的流程圖;

圖5是本發(fā)明實(shí)施例五提供的網(wǎng)絡(luò)擁塞處理裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。

實(shí)施例一

圖1為本發(fā)明實(shí)施例一提供的網(wǎng)絡(luò)擁塞處理方法的流程圖,本實(shí)施例可適用于路由器中存在大量數(shù)據(jù)流,軟終端占用大量CPU導(dǎo)致網(wǎng)絡(luò)擁塞情況,該方法可以由本實(shí)施例提供的網(wǎng)絡(luò)擁塞處理裝置來(lái)執(zhí)行,該裝置可采用軟件和/或硬件的方式實(shí)現(xiàn),該方法具體包括:

S110、獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理。若是,則執(zhí)行步驟S120,若否,則在預(yù)設(shè)時(shí)間后循環(huán)執(zhí)行步驟S110。

其中,中斷指的是在程序運(yùn)行過(guò)程中,系統(tǒng)出現(xiàn)一個(gè)必須由CPU立即處理的情況,CPU暫停終止正在執(zhí)行的程序轉(zhuǎn)而處理新情況的過(guò)程,中斷包括軟中斷與硬中斷。其中,硬中斷由硬件產(chǎn)生,例如可以是磁盤(pán)、網(wǎng)卡或者時(shí)鐘等,軟中斷是由當(dāng)前正在運(yùn)行的進(jìn)程產(chǎn)生的。CPU占用率指的是正在運(yùn)行的程序占用的CPU資源,CPU占用率越高說(shuō)明當(dāng)前運(yùn)行了很多程序。當(dāng)CPU占用率達(dá)到100%時(shí),影響智能終端的基礎(chǔ)功能的正常運(yùn)行。

本實(shí)施例中,當(dāng)路由器中存在大量數(shù)據(jù)流時(shí),頻繁的網(wǎng)絡(luò)軟中斷的CPU占用率可能達(dá)到100%,影響智能終端的基礎(chǔ)功能的正常運(yùn)行。針對(duì)上述問(wèn)題,采用選擇性丟包的方式解決。

示例性的,檢測(cè)當(dāng)前軟中斷的CPU占用率,若當(dāng)前軟中斷的CPU占用率大于或者等于91%,則確定進(jìn)行丟包處理,若當(dāng)前軟中斷的CPU占用率小于91%,則確定不進(jìn)行丟包處理。

S120、根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包率。

其中,丟包率指的是丟棄數(shù)據(jù)包的數(shù)量與發(fā)送數(shù)據(jù)包數(shù)量的比值。示例性的,丟包率可以是10%,即在當(dāng)前發(fā)送的每10個(gè)數(shù)據(jù)包中丟棄1個(gè)數(shù)據(jù)包。

本實(shí)施例中,根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包率,丟包率可動(dòng)態(tài)調(diào)整,在網(wǎng)絡(luò)擁塞時(shí)增大丟包率,提高CPU資源釋放效率,在數(shù)據(jù)量不大時(shí),減小丟包率,避免大量數(shù)據(jù)包丟失。

S130、根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量。

其中,預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)指的是系統(tǒng)中預(yù)設(shè)的選擇性丟包的數(shù)據(jù)包選擇條件,為了保證智能終端的基本功能,示例性的,丟棄的數(shù)據(jù)包不包括交互性的小數(shù)據(jù)包,上網(wǎng)常用的數(shù)據(jù)包,例如HTTPS、HTTP或者DNS等。

需要說(shuō)明的是,滿(mǎn)足丟包條件的數(shù)據(jù)包在以太網(wǎng)接收和發(fā)送數(shù)據(jù)包的緩存區(qū)中緩存數(shù)據(jù)包中進(jìn)行選擇。

S140、根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

本實(shí)施例中,在滿(mǎn)足丟包條件的數(shù)據(jù)包中根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量確定可丟棄的數(shù)據(jù)包,并進(jìn)行丟包處理。其中,在不減小以太網(wǎng)接收和發(fā)送數(shù)據(jù)包的緩存區(qū)大小的情況下,對(duì)緩存區(qū)內(nèi)的數(shù)據(jù)包進(jìn)行選擇性丟包處理,實(shí)現(xiàn)在進(jìn)行丟包處理,為引進(jìn)新的CPU負(fù)載。

本實(shí)施例的技術(shù)方案,通過(guò)根據(jù)可動(dòng)態(tài)調(diào)節(jié)的當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包,解決了現(xiàn)有技術(shù)中軟中斷導(dǎo)致網(wǎng)絡(luò)擁塞時(shí),無(wú)法選擇性丟包處理或者選擇性丟包處理增大CPU負(fù)載的問(wèn)題,實(shí)現(xiàn)了可動(dòng)態(tài)調(diào)整的選擇性丟包,保證系統(tǒng)的正常運(yùn)行。

在上述實(shí)施例的基礎(chǔ)上,步驟S140還可以是:

根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量確定丟包數(shù)量;

在滿(mǎn)足丟包條件的數(shù)據(jù)包中隨機(jī)選擇丟包數(shù)量的數(shù)據(jù)包進(jìn)行丟包處理。

示例性的,當(dāng)前丟包率可以是10%,滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量可以是50,可確定丟包數(shù)量為5,在滿(mǎn)足丟包條件的50個(gè)數(shù)據(jù)包中系統(tǒng)隨機(jī)的選擇5個(gè)數(shù)據(jù)包進(jìn)行丟包處理。

實(shí)施例二

圖2是本發(fā)明實(shí)施例二提供的網(wǎng)絡(luò)擁塞處理方法的流程圖,在上述實(shí)施例的基礎(chǔ)上,進(jìn)一步的將根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包率優(yōu)化為:根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值;根據(jù)當(dāng)前丟包權(quán)值確定當(dāng)前丟包率。相應(yīng)的,該方法具體包括:

S210、獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理。若是,則執(zhí)行步驟S220,若否,則在預(yù)設(shè)時(shí)間后循環(huán)執(zhí)行步驟S210。

S220、根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值。

其中,丟包權(quán)值指的是用于表示當(dāng)前CPU占用率的標(biāo)識(shí),示例性的,當(dāng)前丟包權(quán)值可以是0、1或者2。

S230、根據(jù)當(dāng)前丟包權(quán)值確定當(dāng)前丟包率。

本實(shí)施例中,當(dāng)系統(tǒng)確定當(dāng)前丟包權(quán)值時(shí),生成預(yù)設(shè)丟包率的指令,并根據(jù)該指令進(jìn)行選擇性丟包處理,例如預(yù)設(shè)丟包率可以是10%。示例性的,若當(dāng)前丟包權(quán)值為1時(shí),確定當(dāng)前丟包率為10%,若當(dāng)前丟包權(quán)值為2時(shí),確定當(dāng)前丟包率為20%。

S240、根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量。

S250、根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

本實(shí)施例的技術(shù)方案,通過(guò)根據(jù)可動(dòng)態(tài)調(diào)節(jié)的當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包,解決了現(xiàn)有技術(shù)中軟中斷導(dǎo)致網(wǎng)絡(luò)擁塞時(shí),無(wú)法選擇性丟包處理或者選擇性丟包處理增大CPU負(fù)載的問(wèn)題,實(shí)現(xiàn)了可動(dòng)態(tài)調(diào)整的選擇性丟包,保證系統(tǒng)的正常運(yùn)行。

實(shí)施例三

圖3是本發(fā)明實(shí)施例三提供的網(wǎng)絡(luò)擁塞處理方法,在上述實(shí)施例的基礎(chǔ)上,進(jìn)一步的提供了根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值的方法,相應(yīng)的,該方法具體包括:

S310、獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理。若是,則執(zhí)行步驟S320,若否,則在預(yù)設(shè)時(shí)間后循環(huán)執(zhí)行步驟S310。

S320、判斷當(dāng)前CPU占用率是否大于第一閾值。若當(dāng)前CPU占用率大于第一閾值,則確定當(dāng)前丟包權(quán)值加1,并執(zhí)行步驟S350,若當(dāng)前CPU占用率小于或等于第一閾值,則執(zhí)行步驟S330。

其中,第一閾值可以是90%。

S330、判斷CPU占用率是否小于第二閾值。若當(dāng)前CPU占用率小于第二閾值,則執(zhí)行步驟S340,若當(dāng)前CPU占用率大于或等于第二閾值,則在預(yù)設(shè)時(shí)間間隔后返回執(zhí)行步驟S310。

示例性的,第二閾值可以是68%,預(yù)設(shè)時(shí)間間隔可以是3分鐘。

S340、判斷當(dāng)前丟包權(quán)值是否為零。若是,則確定當(dāng)前丟包權(quán)值不變,若不是,則確定當(dāng)前丟包權(quán)值減1,同時(shí)執(zhí)行步驟S350。

示例性的,獲取當(dāng)前CPU占用率,若當(dāng)前CPU占用率大于第一閾值(例如可以是90%),例如當(dāng)前CPU占用率可以是92%,確定當(dāng)前丟包權(quán)值加1;若當(dāng)前CPU占用率小于第二閾值(例如可以是68%),例如當(dāng)前CPU占用率可以是50%,由于當(dāng)前丟包權(quán)值為大于等于0的正整數(shù),若當(dāng)前丟包權(quán)值為零時(shí),確定當(dāng)前丟包權(quán)值保持不變,若當(dāng)前丟包權(quán)值為大于零的正整數(shù)時(shí),確定當(dāng)前丟包權(quán)值減1;若當(dāng)前CPU占用率小于等于第一閾值,同時(shí)大于等于第二閾值時(shí),例如當(dāng)前CPU占用率可以是78%,確定當(dāng)前丟包權(quán)值保持不變。

S350、根據(jù)當(dāng)前丟包權(quán)值確定當(dāng)前丟包率。

示例性的,若當(dāng)前丟包權(quán)值增大,對(duì)應(yīng)的當(dāng)前丟包率增大,若當(dāng)前丟包權(quán)值減小,對(duì)應(yīng)的當(dāng)前丟包率減小,實(shí)現(xiàn)了丟包率的動(dòng)態(tài)調(diào)整,避免了固定大小的丟包率在網(wǎng)絡(luò)嚴(yán)重?fù)砣麜r(shí)不能快速降低軟中斷的CPU占用率,或者在CPU占用率不高時(shí),丟棄大量數(shù)據(jù)包,導(dǎo)致系統(tǒng)進(jìn)行數(shù)據(jù)包重傳的情況。

需要說(shuō)明的是,根據(jù)預(yù)設(shè)時(shí)間間隔獲取不同時(shí)刻的CPU占用率,可確定不同時(shí)刻的丟包權(quán)值和丟包率,實(shí)現(xiàn)了丟包率的動(dòng)態(tài)調(diào)整。

S360、根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量。

S370、根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

本實(shí)施例的技術(shù)方案,通過(guò)當(dāng)前CPU占用率與預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果確定當(dāng)前丟包權(quán)值與丟包率,由于在預(yù)設(shè)時(shí)間間隔獲取不同時(shí)刻的CPU占用率,實(shí)現(xiàn)了丟包率的動(dòng)態(tài)調(diào)整。

實(shí)施例四

圖4是本發(fā)明實(shí)施例四提供的網(wǎng)絡(luò)擁塞處理方法的流程圖,在上述實(shí)施例的基礎(chǔ)上,進(jìn)一步的提供了滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量的確定方法,相應(yīng)的,該方法具體可以包括:

S410、獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理。若是,則執(zhí)行步驟S420,若否,則在預(yù)設(shè)時(shí)間后循環(huán)執(zhí)行步驟S410。

S420、根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包率。

S430、獲取數(shù)據(jù)包信息,其中,數(shù)據(jù)包信息包括數(shù)據(jù)包的協(xié)議類(lèi)型、數(shù)據(jù)包長(zhǎng)度、源端口和目的端口。

其中,數(shù)據(jù)包的協(xié)議類(lèi)型指的是四層協(xié)議類(lèi)型,包括應(yīng)用程、傳輸層、網(wǎng)絡(luò)互聯(lián)層和主機(jī)到網(wǎng)絡(luò)層;數(shù)據(jù)包長(zhǎng)度指的是數(shù)據(jù)包中包含的字節(jié)數(shù);源端口指的是本地終端數(shù)據(jù)包發(fā)送端口,目的端口指的是目的終端的數(shù)據(jù)包接收端口。

需要說(shuō)明的是,數(shù)據(jù)包信息可通過(guò)解包的方法獲取。在解包過(guò)程中,首先獲取數(shù)據(jù)包的二層包類(lèi)型,根據(jù)二層包類(lèi)型決定解包方式。示例性的,若數(shù)據(jù)包為PPPOE(Point-to-Point Protocol over Ethernet,以太網(wǎng)上的點(diǎn)對(duì)點(diǎn)協(xié)議)類(lèi)型的數(shù)據(jù)包,需要先剝?nèi)?shù)據(jù)包的包頭,sk_buf相關(guān)指針向下移動(dòng)8個(gè)字節(jié),獲取數(shù)據(jù)包的四層協(xié)議類(lèi)型、目的端口和源端口等數(shù)據(jù)包信息,在獲取信息后需對(duì)數(shù)據(jù)包及時(shí)還原。數(shù)據(jù)包為IP(Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議)類(lèi)型的數(shù)據(jù)包,在剝?nèi)?shù)據(jù)包的包頭后,sk_buf相關(guān)指針無(wú)需進(jìn)行移位可直接獲取數(shù)據(jù)包信息。

S440、檢測(cè)數(shù)據(jù)包的協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型。若數(shù)據(jù)包的協(xié)議類(lèi)型不是預(yù)設(shè)協(xié)議類(lèi)型,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若數(shù)據(jù)包的協(xié)議類(lèi)型是預(yù)設(shè)協(xié)議類(lèi)型,則執(zhí)行步驟S460。

本實(shí)施例中,預(yù)設(shè)協(xié)議類(lèi)型可以是傳輸層的UDP(User Datagram Protocol,用戶(hù)數(shù)據(jù)報(bào)協(xié)議)和TCP(Transmission Control Protocol,傳輸控制協(xié)議),若數(shù)據(jù)包的協(xié)議類(lèi)型不屬于UDP或者TCP,則確定該數(shù)據(jù)包不滿(mǎn)足丟包條件,不屬于丟包范圍內(nèi)的數(shù)據(jù)包。

本實(shí)施例中,丟包處理只丟棄預(yù)設(shè)協(xié)議類(lèi)型(UDP和TCP)的數(shù)據(jù)包,保證了終端的基本業(yè)務(wù)不受影響。

S450、對(duì)數(shù)據(jù)包進(jìn)行預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,并檢測(cè)數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度是否大于預(yù)設(shè)長(zhǎng)度。若數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度小于或等于預(yù)設(shè)長(zhǎng)度,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度,則執(zhí)行步驟S470。

其中,預(yù)設(shè)長(zhǎng)度可以是256字節(jié),數(shù)據(jù)包長(zhǎng)度小于或等于256字節(jié),則確定該數(shù)據(jù)包不滿(mǎn)足丟包條件,不屬于丟包范圍內(nèi)的數(shù)據(jù)包;若數(shù)據(jù)包長(zhǎng)度大于256字節(jié),則確定該數(shù)據(jù)包滿(mǎn)足丟包條件,屬于丟包范圍內(nèi)的數(shù)據(jù)包。示例性的,滿(mǎn)足丟包條件的數(shù)據(jù)包可以是BT(Bit Torrent,比特流)下載數(shù)據(jù)包。

本實(shí)施例中,選擇數(shù)據(jù)包長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的數(shù)據(jù)包進(jìn)行丟棄,能夠加快CPU占用率的調(diào)節(jié)效率。

S460、確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量加1。同時(shí)返回執(zhí)行步驟S430,獲取下一個(gè)數(shù)據(jù)包信息。

本實(shí)施例中,當(dāng)確定數(shù)據(jù)包滿(mǎn)足丟包條件時(shí),確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量加1,當(dāng)確定數(shù)據(jù)包不滿(mǎn)足丟包條件時(shí),確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量不變。

S470、根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

本實(shí)施例的技術(shù)方案,通過(guò)根據(jù)數(shù)據(jù)包的協(xié)議類(lèi)型和數(shù)據(jù)包長(zhǎng)度選擇可丟棄的數(shù)據(jù)包,根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量在可丟棄的數(shù)據(jù)包中選擇數(shù)據(jù)包進(jìn)行丟包處理,即在保證網(wǎng)絡(luò)正常運(yùn)行的情況下,進(jìn)行丟包處理,實(shí)現(xiàn)了選擇性丟包。

在上述實(shí)施例的基礎(chǔ)上,在步驟S440之前該方法還可以包括:

檢測(cè)數(shù)據(jù)包是否含有預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記。若是,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則執(zhí)行步驟S450。

本實(shí)施例中,在檢測(cè)到數(shù)據(jù)包的協(xié)議類(lèi)型屬于預(yù)設(shè)協(xié)議類(lèi)型時(shí),對(duì)數(shù)據(jù)包進(jìn)行預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,表明該數(shù)據(jù)包被檢測(cè)。由于根據(jù)丟包率隨機(jī)確定被丟棄的數(shù)據(jù)包,因此存在被標(biāo)記但未被丟棄的數(shù)據(jù)包,又由于軟件中斷處理函數(shù)可能對(duì)同一數(shù)據(jù)包進(jìn)行多次調(diào)用,為了避免同一數(shù)據(jù)包被反復(fù)檢測(cè),在對(duì)數(shù)據(jù)包進(jìn)行預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)檢測(cè)之前,檢測(cè)據(jù)包是否含有預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,若存在,不在對(duì)該數(shù)據(jù)包進(jìn)行檢測(cè),減少了檢測(cè)次數(shù),提高了處理效率。

在上述實(shí)施例的基礎(chǔ)上,在步驟S460之后該方法還可以包括:

檢測(cè)數(shù)據(jù)包的源端口和/或目的端口是否是預(yù)放開(kāi)端口。若是,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則確定數(shù)據(jù)包滿(mǎn)足丟包條件。

本實(shí)施例中,預(yù)放開(kāi)端口例如可以是80端口、443端口、53端口或者22端口等,根據(jù)上述預(yù)放開(kāi)端口建立哈希表,若數(shù)據(jù)包的源端口或目的端口任意端口屬于哈希表中的一個(gè)預(yù)放開(kāi)端口,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若數(shù)據(jù)包的源端口和目的端口均不屬于哈希表中的預(yù)放開(kāi)端口,則確定數(shù)據(jù)包滿(mǎn)足丟包條件。

本實(shí)施例中,將源端口和/或目的端口屬于預(yù)放開(kāi)端口的數(shù)據(jù)包確定為不滿(mǎn)足丟包條件的數(shù)據(jù)包,減少了數(shù)據(jù)包的丟失。

實(shí)施例五

圖5是本發(fā)明實(shí)施例五提供的網(wǎng)絡(luò)擁塞處理裝置,該裝置適用于執(zhí)行本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)擁塞處理方法,該裝置具體可以包括:

丟包處理判斷模塊510,用于獲取軟中斷的當(dāng)前中央處理器CPU占用率,根據(jù)當(dāng)前CPU占用率判斷是否進(jìn)行丟包處理;

丟包率確定模塊520,用于當(dāng)確定進(jìn)行丟包處理時(shí),根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包率;

數(shù)據(jù)包數(shù)量確定模塊530,用于根據(jù)預(yù)設(shè)數(shù)據(jù)包選擇標(biāo)準(zhǔn)確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量;

丟包控制模塊540,用于根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量進(jìn)行選擇性丟包。

優(yōu)選的,丟包率確定模塊520包括:

丟包權(quán)值確定單元521,用于根據(jù)當(dāng)前CPU占用率確定當(dāng)前丟包權(quán)值;

丟包率確定單元522,用于根據(jù)當(dāng)前丟包權(quán)值確定當(dāng)前丟包率。

優(yōu)選的,丟包權(quán)值確定單元521包括:

第一閾值判斷子單元5211,用于判斷當(dāng)前CPU占用率是否大于第一閾值;

第一丟包權(quán)值確定子單元5212,用于若當(dāng)前CPU占用率大于第一閾值,則確定當(dāng)前丟包權(quán)值加1;;

第二閾值判斷子單元5213,用于若當(dāng)前CPU占用率小于或等于第一閾值,則判斷CPU占用率是否小于第二閾值;

第二丟包權(quán)值確定子單元5214,用于若當(dāng)前CPU占用率小于第二閾值,則進(jìn)一步判斷當(dāng)前丟包權(quán)值是否為零,若是,則確定當(dāng)前丟包權(quán)值不變,若不是,則確定當(dāng)前丟包權(quán)值減1;

CPU占用率循環(huán)獲取子單元5215,用于若當(dāng)前CPU占用率大于或等于第二閾值,則在預(yù)設(shè)時(shí)間間隔后循環(huán)獲取新的CPU占用率。

優(yōu)選的,數(shù)據(jù)包數(shù)量確定模塊530包括:

數(shù)據(jù)包信息獲取單元531,用于獲取數(shù)據(jù)包信息,其中,數(shù)據(jù)包信息包括數(shù)據(jù)包的協(xié)議類(lèi)型、數(shù)據(jù)包長(zhǎng)度、源端口和目的端口;

協(xié)議類(lèi)型判斷單元532,用于檢測(cè)數(shù)據(jù)包的協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型,若不是預(yù)設(shè)協(xié)議類(lèi)型,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件;

數(shù)據(jù)包長(zhǎng)度判斷單元533,用于若數(shù)據(jù)包的協(xié)議類(lèi)型是預(yù)設(shè)協(xié)議類(lèi)型,對(duì)數(shù)據(jù)包進(jìn)行預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,并檢測(cè)數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度是否大于預(yù)設(shè)長(zhǎng)度;

數(shù)據(jù)包數(shù)量確定單元534,用于若數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度小于或等于預(yù)設(shè)長(zhǎng)度,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若數(shù)據(jù)包的數(shù)據(jù)包長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度,則確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量加1。

優(yōu)選的,數(shù)據(jù)包數(shù)量確定模塊530包括:

標(biāo)記檢測(cè)單元535,在檢測(cè)數(shù)據(jù)包的協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型之前,檢測(cè)數(shù)據(jù)包是否含有預(yù)設(shè)協(xié)議類(lèi)型標(biāo)記,若是,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則檢測(cè)數(shù)據(jù)包的協(xié)議類(lèi)型是否是預(yù)設(shè)協(xié)議類(lèi)型。

優(yōu)選的,數(shù)據(jù)包數(shù)量確定模塊530還包括:

端口檢測(cè)單元536,用于在確定滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量之后,檢測(cè)數(shù)據(jù)包的源端口和/或目的端口是否是預(yù)放開(kāi)端口,若是,則確定數(shù)據(jù)包不滿(mǎn)足丟包條件,若否,則確定數(shù)據(jù)包滿(mǎn)足丟包條件。

優(yōu)選的,丟包控制模塊540包括:

丟包數(shù)量確定單元541,用于根據(jù)當(dāng)前丟包率和滿(mǎn)足丟包條件的數(shù)據(jù)包數(shù)量確定丟包數(shù)量;

丟包控制單元542,用于在滿(mǎn)足丟包條件的數(shù)據(jù)包中隨機(jī)選擇丟包數(shù)量的數(shù)據(jù)包進(jìn)行丟包處理。

本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)擁塞處理裝置可執(zhí)行本發(fā)明任意實(shí)施例所提供的網(wǎng)絡(luò)擁塞處理方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。

注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說(shuō)明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
镇安县| 油尖旺区| 九龙城区| 界首市| 咸宁市| 盐源县| 濮阳县| 沛县| 博白县| 杭州市| 富平县| 乳山市| 阳泉市| 平和县| 清涧县| 容城县| 梧州市| 日照市| 邓州市| 彭阳县| 虹口区| 孝昌县| 波密县| 乌拉特后旗| 金门县| 凤城市| 兴山县| 怀集县| 高陵县| 区。| 化隆| 专栏| 布尔津县| 精河县| 马尔康县| 南康市| 新安县| 临邑县| 商城县| 德州市| 绿春县|