欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種流量控制方法及裝置的制造方法

文檔序號:10538631閱讀:294來源:國知局
一種流量控制方法及裝置的制造方法
【專利摘要】本發(fā)明是關(guān)于一種流量控制方法及裝置,該方法包括:在接收到報文時,提取該報文中的IP地址;獲取哈希散列表中與IP地址對應(yīng)的令牌桶;在報文的字節(jié)數(shù)量大于令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄報文;在報文的字節(jié)數(shù)量小于或等于令牌桶內(nèi)剩余的令牌數(shù)量時,允許報文通過,并計算令牌桶內(nèi)剩余的令牌數(shù)量與報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將當(dāng)前令牌數(shù)量確定為令牌桶內(nèi)剩余的令牌數(shù)量;令牌桶內(nèi)剩余的令牌數(shù)量小于或等于最大令牌數(shù)量。相對于現(xiàn)有技術(shù)需要逐條遍歷預(yù)先生成的限制規(guī)則而言,本發(fā)明提供的方案在哈希散列表中查詢與IP地址對應(yīng)的令牌桶的速度非??欤瑥亩岣吡瞬樵冃?,并較少的占用系統(tǒng)處理資源。
【專利說明】
一種流量控制方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,更具體的說,涉及流量控制方法及裝置。
【背景技術(shù)】
[0002]目前,如果連接路由器的設(shè)備較多,那么多個設(shè)備會存在搶帶寬的情況。例如,電腦和智能電視均連接到路由器上,在路由器對連接設(shè)備不做流量限制的情況下,如果電腦下載數(shù)據(jù),那么電腦可能會占據(jù)路由器的所有帶寬,以使智能電視下載服務(wù)器的視頻資源速度變慢,從而出現(xiàn)視頻播放卡頓的情況,所以需要對連接到路由器的設(shè)備進(jìn)行流量控制。
[0003]當(dāng)前路由器的內(nèi)核大部分都為netfilter。其中,netfilter是由RustyRussell提出的Linux 2.4內(nèi)核防火墻框架。當(dāng)前路由器比較成熟的流量控制方法為:在路由器接收到用戶輸入的針對設(shè)備的IP地址的流量限制參數(shù)時,路由器內(nèi)的netfilter會根據(jù)上述流量限制參數(shù)生成該IP地址對應(yīng)的限制規(guī)則。如果路由器中接收到針對多個IP地址的流量限制參數(shù)時,那么路由器內(nèi)的netfilter會生成針對多個IP地址的限制規(guī)則。在路由器的netf i I ter接收到報文時,netf i I ter會在報文中提取出IP地址,然后逐條遍歷預(yù)先生成的限制規(guī)則,以判斷在預(yù)先生成的限制規(guī)則中是否存在該IP地址對應(yīng)的限制規(guī)則。如果存在,那么將該報文打上標(biāo)記,并將該打上標(biāo)記的報文發(fā)送到路由器的TC(Traffic ControlJ^量控制)模塊中,以使該打上標(biāo)記的報文被TC模塊進(jìn)行限流操作。
[0004]但是,netfi Iter模塊每次在接收到報文時,無論該報文內(nèi)的IP地址是否對應(yīng)有限制規(guī)則,netfilter模塊都需要查詢一次預(yù)先生成的限制規(guī)則,所以當(dāng)前的查詢效率非常低下;而且,如果預(yù)先生成的限制規(guī)則數(shù)量特別多,那么netfilter模塊查找IP地址對應(yīng)的限制規(guī)則的過程會更加消耗時間,并大量的占用了路由器的系統(tǒng)處理資源。

【發(fā)明內(nèi)容】

