專利名稱:用于多輸入單輸出的網絡流量整形和帶寬分配的方法
技術領域:
本發明涉及可變長的包交換網絡中QoS服務的一種帶寬控制方法,具體地說,是一種可以應用在數據通信網絡中多用戶接入的QoS服務流量整形及帶寬分配方法。
背景技術:
當前的網絡帶寬分配大多采用保證帶寬分配方法對某個用戶專門提供帶寬,其他用戶不能使用這段帶寬,即使該用戶的數據沒有達到該帶寬,例如當調度到某個輸入一流發送包時,那么如果該隊列沒有包存在,則該次調度時間輪空。
質量服務QoS的一個重要問題是整形,整形是指對輸入的突發性流量進行緩沖延緩其輸出以防止路由器內阻塞和輸出鏈路的阻塞。大多數流量整形方法采用傳統的漏桶算法,如圖4所示的,其應用系統包括多個輸入鏈路1~n,分別連接有對應的整形器1~n,然后連接輸出鏈路;所述輸入鏈路、整形器通訊連接一由帶寬控制器控制的讀控制器。所述漏桶算法的流量整形方法的一般過程是采用一個計數器設置初值,該計數器定期的更新為最大值。每過一預定時間間隔發送不超過該計數器的包的總長隊列前面的幾個包,每發送一個包計數器減去包長,如果包長超出了剩余計數器,則等待下一時鐘間隔計數器重新初始化最大值再來發包。每個流設有一個輸入緩沖隊列,隊列滿了則進行丟棄。這種方法通過限制計數器防止短時間內大量包過來的突發流輸出導致網絡或路由器緩沖區擁塞。但是這種方法只能限制輸出帶寬,而不能有效的調節帶寬和保證帶寬。
對其他帶寬控制方法分析,如附圖4所示,其他帶寬控制也有采用漏桶算法的,能夠近似的分配帶寬。采取近似于帶寬狀態方法的,通過帶寬控制器計算出應該給哪個隊列分配帶寬。但是大多數采用硬件的方法,缺乏足夠的用戶數目增加的靈活性,不易滿足大量的用戶的使用。又因為其設置計數器不夠靈活,不能夠有效地衡量帶寬,這種現有技術的方式不能實時反應用戶帶寬的實際情況,擴展和伸縮性比較差。
還有的帶寬控制是根據鏈路狀態來控制帶寬資源的使用,但不能保證用戶的有效帶寬。因此這種帶寬分配方法一般用在中心節點的控制,而不是網絡接入的地方。
因此,現有技術存有缺陷,而有待于改進和發展。
發明內容
本發明的目的在于提供一種用于多輸入單輸出的網絡流量整形和帶寬分配的方法,針對以上現有技術的缺點,提出一種新的改進的帶寬控制方法和流量整形方法,保證每個輸入用戶的最小輸出帶寬并且限制其最大輸出帶寬,當最小帶寬都得到滿足時讓每個用戶根據其最小保證帶寬大小按比例分配剩余帶寬。
本發明的技術方案如下一種多輸入單輸出鏈路的帶寬分配的方法,其包括以下步驟a)針對每一輸入鏈路,設置與之連接的緩沖隊列及包長緩沖隊列,所述的輸入鏈路將其包長信息發送到一隊列號選擇模塊;b)所述隊列號選擇模塊通過比較帶寬狀態與最小帶寬的差額,選擇最大差額的輸入鏈路作為輸出,至少每個用戶分配到最小帶寬后,然后根據每個用戶多出帶寬的大小進行調度,選擇多出帶寬的余數為最小值的輸入鏈路作為輸出,保證剩余帶寬分給各個用戶;c)所述隊列號選擇模塊選擇需要發送的隊列號,輸出給所述輸出鏈路;d)所述輸出鏈路在輸出數據包后將剛剛發送的包長和隊列號發送給一帶寬狀態維護模塊。
所述的方法,其中,所述帶寬狀態維護模塊狀態維護時包括以下步驟e)維護每個隊列的帶寬計數器,該計數器每過一較小時鐘周期減少一定數,每到的一較大時鐘周期開始發送包;f)對于帶寬狀態維護模塊中每個隊列對應的帶寬計數器減少的速率等于給隊列設定的最小帶寬為準;g)當發送包時間到時,首先檢查發送包的上次發送的隊列號,得到上次發送的隊列號和包的長度之和,該隊列的帶寬計數器就增加發送的包長度之和,然后通知調度模塊發送包;h)當所述調度模塊收到所述帶寬狀態維護模塊的發包命令時,根據各個輸入流的帶寬狀態來選擇隊列發包。
所述的方法,其中,所述調度模塊還讀取每一輸入鏈路對應的帶寬計數器,并對每一輸入鏈路的帶寬計數器與最大可允許帶寬進行比較;如果帶寬計數器不大于最大可允許帶寬,設定對于每個輸入流,將其帶寬計數器減去最小帶寬,得到差額如果小于零則將差額賦值為0,如果不小于0則差額保持不變;當帶寬計數器大于最大允許帶寬時,將設置差額設定為總帶寬減去最小帶寬。
所述的方法,其中,所述輸出鏈路在輸出鏈路發包的時候,選擇輸入隊列后,根據每個用戶事先設置的權重確定發送包的量;每個隊列預先設定最大突發值Mb,發送滿足包長之和<=權重<=Mb。
所述的方法,其中,所述輸入鏈路包括g1)所述輸入鏈路有一寫控制器用于檢測數據包緩沖隊列的狀態是否已滿,如果已經滿了,則將包丟棄;如果隊列未滿,則寫入包,并將包長放到包長緩沖隊列;g2)在每個輸入接口進來的包如果存放在一個單獨的包緩沖隊列上,所述輸入鏈路具有計算包長的能力,將包長放進相應的包長緩沖隊列中,以供調度模塊發送包時計算要發送的包的量,以保證每次發送的流量不超過權重.
本發明所提供的一種用于多輸入單輸出的網絡流量整形和帶寬分配的方法,通過設定用戶分配的最小帶寬,然后對剩余帶寬進行分配,保證了各個用戶分配的帶寬不低于最小帶寬,同時又能夠利用剩余帶寬,從而避免了帶寬的浪費;本發明的帶寬控制方法既防止了突發串造成網絡擁塞,又能夠控制用戶帶寬的上限同時提高了控制方法的靈活性,通過設定時間間隔能有效提高發送效率,滿足了每個用戶的發送權重和之間的公平性,從而大大提高了服務質量。
圖1為本發明的所述用于多輸入單輸出的網絡流量整形和帶寬分配的方法中帶寬分配方法的總體運行環境圖,其中示出了包括多個輸入鏈路,緩存隊列,輸出鏈路,和帶寬狀態維護模塊,調度發送隊列的模塊;圖2為本發明方法的帶寬狀態的維護的流程圖,圖中示出了計算帶寬的當前狀態,發送帶寬狀態值給調度隊列模塊;圖3示出的是本發明的所述方法的利用帶寬狀態的進行發送隊列調度的流程圖,其中示出了計算調度值,將選出的隊列號發送給輸出鏈路進行發包的過程;圖4為現有技術的帶寬分配結構圖。
具體實施例方式
以下將詳細描述本發明的較佳實施例,以使本發明的技術方案及其有益效果顯而易見。
本發明方法總的目標是保證各個用戶分配的帶寬不低于最小帶寬,同時又能夠利用剩余帶寬。當總帶寬高于所有用戶最小保證帶寬之和時就會出現剩余帶寬,如果總體帶寬多出所有最小帶寬之和,那么會出現剩余帶寬。這說明所有輸入流的最小帶寬都得到滿足,剩余帶寬將運用輪轉法被公平分享給所有的輸入流,而對于輸入數據較少的已經被發送完的用戶卻不給其發送的機會,從而避免帶寬的浪費,這樣的調度發送選擇方法能夠達到大家都分享剩余帶寬的目的。這對于同級用戶來說是公平的。針對傳統的帶寬分配方法,本發明方法避免了其分配的帶寬未用時其他用戶用不了的浪費情況。
本發明方法中如果總帶寬不夠將按最小保證帶寬的比例來分配總體帶寬,最小保證帶寬高的,實際使用的帶寬也要高,一旦用戶超過了最高限制輸出帶寬,將很難獲得發送機會。直到過了一段時間,帶寬降下來后,該輸入流才有更多機會發送。
如附圖1所示的,本發明方法為一個運行在多輸入單輸出的匯聚節點上的流量整形和帶寬分配方法,其實現可通過軟件,其應用系統包括多個輸入鏈路101和102,分別連接對應的緩沖隊列1和2,并通過一輸出鏈路或驅動程序將發送的包長和隊列號發送給一帶寬狀態維護和分配模塊,同時所述的輸入鏈路101和102將其包長信息發送到一隊列號選擇模塊,即調度模塊;所述隊列號選擇模塊根據所述帶寬狀態維護和分配模塊提供的各輸入隊列的帶寬值,選擇需要發送的隊列號,輸出給所述輸出鏈路或驅動程序;所述輸出鏈路或驅動程序將對應的包輸出給帶寬控制過程。每輸入流量整形功能使用軟件維護計數器,已經不是普通的漏桶算法的整形,整形通過隊列丟棄方法來實現多余的包丟棄,通過帶寬狀態的維護與比較來限制每輸入的最大出口量;發送的時候通過帶寬調度器來選擇最小帶寬的輸入隊列發包并且平衡最大實際帶寬的發包。
本發明方法的實現例子和運行環境如附圖2所示,所述方法的應用系統包括一組輸入鏈路、包緩沖隊列、包長緩沖隊列;有一輸出帶寬狀態模塊專門維護帶寬狀態;另外有一負責選擇隊列號并負責選擇發送包的調度模塊,輸出鏈路負責將發送包的總大小和隊列號反饋給帶寬狀態維護模塊。
每個輸入接口進來的包存放在一個單獨的包緩沖隊列上,所述輸入鏈路具有計算包長的能力,將包長放進相應的包長緩沖隊列中,以供調度模塊發送包時計算包長。
所述輸入鏈路有一寫控制器負責檢測輸入隊列的狀態是否已滿,如果已經滿了,則將包丟棄,也不往包長緩沖隊列中寫包長;如果隊列未滿,則寫入包,并將包長放到包長緩沖隊列。
設計輸出帶寬狀態模塊維護每個輸入流的帶寬計數器bandcount,判斷時鐘是否到達,該計數器每過一小的時鐘周期減少一定數,每到一大的時鐘周期開始發送包過程,首先檢查發送包的結果隊列,讀取調度模塊的包的發送量和隊列號,得到上次發送的隊列號和包的長度之和,那么該輸入流的bandcount計數器就增加發送的包長度之和,該隊列號對應的帶寬計數器按包的發送量多少增加,然后發送命令到調度模塊,通知調度模塊發送包,并根據包的發送量和隊列號更新相應的帶寬計數器。循環上述過程。
對于帶寬狀態維護模塊中每個輸入流對應的bandcount減少的量和時間應該以最小帶寬為準,當發送速率達到最小帶寬時,bandcount始終平衡保持在最小帶寬的水平,也就是說bandcount減少的速度與發送達到最小帶寬的速度基本持平。
設計發送隊列調度模塊的方法步驟當調度模塊收到帶寬狀態維護和分配模塊的發包命令時,將根據各個輸入流的帶寬狀態來選擇隊列發包;選擇輸入隊列后,發包的時候根據每個用戶事先設置的權重來發送包的量,如果有三個包的長度和最接近的權重而這四個包的長度和超過了權重,那么只發送前面三個包。由于流量整形的需要每個輸入流有預先設定的最大burst值(Mb),因此發送必須滿足包長之和<=W(權重)<=Mb(burst)。最后調度模塊將總長度之和和發送的隊列號反饋給帶寬狀態維護模塊,以便維護所述帶寬狀態維護模塊更新該輸入的對應的帶寬狀態,通過這種調度實現公平分配帶寬,通過發送鏈路實現輸出流量的整形。
對調度模塊的隊列選擇方法的補充這個選擇方式是本發明的關鍵特征,如圖3所示的,在流程開始,循環處于等待狀態,直至有命令消息過來;然后讀取所有的帶寬計數器,并對每一輸入鏈路的帶寬計數器bandcount與最大可允許帶寬maxband進行比較;如果帶寬計數器bandcount不大于最大可允許帶寬maxband,設定差值diff=bandcount-miniband,即對于每個輸入流,將其帶寬計數器bandcount減去最小帶寬,得到差值diff如果小于零則將差值賦值為0,如果不小于0則差值保持不變;為了限制最大帶寬,當帶寬計數器bandcount大于最大允許帶寬maxband時,將設置差值diff設定為總帶寬(MAX_BOUND)減去最小帶寬(min_band)。
通過該選擇步驟可有效地調節每個輸入流的輸出帶寬,既保證每個輸入流的最小帶寬,又能夠公平分享剩余帶寬。
選出那些差值最小且相等的隊列,如果只有一個隊列的差值是最小的,那么選擇該隊列發送。如果有多個隊列的差值都是最小的,那么從中用輪轉法Round robin進行選出其中一個來發送。另外如果當前帶寬計數器bandcount大于最大允許帶寬,則將差值設置為輸出鏈路總帶寬MAXbound減去輸入隊列號的最小保證帶寬min[i](其中i為輸入隊列號),一般來說這樣的差值太大,很能有機會發包。
根據權重計算出發送包的個數,發送給輸出驅動程序,并將包長之和以及隊列號發送給帶寬狀態維護和分配模塊;然后循環上述過程。
所述包的發送過程為包的緩沖隊列有一讀控制器,收到隊列號、發包的個數,將要發送的幾個包讀出來,一個一個發給輸出鏈路,將包發送出去即可。
如附圖3所示的,本發明的所述用于多輸入單輸出的網絡流量整形和帶寬分配的方法通過比較帶寬狀態與最小保證指標的差額,根據最大差額來實現選擇輸入鏈路發包,實現帶寬分配功能,包括保證每個用戶的最小帶寬得到滿足。
為防止用戶的最小輸出帶寬較高,每個用戶又有最高允許帶寬的約束,如果每個用戶都滿足了最小帶寬,那么根據每個用戶多出帶寬的大小公平地的調度,將剩余帶寬分給各個用戶。
發包時,通過設置相應的限制權重,可以在一定的范圍內一次發送若干流量的包。通過限制權重,可以限制突發性。
本發明方法主要用于多用戶輸入的網絡匯聚節點,例如視頻點播的媒體服務器多路視頻的入口,可用于運營商的提供SLA服務。本發明方法也可以用在網絡邊緣路由器,將路由器轉發部分取代輸出鏈路,將選擇的輸入隊列的包進行轉發處理。
針對傳統的整形方法,本發明方法中的帶寬控制方法既防止了突發串造成網絡擁塞,又能夠控制用戶帶寬的上限,因此,本發明提供動態分配的方法很好的解決了帶寬的優化使用問題。
應當理解的是,本發明的上述針對具體較佳實施例的描述過于具體,并不能因此而理解為對本發明的專利保護范圍的限制,專利保護范圍應以所附權利要求為準。
權利要求
1.一種多輸入單輸出鏈路的帶寬分配的方法,其包括以下步驟a)針對每一輸入鏈路,設置與之連接的緩沖隊列及包長緩沖隊列,所述的輸入鏈路將其包長信息發送到一隊列號選擇模塊;b)所述隊列號選擇模塊通過比較帶寬狀態與最小帶寬的差額,選擇最大差額的輸入鏈路作為輸出,至少每個用戶分配到最小帶寬后,然后根據每個用戶多出帶寬的大小進行調度,選擇多出帶寬的余數為最小值的輸入鏈路作為輸出,保證剩余帶寬分給各個用戶;c)所述隊列號選擇模塊選擇需要發送的隊列號,輸出給所述輸出鏈路;d)所述輸出鏈路在輸出數據包后將剛剛發送的包長和隊列號發送給一帶寬狀態維護模塊。
2.根據權利要求1所述的方法,其特征在于,所述帶寬狀態維護模塊狀態維護時包括以下步驟e)維護每個隊列的帶寬計數器,該計數器每過一較小時鐘周期減少一定數,每到的一較大時鐘周期開始發送包;f)對于帶寬狀態維護模塊中每個隊列對應的帶寬計數器減少的速率等于給隊列設定的最小帶寬為準;g)當發送包時間到時,首先檢查發送包的上次發送的隊列號,得到上次發送的隊列號和包的長度之和,該隊列的帶寬計數器就增加發送的包長度之和,然后通知調度模塊發送包;h)當所述調度模塊收到所述帶寬狀態維護模塊的發包命令時,根據各個輸入流的帶寬狀態來選擇隊列發包。
3.根據權利要求2所述的方法,其特征在于,所述調度模塊還讀取每一輸入鏈路對應的帶寬計數器,并對每一輸入鏈路的帶寬計數器與最大可允許帶寬進行比較;如果帶寬計數器不大于最大可允許帶寬,設定對于每個輸入流,將其帶寬計數器減去最小帶寬,得到差額如果小于零則將差額賦值為0,如果不小于0則差額保持不變;當帶寬計數器大于最大允許帶寬時,將設置差額設定為總帶寬減去最小帶寬。
4.根據權利要求2所述的方法,其特征在于,所述輸出鏈路在輸出鏈路發包的時候,選擇輸入隊列后,根據每個用戶事先設置的權重確定發送包的量;每個隊列預先設定最大突發值Mb,發送滿足包長之和<=權重<=Mb。
5.根據權利要求3所述的方法,其特征在于,所述輸入鏈路包括g1)所述輸入鏈路有一寫控制器用于檢測數據包緩沖隊列的狀態是否已滿,如果已經滿了,則將包丟棄;如果隊列未滿,則寫入包,并將包長放到包長緩沖隊列;g2)在每個輸入接口進來的包如果存放在一個單獨的包緩沖隊列上,所述輸入鏈路具有計算包長的能力,將包長放進相應的包長緩沖隊列中,以供調度模塊發送包時計算要發送的包的量,以保證每次發送的流量不超過權重。
全文摘要
一種用于多輸入單輸出的網絡流量整形和帶寬分配的方法,涉及可變長的包交換網絡中QoS服務的一種帶寬控制方法,其包括設置與輸入鏈路連接的緩沖隊列及包長緩沖隊列,輸入鏈路將其包長信息發送到一隊列號選擇模塊;所述隊列號選擇模塊通過比較帶寬狀態與最小帶寬的差額,選擇最大差額的輸入鏈路作為輸出,然后根據每個用戶多出帶寬的大小進行調度,選擇多出帶寬的余數為最小值的輸入鏈路作為輸出;所述隊列號選擇模塊選擇需要發送的隊列號,輸出給所述輸出鏈路;所述輸出鏈路在輸出數據包后將包長和隊列號發送給一帶寬狀態維護模塊。本發明方法通過設定用戶分配的最小帶寬,然后對剩余帶寬進行分配,避免了帶寬的浪費;大大提高了服務質量。
文檔編號H04L12/56GK1798087SQ20041007770
公開日2006年7月5日 申請日期2004年12月30日 優先權日2004年12月30日
發明者游南林, 熊韜, 劉麗娜 申請人:中興通訊股份有限公司