基于硬件提高多隊列隨機丟棄報文精度的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種基于硬件提高多隊列隨機丟棄報文精度的方法及裝置。
【背景技術(shù)】
[0002]在現(xiàn)有的交換機系統(tǒng)中,為了提高網(wǎng)絡(luò)的穩(wěn)定性,以及為了方便管理員對網(wǎng)絡(luò)進行管理,通常在報文傳遞過程中,將隨機丟棄算法廣泛應(yīng)用于網(wǎng)絡(luò)芯片以避免網(wǎng)絡(luò)擁塞,隨機丟棄算法旨在提前采取丟包動作,而不是等到網(wǎng)絡(luò)實際擁塞了以后再采取措施。
[0003]現(xiàn)有技術(shù)中,如圖1所示,隨機丟棄算法是在系統(tǒng)中設(shè)置兩個閥值,理論上,在隊列長度介于兩個閥值之間的時候,隊列被丟棄的概率和隊列的長度成正比,然而由于芯片硬件實現(xiàn)的限制性,很難在隊列長度增加的情況下準確按比例丟棄報文。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種基于硬件提高多隊列隨機丟棄報文精度的方法及裝置。
[0005]為實現(xiàn)上述目的之一,本發(fā)明一實施方式的基于硬件提高多隊列隨機丟棄報文精度的方法,所述方法包括:
預(yù)置數(shù)值存儲器、隊列屬性配置存儲器、隊列指針存儲器、隊列長度存儲器;
所述數(shù)值存儲器的每一個深度空間內(nèi)對應(yīng)存儲一個判斷閾值;
所述隊列屬性配置存儲器用于存儲每一個隊列的最大丟棄閾值、最小丟棄閾值,以及隨機丟棄比例值;
所述隊列指針存儲器用于存儲每個所述隊列訪問所述數(shù)值存儲器的指針讀數(shù);
所述隊列長度存儲器用于存儲每個隊列的隊列長度;
根據(jù)輸入數(shù)據(jù)所在隊列編號訪問所述隊列長度存儲器,獲取其對應(yīng)隊列的隊列長度,以及訪問所述隊列屬性配置存儲器,獲取其對應(yīng)隊列的最大丟棄閾值、最小丟棄閾值、隨機丟棄比例值;
根據(jù)所述隊列長度判斷接收或是丟棄所述輸入數(shù)據(jù);
若輸入數(shù)據(jù)所在隊列的隊列長度大于最大丟棄閾值,則丟棄全部的所述輸入數(shù)據(jù);
若輸入數(shù)據(jù)所在隊列的隊列長度小于最小丟棄閾值,則接收全部的所述輸入數(shù)據(jù);
若輸入數(shù)據(jù)所在隊列的隊列長度介于最大丟棄閾值和最小丟棄閾值之間,則根據(jù)所述最大丟棄閾值、最小丟棄閾值、隨機丟棄比例值,以及當前隊列的隊列長度獲取當前隊列的丟棄概率;
同時,根據(jù)輸入數(shù)據(jù)所在隊列編號訪問所述隊列指針存儲器,獲取訪問所述數(shù)值存儲器的隊列指針讀數(shù);
根據(jù)所述隊列指針讀數(shù)訪問所述數(shù)值存儲器,獲取與所述隊列對應(yīng)的判斷閾值; 根據(jù)所述丟棄概率和所述判斷閾值,決定是否丟棄所述輸入數(shù)據(jù)。
[0006]作為本發(fā)明的進一步改進,所述方法還包括:
每次根據(jù)輸入數(shù)據(jù)所在隊列編號訪問所述隊列指針存儲器后,均對所述隊列指針存儲器內(nèi)相應(yīng)的所述隊列指針讀數(shù)加1,并將更新后的隊列指針讀數(shù)保存到所述隊列指針存儲器。
[0007]作為本發(fā)明的進一步改進,所述方法還包括:
每次接收所述輸入數(shù)據(jù)后,均對所述隊列長度存儲器內(nèi)相應(yīng)的所述隊列長度加1,并將更新后的隊列長度保存到所述隊列長度存儲器。
[0008]作為本發(fā)明的進一步改進,所述方法還包括:
所述丟棄概率根據(jù)所述隊列長度和最小丟棄閾值的差值所屬的丟棄區(qū)間進行確定。
[0009]作為本發(fā)明的進一步改進,所述方法還包括:
將當前隊列的最大丟棄閾值和最小丟棄閾值所在區(qū)間劃分為N個所述丟棄區(qū)間,N個所述丟棄區(qū)間按照其區(qū)間取值范圍從小到大依次為丟棄區(qū)間1、丟棄區(qū)間2…丟棄區(qū)間N,每個所述丟棄區(qū)間N內(nèi)、所述隊列長度和最小丟棄閾值的差值的丟棄概率依次為1/N、2/N…N/N ;所述N為2的冪次方。
[0010]作為本發(fā)明的進一步改進,所述“根據(jù)所述丟棄概率和所述判斷閾值,決定是否丟棄所述輸入數(shù)據(jù)?!本唧w包括:
將丟棄概率值和所述判斷閾值進行比較,判斷所述丟棄概率值是否大于所述判斷閾值;
若是,按照所述隨機丟棄比例值丟棄所述輸入數(shù)據(jù);
若否,接收所述輸入數(shù)據(jù)進入當前所述隊列;
所述丟棄概率值=所述隨機丟棄比例值*所述丟棄概率。
[0011]為實現(xiàn)上述目的之一,本發(fā)明一實施方式的基于硬件提高多隊列隨機丟棄報文精度的裝置,所述裝置包括:
存儲模塊,所述存儲模塊中預(yù)置數(shù)值存儲器、隊列屬性配置存儲器、隊列指針存儲器,以及隊列長度存儲器;
所述數(shù)值存儲器的每一個深度空間內(nèi)對應(yīng)存儲一個判斷閾值;
所述隊列屬性配置存儲器用于存儲每一個隊列的最大丟棄閾值、最小丟棄閾值,以及隨機丟棄比例值;
所述隊列指針存儲器用于存儲每個所述隊列訪問所述數(shù)值存儲器的指針讀數(shù);
所述隊列長度存儲器用于存儲每個隊列的隊列長度;
數(shù)據(jù)處理模塊,用于根據(jù)輸入數(shù)據(jù)所在隊列編號訪問所述隊列長度存儲器,獲取其對應(yīng)隊列的隊列長度,以及訪問所述隊列屬性配置存儲器,獲取其對應(yīng)隊列的最大丟棄閾值、最小丟棄閾值、隨機丟棄比例值;
根據(jù)所述隊列長度判斷接收或是丟棄所述輸入數(shù)據(jù);
若輸入數(shù)據(jù)所在隊列的隊列長度大于最大丟棄閾值,則丟棄全部的所述輸入數(shù)據(jù);
若輸入數(shù)據(jù)所在隊列的隊列長度小于最小丟棄閾值,則接收全部的所述輸入數(shù)據(jù);
若輸入數(shù)據(jù)所在隊列的隊列長度介于最大丟棄閾值和最小丟棄閾值之間,則根據(jù)所述最大丟棄閾值、最小丟棄閾值、隨機丟棄比例值,以及當前隊列的隊列長度獲取當前隊列的丟棄概率; 同時,根據(jù)輸入數(shù)據(jù)所在隊列編號訪問所述隊列指針存儲器,獲取訪問所述數(shù)值存儲器的隊列指針讀數(shù);
根據(jù)所述隊列指針讀數(shù)訪問所述數(shù)值存儲器,獲取與所述隊列對應(yīng)的判斷閾值; 根據(jù)所述丟棄概率和所述判斷閾值,決定是否丟棄所述輸入數(shù)據(jù)。
[0012]作為本發(fā)明的進一步改進,所述數(shù)據(jù)處理模塊還用于:
每次根據(jù)輸入數(shù)據(jù)所在隊列編號訪問所述隊列指針存儲器后,均對所述隊列指針存儲器內(nèi)相應(yīng)的所述隊列指針讀數(shù)加1,并將更新后的隊列指針讀數(shù)保存到所述隊列指針存儲器。
[0013]作為本發(fā)明的進一步改進,所述數(shù)據(jù)處理模塊還用于:每次接收所述輸入數(shù)據(jù)后,均對所述隊列長度存儲器內(nèi)相應(yīng)的所述隊列長度加1,并將更新后的隊列長度保存到所述隊列長度存儲器。
[0014]作為本發(fā)明的進一步改進,所述數(shù)據(jù)處理模塊還用于:
根據(jù)所述隊列長度和最小丟棄閾值的差值所屬的丟棄區(qū)間進行確定所述丟棄概率。
[0015]作為本發(fā)明的進一步改進,所述數(shù)據(jù)處理模塊還用于:
將當前隊列的最大丟棄閾值和最小丟棄閾值所在區(qū)間劃分為N個所述丟棄區(qū)間,N個所述丟棄區(qū)間按照其區(qū)間取值范圍從小到大依次為丟棄區(qū)間1、丟棄區(qū)間2…丟棄區(qū)間N,每個所述丟棄區(qū)間N內(nèi)、所述隊列長度和最小丟棄閾值的差值的丟棄概率依次為1/N、2/N…N/N ;所述N為2的冪次方。
[0016]作為本發(fā)明的進一步改進,所述數(shù)據(jù)處理模塊還用于:
將丟棄概率值和所述判斷閾值進行比較,判斷所述丟棄概率值是否大于所述判斷閾值;
若是,按照所述隨機丟棄比例值丟棄所述輸入數(shù)據(jù);
若否,接收所述輸入數(shù)據(jù)進入當前所述隊列;
所述丟棄概率值=所述隨機丟棄比例值*所述丟棄概率。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明的基于硬件提高多隊列隨機丟棄報文精度的方法及裝置,通過引入數(shù)值存儲器,并根據(jù)所述存儲器的存儲空間實時計算多隊列的丟棄概率值,如此,在多隊列情況下,能夠滿足不同隊列按照預(yù)先配置的丟棄精度進行丟棄,提高了丟棄報文的精度,在避免網(wǎng)絡(luò)擁塞的同時,降低丟棄報文的數(shù)量,優(yōu)化系統(tǒng)的運行。
【附圖