專利名稱:具有公平速率保證的隊(duì)列共享的制作方法
技術(shù)領(lǐng)域:
本公開總地涉及減小隊(duì)頭阻塞(head of line blocking)對(duì)發(fā)送帶寬的影響。
背景技術(shù):
來(lái)自不同流的分組在表示一排隊(duì)點(diǎn)的網(wǎng)絡(luò)設(shè)備處被接收,在該排隊(duì)點(diǎn)處,屬于各 種流的分組可能在等待被從該網(wǎng)絡(luò)設(shè)備發(fā)送的同時(shí)積壓起來(lái)。調(diào)度器處理與頭端分組相關(guān) 聯(lián)的信息,以判定應(yīng)當(dāng)發(fā)送哪個(gè)分組。調(diào)度器向每個(gè)隊(duì)列保證一最小分組發(fā)送速率,其中所 保證的發(fā)送速率的總和必須不大于信道的分組發(fā)送速率。因此,信道的分組發(fā)送速率比保 證給每個(gè)隊(duì)列的分組發(fā)送速率大得多。分組通過(guò)信道被串行發(fā)送。當(dāng)信道空閑時(shí),調(diào)度器基于某種優(yōu)先級(jí)方案從隊(duì)列之 一中選擇頭端分組,并將其轉(zhuǎn)發(fā)到信道以供發(fā)送。每個(gè)隊(duì)列使其分組被發(fā)送,就好像它是使 用這樣一條信道的唯一源一樣該信道具有等于該隊(duì)列的保證分組發(fā)送速率的信道分組發(fā) 送速率。網(wǎng)絡(luò)設(shè)備需要支持許多個(gè)多播群組。針對(duì)每個(gè)多播群組提供一個(gè)隊(duì)列可能成本太 高了,因?yàn)殛?duì)列調(diào)度難以縮放,尤其在高帶寬下更是如此。實(shí)際的設(shè)計(jì)令多個(gè)多播群組共享 一個(gè)隊(duì)列,以便減小隊(duì)列數(shù)目,但這產(chǎn)生了隊(duì)頭阻塞(HOLB)。在發(fā)送機(jī)處,因?yàn)殛?duì)列被實(shí)現(xiàn)為先進(jìn)先出發(fā)送緩沖器,所以發(fā)生隊(duì)頭阻塞。如果緩 沖器頭端處的分組經(jīng)歷反壓力,則它阻塞緩沖器中所有接下來(lái)的分組的發(fā)送。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種方法,包括在第一流的第一分組占據(jù)使來(lái)自不同流的分組入隊(duì)的共享發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率改變第一計(jì)量 值,其中該第一方向是正向或負(fù)向,其中該第一計(jì)量值指示出所述第一流中的第一分組占 據(jù)所述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述分組由指示出當(dāng)所述第一流中的所述分組 被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第一流中的第一分組被出隊(duì)或丟棄 時(shí),在第二方向上改變所述第一計(jì)量值,改變量為所述第一流中的第一分組的分組長(zhǎng)度的 倍數(shù),其中所述第二方向與所述第一方向相反;在第二流的第一分組占據(jù)使所述共享發(fā)送 隊(duì)列的頭端的同時(shí),在所述第一方向上按所述目標(biāo)速率改變第二計(jì)量值,其中所述第二計(jì) 量值指示出所述第二流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述第 二流中的第一分組由指示出當(dāng)所述第二流中的第一分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分 組長(zhǎng)度所表征;當(dāng)所述第二流中的第一分組被出隊(duì)或丟棄時(shí),在所述第二方向上改變所述 第二計(jì)量值,改變量為所述第二流中的第一分組的分組長(zhǎng)度的倍數(shù);當(dāng)所述第一流中的第 二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第一計(jì)量值與一閾值相比較;如果所述第 一計(jì)量值與所述閾值之間的差具有第一符號(hào),則丟棄所述第一流中的第二分組,或者如果 所述第一計(jì)量值與所述閾值之間的差具有第二符號(hào),則調(diào)度所述第一流中的第二分組以供 出隊(duì),其中所述第一符號(hào)為正或負(fù);當(dāng)所述第二流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第二計(jì)量值與所述閾值相比較;以及如果所述第二計(jì)量值與所述閾值之間 的差具有所述第一符號(hào),則丟棄所述第二流中的第二分組,或者如果所述第二計(jì)量值與所 述閾值之間的差具有所述第二符號(hào),則調(diào)度所述第二流中的第二分組以供出隊(duì),其中所述 第二符號(hào)與所述第一符號(hào)相反。根據(jù)本發(fā)明的另一方面,提供了一種裝置,包括存儲(chǔ)塊,被配置為保持分組隊(duì)列, 這些分組隊(duì)列包括使來(lái)自不同流的分組入隊(duì)的共享發(fā)送隊(duì)列;入隊(duì)/出隊(duì)邏輯塊;調(diào)度塊, 耦合到所述存儲(chǔ)塊和所述入隊(duì)/出隊(duì)邏輯塊,其中該調(diào)度塊包括被配置為通過(guò)以下方式來(lái) 實(shí)現(xiàn)虛擬每流速率計(jì)量器在被入隊(duì)在所述共享發(fā)送隊(duì)列中的第一流的第一分組占據(jù)所述 共享發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率改變第一計(jì)量值,其中該第一方向 是正向或負(fù)向,其中該第一計(jì)量值指示出所述第一流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列 的頭端的時(shí)間量,并且所述第一流中的第一分組由指示出當(dāng)所述第一流中的第一分組被出 隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第一流中的第一分組被出隊(duì)或丟棄時(shí), 在第二方向上改變所述第一計(jì)量值,改變量為所述第一流中的第一分組的分組長(zhǎng)度的倍 數(shù),其中所述第二方向與所述第一方向相反;在被入隊(duì)在所述共享發(fā)送隊(duì)列中的第二流的 第一分組占據(jù)使所述共享發(fā)送隊(duì)列的頭端的同時(shí),在所述第一方向上按所述目標(biāo)速率改變 第二計(jì)量值,其中所述第二計(jì)量值指示出所述第二流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列 的頭端的時(shí)間量,并且所述第二流中的第一分組由指示出當(dāng)所述第二流中的第一分組被出 隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第二流中的第一分組被出隊(duì)或丟棄時(shí), 在所述第二方向上改變所述第二計(jì)量值,改變量為所述第二流中的第一分組的分組長(zhǎng)度的 倍數(shù);當(dāng)所述第一流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第一計(jì)量值與 一閾值相比較;如果所述第一計(jì)量值與所述閾值之間的差具有第一符號(hào),則丟棄所述第一 流中的第二分組,或者如果所述第一計(jì)量值與所述閾值之間的差具有第二符號(hào),則調(diào)度所 述第一流中的第二分組以供出隊(duì),其中所述第一符號(hào)為正或負(fù);當(dāng)所述第二流中的第二分 組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第二計(jì)量值與所述閾值相比較;以及如果所述 第二計(jì)量值與所述閾值之間的差具有所述第一符號(hào),則丟棄所述第二流中的第二分組,或 者如果所述第二計(jì)量值與所述閾值之間的差具有所述第二符號(hào),則調(diào)度所述第二流中的第 二分組以供出隊(duì),其中所述第二符號(hào)與所述第一符號(hào)相反。根據(jù)本發(fā)明的另一方面,提供了編碼有軟件的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該軟件包括計(jì)算機(jī)可執(zhí)行指令并且該軟件可操作來(lái)在第一流的第一分組占據(jù)使來(lái)自不同 流的分組入隊(duì)的共享發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率改變第一計(jì)量值, 其中該第一方向是正向或負(fù)向,其中該第一計(jì)量值指示出所述第一流中的第一分組占據(jù)所 述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述分組由指示出當(dāng)所述第一流中的所述分組被出 隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第一流中的第一分組被出隊(duì)或丟棄時(shí), 在第二方向上改變所述第一計(jì)量值,改變量為所述第一流中的第一分組的分組長(zhǎng)度的倍 數(shù),其中所述第二方向與所述第一方向相反;在第二流的第一分組占據(jù)使所述共享發(fā)送隊(duì) 列的頭端的同時(shí),在所述第一方向上按所述目標(biāo)速率改變第二計(jì)量值,其中所述第二計(jì)量 值指示出所述第二流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述第二 流中的第一分組由指示出當(dāng)所述第二流中的第一分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組 長(zhǎng)度所表征;當(dāng)所述第二流中的第一分組被出隊(duì)或丟棄時(shí),在所述第二方向上改變所述第二計(jì)量值,改變量為所述第二流中的第一分組的分組長(zhǎng)度的倍數(shù);當(dāng)所述第一流中的第二 分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第一計(jì)量值與一閾值相比較;如果所述第一 計(jì)量值與所述閾值之間的差具有第一符號(hào),則丟棄所述第一流中的第二分組,或者如果所 述第一計(jì)量值與所述閾值之間的差具有第二符號(hào),則調(diào)度所述第一流中的第二分組以供出 隊(duì),其中所述第一符號(hào)為正或負(fù);當(dāng)所述第二流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭 端時(shí),將所述第二計(jì)量值與所述閾值相比較;以及如果所述第二計(jì)量值與所述閾值之間的 差具有所述第一符號(hào),則丟棄所述第二流中的第二分組,或者如果所述第二計(jì)量值與所述 閾值之間的差具有所述第二符號(hào),則調(diào)度所述第二流中的第二分組以供出隊(duì),其中所述第 二符號(hào)與所述第一符號(hào)相反。
圖1示出了示例性的網(wǎng)絡(luò)環(huán)境;圖2示出了隊(duì)頭阻塞的示例;圖3A和3B示出了傳統(tǒng)速率計(jì)量器的操作示例;圖4A和4B示出了每流虛擬時(shí)鐘計(jì)量器的示例性實(shí)施例;圖5和6是示出算法的示例性實(shí)施例的流程圖;圖7示出了用于實(shí)現(xiàn)示例性實(shí)施例的系統(tǒng)的示例;并且圖8示出了計(jì)算機(jī)系統(tǒng)的示例。
具體實(shí)施例方式概述在示例性實(shí)施例中,在第一流的第一分組占據(jù)使來(lái)自不同流的分組入隊(duì)的共享 發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率改變第一計(jì)量值,其中該第一方向是正 向或負(fù)向,其中該第一計(jì)量值指示出第一流中的第一分組占據(jù)共享發(fā)送隊(duì)列的頭端的時(shí)間 量,并且該分組由指示出當(dāng)?shù)谝涣髦械脑摲纸M被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表 征,并且當(dāng)?shù)谝涣髦械牡谝环纸M被出隊(duì)或丟棄時(shí),在第二方向上改變第一計(jì)量值,改變量為 第一流中的第一分組的分組長(zhǎng)度的倍數(shù),其中第二方向與第一方向相反。在第二流的第一分組占據(jù)共享發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率 改變第二計(jì)量值,其中第二計(jì)量值指示出第二流中的第一分組占據(jù)共享發(fā)送隊(duì)列的頭端的 時(shí)間量,并且第二流中的第一分組由指示出當(dāng)?shù)诙髦械牡谝环纸M被出隊(duì)時(shí)所發(fā)送的字節(jié) 數(shù)目的分組長(zhǎng)度所表征,并且當(dāng)?shù)诙髦械牡谝环纸M被出隊(duì)或丟棄時(shí),在第二方向上改變 第二計(jì)量值,改變量為第二流中的第一分組的分組長(zhǎng)度的倍數(shù)。當(dāng)?shù)谝涣髦械牡诙纸M占據(jù)共享發(fā)送隊(duì)列的頭端時(shí),將第一計(jì)量值與一閾值相比 較,并且如果第一計(jì)量值與閾值之間的差具有第一符號(hào),則丟棄第一流中的第二分組,或者 如果第一計(jì)量值與閾值之間的差具有第二符號(hào),則調(diào)度第一流中的第二分組以供出隊(duì),其 中第一符號(hào)為正或負(fù)。只要第一流中的下一分組被出隊(duì)或者丟棄,隊(duì)列中的下一分組就有資格供出隊(duì)調(diào) 度,S卩,隊(duì)列不會(huì)因第一流的分組而繼續(xù)阻塞。當(dāng)?shù)诙髦械牡诙纸M占據(jù)共享發(fā)送隊(duì)列的頭端時(shí),將第二計(jì)量值與閾值相比較,并且如果第二計(jì)量值與閾值之間的差具有第一符號(hào),則丟棄第二流中的第二分組,或者 如果第二計(jì)量值與閾值之間的差具有第二符號(hào),則調(diào)度第二流中的第二分組以供出隊(duì),其 中第二符號(hào)與第一符號(hào)相反。一個(gè)分組屬于多于一個(gè)流是可允許的,在這種情況下,每個(gè)計(jì)量器代表相關(guān)流在 分組被出隊(duì)或丟棄時(shí)在第二方向上改變,并且代表相關(guān)流在分組出現(xiàn)在隊(duì)列頭端處的時(shí)間 與其被出隊(duì)或丟棄的時(shí)間之間增大。描述現(xiàn)在將詳細(xì)參考本發(fā)明的各個(gè)實(shí)施例。這些實(shí)施例的示例在附圖中示出。雖然將 結(jié)合這些實(shí)施例來(lái)描述本發(fā)明,但應(yīng)當(dāng)理解,不希望將本發(fā)明限制到任何實(shí)施例。相反,希 望覆蓋由所附權(quán)利要求限定的本發(fā)明的精神和范圍內(nèi)的所有替換、修改和等同。在以下描 述中,闡述了許多具體細(xì)節(jié),以幫助全面理解各個(gè)實(shí)施例。然而,沒(méi)有這些具體細(xì)節(jié)中的一 些或全部也可以實(shí)現(xiàn)本發(fā)明。在其他情況下,沒(méi)有詳細(xì)描述公知的過(guò)程操作,以避免不必要 地模糊本發(fā)明的主題。另外,在說(shuō)明書中各處每次出現(xiàn)的短語(yǔ)“示例性實(shí)施例”并不一定指 的是同一示例性實(shí)施例。圖1示出了下面描述的示例性實(shí)施例可在其中實(shí)現(xiàn)的示例性網(wǎng)絡(luò)環(huán)境。圖1示 出了分別通過(guò)第一和第二網(wǎng)絡(luò)設(shè)備14和16耦合到廣域網(wǎng)(WAN) 12的第一和第二局域網(wǎng) (LAN) 10和11。在此示例中,WAN12是由分組交換網(wǎng)絡(luò)實(shí)現(xiàn)的,而這些LAN是以太網(wǎng)絡(luò)。第一 LAN 10中的各種設(shè)備18可與第二 LAN 11上的設(shè)備20建立連接,反之亦然, 其中每個(gè)連接被稱為會(huì)話,并且一個(gè)會(huì)話包括一個(gè)或多個(gè)流。每個(gè)流是從特定源到一特定 目的地或者在多播情況下到多個(gè)目的地的數(shù)據(jù)流。每個(gè)網(wǎng)絡(luò)設(shè)備可通過(guò)不同的端口耦合到 其他LAN(未示出)。路由器或交換機(jī)(網(wǎng)絡(luò)設(shè)備)將分組從輸入引導(dǎo)到輸出。如上所述,在某些情況 下,例如在支持多播群組的情況下,許多組必須共享單個(gè)隊(duì)列以降低成本。由于共享單個(gè)隊(duì) 列而導(dǎo)致的典型HOLB情形在圖2中示出,其中來(lái)自三個(gè)不同流(在此示例中是多播群組) 的分組由單個(gè)隊(duì)列服務(wù)。在圖2中,共享發(fā)送隊(duì)列100由第一、第二、第三外出端口 120a_c服務(wù)。在這三個(gè) 外出端口中,第二和第三外出端口 120a和120(預(yù)訂給Groupl和Group3,第一和第二外出 端口 120a 和 120b 預(yù)訂給 Group20隊(duì)列100不需要是“隊(duì)列中的所有分組都按順序位于同一存儲(chǔ)設(shè)備中”這種意義 上的物理隊(duì)列。隊(duì)列是邏輯的先進(jìn)先出(“FIFO”)隊(duì)列。分組被存儲(chǔ)在調(diào)度器可訪問(wèn)的存 儲(chǔ)設(shè)備中某處。在此示例中,來(lái)自Group3的分組在被出隊(duì)到端口 120b時(shí)被處理得更慢,并使得來(lái) 自Groupl的分組即使是要出隊(duì)到端口 120c也會(huì)經(jīng)歷阻塞,盡管端口 120c是可用的。GroUp3分組可能會(huì)更慢有不同的原因??赡苁怯捎贕roUp3特定的某種限制,由于 第二端口 120b比其他端口慢,例如第二端口可能是千兆比特以太網(wǎng)端口,而其他端口是10 千兆比特以太網(wǎng)端口,或者由于該端口忙于其他類型的分組。發(fā)送設(shè)備必須能夠防止隊(duì)頭阻塞使性能惡化到超出可接受限度。調(diào)度器必須維持每個(gè)流的保證速率。一個(gè)解決方案是丟棄隊(duì)頭分組,使得其他分組能夠被服務(wù)。用于實(shí)現(xiàn)對(duì)隊(duì)頭阻塞的這類解決方案的傳統(tǒng)速率計(jì)量器解決方案在圖3A和3B中示出。圖3A示出了保持Group2、Group3、Group4和Group5分組的共享發(fā)送隊(duì)列。圖3B示出了實(shí)際時(shí)間速率計(jì)量器的操作。在圖3B中,丟棄閾值由虛線200指示, 并且計(jì)量器的值由實(shí)線220指示。上下箭頭240標(biāo)記出分組被完全出隊(duì)(上箭頭)或丟棄 (下箭頭)的時(shí)刻,其中標(biāo)記了該分組的流號(hào)碼?,F(xiàn)在將描述傳統(tǒng)速率計(jì)量器的操作。當(dāng)隊(duì)列頭端處的分組被占據(jù)時(shí),計(jì)量值按恒 定速率遞增計(jì)數(shù)。當(dāng)分組被出隊(duì)或丟棄時(shí),從計(jì)量值中減去該分組的長(zhǎng)度。注意,計(jì)量值從零起增大,并且在第一 GroUp4分組出隊(duì)時(shí)大于閾值。當(dāng)減去分組 長(zhǎng)度時(shí),計(jì)量值變得低于閾值,因此當(dāng)下一 GroUp4分組出現(xiàn)在隊(duì)列頭端時(shí),計(jì)量值低于閾 值,隊(duì)列被認(rèn)為合規(guī)(in-profile),并且分組不被丟棄。第一 GroUp5分組在被完全出隊(duì)之前在過(guò)長(zhǎng)的一段時(shí)間中占據(jù)了隊(duì)列頭端。這導(dǎo) 致計(jì)量值上升得如此之多,以至于當(dāng)分組被出隊(duì)并且分組長(zhǎng)度被從計(jì)量值中減去時(shí),計(jì)量 值也沒(méi)有下降到低于閾值。結(jié)果,隊(duì)列被認(rèn)為不合規(guī)(out-of-profile)。當(dāng)隊(duì)列中來(lái)自 GroUp3的下一分組被調(diào)度時(shí),它立即被丟棄,并且其長(zhǎng)度被立即從計(jì)量值中減去。由于沒(méi)有時(shí)間流逝,所以當(dāng)GroUp3分組的長(zhǎng)度被從計(jì)量值中減去時(shí),計(jì)量值沒(méi)有 機(jī)會(huì)上升,因此它變得低于閾值。隊(duì)列回退到合規(guī)狀態(tài),因此來(lái)自GroUp4的下一分組在其 出現(xiàn)在隊(duì)列頭端時(shí)將不會(huì)被丟棄。在隊(duì)列變得沒(méi)有積壓時(shí),傳統(tǒng)速率計(jì)量器被復(fù)位。傳統(tǒng)速率計(jì)量器解決方案可以保證隊(duì)列以最小目標(biāo)速率或最小目標(biāo)速率以上取 得向前的進(jìn)展。傳統(tǒng)速率計(jì)量器解決方案是通過(guò)指定計(jì)量器更新間隔(T)和以字節(jié)為單位 指定的每次更新遞增值(Q)來(lái)實(shí)現(xiàn)的。其中Q和T定義了目標(biāo)速率r = Q/T。指定閾值以提供某種突發(fā)容限,S卩,在分組開始被丟棄之前,在服從平均速率的同 時(shí),允許出隊(duì)速率低于目標(biāo)的時(shí)間長(zhǎng)度。傳統(tǒng)解決方案可以為隊(duì)列定義一最壞情況等待時(shí)間,其定義為maximum queue長(zhǎng) 度/minimum rate。作為示例,maximum queue長(zhǎng)度為500kb,并且最壞情況等待時(shí)間為5ms, 則 minimum rate 應(yīng)當(dāng)設(shè)定為 100mb/s。如果達(dá)到了最大隊(duì)列深度,則某種尾端丟棄可以防止進(jìn)一步的增長(zhǎng)。從該示例中明顯而見傳統(tǒng)方法的若干局限性。流被不公平地懲罰,并且丟棄被不 加區(qū)分地執(zhí)行。在以上示例中,緩慢的GroUp5分組導(dǎo)致了接下來(lái)的GroUp3分組被丟棄。公 平的系統(tǒng)將會(huì)懲罰GroUp5。另外,由于GroUp4分組出現(xiàn)得最頻繁,所以它們最有可能被丟 棄,即使是其他群組在導(dǎo)致HOLB問(wèn)題也是如此,因?yàn)镚roUp4的出隊(duì)速率沒(méi)有被考慮。另外, 不可能辨別阻塞是由于某些群組弓丨起的還是由于某些訂戶外出端口引起的,因此不可能將 服從的分組與違反的分組分開?,F(xiàn)在將描述一示例性實(shí)施例,其利用了每流虛擬時(shí)鐘計(jì)量器,這些計(jì)量器是利用 令牌桶和虛擬時(shí)鐘定時(shí)器實(shí)現(xiàn)的。所有虛擬時(shí)鐘計(jì)量器都被設(shè)定到同一目標(biāo)速率,該目標(biāo) 速率是該隊(duì)列的最小保證速率。在此示例性實(shí)施例中,每個(gè)計(jì)量器具有其自己的虛擬時(shí)鐘,該虛擬時(shí)鐘只在相應(yīng) 流的分組占據(jù)隊(duì)列頭端時(shí)才使時(shí)間流逝。當(dāng)其他流占據(jù)隊(duì)列頭端時(shí),該時(shí)鐘被暫停,并且取 決于當(dāng)前占據(jù)隊(duì)列頭端的流,不同的計(jì)量器交替活動(dòng)。虛擬時(shí)鐘在不使時(shí)間流逝時(shí)不產(chǎn)生計(jì)算工作負(fù)擔(dān)。
此示例性實(shí)施例的操作在圖4A和4B中示出。圖4A示出了與圖3A相同的被入隊(duì)的群組。圖4B示出了針對(duì)每個(gè)流群組的一個(gè)不同計(jì)量器。注意,針對(duì)每個(gè)流群組的計(jì)量器 的值只在來(lái)自該群組的分組占據(jù)隊(duì)列頭端時(shí)才增大,并且僅在來(lái)自該群組的分組被出隊(duì)或 丟棄時(shí)才減小。減小量是被出隊(duì)或丟棄的分組的以字節(jié)為單位的長(zhǎng)度?,F(xiàn)在將參考圖5和6的流程圖來(lái)給出對(duì)該示例性實(shí)施例的操作的更詳細(xì)描述。此 實(shí)施例使用令牌桶算法,其中恒定的分組后臺(tái)掃描進(jìn)程負(fù)責(zé)使活動(dòng)計(jì)量器遞增計(jì)數(shù)。基于 所期望的分辨率來(lái)選擇通用更新間隔(T),其中T = Q/r,并且Q是令牌桶算法的粒度(以 字節(jié)為單位)。在實(shí)踐中,分組排隊(duì)系統(tǒng)的保證調(diào)度分辨率最好情況下是一個(gè)最大傳輸單位 (MTU),但典型的分辨率可能更接近平均分組長(zhǎng)度。通常Q不需要小于平均分組長(zhǎng)度。選擇 更高值的Q會(huì)增大更新間隔,因此減小計(jì)算負(fù)擔(dān)。Tl在流活動(dòng)時(shí)表示實(shí)際時(shí)間,并且在流不活動(dòng)時(shí)表示“剩余時(shí)間”。當(dāng)流由于出隊(duì) 事件而從活動(dòng)轉(zhuǎn)變到不活動(dòng)時(shí),Tl通過(guò)Tl = (Tg-Tl)捕捉“剩余時(shí)間”?!笆S鄷r(shí)間”始終 小于周期性更新時(shí)間(T)。當(dāng)流由于入隊(duì)事件而從不活動(dòng)轉(zhuǎn)變到活動(dòng)狀態(tài)時(shí),局部定時(shí)器通 過(guò)沒(méi)定Tl = (Tg-Tl)而變回實(shí)際時(shí)間?,F(xiàn)在將參考圖5的流程圖來(lái)描述其中隊(duì)列首先變 得積壓的示例性實(shí)施例的操作。隊(duì)頭流(Fl0Wl)的計(jì)量器的局部定時(shí)器(Tl)被初始化到 (Tg-Tl),從而使得它現(xiàn)在表示絕對(duì)時(shí)間。當(dāng)周期性調(diào)度的更新發(fā)生時(shí)(每T秒發(fā)生更新), 那么,如果分組尚未被出隊(duì),則逝去的時(shí)間(Tg-Tl)被與T相比較。如果逝去的時(shí)間小于該T,則不進(jìn)行任何操作。如果逝去的時(shí)間大于T,則Q個(gè)字 節(jié)被加到令牌桶,并且局部時(shí)間Tl被增大,增大量為更新間隔T。如果分組未被出隊(duì),則每隔T秒,當(dāng)周期性更新到期時(shí),令牌被持續(xù)加到令牌桶并 且T的值被加到定時(shí)器Tl。這樣,局部定時(shí)器以與全局定時(shí)器相同的速率使時(shí)間流逝,即它 們?cè)谙嗤瑫r(shí)段期間都增大相同的量(最多偏離T)。當(dāng)分組被出隊(duì)時(shí),分組長(zhǎng)度(以字節(jié)為 單位)被從令牌桶中的字節(jié)數(shù)中減去。只要隊(duì)頭分組不是來(lái)自Flowl的,局部時(shí)鐘就被凍結(jié),并且其保持以上得出的值?,F(xiàn)在將參考圖6的流程圖來(lái)描述當(dāng)Flowl中的下一分組變?yōu)殛?duì)列頭端時(shí)該示例性 實(shí)施例的操作。局部定時(shí)器與當(dāng)前實(shí)際時(shí)間同步(Tl = Tg-Tl)。這樣,從上次流活動(dòng)起流逝的、但 在令牌桶中沒(méi)有算入的時(shí)間被包括在當(dāng)前定時(shí)器值中。如果桶中的值高于閾值,則分組被丟棄,并且分組長(zhǎng)度被從桶中的值中減去。否則 該進(jìn)程從圖5中描述的算法的點(diǎn)A處繼續(xù)。為了使分組丟棄達(dá)到最低限度,只要隊(duì)列變空,所有流就都被復(fù)位。此示例性實(shí)施例的每流計(jì)量器可被利用來(lái)解決不同類型的阻塞。在多播群組間阻 塞中,每個(gè)流被定義為一個(gè)唯一的多播群組,并且對(duì)于每個(gè)群組有一個(gè)流計(jì)量器。在任何一 個(gè)時(shí)刻,只有一個(gè)計(jì)量器是活動(dòng)的,因?yàn)橹挥幸粋€(gè)分組能夠占據(jù)隊(duì)列頭端,所以該算法是恒 定時(shí)間的,并且不論存在的流的數(shù)目如何,都能夠縮放。另外,分組被有區(qū)別地丟棄,即,只 有來(lái)自不服從的流的分組才被丟棄?;蛘?,一個(gè)流可被定義為一個(gè)扇出外出端口,并且對(duì)于每個(gè)端口有一個(gè)計(jì)量器。多 個(gè)計(jì)量器可以并行活動(dòng),但是該算法仍能很好地縮放,因?yàn)槲锢矶丝谟?jì)數(shù)遠(yuǎn)低于唯一扇出排隊(duì)的數(shù)目。只有來(lái)自不服從的端口的分組被丟棄,并且分組仍到達(dá)更快的訂戶端口。在此情況下,每流計(jì)量器的閾值被設(shè)定到相對(duì)較低的值,因?yàn)檩^大的突發(fā)容限將 使得平均速率和瞬時(shí)速率背離。隊(duì)列的整體進(jìn)展速率等于每流瞬時(shí)速率,而分組丟棄是由 平均速率觸發(fā)的。較小的閾值/突發(fā)容限可能對(duì)于具有易失性輸出帶寬的流導(dǎo)致高于必要的丟棄 速率。為了減輕該影響,添加用于隊(duì)列的計(jì)量器。此計(jì)量器統(tǒng)治每流計(jì)量器,使得僅當(dāng)隊(duì)列 實(shí)際下降到低于目標(biāo)速率時(shí)才發(fā)生丟棄。隊(duì)列計(jì)量器被配置以更大的突發(fā)容限,以使分組 丟失達(dá)到最低限度。在此情況下,隊(duì)列計(jì)量器的實(shí)際實(shí)現(xiàn)方式與傳統(tǒng)速率計(jì)量器相同,雖然它是用于 補(bǔ)充每流計(jì)量器的。此外,通過(guò)并行使兩類計(jì)量器,可以同時(shí)解決多播群組間阻塞和訂戶端口間阻塞 兩者。如果任一適用的計(jì)量器決定丟棄一分組,該分組就被丟棄。
在另一示例性實(shí)施例中,可利用時(shí)間戳而不是令牌桶來(lái)實(shí)現(xiàn)每流計(jì)量器。時(shí)間戳 Ts最初同步到實(shí)際時(shí)間(Ts = Tg)。當(dāng)?shù)谝环纸M被出隊(duì)時(shí),時(shí)間戳計(jì)量器被前進(jìn)到Ts = Ts+(分組長(zhǎng)度/r)。然后,針對(duì)從激活起已流逝的實(shí)際時(shí)間調(diào)節(jié)時(shí)間(Ts = Ts-Tg’),其中 在Tg和Tg’之間實(shí)際時(shí)間已流逝。當(dāng)與該流相關(guān)聯(lián)的下一分組到達(dá)隊(duì)列頭端時(shí),計(jì)量器被重新激活,并且如果Ts為 負(fù),則該分組被丟棄。Ts與當(dāng)前實(shí)際時(shí)間(Ts = Ts+Tg)同步。該算法隨后如上所述那樣進(jìn) 行。時(shí)間戳示例性實(shí)施例需要一除法器來(lái)計(jì)算需要除法器的(分組長(zhǎng)度/r),從而用 硬件來(lái)實(shí)現(xiàn)的話則成本更高。然而,對(duì)于純基于軟件的實(shí)現(xiàn)方式,它是適當(dāng)?shù)?,因?yàn)椴恍枰?周期性更新,因此使得進(jìn)程切換達(dá)到最低限度。圖7示出了實(shí)現(xiàn)為具有周圍電路的專用集成電路(ASIC)的調(diào)度器的示例性實(shí)施 例。在圖7中,集成到ASIC 800中的功能單元包括第一和第二 DRAM控制器802和804、入 隊(duì)/出隊(duì)邏輯塊806、調(diào)度引擎808、以及輸出接口塊810。用于保持流量類隊(duì)列的分組緩沖 器812由第一組片下DRAM 812形成,并且一調(diào)度數(shù)據(jù)庫(kù)由第二組RAM 814形成。當(dāng)流中的分組到達(dá)時(shí),入隊(duì)/出隊(duì)邏輯塊606根據(jù)該分組的流將該分組入隊(duì)到一 流量類隊(duì)列中。在分組調(diào)度之后,入隊(duì)/出隊(duì)邏輯塊806將流量類隊(duì)列中的新頭端分組的 流量類信息傳遞到調(diào)度引擎808。調(diào)度引擎808隨后調(diào)度要發(fā)送的下一分組,并且控制入隊(duì) /出隊(duì)邏輯塊806使分組出隊(duì)并將其轉(zhuǎn)發(fā)到輸出接口邏輯塊810。輸出接口邏輯塊810隨 后通過(guò)信道發(fā)送該分組。在圖7中,分組被按線路速率接收,并被存儲(chǔ)在一存儲(chǔ)器中,該存儲(chǔ)器在此示例中 是高速DRAM。隊(duì)列包括指向保持在DRAM中的被入隊(duì)分組的指針。分組發(fā)送出隊(duì)邏輯包括 一調(diào)度器,該調(diào)度器基于所選規(guī)則來(lái)選擇要發(fā)送的下一分組。指向被調(diào)度供發(fā)送的下一分 組的指針被用于訪問(wèn)該分組,并且將其從DRAM輸出。調(diào)度引擎808執(zhí)行參考圖4和5描述 的調(diào)度操作和算法。在以上示例性實(shí)施例中,調(diào)度引擎是利用諸如專用集成電路(ASIC)之類的編程 邏輯實(shí)現(xiàn)的。調(diào)度引擎也可實(shí)現(xiàn)為執(zhí)行程序代碼的計(jì)算機(jī)系統(tǒng)。圖8示出了可用于執(zhí)行示例性實(shí)施例的軟件的計(jì)算機(jī)系統(tǒng)900的系統(tǒng)框圖。計(jì)算機(jī)系統(tǒng)900包括存儲(chǔ)器902,該存儲(chǔ)器可用于存儲(chǔ)和取得包含實(shí)現(xiàn)參考圖5和6描述的算法 的計(jì)算機(jī)代碼的軟件程序、結(jié)合這些算法使用的數(shù)據(jù)、等等。示例性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括⑶-ROM、軟盤、磁帶、閃存、系統(tǒng)存儲(chǔ)器和硬盤驅(qū) 動(dòng)器。計(jì)算機(jī)系統(tǒng)900還包括諸如中央處理器904、固定存儲(chǔ)裝置906、可移動(dòng)存儲(chǔ)裝置908、 以及一個(gè)或多個(gè)網(wǎng)絡(luò)接口 910之類的子系統(tǒng)。適合結(jié)合本發(fā)明使用的其他計(jì)算機(jī)系統(tǒng)可包 括更多或更少子系統(tǒng)。
計(jì)算機(jī)系統(tǒng)900的系統(tǒng)總線體系結(jié)構(gòu)由圖8中的箭頭912表示。然而,這些箭頭 只是例示了用于鏈接子系統(tǒng)的一個(gè)可能的互連。例如,本地總線可用于將中央處理器904 連接到系統(tǒng)存儲(chǔ)器902。圖8所示的計(jì)算機(jī)系統(tǒng)900只是適合結(jié)合本發(fā)明使用的計(jì)算機(jī)系 統(tǒng)的一個(gè)示例。也可以利用具有不同子系統(tǒng)配置的其他計(jì)算機(jī)體系結(jié)構(gòu)。通過(guò)使用通信協(xié) 議可以實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)計(jì)算機(jī)之間的通信,通信協(xié)議控制計(jì)算機(jī)如何通過(guò)網(wǎng)絡(luò)交換信息。已經(jīng)參考示例性實(shí)施例描述了本發(fā)明。現(xiàn)在對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)替換和替 代將是顯而易見的。因此,除了所附權(quán)利要求所規(guī)定的之外,并不希望限制本發(fā)明。
權(quán)利要求
一種方法,包括在第一流的第一分組占據(jù)使來(lái)自不同流的分組入隊(duì)的共享發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率改變第一計(jì)量值,其中該第一方向是正向或負(fù)向,其中該第一計(jì)量值指示出所述第一流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述分組由指示出當(dāng)所述第一流中的所述分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第一流中的第一分組被出隊(duì)或丟棄時(shí),在第二方向上改變所述第一計(jì)量值,改變量為所述第一流中的第一分組的分組長(zhǎng)度的倍數(shù),其中所述第二方向與所述第一方向相反;在第二流的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的同時(shí),在所述第一方向上按所述目標(biāo)速率改變第二計(jì)量值,其中所述第二計(jì)量值指示出所述第二流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述第二流中的第一分組由指示出當(dāng)所述第二流中的第一分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第二流中的第一分組被出隊(duì)或丟棄時(shí),在所述第二方向上改變所述第二計(jì)量值,改變量為所述第二流中的第一分組的分組長(zhǎng)度的倍數(shù);當(dāng)所述第一流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第一計(jì)量值與一閾值相比較;如果所述第一計(jì)量值與所述閾值之間的差具有第一符號(hào),則丟棄所述第一流中的第二分組,或者如果所述第一計(jì)量值與所述閾值之間的差具有第二符號(hào),則調(diào)度所述第一流中的第二分組以供出隊(duì),其中所述第一符號(hào)為正或負(fù);當(dāng)所述第二流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第二計(jì)量值與所述閾值相比較;以及如果所述第二計(jì)量值與所述閾值之間的差具有所述第一符號(hào),則丟棄所述第二流中的第二分組,或者如果所述第二計(jì)量值與所述閾值之間的差具有所述第二符號(hào),則調(diào)度所述第二流中的第二分組以供出隊(duì),其中所述第二符號(hào)與所述第一符號(hào)相反。
2.如權(quán)利要求1所述的方法,其中,所述第一方向?yàn)檎较?,并且在第一方向上按目?biāo) 速率改變第一計(jì)量值和第二計(jì)量值包括對(duì)于所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的每T秒間隔,將Q個(gè)字節(jié)加到 第一令牌桶;以及對(duì)于所述第二流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的每T秒間隔,將Q個(gè)字節(jié)加到 第二令牌桶,其中Q/T等于目標(biāo)速率。
3.如權(quán)利要求2所述的方法,其中,將所述第一計(jì)量值和第二計(jì)量值與閾值相比較包括當(dāng)所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將第一桶中保持的值與所述閾 值相比較;以及當(dāng)所述第二流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將第二桶中保持的值與所述閾 值相比較。
4.如權(quán)利要求2所述的方法,其中,在第二方向上改變所述第一計(jì)量值和第二計(jì)量值 包括當(dāng)所述第一流中的一分組被出隊(duì)時(shí),從第一桶中保持的字節(jié)數(shù)目中減去所述第一流中的該分組的長(zhǎng)度;以及當(dāng)所述第二流中的一分組被出隊(duì)時(shí),從第二桶中保持的字節(jié)數(shù)目中減去所述第二流中 的該分組的長(zhǎng)度。
5.如權(quán)利要求1所述的方法,還包括當(dāng)所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將局部時(shí)間T1初始化到 Tl-Tg,其中Tg是全局時(shí)鐘值;當(dāng)更新發(fā)生時(shí),將逝去的時(shí)間Tg-Tl與T相比較;以及如果逝去的時(shí)間大于T,則將Q個(gè)字節(jié)加到第一令牌桶,其中Q/T等于目標(biāo)速率。
6.如權(quán)利要求1所述的方法,其中,所述第一方向?yàn)樨?fù)方向,并且在第一方向上改變第 一計(jì)量值和第二計(jì)量值包括從等于第一全局開始時(shí)間值的第一時(shí)間戳減去第一全局結(jié)束時(shí)間值,該第一全局結(jié)束 時(shí)間值指示出所述第一流中的第一分組被出隊(duì)的時(shí)間,該第一全局開始時(shí)間值指示出所述 第一流中的該分組何時(shí)到達(dá)所述共享發(fā)送隊(duì)列的頭端;以及從等于第二全局開始時(shí)間值的第二時(shí)間戳減去第二全局結(jié)束時(shí)間值,該第二全局結(jié)束 時(shí)間值指示出所述第二流中的第一分組被出隊(duì)的時(shí)間,該第二全局開始時(shí)間值指示出所述 第二流中的該分組何時(shí)到達(dá)所述共享發(fā)送隊(duì)列的頭端。
7.如權(quán)利要求6所述的方法,其中,在所述第二方向上改變所述第一計(jì)量值和第二計(jì) 量值包括將所述第一流中的第一分組的長(zhǎng)度除以發(fā)送速率的結(jié)果加到所述第一時(shí)間戳;以及將所述第二流中的第一分組的長(zhǎng)度除以所述發(fā)送速率的結(jié)果加到所述第二時(shí)間戳。
8.一種裝置,包括存儲(chǔ)塊,被配置為保持分組隊(duì)列,這些分組隊(duì)列包括使來(lái)自不同流的分組入隊(duì)的共享 發(fā)送隊(duì)列;入隊(duì)/出隊(duì)邏輯塊;調(diào)度塊,耦合到所述存儲(chǔ)塊和所述入隊(duì)/出隊(duì)邏輯塊,其中該調(diào)度塊包括被配置為通 過(guò)以下方式來(lái)實(shí)現(xiàn)虛擬每流速率計(jì)量器在被入隊(duì)在所述共享發(fā)送隊(duì)列中的第一流的第一 分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的同時(shí),在第一方向上按目標(biāo)速率改變第一計(jì)量值,其 中該第一方向是正向或負(fù)向,其中該第一計(jì)量值指示出所述第一流中的第一分組占據(jù)所述 共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述第一流中的第一分組由指示出當(dāng)所述第一流中的 第一分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第一流中的第一分組被出 隊(duì)或丟棄時(shí),在第二方向上改變所述第一計(jì)量值,改變量為所述第一流中的第一分組的分 組長(zhǎng)度的倍數(shù),其中所述第二方向與所述第一方向相反;在被入隊(duì)在所述共享發(fā)送隊(duì)列中 的第二流的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的同時(shí),在所述第一方向上按所述目標(biāo) 速率改變第二計(jì)量值,其中所述第二計(jì)量值指示出所述第二流中的第一分組占據(jù)所述共享 發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述第二流中的第一分組由指示出當(dāng)所述第二流中的第一 分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第二流中的第一分組被出隊(duì)或 丟棄時(shí),在所述第二方向上改變所述第二計(jì)量值,改變量為所述第二流中的第一分組的分 組長(zhǎng)度的倍數(shù);當(dāng)所述第一流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第一 計(jì)量值與一閾值相比較;如果所述第一計(jì)量值與所述閾值之間的差具有第一符號(hào),則丟棄所述第一流中的第二分組,或者如果所述第一計(jì)量值與所述閾值之間的差具有第二符號(hào), 則調(diào)度所述第一流中的第二分組以供出隊(duì),其中所述第一符號(hào)為正或負(fù);當(dāng)所述第二流中 的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第二計(jì)量值與所述閾值相比較;以及 如果所述第二計(jì)量值與所述閾值之間的差具有所述第一符號(hào),則丟棄所述第二流中的第二 分組,或者如果所述第二計(jì)量值與所述閾值之間的差具有所述第二符號(hào),則調(diào)度所述第二 流中的第二分組以供出隊(duì),其中所述第二符號(hào)與所述第一符號(hào)相反。
9.如權(quán)利要求8所述的裝置,其中,所述第一方向?yàn)檎较颍⑶冶慌渲脼橥ㄟ^(guò)在第一 方向上按目標(biāo)速率改變第一計(jì)量值和第二計(jì)量值來(lái)實(shí)現(xiàn)虛擬流速率計(jì)量器的邏輯包括被 配置為進(jìn)行以下操作的邏輯對(duì)于所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的每T秒間隔,將Q個(gè)字節(jié)加到 第一令牌桶;以及對(duì)于所述第二流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的每T秒間隔,將Q個(gè)字節(jié)加到 第二令牌桶,其中Q/T等于目標(biāo)速率。
10.如權(quán)利要求9所述的裝置,其中,被配置為通過(guò)將所述第一計(jì)量值和第二計(jì)量值與 閾值相比較來(lái)實(shí)現(xiàn)虛擬流速率計(jì)量器的邏輯包括被配置為進(jìn)行以下操作的邏輯當(dāng)所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將第一桶中保持的值與所述閾 值相比較;以及當(dāng)所述第二流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將第二桶中保持的值與所述閾 值相比較。
11.如權(quán)利要求9所述的裝置,其中,被配置為通過(guò)在第二方向上改變所述第一計(jì)量值 和第二計(jì)量值來(lái)實(shí)現(xiàn)虛擬流速率計(jì)量器的邏輯包括被配置為進(jìn)行以下操作的邏輯當(dāng)所述第一流中的一分組被出隊(duì)時(shí),從第一桶中保持的字節(jié)數(shù)目中減去所述第一流中 的該分組的長(zhǎng)度;以及當(dāng)所述第二流中的一分組被出隊(duì)時(shí),從第二桶中保持的字節(jié)數(shù)目中減去所述第二流中 的該分組的長(zhǎng)度。
12.如權(quán)利要求8所述的裝置,被配置為實(shí)現(xiàn)虛擬流速率計(jì)量器的邏輯還包括被配置 為進(jìn)行以下操作的邏輯當(dāng)所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將局部時(shí)間T1初始化到 Tl-Tg,其中Tg是全局時(shí)鐘值;當(dāng)更新發(fā)生時(shí),將逝去的時(shí)間Tg-Tl與T相比較;以及如果逝去的時(shí)間大于T,則將Q個(gè)字節(jié)加到第一令牌桶,其中Q/T等于目標(biāo)速率。
13.如權(quán)利要求8所述的裝置,其中,所述第一方向?yàn)樨?fù)方向,并且被配置為通過(guò)在第 一方向上改變第一計(jì)量值和第二計(jì)量值來(lái)實(shí)現(xiàn)虛擬流速率計(jì)量器的邏輯包括被配置為進(jìn) 行以下操作的邏輯從等于第一全局開始時(shí)間值的第一時(shí)間戳減去第一全局結(jié)束時(shí)間值,該第一全局結(jié)束 時(shí)間值指示出所述第一流中的第一分組被出隊(duì)的時(shí)間,該第一全局開始時(shí)間值指示出所述 第一流中的該分組何時(shí)到達(dá)所述共享發(fā)送隊(duì)列的頭端;以及從等于第二全局開始時(shí)間值的第二時(shí)間戳減去第二全局結(jié)束時(shí)間值,該第二全局結(jié)束 時(shí)間值指示出所述第二流中的第一分組被出隊(duì)的時(shí)間,該第二全局開始時(shí)間值指示出所述第二流中的該分組何時(shí)到達(dá)所述共享發(fā)送隊(duì)列的頭端。
14.如權(quán)利要求13所述的裝置,其中,被配置為通過(guò)在所述第二方向上改變所述第 一計(jì)量值和第二計(jì)量值來(lái)實(shí)現(xiàn)虛擬流速率計(jì)量器的邏輯包括被配置為進(jìn)行以下操作的邏 輯將所述第一流中的第一分組的長(zhǎng)度除以發(fā)送速率的結(jié)果加到所述第一時(shí)間戳;以及將所述第二流中的第一分組的長(zhǎng)度除以所述發(fā)送速率的結(jié)果加到所述第二時(shí)間戳。
15.編碼有軟件的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該軟件包括計(jì)算機(jī)可執(zhí)行指令并 且該軟件可操作來(lái)在第一流的第一分組占據(jù)使來(lái)自不同流的分組入隊(duì)的共享發(fā)送隊(duì)列的頭端的同時(shí),在 第一方向上按目標(biāo)速率改變第一計(jì)量值,其中該第一方向是正向或負(fù)向,其中該第一計(jì)量 值指示出所述第一流中的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述分組 由指示出當(dāng)所述第一流中的所述分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第一流中的第一分組被出隊(duì)或丟棄時(shí),在第二方向上改變所述第一計(jì)量值,改 變量為所述第一流中的第一分組的分組長(zhǎng)度的倍數(shù),其中所述第二方向與所述第一方向相 反;在第二流的第一分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的同時(shí),在所述第一方向上按所述 目標(biāo)速率改變第二計(jì)量值,其中所述第二計(jì)量值指示出所述第二流中的第一分組占據(jù)所述 共享發(fā)送隊(duì)列的頭端的時(shí)間量,并且所述第二流中的第一分組由指示出當(dāng)所述第二流中的 第一分組被出隊(duì)時(shí)所發(fā)送的字節(jié)數(shù)目的分組長(zhǎng)度所表征;當(dāng)所述第二流中的第一分組被出隊(duì)或丟棄時(shí),在所述第二方向上改變所述第二計(jì)量 值,改變量為所述第二流中的第一分組的分組長(zhǎng)度的倍數(shù);當(dāng)所述第一流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第一計(jì)量值與一 閾值相比較;如果所述第一計(jì)量值與所述閾值之間的差具有第一符號(hào),則丟棄所述第一流中的第二 分組,或者如果所述第一計(jì)量值與所述閾值之間的差具有第二符號(hào),則調(diào)度所述第一流中 的第二分組以供出隊(duì),其中所述第一符號(hào)為正或負(fù);當(dāng)所述第二流中的第二分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將所述第二計(jì)量值與所 述閾值相比較;以及如果所述第二計(jì)量值與所述閾值之間的差具有所述第一符號(hào),則丟棄所述第二流中的 第二分組,或者如果所述第二計(jì)量值與所述閾值之間的差具有所述第二符號(hào),則調(diào)度所述 第二流中的第二分組以供出隊(duì),其中所述第二符號(hào)與所述第一符號(hào)相反。
16.如權(quán)利要求15所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述第一方向?yàn)檎?方向,并且可操作來(lái)在第一方向上按目標(biāo)速率改變第一計(jì)量值和第二計(jì)量值的所編碼的軟 件可操作來(lái)對(duì)于所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的每T秒間隔,將Q個(gè)字節(jié)加到 第一令牌桶;以及對(duì)于所述第二流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端的每T秒間隔,將Q個(gè)字節(jié)加到 第二令牌桶,其中Q/T等于目標(biāo)速率。
17.如權(quán)利要求16所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,可操作來(lái)將所述第一計(jì)量值和第二計(jì)量值與閾值相比較的所編碼的軟件可操作來(lái)當(dāng)所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將第一桶中保持的值與所述閾 值相比較;以及當(dāng)所述第二流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將第二桶中保持的值與所述閾 值相比較。
18.如權(quán)利要求16所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,可操作來(lái)在第二方 向上改變所述第一計(jì)量值和第二計(jì)量值的所編碼的軟件可操作來(lái)當(dāng)所述第一流中的一分組被出隊(duì)時(shí),從第一桶中保持的字節(jié)數(shù)目中減去所述第一流中 的該分組的長(zhǎng)度;以及當(dāng)所述第二流中的一分組被出隊(duì)時(shí),從第二桶中保持的字節(jié)數(shù)目中減去所述第二流中 的該分組的長(zhǎng)度。
19.如權(quán)利要求15所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所編碼的軟件還可操作來(lái)當(dāng)所述第一流的分組占據(jù)所述共享發(fā)送隊(duì)列的頭端時(shí),將局部時(shí)間T1初始化到 Tl-Tg,其中Tg是全局時(shí)鐘值;當(dāng)更新發(fā)生時(shí),將逝去的時(shí)間T『T1與T相比較;以及如果逝去的時(shí)間大于T,則將Q個(gè)字節(jié)加到第一令牌桶,其中Q/T等于目標(biāo)速率。
20.如權(quán)利要求15所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述第一方向?yàn)樨?fù) 方向,并且可操作來(lái)在第一方向上改變第一計(jì)量值和第二計(jì)量值的所編碼的軟件可操作 來(lái)從等于第一全局開始時(shí)間值的第一時(shí)間戳減去第一全局結(jié)束時(shí)間值,該第一全局結(jié)束 時(shí)間值指示出所述第一流中的第一分組被出隊(duì)的時(shí)間,該第一全局開始時(shí)間值指示出所述 第一流中的該分組何時(shí)到達(dá)所述共享發(fā)送隊(duì)列的頭端;以及從等于第二全局開始時(shí)間值的第二時(shí)間戳減去第二全局結(jié)束時(shí)間值,該第二全局結(jié)束 時(shí)間值指示出所述第二流中的第一分組被出隊(duì)的時(shí)間,該第二全局開始時(shí)間值指示出所述 第二流中的該分組何時(shí)到達(dá)所述共享發(fā)送隊(duì)列的頭端。
21.如權(quán)利要求20所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,可操作來(lái)在所述第 二方向上改變所述第一計(jì)量值和第二計(jì)量值的所編碼的軟件可操作來(lái)將所述第一流中的第一分組的長(zhǎng)度除以發(fā)送速率的結(jié)果加到所述第一時(shí)間戳;以及將所述第二流中的第一分組的長(zhǎng)度除以所述發(fā)送速率的結(jié)果加到所述第二時(shí)間戳。
全文摘要
本發(fā)明提供了具有公平速率保證的隊(duì)列共享。在一個(gè)實(shí)施例中,為每個(gè)被入隊(duì)的流維持單獨(dú)的速率計(jì)量器,并且在來(lái)自該流的分組占據(jù)共享發(fā)送隊(duì)列的頭端的同時(shí),按目標(biāo)速率增大速率計(jì)量器。當(dāng)分組被入隊(duì)或丟棄時(shí),計(jì)量值被減小,減小量為分組長(zhǎng)度。如果對(duì)應(yīng)于該流的計(jì)量值大于閾值,則占據(jù)共享發(fā)送隊(duì)列的頭端的下一分組被丟棄。
文檔編號(hào)H04L12/56GK101834782SQ20101013570
公開日2010年9月15日 申請(qǐng)日期2010年3月10日 優(yōu)先權(quán)日2009年3月10日
發(fā)明者卡提可·曼達(dá)可奧拉蘇, 沙·瑪 申請(qǐng)人:思科技術(shù)公司