專利名稱:一種擴展令牌桶過濾器流量控制排隊方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種擴展令牌桶過濾器流量控制排隊方法。
背景技術(shù):
現(xiàn)在一些小區(qū)、樓層、小的企事業(yè)單位,由于大量的下載上傳以及共享上網(wǎng)的普遍使用,并且缺乏一種規(guī)范的管理機制,所以經(jīng)常導(dǎo)致網(wǎng)絡(luò)流量激增,甚至擁塞。為了提高網(wǎng)絡(luò)的使用質(zhì)量,同時保證用戶能夠公平的使用網(wǎng)絡(luò)的帶寬,需要流量控制功能模塊來限制外出流量。Linux的流量控制模塊(TC)提供了強大的流量控制功能(如HTB、CBQ、TBF等排隊規(guī)則(QDISC)算法以及fw、U32等過濾器(filter)算法),它主要是由三種對象即排隊規(guī)則(QDISC)、類別(CLASS)和過濾器(filter)實現(xiàn)流量的處理。這三種對象相互配合,即可實現(xiàn)強大的流量控制功能。雖然Linux流量控制模塊功能很強大,但是要實現(xiàn)對一個子網(wǎng)內(nèi)的主機公平控制(即分配相同帶寬),需要包含相當(dāng)多的排隊規(guī)則(QDISC)、類別(CLASS)和過濾器(filter)。如果僅用一個排隊規(guī)則(QDISC)控制一個子網(wǎng)內(nèi)的所有 主機,這個排隊規(guī)則(QDISC)控制的所有主機的數(shù)據(jù)包是相互占用帶寬的,實現(xiàn)不了對每臺主機進行精確控制。如果要對每臺主機進行流量控制,現(xiàn)在一般的解決方案是利用大量排隊規(guī)則(QDISC),類別(CLASS)和過濾器(filter)的組合實現(xiàn)——首先需要建一個可分類排隊規(guī)則(QDISC),然后在此排隊規(guī)則(QDISC)下包含多個類別(CLASS),再在類別(CLASS)下包含第二級排隊規(guī)則(QDISC,如TBF),最后利用過濾器(filter,如fw、U32算法等)將主機的數(shù)據(jù)包根據(jù)IP等分配到第二級排隊規(guī)則(QDISC)上,每一個IP由一個排隊規(guī)則(QDISC)控制。顯然隨著主機數(shù)目的增加,排隊規(guī)則(QDISC),類別(CLASS)和過濾器(filter)的數(shù)目也是非??捎^的,而規(guī)則過多會影響系統(tǒng)的性能。在現(xiàn)有的流量控制排隊規(guī)則(QDISC)算法中,令牌桶過濾器算法(TBF)是一種很精確的流量控制方式,它對網(wǎng)絡(luò)和處理器的影響都很小,令牌桶過濾器(TBF)的控制機制是基于令牌桶中是否存在令牌來指示什么時候可以發(fā)送數(shù)據(jù)包。令牌桶中的每一個令牌都代表一個字節(jié)。如果令牌桶中存在令牌,則允許發(fā)送流量;而如果令牌桶中不存在令牌,則不允許發(fā)送流量。但傳統(tǒng)的TBF算法只能精確控制一個IP,如果用一個令牌桶過濾器排隊規(guī)則(TBF QDI SC)控制多個IP,這些IP之間會相互占用帶寬。如果對一個地址段內(nèi)的每個IP公平分配固定帶寬,必須使用大量的(TBF QDISC、CLASS、filter)組合。但是這同樣存在兩個問題1)隨著排隊規(guī)則(QDISC),類別(CLASS)和過濾器(filter)數(shù)目的增力口,系統(tǒng)系能會急劇下降;2)有多少IP就等有多少個(CLASS、QDISC、filter)組合,過多的排隊隊列影響了配置效率。
發(fā)明內(nèi)容
本發(fā)明克服了現(xiàn)有技術(shù)的不足,基于令牌桶過濾器(TBF)算法進行擴展,提出了一種擴展令牌桶過濾器(ETBF)流量控制排隊方法。其原理是以IP地址為基礎(chǔ)擴展了令牌桶過濾器算法(TBF)的令牌桶個數(shù),一個令牌桶控制一個IP的數(shù)據(jù)包,當(dāng)一個數(shù)據(jù)包到來時,檢查數(shù)據(jù)包的IP,并分配到相應(yīng)的隊列中,每個隊列會有一個相應(yīng)的令牌桶對數(shù)據(jù)包進行控制。所以一個擴展令牌桶過濾器排隊規(guī)則(ETBF QDISC)即可以對局域網(wǎng)內(nèi)的主機公平分配固定相同的帶寬,杜絕了主機之間相互占用帶寬的缺點,從而達到了多個令牌桶過濾器排隊規(guī)則(TBF QDI SC)才能達到的效果。相比于多條排隊規(guī)則(QDISC),類別(CLASS)和過濾器(filter)組合,一方面大大減少了系統(tǒng)資源的占用,另一方面也明顯提高了系統(tǒng)配置的效率。同時擴展令牌桶過濾器(ETBF)算法也繼承了令牌桶過濾器(TBF)算法控制精確、對系統(tǒng)影響小的優(yōu)點。
本發(fā)明的技術(shù)方案為一種擴展令牌桶過濾器流量控制排隊方法,所述方法包括配置處理模塊、入隊處理模塊、重入隊處理模塊和出隊處理模塊,以IP地址的數(shù)目來確定令牌桶的個數(shù),每一個令牌桶對應(yīng)一個隊列來存儲數(shù)據(jù)包,當(dāng)一個數(shù)據(jù)包到達時,可根據(jù)數(shù)據(jù)包的源地址或者目的地址將此數(shù)據(jù)包放入對應(yīng)的隊列的末尾,如果沒有相匹配的隊列則放入到默認序列中,通過入隊處理模塊、重入隊處理模塊和出隊處理模塊對隊列的處理,實現(xiàn)流量控制,對局域網(wǎng)內(nèi)的主機公平分配固定相同的帶寬。配置處理模塊對令牌桶的個數(shù)以及每個令牌桶的速率進行設(shè)定,每個令牌桶的速率相同。入隊處理模塊提取IP地址,若此IP地址在配置的地址段范圍內(nèi),將此數(shù)據(jù)包分配到對應(yīng)的令牌桶對列中,如果此IP不在IP地址范圍內(nèi),將此數(shù)據(jù)包放入默認隊列中,在入隊時,對于每一個令牌桶隊列,如果數(shù)據(jù)包的長度加上對應(yīng)隊列中已有數(shù)據(jù)包的長度小于隊列的限制值,才能入隊成功,否則數(shù)據(jù)包被直接丟棄。重入隊處理模塊將先前移除的數(shù)據(jù)包放回到隊列的隊頭。出隊處理的具體步驟如下
1)遍歷每一個隊列,檢查隊列中是否有數(shù)據(jù)包存在;
2)若隊列中有數(shù)據(jù)包存在,則檢查此隊列中的數(shù)據(jù)包大小和令牌桶中令牌的個數(shù),若令牌個數(shù)大于數(shù)據(jù)包的大小,發(fā)送數(shù)據(jù)包,否則,將此數(shù)據(jù)包重新放到隊列的隊頭。
本發(fā)明具有如下有益效果
I)本發(fā)明減少了系統(tǒng)資源的占用,提高了系統(tǒng)配置的效率。2)本發(fā)明的一個ETBF QDISC即可以對局域網(wǎng)內(nèi)的主機公平分配固定相同的帶寬,達到了多個TBF QDISC才能達到的效果。3)本發(fā)明控制精確、對系統(tǒng)影響小。
以下結(jié)合附圖
和具體實施方式
進一步說明本發(fā)明。圖I為本發(fā)明的擴展令牌桶過濾器算法的基本原理。
具體實施例方式 參見圖I所示,本發(fā)明包括配置處理模塊、入隊處理模塊、重入隊處理模塊和出隊處理模塊,以IP地址的數(shù)目來確定令牌桶的個數(shù),每一個令牌桶對應(yīng)一個隊列來存儲數(shù)據(jù)包,當(dāng)一個數(shù)據(jù)包到達時,可根據(jù)數(shù)據(jù)包的源地址或者目的地址將此數(shù)據(jù)包放入對應(yīng)的隊列的末尾,如果沒有相匹配的隊列則放入到默認序列中,通過入隊處理模塊、重入隊處理模塊和出隊處理模塊對隊列的處理,實現(xiàn)流量控制,對局域網(wǎng)內(nèi)的主機公平分配固定相同的帶寬。
配置處理模塊、入隊處理模塊、重入隊處理模塊和出隊處理模塊的基本功能和原理為
I、配置處理模塊
配置處理模塊是對令牌桶的個數(shù)以及每個令牌桶的速率進行設(shè)定。令牌桶個數(shù)的設(shè)定是以IP地址的個數(shù)決定的,IP以地址段的形式(如192. 168. I. 100-192. 168. I. 120)輸入,在ETBF QDISC中,每個令牌桶的速率是相同的,所以僅需要設(shè)置一個速率即可。2、入隊處理模塊
入隊處理模塊首先根據(jù)是上行流量還是下行流量決定提取數(shù)據(jù)包中源IP地址,還是目的IP地址。對于上行流量,對應(yīng)的是源IP,下行流量對應(yīng)的是目的IP。若此IP地址在配置的地址段范圍內(nèi),,根據(jù)IP將此數(shù)據(jù)包分配到令牌桶對列中,并準備入隊。如果此IP不在IP地址范圍內(nèi)那么則將此數(shù)據(jù)包放入默認隊列中,這個設(shè)置可以保證不在配置的地址段范圍范圍的IP不會分享配置地址段范圍內(nèi)主機的帶寬。在入隊時,如果數(shù)據(jù)包的長度加上對應(yīng)隊列中已有數(shù)據(jù)包的長度小于隊列的限制值,才能入隊成功,否則數(shù)據(jù)包被直接丟棄,入隊失敗。3、重入隊處理模塊重入隊處理模塊
將先前移除的報文放回到隊列中,處理的過程同入隊處理,所不同的是入隊是將數(shù)據(jù)包放在隊尾,而重入隊是放到隊頭。4、出隊處理模塊
出隊處理模塊是完成流量整形的關(guān)鍵所在。具體步驟如下
(1)遍歷每一個隊列,檢查隊列中是否有數(shù)據(jù)包存在;
(2)若隊列中有數(shù)據(jù)包存在,則檢查此隊列中的數(shù)據(jù)包大小,同時檢查此隊列對應(yīng)的令牌桶中令牌的個數(shù),若令牌個數(shù)大于數(shù)據(jù)包的大小,那么就將次數(shù)據(jù)包發(fā)送出去,否則將這個從隊列中取出的數(shù)據(jù)包做重入隊處理重新放到隊列的隊頭。
權(quán)利要求
1.一種擴展令牌桶過濾器流量控制排隊方法,其特征是所述方法包括配置處理模塊、入隊處理模塊、重入隊處理模塊和出隊處理模塊,以IP地址的數(shù)目來確定令牌桶的個數(shù),每一個令牌桶對應(yīng)一個隊列來存儲數(shù)據(jù)包,當(dāng)一個數(shù)據(jù)包到達時,可根據(jù)數(shù)據(jù)包的源地址或者目的地址將此數(shù)據(jù)包放入對應(yīng)的隊列的末尾,如果沒有相匹配的隊列則放入到默認序列中,通過入隊處理模塊、重入隊處理模塊和出隊處理模塊對隊列的處理,實現(xiàn)流量控制,對局域網(wǎng)內(nèi)的主機公平分配固定相同的帶寬。
2.根據(jù)權(quán)利要求I所述的擴展令牌桶過濾器流量控制排隊方法,其特征是配置處理模塊對令牌桶的個數(shù)以及每個令牌桶的速率進行設(shè)定,每個令牌桶的速率相同。
3.根據(jù)權(quán)利要求I或2所述的擴展令牌桶過濾器流量控制排隊方法,其特征是入隊處理模塊提取IP地址,若此IP地址在配置的地址段范圍內(nèi),將此數(shù)據(jù)包分配到對應(yīng)的令牌桶對列中,如果此IP不在IP地址范圍內(nèi),將此數(shù)據(jù)包放入默認隊列中,在入隊時,對于每一個令牌桶隊列,如果數(shù)據(jù)包的長度加上對應(yīng)隊列中已有數(shù)據(jù)包的長度小于隊列的限制值,才能入隊成功,否則數(shù)據(jù)包被直接丟棄。
4.根據(jù)權(quán)利要求3所述的擴展令牌桶過濾器流量控制排隊方法,其特征是重入隊處理模塊將先前移除的數(shù)據(jù)包放回到隊列的隊頭。
5.根據(jù)權(quán)利要求4所述的擴展令牌桶過濾器流量控制排隊方法,其特征是出隊處理的具體步驟如下 1)遍歷每一個隊列,檢查隊列中是否有數(shù)據(jù)包存在;2)若隊列中有數(shù)據(jù)包存在,則檢查此隊列中的數(shù)據(jù)包大小和令牌桶中令牌的個數(shù),若令牌個數(shù)大于數(shù)據(jù)包的大小,發(fā)送數(shù)據(jù)包,否則,將此數(shù)據(jù)包重新放到隊列的隊頭。
全文摘要
本發(fā)明涉及一種擴展令牌桶過濾器流量控制排隊方法,其特征是所述方法包括配置處理模塊、入隊處理模塊、重入隊處理模塊和出隊處理模塊,以IP地址的數(shù)目來確定令牌桶的個數(shù),每一個令牌桶對應(yīng)一個隊列來存儲數(shù)據(jù)包,當(dāng)一個數(shù)據(jù)包到達時,可根據(jù)數(shù)據(jù)包的源地址或者目的地址將此數(shù)據(jù)包放入對應(yīng)的隊列的末尾,如果沒有相匹配的隊列則放入到默認序列中,通過入隊處理模塊、重入隊處理模塊和出隊處理模塊對隊列的處理,實現(xiàn)流量控制,對局域網(wǎng)內(nèi)的主機公平分配固定相同的帶寬。
文檔編號H04L12/56GK102638400SQ201210079848
公開日2012年8月15日 申請日期2012年3月23日 優(yōu)先權(quán)日2012年3月23日
發(fā)明者任春云, 劉霽鋒, 康文生, 張立強, 沙啟鑫, 王義為, 王程 申請人:青島百靈信息科技有限公司