專利名稱:隊列調度方法及裝置的制作方法
技術領域:
本發明涉及數據傳輸技術領域,尤其涉及一種隊列調度方法及裝置。
背景技術:
服務質量(Quality of krvice,簡稱QoS)是網絡的一種安全機制,是用來解決網絡延遲和阻塞等問題的一種技術,其中隊列調度技術是QoS中的關鍵技術。隊列調度技術種類較多,目前路由器常用的隊列調度技術是基于赤字的輪訓調度(Deficit Round Robin, DRR)技術。在DRR技術中,路由器根據配額粒度(Quantum)與權重(Weight)配合形成累計份額(Deficit),所述配額粒度為一個調度周期被調度的隊列的填充配額的粒度,所述累計份額為當前被調度的隊列剩余的份額,路由器根據預先設置的隊列順序及所述累計份額依次進行調度,同一隊列中相鄰的報文被調度的時間間隔的變化稱為時延抖動,具體實現方式為只要隊列的累計份額大于0,路由器就會調度所述隊列,將隊列的累計份額減去所述隊列中報文的報文長度,直到所述隊列的累計份額最后變為0或負數時,在此次調度周期內停止所述隊列的調度。其中,所述路由器中所有隊列開始調度直到所有隊列的累計份額都變為0或負數的時間為一個調度周期。當所有隊列的累計份額都變為0或負數時,路由器將所述配額粒度與所述權重配合形成的累計份額增加到每個隊列中變為0或負數的累計份額上,使得所述累計份額大于0以進行下一個調度周期的調度。在實現本發明實施例的過程中,發明人發現,現有技術至少存在以下技術問題當路由器中多個隊列的報文長度差異較大及隊列權重差異較大時,會導致一部分隊列的累計份額長時間為0或負數而另一部分隊列的累計份額長時間大于0,使得路由器一直調度另一部分隊列,隊列的時延抖動大。
發明內容
本發明的實施例提供一種隊列調度方法及裝置,能夠解決現有技術中由于路由器中多個隊列的報文長度差異較大及隊列權重差異較大時導致在調度過程中的隊列流量時延抖動大的問題。為達到上述目的,本發明的實施例采用如下技術方案一種隊列調度方法,包括每次調度之后,從待調度隊列中獲取目標隊列,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值;若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,將所述目標隊列設置為等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列;
若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列;調度待調度隊列。一種隊列調度裝置,包括獲取單元,用于每次調度之后,從待調度隊列中獲取目標隊列,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值;第一設置單元,用于若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,將所述目標隊列設置為等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列;第二設置單元,用于若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列;調度單元,用于調度待調度隊列。一種路由器,包括上述的隊列調度裝置。本發明實施例提供的隊列調度方法及裝置,由于每次調度之后,從待調度隊列中獲取目標隊列,根據所述目標隊列的粒度消耗參數的大小,獲取到等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列,調度待調度隊列并暫停等待隊列的調度。這樣使得累計份額消耗速率大的隊列暫停調度,而去調度累計份額消耗速率小的隊列。與現有技術相比,本發明實施例能夠解決現有技術中由于路由器中多個隊列的報文長度差異較大及隊列權重差異較大時導致在調度過程中的隊列流量時延抖動大的問題。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例提供的隊列調度方法的流程圖;圖2為本發明又一實施例提供的隊列調度方法的流程圖;圖3為本發明又一實施例提供的隊列調度方法中一輪調度中報文的調度結果示意圖;圖4為本發明實施例提供的隊列調度裝置的結構示意圖一;圖5為本發明實施例提供的隊列調度裝置的結構示意圖二。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。為使本發明技術方案的優點更加清楚,下面結合附圖和實施例對本發明作詳細說明。如圖1所示,本發明實施例提供的隊列調度方法,所述方法包括步驟101、每次調度之后,從待調度隊列中獲取目標隊列。其中,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值。若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,執行步驟102 ;若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,執行步驟103。其中,所述第一閾值可以為0,但不僅局限于此。步驟102、將所述目標隊列設置為等待隊列。執行步驟104。其中,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列。步驟103、將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列。執行步驟104。步驟104、調度待調度隊列。本發明實施例提供的隊列調度方法,由于每次調度之后,從待調度隊列中獲取目標隊列,根據所述目標隊列的粒度消耗參數的大小,獲取到等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列,調度待調度隊列并暫停等待隊列的調度。這樣使得累計份額消耗速率大的隊列暫停調度,而去調度累計份額消耗速率小的隊列。與現有技術相比,本發明實施例能夠解決現有技術中由于路由器中多個隊列的報文長度差異較大及隊列權重差異較大時導致在調度過程中的隊列流量時延抖動大的問題。為了使得本領域的技術人員更好的理解本發明實施例提供過的技術方案,下面將通過又一個具體實例來進一步介紹本發明實施例中提供的隊列調度方法。如圖2所示,本發明又一實施例提供的隊列調度方法,所述方法包括步驟201、每次調度之后,從待調度隊列中獲取目標隊列。其中,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值。例如可以用如下公式表示Deficit Rate 2 = Deficit Raterpkt-len/ffeight ;其中,Deficit Rate 2表示調度之后的粒度消耗參數;
Deficit Rate1表示調度之前的粒度消耗參數;pkt-len表示待調度隊列的報文長度;Weight表示待調度隊列的權重;pkt-1 en/Weight表示累計份額消耗度速率。若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,執行步驟202。其中,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列。若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,執行步驟203。若所述目標隊列對應的粒度消耗參數小于所述第一閾值,執行步驟204。其中,所述第一閾值可以為0,但不僅局限于此。步驟202、將所述目標隊列設置為等待隊列。執行步驟205。步驟203、將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列。執行步驟205。步驟204、將所述目標隊列設置為擱置隊列。執行步驟205。其中,所述擱置隊列為本輪調度中不會再被調度的隊列。步驟205、調度待調度隊列。例如,以4個隊列為例,若其中一個隊列為等待隊列,另一個隊列為擱置隊列,剩余的兩個隊列為待調度隊列,則所述一個隊列和另一個隊列的調度機會可以平均分配給剩余的兩個待調度隊列,但不僅局限于此。步驟206、調度時若所述待調度隊列個數為零,將所述等待隊列設置為待調度隊列并進行隊列調度。步驟207、調度后若所述待調度隊列以及所述等待隊列的個數均為零,結束一輪調度。其中,所述一輪調度包括多次調度。此時將隊列都設置為擱置隊列,擱置隊列的粒度消耗參數小于所述第一閾值,例如所述擱置隊列的粒度消耗參數小于0。步驟208、根據配額粒度與擱置隊列的粒度消耗參數生成調度之前的粒度消耗參數,使得所述調度之前的粒度消耗參數大于所述第一閾值。步驟209、將所述擱置隊列設置為待調度隊列。返回執行步驟201。通過步驟209,擱置隊列設置為待調度隊列,能夠開始下一輪調度。下面針對上述方法列舉一組數據來說明,值得說明的是,本組數據僅僅是本發明實施例中的其中一組數據,其目的是為了更清楚的說明本發明實施例,任何熟悉本領域的技術人員都能輕而易舉地得到其他數據。例如以隊列個數是4為例,4個隊列分別為WO、WU W2、W3,4個隊列的權重為 1:2:4: 1,配額粒度為100字節,4個隊列的每個數據包得一個報文長度都為60字節, 根據上述公式Deficit Rate 2 = Deficit Ratefpkt-len/Weight得到如圖3所示的一輪調度中報文的調度結果,其中DR為粒度消耗參數,所述方法中4個隊列W0、W1、W2、W3中每一個隊列的調度較均勻的分布于一輪調度中,則在多輪調度中,4個隊列中每一個隊列的調度較均勻,這樣減小了隊列的時延抖動。本發明又一實施例提供的隊列調度方法,由于每次調度之后,從待調度隊列中獲取目標隊列,根據所述目標隊列的粒度消耗參數的大小,獲取到等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列,調度待調度隊列并暫停等待隊列的調度。這樣使得累計份額消耗速率大的隊列暫停調度,而去調度累計份額消耗速率小的隊列。與現有技術相比,本發明實施例能夠解決現有技術中由于路由器中多個隊列的報文長度差異較大及隊列權重差異較大時導致在調度過程中的隊列流量時延抖動大的問題。本發明實施例提供的隊列調度裝置,如圖4所示,包括獲取單元41,用于每次調度之后,從待調度隊列中獲取目標隊列,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值。其具體實現方式參見圖1中步驟101所示,此處不再贅述。第一設置單元42,用于若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,將所述目標隊列設置為等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列。其具體實現方式參見圖1中步驟102所示,此處不再贅述。第二設置單元43,用于若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列。其具體實現方式參見圖1中步驟103所示,此處不再贅述。調度單元44,用于調度待調度隊列。其具體實現方式參見圖1中步驟104所示,此處不再贅述。進一步的,如圖5所示,所述裝置,還包括第三設置單元45,用于若所述目標隊列對應的粒度消耗參數小于所述第一閾值, 將所述目標隊列設置為擱置隊列。其具體實現方式參見圖2中步驟204所示,此處不再贅述。進一步的,如圖5所示,所述裝置,還包括第四設置單元46,用于調度時若所述待調度隊列個數為零,將所述等待隊列設置為待調度隊列。其具體實現方式參見圖2中步驟206所示,此處不再贅述。進一步的,如圖5所示,所述裝置,還包括結束單元47,用于調度后若所述待調度隊列以及所述等待隊列的個數均為零,結束一輪調度。其中,所述一輪調度包括多次調度。其具體實現方式參見圖2中步驟207所示,此處不再贅述。本發明實施例提供的隊列調度裝置,由于獲取單元在每次調度后,從待調度隊列中獲取目標隊列,第一設置單元及第二設置單元根據所述目標隊列的粒度消耗參數的大小,獲取到等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列,調度待調度隊列并暫停等待隊列的調度。這樣使得累計份額消耗速率大的隊列暫停調度,而去調度累計份額消耗速率小的隊列。與現有技術相比,本發明實施例能夠解決現有技術中由于路由器中多個隊列的報文長度差異較大及隊列權重差異較大時導致在調度過程中的隊列流量時延抖動大的問題。本發明實施例提供的路由器,包括上述實施例中的隊列調度裝置,其具體實現方式參見上述隊列調度裝置的實施例。本發明實施例提供的路由器,由于通過路由器內的隊列調度裝置在每次調度之后從待調度隊列中獲取目標隊列,根據所述目標隊列的粒度消耗參數的大小,獲取到等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列,調度待調度隊列并暫停等待隊列的調度。這樣使得累計份額消耗速率大的隊列暫停調度,而去調度累計份額消耗速率小的隊列。與現有技術相比,本發明實施例能夠解決現有技術中由于路由器中多個隊列的報文長度差異較大及隊列權重差異較大時導致在調度過程中的隊列流量時延抖動大的問題。通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發明可借助軟件加必需的通用硬件的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在可讀取的存儲介質中,如計算機的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機, 服務器,或者網絡設備等)執行本發明各個實施例所述的方法。以上所述,僅為本發明的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應所述以權利要求的保護范圍為準。
權利要求
1.一種隊列調度方法,其特征在于,包括每次調度之后,從待調度隊列中獲取目標隊列,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值;若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,將所述目標隊列設置為等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列;若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列;調度待調度隊列。
2.根據權利要求1所述的方法,其特征在于,還包括若所述目標隊列對應的粒度消耗參數小于所述第一閾值,將所述目標隊列設置為擱置隊列。
3.根據權利要求1-2任一項所述的方法,其特征在于,還包括調度時若所述待調度隊列個數為零,將所述等待隊列設置為待調度隊列。
4.根據權利要求1-3任一項所述的方法,其特征在于,還包括調度后若所述待調度隊列以及所述等待隊列的個數均為零,結束一輪調度,所述一輪調度包括多次調度。
5.一種隊列調度裝置,其特征在于,包括獲取單元,用于每次調度之后,從待調度隊列中獲取目標隊列,所述待調度隊列為每次調度之后允許下一次繼續調度的隊列,所述目標隊列為所述待調度隊列中粒度消耗參數最小的隊列,所述粒度消耗參數為所述每次調度之前的粒度消耗參數減去累計份額消耗速率的差值,所述累計份額消耗速率為所述每次調度的報文長度與該待調度隊列的權重的比值;第一設置單元,用于若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值, 且等待隊列的個數為零,將所述目標隊列設置為等待隊列,所述等待隊列為粒度消耗參數大于預先設置的第一閾值且下一次調度暫停調度的隊列;第二設置單元,用于若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列;調度單元,用于調度待調度隊列。
6.根據權利要求5所述的裝置,其特征在于,還包括第三設置單元,用于若所述目標隊列對應的粒度消耗參數小于所述第一閾值,將所述目標隊列設置為擱置隊列。
7.根據權利要求5-6任一項所述的裝置,其特征在于,還包括第四設置單元,用于調度時若所述待調度隊列個數為零,將所述等待隊列設置為待調度隊列。
8.根據權利要求5-7任一項所述的裝置,其特征在于,還包括結束單元,用于調度后若所述待調度隊列以及所述等待隊列的個數均為零,結束一輪調度,所述一輪調度包括多次調度。
9. 一種路由器,其特征在于,包括權利要求5-8任一項所述的隊列調度裝置。
全文摘要
本發明實施例公開了一種隊列調度方法及裝置,涉及數據傳輸技術領域,解決了現有技術中隊列時延抖動大的問題。所述隊列調度方法包括,每次調度之后,從待調度隊列中獲取目標隊列,若所述目標隊列對應的粒度消耗參數大于預先設置的第一閾值,且等待隊列的個數為零,將所述目標隊列設置為等待隊列,若所述目標隊列對應的粒度消耗參數大于所述第一閾值且小于等待隊列對應的粒度消耗參數,將所述目標隊列設置為等待隊列并將原等待隊列設置為待調度隊列,調度待調度隊列。本發明適用于基于赤字的輪訓調度技術領域。
文檔編號H04L12/56GK102420758SQ20111039019
公開日2012年4月18日 申請日期2011年11月30日 優先權日2011年11月30日
發明者張永平, 湯成, 王風利 申請人:華為技術有限公司