專利名稱:一種控制令牌桶更新的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及應(yīng)用于網(wǎng)絡(luò)設(shè)備流量控制的控制令牌桶更新 的方法和裝置。
背景技術(shù):
流量控制通過識別不同的報(bào)文,分不同的隊(duì)列予以緩存,然后以一定的策略,如根 據(jù)優(yōu)先級,帶寬控制等,在隊(duì)列間進(jìn)行調(diào)度發(fā)送的過程。和傳統(tǒng)報(bào)文轉(zhuǎn)發(fā)的盡力而為不同, 流量控制對報(bào)文區(qū)分對待,可以做到優(yōu)先轉(zhuǎn)發(fā)某些報(bào)文,從而滿足現(xiàn)實(shí)環(huán)境中的各種需求, 如保證基本應(yīng)用和關(guān)鍵應(yīng)用,保證重點(diǎn)用戶帶寬等等。傳統(tǒng)流量控制如圖1所示,調(diào)度器通過識別IP報(bào)文中的優(yōu)先級字段區(qū)分報(bào)文并緩 存;然后采用絕對優(yōu)先級調(diào)度或者權(quán)重輪轉(zhuǎn)調(diào)度,保證優(yōu)先級高的報(bào)文優(yōu)先發(fā)送。傳統(tǒng)流量 控制最顯著的特征就是緩存報(bào)文的隊(duì)列個(gè)數(shù)固定,為4個(gè)或者8個(gè)等。改進(jìn)后的流量控制如圖2所示,為層次化的流量控制模型,用戶的每個(gè)業(yè)務(wù)都對 應(yīng)一個(gè)流量控制令牌桶,在第二層管理中每個(gè)用戶對應(yīng)一個(gè)令牌桶,實(shí)現(xiàn)對多個(gè)業(yè)務(wù)的流 量控制,在第三層再對多個(gè)用戶組成的用戶組設(shè)置流量控制令牌桶,第四層設(shè)置物理端口 對應(yīng)的令牌桶,從而實(shí)現(xiàn)令牌桶結(jié)合層次流量控制模型,即層次令牌桶。層次令牌桶實(shí)現(xiàn)了 對用戶帶寬的層次化控制,如同現(xiàn)實(shí)中供水管道對水的“層次化”管理,其顯著的特點(diǎn)在于 報(bào)文緩存隊(duì)列個(gè)數(shù)不定,完全根據(jù)用戶需要進(jìn)行配置。令牌桶作為一種速率計(jì)算和控制手段,廣泛應(yīng)用于流量控制中,其工作原理如 下令牌以一定的速率放入桶中,一個(gè)令牌可以發(fā)送一定長度的數(shù)據(jù)包,桶有特定的 容量,如果桶已經(jīng)滿了,新加入的令牌就會被丟棄;發(fā)送一個(gè)數(shù)據(jù)包,就從令牌桶中刪除與數(shù)據(jù)包中數(shù)據(jù)長度相等的令牌數(shù);如果沒有足夠的令牌發(fā)送數(shù)據(jù)包,該數(shù)據(jù)包就會等待直到有足夠的令牌,或者被 丟棄;根據(jù)上述控制原理,使在發(fā)送數(shù)據(jù)包時(shí),只能以特定的速率轉(zhuǎn)發(fā)報(bào)文,從而達(dá)到速 率控制的目的。需要說明的是,實(shí)際實(shí)現(xiàn)中,出于性能的考慮,令牌桶的更新往往采用如下方案記錄上次更新令牌桶中令牌的時(shí)間點(diǎn);獲取當(dāng)前時(shí)間與記錄的上次更新令牌的時(shí)間點(diǎn)的時(shí)間間隔;時(shí)間間隔乘以令牌添加速率,即得到需要添加到令牌桶的令牌數(shù);以限速IK (1000字節(jié))為例,假定網(wǎng)絡(luò)設(shè)備最小時(shí)間單位為Ims (毫秒),一個(gè)令牌 可以發(fā)送1字節(jié)的數(shù)據(jù),該令牌桶相關(guān)參數(shù)如下桶深1000個(gè)令牌;令牌桶初始令牌數(shù)1000個(gè)令牌,即可以發(fā)送1000字節(jié)長度的數(shù)據(jù);令牌更新速率1000令牌/IOOOms = 1令牌/ms ; 從時(shí)刻0開始,假定時(shí)間點(diǎn)IOms的時(shí)候發(fā)送了一個(gè)長度為256字節(jié)的報(bào)文和一個(gè) 長度為512字節(jié)的報(bào)文,令牌桶的更新情況如下發(fā)送長度256字節(jié)的報(bào)文時(shí),所述令牌桶各參數(shù)的更新情況如表1所示 表2另外,現(xiàn)有技術(shù)中令牌桶結(jié)合層次流量控制模型即層次令牌桶。層次令牌桶實(shí)現(xiàn) 了對用戶帶寬的層次化控制,如同現(xiàn)實(shí)中供水管道對水的“層次化”管理。以圖3為例,對現(xiàn)有技術(shù)中令牌桶更新方式進(jìn)行說明,如果某公司網(wǎng)絡(luò)出口帶寬 為4K,部門一分配帶寬1K,其它部門各分配帶寬若干部門一發(fā)送報(bào)文時(shí),層次令牌桶的更新方式如下更新通道“部門一”的令牌桶,根據(jù)發(fā)送報(bào)文長度計(jì)算令牌消耗,以及新增令牌 等;更新部門一的父通道“公司出口”的令牌桶,完成出口帶寬消耗的計(jì)算;當(dāng)通道樹層次更深,令牌桶的更新計(jì)算量更大,變得更加頻繁,圖4所示的層次令 牌桶令牌,令牌更新時(shí),具體包括當(dāng)通道“普通用戶”轉(zhuǎn)發(fā)一個(gè)報(bào)文,其令牌更新過程如下
更新通道“普通用戶”的令牌桶;更新通道“小組一”的令牌桶;更新通道“部門一”的令牌桶;更新通道“公司出口”的令牌桶;可以看到,隨著層次的增多,每發(fā)送一個(gè)報(bào)文需要更新的令牌桶個(gè)數(shù)也隨著增多。 而實(shí)際網(wǎng)絡(luò)環(huán)境中,百兆網(wǎng)卡每秒可以發(fā)送100多萬個(gè)64字節(jié)的報(bào)文,因此上述的令牌計(jì) 算是以百萬每秒為單位,并乘以令牌桶的層數(shù)的,所以令牌桶的更新會占用網(wǎng)絡(luò)設(shè)備處理 器的大量資源。
發(fā)明內(nèi)容
本發(fā)明提供一種控制令牌桶更新的方法和裝置,用于解決現(xiàn)有技術(shù)中令牌桶的更 新頻繁占用網(wǎng)絡(luò)設(shè)備處理器的大量資源問題。一種控制令牌桶更新的方法,包括當(dāng)葉子通道發(fā)送報(bào)文時(shí),獲取待發(fā)送報(bào)文中的字節(jié)數(shù),并應(yīng)用該字節(jié)數(shù)與保存的 累計(jì)值的代數(shù)和更新所述累計(jì)值;將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)長度更新門限值進(jìn)行比較,如果所述累計(jì)值大于 字節(jié)數(shù)更新門限值,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零。如果所述累計(jì)值不大于字節(jié)數(shù)更新門限值,確定當(dāng)前時(shí)間與上一次令牌桶更新的 時(shí)間間隔是否大于預(yù)設(shè)間隔時(shí)間門限值,如果是,則更新所述葉子通道的令牌桶,并將所述
累計(jì)值清零。更新所述葉子通道的令牌桶包括在總的令牌數(shù)中減去所述累計(jì)值,并記錄當(dāng)前 時(shí)間為令牌桶更新時(shí)間點(diǎn)。一種控制令牌桶更新的裝置,包括數(shù)據(jù)長度值獲取模塊,用于當(dāng)葉子通道發(fā)送報(bào)文時(shí),獲取待發(fā)送報(bào)文的數(shù)據(jù)長度 值,并應(yīng)用該數(shù)據(jù)長度值與保存的累計(jì)值的代數(shù)和更新所述累計(jì)值;初級令牌桶更新模塊,用于將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)數(shù)更新門限值進(jìn)行比 較,如果所述累計(jì)值大于字節(jié)數(shù)更新門限值,則更新所述葉子通道的令牌桶,并將所述累計(jì)
值清零。次級令牌桶更新模塊,用于如果所述累計(jì)值大于字節(jié)數(shù)更新門限值,確定當(dāng)前時(shí) 間與上一次令牌桶更新的時(shí)間間隔是否大于預(yù)設(shè)間隔時(shí)間門限值,如果是,則更新所述葉 子通道的令牌桶,并將所述累計(jì)值清零。初級令牌桶更新模塊和次級令牌桶更新模塊中更新所述葉子通道的令牌桶具體 包括在總的令牌數(shù)中減去所述累計(jì)值,并記錄當(dāng)前時(shí)間為令牌桶更新時(shí)間點(diǎn)。本發(fā)明實(shí)施例提供的方法和裝置,設(shè)定字節(jié)長度更新門限值,當(dāng)發(fā)送報(bào)文的字節(jié) 長度超過該門限值時(shí),更新令牌桶。應(yīng)用本發(fā)明實(shí)施例的方法和裝置減少了更新令牌的次 數(shù),從而降低對網(wǎng)絡(luò)設(shè)備處理器的占用,提高了數(shù)據(jù)轉(zhuǎn)發(fā)通道的數(shù)據(jù)轉(zhuǎn)發(fā)性能。
圖1為現(xiàn)有技術(shù)中流量控制示意圖2為現(xiàn)有技術(shù)中層次流量控制示意圖;圖3為現(xiàn)有技術(shù)中某公司網(wǎng)絡(luò)出口帶寬為4K,部門一分配帶寬IK帶寬分配的示意 圖;圖4為現(xiàn)有技術(shù)中某公司多層次通道樹的帶寬分配示意圖;圖5為本發(fā)明實(shí)施例一種控制令牌桶更新的方法的流程圖;圖6為本發(fā)明實(shí)施例還提供一種控制令牌桶更新的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供一種控制令牌桶更新的方法,當(dāng)葉子通道發(fā)送報(bào)文時(shí),包括獲取待發(fā)送報(bào)文中的字節(jié)數(shù),并應(yīng)用該字節(jié)數(shù)與保存的累計(jì)值的代數(shù)和更新所述累計(jì)值;將 更新后的累計(jì)值與預(yù)設(shè)的字節(jié)長度更新門限值進(jìn)行比較,如果所述累計(jì)值大于字節(jié)數(shù)更新 門限值,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零,在不影響層次令牌桶已有帶 寬控制精度的前提下,不需要每次發(fā)送報(bào)文后都刷新令牌桶,有效的減少了更新令牌的次 數(shù),從而降低對網(wǎng)絡(luò)設(shè)備處理器的占用,提高了數(shù)據(jù)轉(zhuǎn)發(fā)通道的數(shù)據(jù)轉(zhuǎn)發(fā)性能。下面結(jié)合說明書附圖對本發(fā)明的具體實(shí)施方式
進(jìn)行詳細(xì)說明。如圖5所示,本發(fā)明實(shí)施例一種控制令牌桶更新的方法,具體實(shí)現(xiàn)步驟包括步驟501,當(dāng)葉子通道發(fā)送報(bào)文時(shí),獲取待發(fā)送報(bào)文中的字節(jié)數(shù),并應(yīng)用該字節(jié)數(shù) 與保存的累計(jì)值的代數(shù)和更新所述累計(jì)值;在本發(fā)明實(shí)施例中,步驟501具體的實(shí)現(xiàn)方式可以選擇以下方式,但并不限于這 一種方式在葉子通道新增一個(gè)字段bufT_pkt_len,用于記錄當(dāng)前時(shí)刻到上一次令牌桶更新 時(shí),已發(fā)送、但沒有計(jì)算令牌消耗的所有數(shù)據(jù)的累積字節(jié)數(shù);當(dāng)需要發(fā)送報(bào)文時(shí),則獲取該待發(fā)送的報(bào)文的字節(jié)數(shù),并將獲取到的字節(jié)數(shù)與 buff_pkt_len中的值累加。步驟502,將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)數(shù)更新門限值進(jìn)行比較,如果所述累計(jì) 值大于字節(jié)數(shù)更新門限值,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零,否則轉(zhuǎn)入 步驟503。在本發(fā)明實(shí)施例中,根據(jù)網(wǎng)絡(luò)的具體情況預(yù)先設(shè)置數(shù)據(jù)轉(zhuǎn)發(fā)通道可容忍的最大數(shù) 據(jù)長度值,即字節(jié)數(shù)更新門限值。步驟503,確定當(dāng)前時(shí)間與上一次令牌桶更新的時(shí)間間隔是否大于預(yù)設(shè)間隔時(shí)間 門限值,如果是,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零。為了防止長時(shí)間發(fā)送的數(shù)據(jù)長度都不能達(dá)到字節(jié)數(shù)更新門限值,導(dǎo)致數(shù)據(jù)更新出 現(xiàn)延遲的問題,則可通過所述預(yù)設(shè)間隔時(shí)間門限值對令牌桶的跟新時(shí)間進(jìn)行控制,進(jìn)而增 強(qiáng)數(shù)據(jù)更新的準(zhǔn)確性。步驟504,在更新所述葉子通道的令牌桶之后,更新該葉子通道對應(yīng)的父通道的令 牌桶?,F(xiàn)有技術(shù)中每次發(fā)送完報(bào)文后都需要更新令牌桶,應(yīng)用本發(fā)明實(shí)施例公開的方法 可以發(fā)送報(bào)文多次,直到多個(gè)報(bào)文中的字節(jié)總長度達(dá)到門限值后,再進(jìn)行令牌桶更新,能夠 明顯的減少令牌桶的更新次數(shù),降低對網(wǎng)絡(luò)設(shè)備處理器的占用。
在本發(fā)明實(shí)施例中,更新所述葉子通道的令牌桶可以通過以下方式實(shí)現(xiàn),但不局 限于以下這一種方式更新所述葉子通道的令牌桶包括在總的令牌數(shù)中減去所述累計(jì)值,并記錄當(dāng)前 時(shí)間為令牌桶更新時(shí)間點(diǎn)。應(yīng)用本發(fā)明實(shí)施例提供的方法,如果通道限速1K(1000字節(jié),字節(jié)數(shù)更新門限值 為1000),網(wǎng)絡(luò)設(shè)備最小時(shí)間單位為Ims (毫秒),1個(gè)令牌可以發(fā)送1字節(jié)的數(shù)據(jù),從時(shí)刻0 開始,則記錄的數(shù)據(jù)長度值為0,當(dāng)時(shí)間點(diǎn)IOms的時(shí)候發(fā)送了一個(gè)長度為256字節(jié)的報(bào)文和 一個(gè)長度為512字節(jié)的報(bào)文具體的實(shí)現(xiàn)方式為預(yù)先設(shè)置更新令牌桶的門限值,在該實(shí)施例中可以設(shè)置為 Α)字段 buff_pkt_len 大于等于 1000 時(shí);B)令牌更新時(shí)間間隔大于等于Ims時(shí);第一次發(fā)送報(bào)文為256字節(jié),因在IOms發(fā)送數(shù)據(jù),滿足更新條件B,對令牌桶進(jìn)行 更新,具體更新的參數(shù)如表3所示 表3發(fā)送512字節(jié)的數(shù)據(jù)包時(shí),將512加上buff_pkt_len中的0字節(jié)得到累計(jì)值為 512,與第一次更新的時(shí)間間隔為10-10 = 0ms,則發(fā)送512字節(jié)的數(shù)據(jù)包時(shí),具體更新的參 數(shù)如表4所示 表4如圖6所示,根據(jù)圖5所述的方法,本發(fā)明實(shí)施例還提供一種控制令牌桶更新的裝 置,包括數(shù)據(jù)長度值獲取模塊601和初級令牌桶更新模塊602 數(shù)據(jù)長度值獲取模塊601,用于當(dāng)葉子通道發(fā)送報(bào)文時(shí),獲取待發(fā)送報(bào)文的數(shù)據(jù)長度值,并應(yīng)用該數(shù)據(jù)長度值與保存的累計(jì)值的代數(shù)和更新所述累計(jì)值;初級令牌桶更新模塊602,用于將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)數(shù)更新門限值進(jìn) 行比較,如果所述累計(jì)值大于字節(jié)數(shù)更新門限值,則更新所述葉子通道的令牌桶,并將所述 累計(jì)值清零。為了防止長時(shí)間發(fā)送的數(shù)據(jù)長度都不能達(dá)到第一更新判斷值,導(dǎo)致數(shù)據(jù)更新出現(xiàn) 延遲的問題,本裝置還包括次級令牌桶更新模塊603,用于如果所述累計(jì)值不大于字節(jié)數(shù)更新門限值,則確定 當(dāng)前時(shí)間與上一次令牌桶更新的時(shí)間間隔是否大于預(yù)設(shè)間隔時(shí)間門限值,如果是,則更新 所述葉子通道的令牌桶,并將所述累計(jì)值清零。在本發(fā)明實(shí)施例中,初級令牌桶更新模塊和次級令牌桶更新模塊,中更新所述葉 子通道的令牌桶具體包括在總的令牌數(shù)中減去所述累計(jì)值,并記錄當(dāng)前時(shí)間為令牌桶更 新時(shí)間點(diǎn)。另外,為了同步更新葉子通道和葉子通道的父通道的令牌桶,所述初級令牌桶更 新模塊602和次級令牌桶更新模塊603還用于在在更新所述葉子通道的令牌桶,之后更新 該葉子通道的父通道的令牌桶。另外,本發(fā)明實(shí)施例還提供一種網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備包括圖6所示的裝置,其 中,該網(wǎng)絡(luò)設(shè)備可以是流控設(shè)備、路由器、無線控制器等。本發(fā)明實(shí)施例提供的方法和裝置,在不影響層次令牌桶已有帶寬控制精度的前提 下,有效的減少了更新令牌的次數(shù),從而降低對網(wǎng)絡(luò)設(shè)備處理器的占用,提高了數(shù)據(jù)轉(zhuǎn)發(fā)通 道的數(shù)據(jù)轉(zhuǎn)發(fā)性能。本發(fā)明所述的裝置并不限于具體實(shí)施方式
中所述的實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù) 本發(fā)明的技術(shù)方案得出其它的實(shí)施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。顯然,本領(lǐng)域的 技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本 發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包 含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
一種控制令牌桶更新的方法,其特征在于,包括當(dāng)葉子通道發(fā)送報(bào)文時(shí),獲取待發(fā)送報(bào)文的字節(jié)數(shù),并應(yīng)用該字節(jié)數(shù)與保存的累計(jì)值的代數(shù)和更新該累計(jì)值;將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)數(shù)更新門限值進(jìn)行比較,如果所述累計(jì)值大于字節(jié)數(shù)更新門限值,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零。
2.如權(quán)利要求1所述的方法,其特征在于,還包括如果所述累計(jì)值不大于字節(jié)數(shù)更新門限值,則確定當(dāng)前時(shí)間與上一次令牌桶更新的時(shí) 間間隔是否大于預(yù)設(shè)的間隔時(shí)間門限值;如果是,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零。
3.如權(quán)利要求1或2任一權(quán)項(xiàng)所述的方法,其特征在于,所述累計(jì)值保存在所述葉子通 道的新增字段中。
4.如權(quán)利要求1或2任一權(quán)項(xiàng)所述的方法,其特征在于,更新所述葉子通道的令牌桶包 括在總的令牌數(shù)中減去所述累計(jì)值,并記錄當(dāng)前時(shí)間為令牌桶更新時(shí)間點(diǎn)。
5.如權(quán)利要求1或2任一權(quán)項(xiàng)所述的方法,其特征在于,更新所述葉子通道的令牌桶之 后,還包括更新該葉子通道的父通道的令牌桶。
6.一種控制令牌桶更新的裝置,其特征在于,包括數(shù)據(jù)長度值獲取模塊,用于當(dāng)葉子通道發(fā)送報(bào)文時(shí),獲取待發(fā)送報(bào)文的字節(jié)數(shù),并應(yīng)用 該字節(jié)數(shù)與保存的累計(jì)值的代數(shù)和更新所述累計(jì)值;初級令牌桶更新模塊,用于將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)數(shù)更新門限值進(jìn)行比較, 如果所述累計(jì)值大于字節(jié)數(shù)更新門限值,則更新所述葉子通道的令牌桶,并將所述累計(jì)值清零。
7.如權(quán)利要求6所述的裝置,其特征在于,該裝置還包括次級令牌桶更新模塊,用于如果所述累計(jì)值不大于字節(jié)數(shù)更新門限值,則確定當(dāng)前時(shí) 間與上一次令牌桶更新的時(shí)間間隔是否大于預(yù)設(shè)間隔時(shí)間門限值,如果是,則更新所述葉 子通道的令牌桶,并將所述累計(jì)值清零。
8.如權(quán)利要求6或7所述的裝置,其特征在于,初級令牌桶更新模塊和次級令牌桶更新 模塊中更新所述葉子通道的令牌桶具體包括在總的令牌數(shù)中減去所述累計(jì)值,并記錄當(dāng) 前時(shí)間為令牌桶更新時(shí)間點(diǎn)。
9.如權(quán)利要求6或7所述的裝置,其特征在于,所述初級令牌桶更新模塊和次級令牌桶 更新模塊還用于在更新所述葉子通道的令牌桶,之后更新該葉子通道的父通道的令牌桶。
10.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括權(quán)利要求6到9所述的裝置。
全文摘要
本發(fā)明公開了一種控制令牌桶更新的方法和裝置,應(yīng)用于網(wǎng)絡(luò)技術(shù)領(lǐng)域,該方法包括獲取待發(fā)送報(bào)文中的字節(jié)數(shù),并應(yīng)用該字節(jié)數(shù)與保存的累計(jì)值的代數(shù)和更新所述累計(jì)值;將更新后的累計(jì)值與預(yù)設(shè)的字節(jié)長度更新門限值進(jìn)行比較,如果所述累計(jì)值大于字節(jié)數(shù)更新門限值,則更新所述通道的令牌桶,并將所述累計(jì)值清零。應(yīng)用本發(fā)明實(shí)施例提供的方法和裝置能夠在不影響已有帶寬控制精度的前提下,有效的減少更新令牌的次數(shù),從而降低對網(wǎng)絡(luò)設(shè)備處理器的占用。
文檔編號H04L12/56GK101841461SQ201010111110
公開日2010年9月22日 申請日期2010年2月11日 優(yōu)先權(quán)日2010年2月11日
發(fā)明者王曉峰, 鐘志強(qiáng) 申請人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司