一種調度報文的方法和裝置與流程
2023-05-29 03:09:42 1
本申請涉及通信領域,尤其涉及一種調度報文的方法和裝置。
背景技術:
擁塞管理的中心內容是當擁塞發生時如何制定一個策略,用於決定報文轉發的處理次序和丟棄原則,一般採用隊列技術。隊列指的是在緩存中對報文進行排序的邏輯。當流量的速率超過接口帶寬或超過為該流量設置的帶寬時,報文就以隊列的形式暫存在緩存中。報文離開隊列的時間、順序以及各個隊列之間報文離開的相互關係由隊列調度算法決定。
加權差分輪詢(英文全稱:Weighted Deficit Round Robin,英文縮寫:WDRR)調度算法的隊列調度原理如下:一輪調度,為待調度的每個隊列按權重分配一個可配置的服務額度,作為每個隊列的可用帶寬,並按照分配的服務額度發送各個隊列的報文,每輪所分配的服務額度均以隊列的權重因子為基數,服務額度與權重因子以及每個隊列的權重的比項正相關;如果一個隊列在本輪調度中的報文長度大於分配給該隊列的服務額度,那麼本輪調度中該報文將不被發送,並將本輪調度的服務額度加到該隊列下一輪調度的服務額度中,作為隊列下一輪調度的可用帶寬。而在一些改進的WDRR算法中,如果一個隊列在本輪調度中的報文長度大於分配給該隊列的服務額度,且服務額度大於或等於零時,那麼本輪調度中該報文仍會被發送出去,而超支的額度將在下一輪調度中扣除。在進一步改進的WDRR算法中,為了保證隊列每次被選擇時都能發出至少1個報文,要求服務額度大小至少為該隊列中最大報文長度的大小,否則,若配置的服務額度較小,當上一輪調度中調度出兩個較大的報文後,超支的服務額度大於本輪調度中分配的服務額度,那麼扣除上一輪超支服務額度後服務額度將小於零,從而導致本輪調度無法調度出報文。
由於每個隊列的服務額度至少為該隊列的最大報文長度的大小,保證每次被調度選擇時都能發出至少1個報文,而對於隊列中最大報文的長度與其 他短報文相差較大的情況下,則有可能在一輪調度中發出較多的短報文,導致報文突發嚴重,並且該隊列有可能經過幾輪調度之後所有報文都被調度出,後續的調度過程中只會調度出其他隊列的報文,這對於整個調度過程,會導致流量抖動過大,而影響了傳輸報文的穩定性。
技術實現要素:
本申請提供了一種調度報文的方法和裝置,可實現提高報文傳輸的穩定性。
第一方面,提供一種調度報文的方法,包括:
確定第一隊列在上一輪被調度出的報文中最大報文的長度;
根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;
根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
根據所述第一調度長度從所述第一隊列中調度出相應數目的報文。
本申請所提供的調度報文的方法中,確定第一隊列在上一輪次被調度出的報文中最大報文的長度,根據所述最大報文的長度設置所述第一隊列的權重因子,這樣,便能保證本輪調度中為所述第一隊列分配權重因子後,扣除上一輪超支的額度後,第一隊列的權重因子值大於零,即,使得所述第一隊列在本輪調度中至少能調度出一個報文;所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括第二比項和所述第一隊列對應的所述第一比項;根據所述第一調度長度從所述第一隊列中調度出相應數目的報文。這樣,在進行每輪調度之前,第一隊列的權重因子均為動態設置,既保證了每輪調度均能從所述第一隊列中調度出至少一個報文,又能避免在一輪調度過程中因為權重因子過大調度過多報文造成的報文突發的問題,從而提高了報文傳輸的穩定性。
一種可能的實現方式中,當所述權重比的最大公約數不為1時,所述方 法還包括:
用所述最大公約數分別整除所述第一比項與所述第二比項。
本申請的調度報文的方法,若第一隊列與第二隊列的權重比較大,那麼在一輪調度中,基於分配的權重因子與權重比的比項所得到的調度長度較大,所能調度出的報文數目也較多,會導致報文突發嚴重。本申請的報文調度方法中,當第一隊列與第二隊列的權重比的最大公約數不為1時,則用所述最大公約數分別整除所述第一比項與所述第二比項,這樣,使得第一比項與第二比項都較小,從而在一輪調度中,所得到的調度長度較小,從而所調度出的報文較少,減輕了報文突發狀況。
例如,第一隊列與第二隊列發送報文按定長包100位元組,配置權重因子為100位元組,兩個隊列的權重比為10:20,那麼,所述第一隊列對應的第一比項為10,所述第二隊列對應的第二比項為20,在一輪調度中,第一隊列的調度長度為100*10=1000位元組,因此,第一隊列將被調度出10個報文,第二隊列的調度長度為100*20=2000位元組,因此,第二隊列將被調度出20個報文。而所述第一隊列與所述第二隊列的權重比的最大公約數為10,那麼,本申請的報文調度方法中,還可以用所述最大公約數10分別整除所述第一比項10與所述第二比項20,得到所述第一隊列與所述第二隊列的權重比為1:2,所以,通過本申請的調度報文的方法中,在一輪調度中,第一隊列的調度長度為100*1=100位元組,第一隊列將被調度出一個報文,第二隊列的調度長度為100*2=200位元組,第二隊列將被調度出兩個報文。
一種可能的實現方式中,所述根據所述第一調度長度從所述第一隊列中調度出相應數目的報文包括:
根據所述第一調度長度的加權值從所述第一隊列中調度出相應數目的報文;所述第一調度長度的加權值為:所述第一調度長度除以權重係數,所述權重係數為2N;所述N滿足:所述第一比項與所述第二比項中最小的比項大於或等於2N,且小於2N+1。
本申請的調度報文的方法,當配置第一隊列與第二隊列的權重比為7:11這類最小的比項不為1,且無法進行最大公約數相約為較小的權重比時,若以此權重比進行報文調度,那麼在一輪調度中,所計算得到的調度長度較大, 被調度出的報文會比較多,同樣會引起報文突發的問題。所以在本申請報文調度方法中,計算出調度長度後,再將調度長度除以權重係數得到一個服務額度,並以此服務額度作為調度隊列中報文數目的長度。由於在物理實現中,報文一般取值2的整數次冪,所以權重係數為2N,所述N滿足:所述第一比項與第二比項中最小的比項大於或等於2N,且小於2N+1,這樣,使得計算得到較大的調度長度後,除以合適的權重係數,得到合理的服務額度,使得報文調度確保每次調度的最小權重隊列出隊1~2個報文,以減少因最小權重配置值非1引入的報文突發。
第二方面,提供了一種調度報文的裝置,所述調度報文的裝置具有實現上述方法的功能。所述功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現。所述硬體或軟體包括一個或多個與上述功能相對應的模塊。
一種可能的實現方式中,本申請所提供的調度報文的裝置包括發送器和處理器;其中,
所述處理器,用於確定第一隊列在上一輪次被調度出的報文中最大報文的長度;
所述處理器還用於,根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;
所述處理器還用於,根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
所述發送器,用於根據所述第一調度長度從所述第一隊列中調度出相應數目的報文。
另一種可能的實現方式中,所述調度報文的裝置包括:
確定單元,用於確定第一隊列在上一輪次被調度出的報文中最大報文的長度;
設置單元,用於根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;
第一計算單元,用於根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
調度單元,用於根據所述第一調度長度從所述第一隊列中調度出相應數目的報文。
附圖說明
圖1為本申請提供的一種調度報文的方法的示意圖;
圖2為本申請提供的另一調度報文的方法的示意圖;
圖3為本申請提供的一種調度報文的裝置的結構示意圖;
圖4為本申請提供的另一種調度報文的裝置的結構示意圖。
具體實施方式
本申請提供了一種調度報文的方法,用於提高了報文傳輸的穩定性。
參照圖1所示,本申請提供了一種調度報文的方法,包括:
101、確定第一隊列在上一輪次被調度出的報文中最大報文的長度;
網絡設備,具體為網絡設備中的調度報文的裝置,在設置所述第一隊列的權重因子之前,先確定所述第一隊列在上一輪次被調度出的報文中最大報文的長度。
102、根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;
在每輪調度中,需要給每個隊列設置帶寬,才能調度出隊列中的報文,所以需要在每輪調度中為每個隊列設置權重因子。為了防止為第一隊列設置的權重因子過大,從而導致在當前輪次調度中便調度出較多的報文,導致各個隊列的調度不平均,後續則會造成其他隊列的流量突發嚴重,造成整個調度中流量抖動過大,而影響了報文傳輸的穩定,所以所述權重因子還需要小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度,所述預設門值不宜設置過大,所述預設門值可以接近所述最大報文的長度,所述預設門值的上限設置應符合使得本申請的調度報文的方法能夠解決現有技術中 報文突發嚴重,流量抖動過大的基本要求。
103、根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
由於網絡設備不同的埠所設置的最大帶寬可能不相同,為了防止報文傳輸擁塞,會給需要進行報文調度的兩個或兩個以上的隊列設置權重比,而每個隊列對應的比項可能不為相同,根據權重因子以及第一隊列對應的第一比項便能計算得到第一調度長度,一般的,第一調度長度通過所述第一隊列的權重因子與所述第一比項相乘得到。
104、根據所述第一調度長度從所述第一隊列中調度出相應數目的報文;
每個隊列中報文的排列順序是既定的,在本輪調度中,排在最前的報文必然會被調度出,若第一調度長度減去被調度出的報文的長度得到的值仍然大於或等於零,則還能將下一個報文調度出。
本申請所提供的調度報文的方法中,確定第一隊列在上一輪次被調度出的報文中最大報文的長度,根據所述最大報文的長度設置所述第一隊列的權重因子,這樣,便能保證本輪調度中為所述第一隊列分配權重因子後,扣除上一輪超支的額度後,第一隊列的權重因子值大於零,即,使得所述第一隊列在本輪調度中至少能調度出一個報文;所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括第二比項和所述第一隊列對應的所述第一比項;根據所述第一調度長度從所述第一隊列中調度出相應數目的報文。這樣,在進行每輪調度之前,第一隊列的權重因子均為動態設置,既保證了每輪調度均能從所述第一隊列中調度出至少一個報文,又能避免在一輪調度過程中因為權重因子過大調度過多報文造成的報文突發的問題,從而提高了報文傳輸的穩定性。
在圖1所示方法的基礎上,進一步地,請參照圖2所示,本申請提供了另一調度報文的方法,包括:
201、當權重比的最大公約數不為1時,用所述最大公約數分別整除所述 第一比項與第二比項;
在所述對兩個或兩個以上的隊列進行權重比的配置之後,可能配置的權重比較大,比如第一隊列與第二隊列的權重比配置為10:20,由於調度長度是通過權重因子與權重比的比項相乘所得到的,所以會造成調度長度過大,從而在當前輪次調度中調度出過多的報文。因為10:20與1:2相等,當所述第一比項與第二比項的最大公約數不為1時,網絡設備,具體為網絡設備中的調度報文的裝置,可以先對所述第一比項與第二比項進行最大公約數相約,即,用所述最大公約數分別整除所述第一比項與所述第二比項。
202、確定第一隊列在上一輪次被調度出的報文中最大報文的長度;
詳細內容參照步驟101所述。
可選的,若本輪調度為所述第一隊列的第一次調度時,則可獲取所述第一隊列中最大報文的長度,並根據所述第一隊列中最大報文的長度設置權重因子。
203、根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;所述權重因子取值2的整數次冪;所述預設門值取值2的M次冪(2M),所述M滿足:所述最大報文的長度大於2的(M-1)次冪(2M-1),且小於或等於2的M次冪(2M);
由於網絡設備在帶寬的物理分配上均是以2的整數次冪實現的,所以為了實現方便,權重因子也可取值2的整數次冪。例如上一輪次的調度出隊報文均是100位元組,那麼本輪調度中權重因子quantum=128,若上一輪此調度的最大報文長度是251位元組,那麼當前輪次中權重因子quantum=256位元組,若上一輪次調度的最大報文長度是500位元組,那麼這一輪次權重因子quantum=512位元組。
204、根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
詳細內容參照步驟103所述。
205、根據所述第一調度長度的加權值從所述第一隊列中調度出相應數目 的報文;所述第一調度長度的加權值為:所述第一調度長度除以權重係數,所述權重係數為2的N次冪(2N),所述N滿足:所述第一比項與所述第二比項中最小的比項大於或等於2的N次冪(2N),且小於2的(N+1)次冪(2N+1);
由於在配置隊列權重比時,可能會配置例如7:11、7:13這樣的權重比,其中最小比項不為1,而最大公約數為1,因此無法替換為較小的等值權重比。若配置這類的權重比,那麼每一輪所分配的調度長度值會很大,導致在一輪調度中,調度出較多的報文。例如,第一隊列中有7個報文,第二隊列中有20個報文,兩個隊列發送報文按定長包100位元組,配置權重因子quantum=100位元組,兩個隊列的權重比為7:11,即每輪調度前按權重分配隊列調度長度,第一隊列分配(100*7)=700位元組,第二隊列分配(100*11)=1100位元組。那麼在第一輪調度中,第一隊列的7個報文全部被調度出,第二隊列調度出11個報文,第二輪調度中,就只能調度出第二隊列剩餘的9個報文,這樣,則引起了較大的流量抖動。
所以在本申請的報文調度方法中,在配置隊列權重比的同時,配置權重係數ratio,權重係數ratio取值2N,根據權重係數ratio進行相應的服務額度增值進行優化。具體操作如下:
根據配置的隊列的權重比中最小的比項,決定權重係數ratio中N的取值;最小的比項介於2N和2N+1之間,例如:
當配置的隊列的權重比中最小的比項為1時,則N=0;
當配置的隊列的權重比中最小的比項為2~3時,則N=1;
當配置的隊列的權重比中最小的比項為4~7時,則N=2;
當配置的隊列的權重比中最小的比項為8~15時,則N=3;
當配置的隊列的權重比中最小的比項為16~31時,則N=4;
當配置的隊列的權重比中最小的比項為32~63時,則N=5;
當配置的隊列的權重比中最小的比項為64~100時,則N=6;
每輪增加的服務額度為(比項*權重因子)/權重係數,即為調度長度的加權值;按WDRR調度算法調度出隊,當所有隊列服務額度為負值時,進入下一輪調度。
例如:權重比為10:20,配置權重係數ratio=8,實際調度效果為1.25:2.5;
權重比為7:13,配置動態權重係數ratio=4,實際調度效果為1.75:3.25;
權重比為7:11,配置動態權重係數ratio=4,實際調度效果為1.75:2.75;
例如,第一隊列與第二隊列發送報文按定長包100位元組,配置權重因子quantum=為100位元組,兩個隊列的權重比為10:20,則配置權重係數ratio=8,即每輪調度前按權重分配隊列調度額度,第一隊列分配(100*10)÷8=125位元組,第二隊列分配(100*20)÷8=250位元組。第一輪調度中兩個隊列分別出隊1個和2個報文。這樣的調度效果接近於按1:2的報文數目調度,緩解了報文突發的情況。
再例如,兩個隊列發送報文按定長包100位元組,配置quantum=為100位元組,兩個隊列的權重比為7:11,則配置權重係數ratio=4,即每輪調度前按權重分配隊列調度長度,第一隊列分配(100*7)÷4=175位元組,第二隊列分配(100*11)÷4=275位元組。第一輪調度中兩個隊列分別出隊1個和2個報文。這樣的調度效果接近於按7:11的報文數目調度,緩解了報文突發的情況。
權重係數ratio根據每輪調度權重比中最小的比項優化增加服務額度的基數,確保每次調度出權重比中最小的比項對應的隊列1~2個報文,以減少因最小權重配置值非1引入的報文突發。
參照圖3所示,本申請提供一種調度報文的裝置,用於上述實現圖1和圖2所示的調度報文的方法,所述調度報文的裝置300包括:
確定單元301,用於確定第一隊列在上一輪次被調度出的報文中最大報文的長度;
詳細內容參照圖1實施例中步驟101所述。
設置單元302,用於根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;
詳細內容參照圖1實施例中步驟102所述。
第一計算單元303,用於根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
詳細內容參照圖1實施例中步驟103所述。
調度單元304,用於根據所述第一調度長度從所述第一隊列中調度出相應數目的報文;
詳細內容參照圖1實施例步驟104所述。
可選的,當所述權重比的最大公約數不為1時,所述裝置還包括:
第二計算單元305,用於用所述最大公約數分別整除所述第一比項與所述第二比項。
詳細內容參照圖2實施例步驟201所述。
可選的,所述調度單元包括:
調度子單元3041,用於根據所述第一調度長度的加權值從所述第一隊列中調度出相應數目的報文;所述第一調度長度的加權值為:所述調度長度除以權重係數,所述權重係數為2N;所述N滿足:所述第一比項與所述第二比項中最小的比項大於或等於2N,且小於2N+1。
詳細內容參照圖2實施例中步驟205所述。
基於本申請上述提供的調度報文的方法,本申請提供一種調度報文的裝置400,用於實現上述圖1和圖2所示調度報文的方法,如圖4所示,所述調度報文的裝置400包括處理器401和發送器402,其中,所述處理器401和所述發送器402之間通過總線403相互連接。
所述處理器401,用於確定第一隊列在上一輪次被調度出的報文中最大報文的長度;
所述處理器401還用於根據所述最大報文的長度設置所述第一隊列的權重因子,所述權重因子大於或等於所述最大報文的長度且小於或等於預設門值,所述預設門值大於或等於所述最大報文的長度;
所述處理器401還用於根據所述權重因子以及權重比中所述第一隊列對應的第一比項計算所述第一隊列對應的第一調度長度,所述權重比包括所述第一比項和第二比項;
發送器402,用於根據所述第一調度長度從所述第一隊列中調度出相應數目的報文。
可選的,當所述權重比的最大公約數不為1時,所述處理器401還用於用所述最大公約數分別整除所述第一比項與所述第二比項。
可選的,所述發送器402具體用於根據所述第一調度長度的加權值從所述第一隊列中調度出相應數目的報文;所述第一調度長度的加權值為:所述第一調度長度除以權重係數,所述權重係數為2N;所述N滿足:所述第一比項與所述第二比項中最小的比項大於或等於2N,且小於2N+1。
相關說明可以對應參閱圖1以及圖2的方法實施例部分所對應的相關描述和效果進行理解,本處不做過多贅述。
所述處理器401包括專用集成電路(Application Specific Integrated Circuit,簡稱:ASIC)、現場可編程門陣列(Field-Programmable Gate Array,簡稱:FPGA)或者其他可編程邏輯器件等。
以上所述,以上實施例僅用以說明本申請的技術方案,而非對其限制;儘管參照前述實施例對本申請進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本申請各實施例技術方案的範圍。