[0005]本發(fā)明提供一種流量控制方法,以提高查詢效率,并較少的占用系統(tǒng)處理資源。
[0006]根據(jù)本發(fā)明實施例的第一方面,提供一種流量控制方法,包括:
[0007]在接收到報文時,提取該報文中的IP地址;
[0008]獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶,所述哈希散列表中預(yù)先存儲有所述令牌桶,所述令牌桶內(nèi)設(shè)置有IP地址和最大令牌數(shù)量;
[0009]在所述報文的字節(jié)數(shù)量大于所述令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄所述報文;
[0010]在所述報文的字節(jié)數(shù)量小于或等于所述令牌桶內(nèi)剩余的令牌數(shù)量時,允許所述報文通過,并計算所述令牌桶內(nèi)剩余的令牌數(shù)量與所述報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將所述當(dāng)前令牌數(shù)量確定為所述令牌桶內(nèi)剩余的令牌數(shù)量;
[0011]所述令牌桶內(nèi)剩余的令牌數(shù)量小于或等于所述最大令牌數(shù)量。
[0012]可選的,在接收到報文之前,所述方法還包括:
[0013]接收用戶輸入的IP地址和允許通過的每秒最大字節(jié)數(shù);
[0014]根據(jù)所述每秒最大字節(jié)數(shù)設(shè)置令牌桶中的最大令牌數(shù)量;
[0015]將所述IP地址存儲到所述令牌桶中;
[0016]根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引;
[0017]將所述令牌桶存儲至哈希散列表中的所述哈希索引位置處。
[0018]可選的,獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶的步驟包括:
[0019]根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引;
[0020]在所述哈希散列表中獲取與所述哈希索引對應(yīng)的令牌桶。
[0021]可選的,根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引的步驟包括:
[0022]分別將所述IP地址中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù);
[0023]將所述IP地址中的前兩個數(shù)據(jù)位的二進(jìn)制數(shù)與所述IP地址中的后兩個數(shù)據(jù)位的二進(jìn)制數(shù)進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù);
[0024]將所述目標(biāo)二進(jìn)制數(shù)轉(zhuǎn)換為目標(biāo)十進(jìn)制數(shù);
[0025]利用所述目標(biāo)十進(jìn)制數(shù)對預(yù)設(shè)數(shù)字進(jìn)行取模運(yùn)算,得到余數(shù);
[0026]將所述余數(shù)確定為哈希散列表的哈希索引。
[0027]可選的,在所述獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶之前,所述方法還包括:
[0028]判斷所述哈希散列表中是否存在與所述IP地址對應(yīng)的令牌桶;
[0029]在所述哈希散列表中存在與所述IP地址對應(yīng)的令牌桶時,觸發(fā)所述獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶的步驟;
[0030]在所述哈希散列表中不存在與所述IP地址對應(yīng)的令牌桶時,允許所述報文通過。
[0031]根據(jù)本發(fā)明實施例的第二方面,提供一種流量控制裝置,包括:
[0032]提取模塊,用于在接收到報文時,提取該報文中的IP地址;
[0033]獲取模塊,用于獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶,所述哈希散列表中預(yù)先存儲有所述令牌桶,所述令牌桶內(nèi)設(shè)置有IP地址和最大令牌數(shù)量;
[0034]第一限流模塊,用于在所述報文的字節(jié)數(shù)量大于所述令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄所述報文;
[0035]第二限流模塊,用于在所述報文的字節(jié)數(shù)量小于或等于所述令牌桶內(nèi)剩余的令牌數(shù)量時,允許所述報文通過,并計算所述令牌桶內(nèi)剩余的令牌數(shù)量與所述報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將所述當(dāng)前令牌數(shù)量確定為所述令牌桶內(nèi)剩余的令牌數(shù)量;
[0036]所述令牌桶內(nèi)剩余的令牌數(shù)量小于或等于所述最大令牌數(shù)量。
[0037]可選的,所述裝置還包括:
[0038]接收模塊,用于接收用戶輸入的IP地址和允許通過的每秒最大字節(jié)數(shù);
[0039]設(shè)置模塊,用于根據(jù)所述每秒最大字節(jié)數(shù)設(shè)置令牌桶中的最大令牌數(shù)量;
[0040]第一存儲模塊,用于將所述IP地址存儲到所述令牌桶中;
[0041]轉(zhuǎn)換模塊,用于根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引;
[0042]第二存儲模塊,用于將所述令牌桶存儲至哈希散列表中的所述哈希索引位置處。
[0043]可選的,所述獲取模塊包括:
[0044]第一轉(zhuǎn)換子模塊,用于根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引;
[0045]獲取子模塊,用于在所述哈希散列表中獲取與所述哈希索引對應(yīng)的令牌桶。
[0046]可選的,所述轉(zhuǎn)換模塊或所述第一轉(zhuǎn)換子模塊包括:
[0047]第二轉(zhuǎn)換子模塊,用于分別將所述IP地址中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù);
[0048]第一運(yùn)算子模塊,用于將所述IP地址中的前兩個數(shù)據(jù)位的二進(jìn)制數(shù)與所述IP地址中的后兩個數(shù)據(jù)位的二進(jìn)制數(shù)進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù);
[0049]第三轉(zhuǎn)換子模塊,用于將所述目標(biāo)二進(jìn)制數(shù)轉(zhuǎn)換為目標(biāo)十進(jìn)制數(shù);
[0050]第二運(yùn)算子模塊,用于利用所述目標(biāo)十進(jìn)制數(shù)對預(yù)設(shè)數(shù)字進(jìn)行取模運(yùn)算,得到余數(shù);
[0051]確定子模塊,用于將所述余數(shù)確定為哈希散列表的哈希索引。
[0052]可選的,所述裝置還包括:
[0053]判斷模塊,用于判斷所述哈希散列表中是否存在與所述IP地址對應(yīng)的令牌桶;
[0054]第一執(zhí)行模塊,用于在所述哈希散列表中存在與所述IP地址對應(yīng)的令牌桶時,觸發(fā)所述獲取模塊;
[0055]第二執(zhí)行模塊,用于在所述哈希散列表中不存在與所述IP地址對應(yīng)的令牌桶時,允許所述報文通過。
[0056]與現(xiàn)有技術(shù)相比,本實施例提供的技術(shù)方案具有以下優(yōu)點(diǎn)和特點(diǎn):
[0057]在本發(fā)明提供的方案中,由于在哈希散列表中預(yù)先存儲有令牌桶,而且令牌桶內(nèi)設(shè)置有IP地址,所以路由器可以在哈希散列表中快速的獲取到與報文中的IP地址對應(yīng)的令牌桶。并根據(jù)報文的字節(jié)數(shù)量和令牌桶內(nèi)剩余的令牌數(shù)量來決定拋棄報文或允許報文通過,從而實現(xiàn)對報文的流量限制。相對于現(xiàn)有技術(shù)需要逐條遍歷預(yù)先生成的限制規(guī)則而言,本發(fā)明提供的方案在哈希散列表中查詢與IP地址對應(yīng)的令牌桶的速度非常快,從而提高了查詢效率,并較少的占用系統(tǒng)處理資源。
【附圖說明】
[0058]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0059]圖1為本發(fā)明實施例提供的一種流量控制方法的流程圖。
[0060]圖2為本發(fā)明實施例提供的另一種流量控制方法的流程圖。
[0061]圖3為本發(fā)明實施例提供的一種流量控制裝置的示意圖。
【具體實施方式】
[0062]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0063]圖1為本發(fā)明實施例提供的一種流量控制方法的流程圖。本發(fā)明實施例提供的流量控制方法在哈希散列表中查詢與IP地址對應(yīng)的令牌桶的速度非???,從而提高了查詢效率,并較少的占用系統(tǒng)處理資源該方法包括以下步驟。
[0064]步驟SI1、在接收到報文時,提取該報文中的IP地址。
[0065]其中,本發(fā)明提供的方法可以應(yīng)用于終端內(nèi),終端可以為路由器等設(shè)備。
[0066]本發(fā)明實施例適用的應(yīng)用場景非常多。例如,本發(fā)明實施例可以應(yīng)用在路由器的內(nèi)核中,內(nèi)核可以為netfilter。由于路由器的netfilter是報文必然經(jīng)過的一個內(nèi)核框架,這個框架上開發(fā)者可以開發(fā)各種各樣的擴(kuò)展對報文做特定的處理,所以本發(fā)明實施例需要在netf i I ter內(nèi)制作一個擴(kuò)展,作為流量控制的總開關(guān)。假設(shè),在netf i I ter內(nèi)制作的擴(kuò)展名稱為flow_limit。當(dāng)flow_limit條目存在時候,那么意味著流量控制可以執(zhí)行,在路由器的netfilter接收到報文時,需要觸發(fā)步驟S12,從而進(jìn)行流量控制;當(dāng)flow_limit條目不存在的時候,那么意味著流量控制不可以執(zhí)行,在路由器的netfilter接收到報文時,不會觸發(fā)步驟S12,從而使得netf i Iter執(zhí)行正常的流程。因此,在netf i I ter內(nèi)制作擴(kuò)展,相當(dāng)于在netfitler中引入了一個總開關(guān),可以達(dá)到全局開關(guān)的目的。
[0067]當(dāng)然,本發(fā)明實施例并不局限于上述提到的場景中,還可以應(yīng)用在其他需要進(jìn)行流量控制的場景中。
[0068]在路由器接收到報文時,該報文有可能是向外網(wǎng)發(fā)送的,也有可能是向路由器建立的無線局域網(wǎng)發(fā)送的。
[0069]用戶需要預(yù)先在路由器中對需限制流量的IP地址進(jìn)行設(shè)置。具體的設(shè)置為:用戶需要打開路由器的流量控制界面,在流量控制界面中輸入需限制流量的IP地址,并為該IP地址設(shè)置最大上行帶寬和最大下行帶寬。在用戶設(shè)置完并點(diǎn)擊保存后,路由器便會接收到用戶輸入的IP地址和允許通過的每秒最大字節(jié)數(shù),其中,之前設(shè)置好的最大上行帶寬或最大下行帶寬即為允許通過的每秒最大字節(jié)數(shù)。然后,路由器會根據(jù)每秒最大字節(jié)數(shù)設(shè)置令牌桶中的最大令牌數(shù)量,并將IP地址存儲到令牌桶中。最后,根據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成哈希索引,將令牌桶存儲至哈希散列表中的哈希索引位置處,設(shè)置完成。
[0070]上述根據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成哈希索引的步驟,還可以具體包括以下子步驟:首先,分別將IP地址中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。然后,將IP地址中的前兩個數(shù)據(jù)位的二進(jìn)制數(shù)與IP地址中的后兩個數(shù)據(jù)位的二進(jìn)制數(shù)進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù)。其次,將目標(biāo)二進(jìn)制數(shù)轉(zhuǎn)化為目標(biāo)十進(jìn)制數(shù)。再次,利用目標(biāo)十進(jìn)制數(shù)對于預(yù)設(shè)數(shù)字進(jìn)行取模運(yùn)算,得到余數(shù)。最后,將余數(shù)確定為哈希散列表的哈希索引。
[0071]如果直接匹配IP地址,那么需要對比IP地址的每個數(shù)據(jù)位的數(shù)字是否相同,所以比較麻煩。本發(fā)明實施例將據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成一個整數(shù),以便于查找時可以直接去匹配該整數(shù),從而提高查詢效率。
[0072]下面通過實例來介紹上述方法的步驟。
[0073 ]例如,假設(shè)需要被限制流量的IP地址為19 2.16 8.0.1,首先,分別將IP地址192.168.0.1中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),其中,192對應(yīng)的二進(jìn)制數(shù)為11000000,168對應(yīng)的二進(jìn)制數(shù)為1010 1001,0對應(yīng)的二進(jìn)制數(shù)為0000 0000,I對應(yīng)的二進(jìn)制數(shù)為0000 0001。然后,將IP地址192.168.0.1中的前兩個數(shù)據(jù)位192和168的二進(jìn)制數(shù)11000000 1010 1001與IP地址中的后兩個數(shù)據(jù)位O和I的二進(jìn)制數(shù)0000 0000 0000 0001進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù)1100 0000 1010 1000。其次,將目標(biāo)二進(jìn)制數(shù)1100 0000 10101000轉(zhuǎn)化為目標(biāo)十進(jìn)制數(shù)49320。再次,利用目標(biāo)十進(jìn)制數(shù)49320對預(yù)設(shè)數(shù)字256進(jìn)行取模運(yùn)算,得到余數(shù)168。最后,將余數(shù)168確定為哈希散列表的哈希索引。
[0074]當(dāng)然,根據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成哈希索引的具體做法并不局限于上述步驟,還可以為其他的方式。
[0075]另外,令牌桶自身的工作過程包括3個階段:產(chǎn)生令牌、消耗令牌和判斷數(shù)據(jù)包是否通過。其中涉及到2個參數(shù):令牌產(chǎn)生的速率CIR(Committed Informat1n Rate)/EIR(Excess Informat1n Rate)和令牌桶的大小CBS(Committed Burst Size)/EBS(ExcessBurst Size)。
[0076]產(chǎn)生令牌:周期性的以速率CIR/EIR向令牌桶中增加令牌,令牌桶中的令牌不斷增多。如果令牌桶中令牌數(shù)已到達(dá)CBS/EBS,則丟棄多余令牌。
[0077]消耗令牌:輸入數(shù)據(jù)包會消耗令牌桶中的令牌。在網(wǎng)絡(luò)傳輸中,數(shù)據(jù)包的大小通常不一致。大的數(shù)據(jù)包相較于小的數(shù)據(jù)包消耗的令牌要多。
[0078]判斷是否通過:輸入數(shù)據(jù)包經(jīng)過令牌桶后的結(jié)果包括輸出的數(shù)據(jù)包和丟棄的數(shù)據(jù)包。當(dāng)令牌桶中的令牌數(shù)量可以滿足數(shù)據(jù)包對令牌的需求,則將數(shù)據(jù)包輸出,否則將其丟棄。
[0079 ]步驟SI 2、獲取哈希散列表中與IP地址對應(yīng)的令牌桶。
[0080]其中,通過上述內(nèi)容可以得知,在用戶預(yù)先在路由器中對需限制流量的IP地址進(jìn)行設(shè)置時,便生成了哈希散列表,所以哈希散列表中預(yù)先存儲有令牌桶,令牌桶內(nèi)設(shè)置有IP地址和最大令牌數(shù)量。此時,路由器便可以在哈希散列表中獲取到與IP地址對應(yīng)的令牌桶。
[0081]關(guān)于獲取哈希散列表中與IP地址對應(yīng)的令牌桶的步驟還可以具體包括以下子步驟:首先,根據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成哈希索引。然后,在哈希散列表中獲取與哈希索引對應(yīng)的令牌桶。
[0082]不管預(yù)設(shè)算法是什么算法,在獲取哈希散列表中與IP地址對應(yīng)的令牌桶的過程中,只需要與建立哈希散列表的哈希索引的算法相同即可。由于上述內(nèi)容已經(jīng)介紹過建立哈希散列表的哈希索引的算法,預(yù)設(shè)算法可以與此相同,所以在此不再贅述。
[0083]步驟SI3、在報文的字節(jié)數(shù)量大于令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄報文。
[0084]其中,在路由器獲取哈希散列表中與IP地址對應(yīng)的令牌桶以后,路由器便需要判斷報文的字節(jié)數(shù)量是否大于令牌桶內(nèi)剩余的令牌數(shù)量。在報文的字節(jié)數(shù)量大于令牌桶內(nèi)剩余的令牌數(shù)量時,說明該報文的字節(jié)數(shù)量已經(jīng)超過了預(yù)先設(shè)置好的最大上行帶寬或最大下行帶寬,所以路由器需要拋棄該報文。
[0085]步驟S14、在報文的字節(jié)數(shù)量小于或等于令牌桶內(nèi)剩余的令牌數(shù)量時,允許報文通過,并計算令牌桶內(nèi)剩余的令牌數(shù)量與報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將當(dāng)前令牌數(shù)量確定為令牌桶內(nèi)剩余的令牌數(shù)量,令牌桶內(nèi)剩余的令牌數(shù)量小于或等于最大令牌數(shù)量。
[0086]其中,在報文的字節(jié)數(shù)量小于或等于令牌桶內(nèi)剩余的令牌數(shù)量時,說明該報文的字節(jié)數(shù)量小于或等于預(yù)先設(shè)置好的最大上行帶寬或最大下行帶寬,所以路由器需要允許報文通過。并計算令牌桶內(nèi)剩余的令牌數(shù)量與報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將當(dāng)前令牌數(shù)量確定為令牌桶內(nèi)剩余的令牌數(shù)量,以使每次有報文通過時,都能夠及時的更新令牌桶內(nèi)的令牌數(shù)量。
[0087]在圖1所示的實施例中,由于在哈希散列表中預(yù)先存儲有令牌桶,而且令牌桶內(nèi)設(shè)置有IP地址,所以路由器可以在哈希散列表中快速的獲取到與報文中的IP地址對應(yīng)的令牌桶。并根據(jù)報文的字節(jié)數(shù)量和令牌桶內(nèi)剩余的令牌數(shù)量來決定拋棄報文或允許報文通過,從而實現(xiàn)對報文的流量限制。相對于現(xiàn)有技術(shù)需要逐條遍歷預(yù)先生成的限制規(guī)則而言,本發(fā)明提供的方案在哈希散列表中查詢與IP地址對應(yīng)的令牌桶的速度非常快,從而提高了查詢效率,并較少的占用系統(tǒng)處理資源。
[0088]請參見圖2所示,在本發(fā)明的另一些實施例中,在獲取哈希散列表中與IP地址對應(yīng)的令牌桶的步驟之前,本發(fā)明實施例提供的方法還可以包括以下步驟:
[0089]步驟S15、判斷哈希散列表中是否存在與IP地址對應(yīng)的令牌桶。在哈希散列表中存在與IP地址對應(yīng)的令牌桶時,觸發(fā)步驟S12。在哈希散列表中不存在與IP地址對應(yīng)的令牌桶時,觸發(fā)步驟S16。
[0090]步驟S16、允許報文通過。
[0091]其中,如果路由器判斷出哈希散列表中不存在與IP地址對應(yīng)的令牌桶,那么說明用戶未對該IP地址進(jìn)行流量限制,所以路由器會快速的讓該報文通過。
[0092]圖3為本發(fā)明實施例提供的一種流量控制裝置的示意圖。參照圖3,該裝置包括提取模塊11、獲取模塊12、第一限流模塊13和第二限流模塊14,其中:
[0093]提取模塊11,用于在接收到報文時,提取該報文中的IP地址。
[0094]獲取模塊12,用于獲取哈希散列表中與IP地址對應(yīng)的令牌桶,哈希散列表中預(yù)先存儲有令牌桶,令牌桶內(nèi)設(shè)置有IP地址和最大令牌數(shù)量。
[0095]第一限流模塊13,用于在報文的字節(jié)數(shù)量大于令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄報文。
[0096]第二限流模塊14,用于在報文的字節(jié)數(shù)量小于或等于令牌桶內(nèi)剩余的令牌數(shù)量時,允許報文通過,并計算令牌桶內(nèi)剩余的令牌數(shù)量與報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將當(dāng)前令牌數(shù)量確定為令牌桶內(nèi)剩余的令牌數(shù)量。令牌桶內(nèi)剩余的令牌數(shù)量小于或等于最大令牌數(shù)量。
[0097]可選的,本發(fā)明實施例提供的流量控制裝置還可以包括以下模塊:
[0098]接收模塊,用于接收用戶輸入的IP地址和允許通過的每秒最大字節(jié)數(shù)。
[0099]設(shè)置模塊,用于根據(jù)每秒最大字節(jié)數(shù)設(shè)置令牌桶中的最大令牌數(shù)量。
[0100]第一存儲模塊,用于將IP地址存儲到令牌桶中。
[0101]轉(zhuǎn)換模塊,用于根據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成哈希索引。
[0102]第二存儲模塊,用于將令牌桶存儲至哈希散列表中的哈希索引位置處。
[0103]可選的,上述獲取模塊12還可以包括以下子模塊:
[0104]第一轉(zhuǎn)換子模塊,用于根據(jù)預(yù)設(shè)算法將IP地址轉(zhuǎn)換成哈希索引。
[0105]獲取子模塊,用于在哈希散列表中獲取與哈希索引對應(yīng)的令牌桶。
[0106]可選的,上述轉(zhuǎn)換模塊或第一轉(zhuǎn)換子模塊還可以包括以下子模塊:
[0107]第二轉(zhuǎn)換子模塊,用于分別將IP地址中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。
[0108]第一運(yùn)算子模塊,用于將IP地址中的前兩個數(shù)據(jù)位的二進(jìn)制數(shù)與IP地址中的后兩個數(shù)據(jù)位的二進(jìn)制數(shù)進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù)。
[0109]第三轉(zhuǎn)換子模塊,用于將目標(biāo)二進(jìn)制數(shù)轉(zhuǎn)換為目標(biāo)十進(jìn)制數(shù)。
[0110]第二運(yùn)算子模塊,用于利用目標(biāo)十進(jìn)制數(shù)對預(yù)設(shè)數(shù)字進(jìn)行取模運(yùn)算,得到余數(shù)。
[0111]確定子模塊,用于將余數(shù)確定為哈希散列表的哈希索引。
[0112]可選的,本發(fā)明實施例提供的流量控制裝置還可以包括以下模塊:
[0113]判斷模塊,用于判斷哈希散列表中是否存在與IP地址對應(yīng)的令牌桶。
[0114]第一執(zhí)行模塊,用于在哈希散列表中存在與IP地址對應(yīng)的令牌桶時,觸發(fā)獲取模塊12 O
[0115]第二執(zhí)行模塊,用于在哈希散列表中不存在與IP地址對應(yīng)的令牌桶時,允許報文通過。
[0116]關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0117]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項】
1.一種流量控制方法,其特征在于,包括: 在接收到報文時,提取該報文中的IP地址; 獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶,所述哈希散列表中預(yù)先存儲有所述令牌桶,所述令牌桶內(nèi)設(shè)置有IP地址和最大令牌數(shù)量; 在所述報文的字節(jié)數(shù)量大于所述令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄所述報文; 在所述報文的字節(jié)數(shù)量小于或等于所述令牌桶內(nèi)剩余的令牌數(shù)量時,允許所述報文通過,并計算所述令牌桶內(nèi)剩余的令牌數(shù)量與所述報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將所述當(dāng)前令牌數(shù)量確定為所述令牌桶內(nèi)剩余的令牌數(shù)量; 所述令牌桶內(nèi)剩余的令牌數(shù)量小于或等于所述最大令牌數(shù)量。2.根據(jù)權(quán)利要求1所述的流量控制方法,其特征在于,在接收到報文之前,所述方法還包括: 接收用戶輸入的IP地址和允許通過的每秒最大字節(jié)數(shù); 根據(jù)所述每秒最大字節(jié)數(shù)設(shè)置令牌桶中的最大令牌數(shù)量; 將所述IP地址存儲到所述令牌桶中; 根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引; 將所述令牌桶存儲至哈希散列表中的所述哈希索引位置處。3.根據(jù)權(quán)利要求1所述的流量控制方法,其特征在于,獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶的步驟包括: 根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引; 在所述哈希散列表中獲取與所述哈希索引對應(yīng)的令牌桶。4.根據(jù)權(quán)利要求2或3所述的流量控制方法,其特征在于,根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引的步驟包括: 分別將所述IP地址中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù); 將所述IP地址中的前兩個數(shù)據(jù)位的二進(jìn)制數(shù)與所述IP地址中的后兩個數(shù)據(jù)位的二進(jìn)制數(shù)進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù); 將所述目標(biāo)二進(jìn)制數(shù)轉(zhuǎn)換為目標(biāo)十進(jìn)制數(shù); 利用所述目標(biāo)十進(jìn)制數(shù)對預(yù)設(shè)數(shù)字進(jìn)行取模運(yùn)算,得到余數(shù); 將所述余數(shù)確定為哈希散列表的哈希索引。5.根據(jù)權(quán)利要求1所述的流量控制方法,其特征在于,在所述獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶之前,所述方法還包括: 判斷所述哈希散列表中是否存在與所述IP地址對應(yīng)的令牌桶; 在所述哈希散列表中存在與所述IP地址對應(yīng)的令牌桶時,觸發(fā)所述獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶的步驟; 在所述哈希散列表中不存在與所述IP地址對應(yīng)的令牌桶時,允許所述報文通過。6.一種流量控制裝置,其特征在于,包括: 提取模塊,用于在接收到報文時,提取該報文中的IP地址; 獲取模塊,用于獲取哈希散列表中與所述IP地址對應(yīng)的令牌桶,所述哈希散列表中預(yù)先存儲有所述令牌桶,所述令牌桶內(nèi)設(shè)置有IP地址和最大令牌數(shù)量; 第一限流模塊,用于在所述報文的字節(jié)數(shù)量大于所述令牌桶內(nèi)剩余的令牌數(shù)量時,拋棄所述報文; 第二限流模塊,用于在所述報文的字節(jié)數(shù)量小于或等于所述令牌桶內(nèi)剩余的令牌數(shù)量時,允許所述報文通過,并計算所述令牌桶內(nèi)剩余的令牌數(shù)量與所述報文的字節(jié)數(shù)量之差得到當(dāng)前令牌數(shù)量,將所述當(dāng)前令牌數(shù)量確定為所述令牌桶內(nèi)剩余的令牌數(shù)量; 所述令牌桶內(nèi)剩余的令牌數(shù)量小于或等于所述最大令牌數(shù)量。7.根據(jù)權(quán)利要求6所述的流量控制裝置,其特征在于,所述裝置還包括: 接收模塊,用于接收用戶輸入的IP地址和允許通過的每秒最大字節(jié)數(shù); 設(shè)置模塊,用于根據(jù)所述每秒最大字節(jié)數(shù)設(shè)置令牌桶中的最大令牌數(shù)量; 第一存儲模塊,用于將所述IP地址存儲到所述令牌桶中; 轉(zhuǎn)換模塊,用于根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引; 第二存儲模塊,用于將所述令牌桶存儲至哈希散列表中的所述哈希索引位置處。8.根據(jù)權(quán)利要求6所述的流量控制裝置,其特征在于,所述獲取模塊包括: 第一轉(zhuǎn)換子模塊,用于根據(jù)預(yù)設(shè)算法將所述IP地址轉(zhuǎn)換成哈希索引; 獲取子模塊,用于在所述哈希散列表中獲取與所述哈希索引對應(yīng)的令牌桶。9.根據(jù)權(quán)利要求7或8所述的流量控制裝置,其特征在于,所述轉(zhuǎn)換模塊或所述第一轉(zhuǎn)換子模塊包括: 第二轉(zhuǎn)換子模塊,用于分別將所述IP地址中每個數(shù)據(jù)位的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù); 第一運(yùn)算子模塊,用于將所述IP地址中的前兩個數(shù)據(jù)位的二進(jìn)制數(shù)與所述IP地址中的后兩個數(shù)據(jù)位的二進(jìn)制數(shù)進(jìn)行異或運(yùn)算,得到目標(biāo)二進(jìn)制數(shù); 第三轉(zhuǎn)換子模塊,用于將所述目標(biāo)二進(jìn)制數(shù)轉(zhuǎn)換為目標(biāo)十進(jìn)制數(shù); 第二運(yùn)算子模塊,用于利用所述目標(biāo)十進(jìn)制數(shù)對預(yù)設(shè)數(shù)字進(jìn)行取模運(yùn)算,得到余數(shù); 確定子模塊,用于將所述余數(shù)確定為哈希散列表的哈希索引。10.根據(jù)權(quán)利要求6所述的流量控制裝置,其特征在于,所述裝置還包括: 判斷模塊,用于判斷所述哈希散列表中是否存在與所述IP地址對應(yīng)的令牌桶; 第一執(zhí)行模塊,用于在所述哈希散列表中存在與所述IP地址對應(yīng)的令牌桶時,觸發(fā)所述獲取模塊; 第二執(zhí)行模塊,用于在所述哈希散列表中不存在與所述IP地址對應(yīng)的令牌桶時,允許所述報文通過。
【文檔編號】H04L12/819GK105897610SQ201610197135
【公開日】2016年8月24日
【申請日】2016年3月31日
【發(fā)明人】周勝勇
【申請人】樂視控股(北京)有限公司, 樂視致新電子科技(天津)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
兰溪市| 敦煌市| 库尔勒市| 乌苏市| 抚顺县| 灵川县| 桂平市| 方山县| 孝昌县| 安福县| 海林市| 石家庄市| 鄂托克前旗| 营山县| 胶州市| 清苑县| 甘南县| 北辰区| 宣恩县| 斗六市| 长武县| 曲麻莱县| 固原市| 纳雍县| 友谊县| 朝阳市| 南康市| 上高县| 祁连县| 孟津县| 崇文区| 茂名市| 新郑市| 佛学| 新丰县| 从江县| 伊金霍洛旗| 普安县| 平昌县| 黔西县| 开平市|