專利名稱:一種帶寬控制裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種帶寬控制裝置及方法,尤指一種藉簡化帶寬控制所需的計數(shù)運(yùn)算,及雙重計數(shù)器的設(shè)計,以達(dá)到簡化電路且精確控制帶寬的目的。
對于ISP業(yè)者及網(wǎng)絡(luò)管理者而言,為達(dá)帶寬控制(bandwidthcontrol)的目的,網(wǎng)絡(luò)交換器(network switch)是常用的網(wǎng)絡(luò)裝置。而一般網(wǎng)絡(luò)交換器在進(jìn)行帶寬控制時,多是采用「漏桶」(leaky bucket)(為便于行文,以下以leaky bucket或bucket稱的)的作法。請參照
圖1,其為leaky bucket的運(yùn)作示意圖。Leakybucket 10就像是一漏斗,里面最多可裝B個「代幣」(token)11。對于等待傳輸?shù)姆獍?3而言,必須有代幣11,才能通過隊列12到網(wǎng)絡(luò)上。隨著封包13持續(xù)的傳輸,代幣11也會隨的減少。當(dāng)代幣11使用完后,便無法再繼續(xù)傳輸。因此,若能以一固定的速率,如R個/秒,補(bǔ)充bucket 10中的代幣11,就能控制每單位時間所輸出的數(shù)據(jù)量(因每單位時間只能使用一定量的代幣11),達(dá)到帶寬控制的目的。每個代幣11所代表的數(shù)據(jù)量,則隨不同的網(wǎng)絡(luò)型態(tài)而異。例如,在以太網(wǎng)絡(luò)中,由于封包13大小不一,便以一個字節(jié)作為一代幣11的數(shù)據(jù)量 而在異步傳輸模式(AsynchronousTransfer Mode,簡稱ATM)中,以大小相同的單元(cell)為傳輸單位,就可用此作為一個代幣11的數(shù)據(jù)量。此外,當(dāng)bucket 10已滿,后續(xù)補(bǔ)充的代幣11便會被丟棄,不會被使用。
至于在實(shí)作上,傳統(tǒng)的作法主要有兩種。第一種是全套地實(shí)作leaky bucket 10第二種則是簡化的作法,將leaky bucket 10補(bǔ)充代幣11的方式,由一固定的速率,改為每隔固定時間,就重設(shè)為裝滿狀態(tài)。第一種方法的優(yōu)點(diǎn)是,能較精確地控制帶寬,但缺點(diǎn)是成本太高 第二種方法雖然能降低成本,但卻無法提供精確的帶寬控制。
接著再進(jìn)一步說明此兩種作法。先看第一種。要全套地實(shí)作,有兩項變量至關(guān)重要bucket 10中代幣11的存量與bucket 10的容量B。為了判斷封包13能否通過隊列12,必須能掌握代幣11的存量。若以CNTR(t)來代表bucket 10在時間t的代幣11存量,并假設(shè)以R個/秒的速率補(bǔ)充代幣11,則CNTR(t)的值為CNTR(t-1)+R與容量B兩者中較小者。在電路的實(shí)作上,必須以一計數(shù)器(counter)來記錄CNTR(t),但由前述計算CNTR(t)的值來看,計數(shù)器的值的更新牽涉到較大數(shù)值的加法運(yùn)算,因而其相關(guān)電路的設(shè)計會復(fù)雜,成本也相當(dāng)高。
至于第二種作法,為了降低成本,則是使用電路相當(dāng)簡單的漣波計數(shù)器(ripple counter),來記錄bucket 10中代幣11的存量。漣波計數(shù)器雖能很容易地實(shí)作加一或減一的運(yùn)算,但卻很難快速地達(dá)成加減較大數(shù)值的運(yùn)算。因此,本作法便以設(shè)定的運(yùn)算,來取代加法的運(yùn)算。若leaky bucket 10原本是空的,以每秒R個的速率補(bǔ)充代幣11,經(jīng)過B/R秒bucket 10就會填滿。因此,實(shí)作上就是每隔B/R秒,便將漣波計數(shù)器的值重新設(shè)定為B,以此來避免第一種作法需要作較大數(shù)值的加減法運(yùn)算。然而,如此作法會導(dǎo)致不精確的帶寬控制。因為在每個B/R秒的時間區(qū)段,B個代幣11不一定每次都使用完,但只要一到下一個時間區(qū)段,又重新有B個代幣11可用,如此每個單位時間的數(shù)據(jù)輸出量就不固定,自然就無法達(dá)成精確的帶寬控制。
為達(dá)到此目的,本發(fā)明將leaky bucket相關(guān)的計數(shù)運(yùn)算簡化,以便使用任何簡單的計數(shù)器,如漣波計數(shù)器,來實(shí)作。此外,并藉由兩個計數(shù)器的設(shè)計,來達(dá)到leaky bucket在帶寬控制上的精確性。
代幣以每秒R個的速度補(bǔ)充,換言的,即是每1/R秒補(bǔ)充一個代幣。此外,讓每個代幣皆代表一定的數(shù)據(jù)量,每傳輸此一定的數(shù)據(jù)量,即減少一個代幣。若將1/R秒視為一單位時間,此一定的數(shù)據(jù)量視為一單位數(shù)據(jù),則leaky bucket的運(yùn)作就變成每單位時間增加一個代幣,以及每傳輸一單位數(shù)據(jù),即減少一個代幣。如此一來,leaky bucket原本所需的較大數(shù)值的運(yùn)算,就簡化為加一與減一的運(yùn)算。
基于前述簡化的方式,本發(fā)明的帶寬控制裝置即以兩個計數(shù)器(以下稱為第一計數(shù)器與第二計數(shù)器)、一定時器(timer)及一控制邏輯,再加上執(zhí)行封包進(jìn)出隊列的一動作裝置,來實(shí)作leakybucket。其運(yùn)作方法為,每隔一單位時間,定時器即發(fā)出一訊號至控制邏輯,將第一計數(shù)器的值減一 動作裝置每傳輸一單位數(shù)據(jù),控制邏輯即將第一計數(shù)器的值加一。在本發(fā)明中,此單位數(shù)據(jù)以字節(jié)計算,稱為單位字節(jié)(unit bytes)。另外,第一計數(shù)器有一預(yù)設(shè)的閾值(threshold),當(dāng)?shù)谝挥嫈?shù)器到達(dá)此閾值時,控制邏輯即不準(zhǔn)許動作裝置再傳輸封包。
為了知道何時已傳輸了一單位字節(jié)的數(shù)據(jù),則以第二計數(shù)器來記錄已傳輸?shù)淖止?jié)的數(shù)量。本發(fā)明將第二計數(shù)器設(shè)計為每傳輸一個字節(jié)即將其值加一,直至其值到達(dá)單位字節(jié)的大小時,即重設(shè)(reset)為零,而此時因已傳輸一單位字節(jié),所以控制邏輯會將第一計數(shù)器加一。由于第一與第二計數(shù)器僅涉及加減一或重設(shè)的運(yùn)算,所以實(shí)作上皆可使用簡單的計數(shù)器電路。
綜上所述,借著本發(fā)明的帶寬控制裝置及方法,由于每經(jīng)一單位時間,就將第一計數(shù)器減一,此代表在一單位時間內(nèi),固定只能傳輸一單位字節(jié)的數(shù)據(jù)量,所以能精確地控制帶寬,并且在電路實(shí)作上很簡單。
為了便于理解本發(fā)明的帶寬控制裝置及方法,下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)說明。
圖2是使用本發(fā)明的帶寬控制裝置的交換控制器的電路連結(jié)方塊圖。
圖3是本發(fā)明的帶寬控制裝置的電路連結(jié)方塊圖。
圖4是本發(fā)明的帶寬控制方法中將封包輸入一隊列的相關(guān)動作流程圖。
圖5是在不同帶寬與不同單位字節(jié)下,單位時間的選取范例示意圖。附圖標(biāo)號說明10-leaky bucket;11-代幣;12-隊列;13-封包;20-交換控制器;21-帶寬控制裝置;211-第一計數(shù)器;212-控制邏輯;213-動作裝置;2131-第二計數(shù)器;214-定時器;22-隊列;23-內(nèi)存;41至51-將封包輸入一隊列的相關(guān)步驟。
參見圖3,其為本發(fā)明的帶寬控制裝置21的電路連結(jié)方塊圖。如圖3所示,帶寬控制裝置21包括一第一計數(shù)器211、一控制邏輯212、一動作裝置213以及一定時器214。第一計數(shù)器211,對應(yīng)于該隊列而設(shè)置,具一預(yù)設(shè)的閾值??刂七壿?12,耦接至第一計數(shù)器211,對第一計數(shù)器211執(zhí)行加一及減一的運(yùn)算,并依第一計數(shù)器211的值判斷封包能否進(jìn)入隊列22。動作裝置213,耦接至隊列22及控制邏輯212,執(zhí)行封包輸入與輸出該隊列22的動作,且每輸入一單位字節(jié),即送出一遞增訊號至控制邏輯212。定時器214,耦接至控制邏輯212,每隔一單位時間即產(chǎn)生一遞減訊號至控制邏輯212。
當(dāng)控制邏輯212從動作裝置213接收到遞增訊號,且第一計數(shù)器211的值未達(dá)其閾值時,即將第一計數(shù)器211加一 當(dāng)控制邏輯212從定時器214接收到遞減訊號,且第一計數(shù)器211的值不為零時,即將第一計數(shù)器211減一。
另外,于動作裝置213內(nèi),對應(yīng)隊列22設(shè)置一第二計數(shù)器2131。當(dāng)一封包被準(zhǔn)許輸入隊列22時,每輸入一個字節(jié),動作裝置213便將第二計數(shù)器2131的值加一;當(dāng)?shù)诙嫈?shù)器2131的值到達(dá)一單位字節(jié)的大小時,動作裝置213即產(chǎn)生遞增訊號至控制邏輯212,且將第二計數(shù)器2131重設(shè)為零。
至于內(nèi)存23,則耦接至控制邏輯212,用來儲存第一計數(shù)器211的閾值、單位字節(jié)的大小與單位時間的大小等帶寬控制的相關(guān)變量,可由控制邏輯212存取及設(shè)定。
由前述可以看出,第一計數(shù)器211與第二計數(shù)器2131由于僅是執(zhí)行加減一或重設(shè)的運(yùn)算,因此可用任何簡單的計數(shù)器,如漣波計數(shù)器,來加以實(shí)作。
接下來,將解說如何運(yùn)用前述的帶寬控制裝置21來進(jìn)行帶寬控制。本發(fā)明的帶寬控制方法主要是每經(jīng)一單位時間,就由定時器214產(chǎn)生一遞減訊號至控制邏輯212,以將第一計數(shù)器211減一,藉以來限制單位時間內(nèi),固定只能傳輸一單位字節(jié)的數(shù)據(jù)量。至于實(shí)際執(zhí)行帶寬控制時,封包傳輸?shù)南嚓P(guān)動作,則請參閱圖4,其為本發(fā)明的帶寬控制方法中將封包輸入一隊列22的相關(guān)動作流程圖。如圖4所示,此流程包括下列步驟41檢測到一封包抵達(dá)隊列2242動作裝置213詢問控制邏輯212是否準(zhǔn)許該封包進(jìn)入43控制邏輯212判斷第一計數(shù)器211的值是否小于第一計數(shù)器211的閾值,若是,則準(zhǔn)許該封包進(jìn)入,跳至步驟45若否,則不準(zhǔn)許該封包進(jìn)入,繼續(xù)以下步驟44隊列22于激活流量控制(flow control)及丟棄該封包中兩者擇一。
45動作裝置213依序?qū)⒃摲獍囊蛔止?jié)輸入隊列2246動作裝置213將第二計數(shù)器2131的值加一47動作裝置213判斷第二計數(shù)器2131的值是否到達(dá)單位字節(jié)的大小,若否,則跳至步驟50 若是,則繼續(xù)以下步驟48動作裝置213將第二計數(shù)器2131重設(shè)為零,并產(chǎn)生遞增訊號至控制邏輯21249控制邏輯212將第一計數(shù)器211的值加一50判斷是否已輸入到該封包結(jié)尾 若否,則跳回步驟45 若是,則繼續(xù)以下步驟51結(jié)束輸入該封包的動作。
在前述步驟44中,對于不符合所設(shè)定帶寬規(guī)格的封包,由于其不能進(jìn)入隊列22,所以必須做一適當(dāng)?shù)奶幚?。一般常用的有兩種處理方式,一是啟用流量控制,二是直接丟棄封包。若采用流量控制的方式,則交換控制器20必須送出一流量控制框(flow controlframe)至封包來源裝置,告知來源裝置暫停傳送封包。在等待一段時間后,再恢復(fù)傳送。至于選擇哪種處理方式,則依隊列22的組態(tài)(configuration)而定。
至于單位時間的大小如何決定,主要依所定的帶寬規(guī)格與單位字節(jié)的大小而定。請參照圖5,其表格所顯示的,即為在不同帶寬規(guī)格及不同單位字節(jié)的情況下,如何選取單位時間的范例。例如,以表格中帶寬128Kbps(Kbits per second,即1000比特/秒)及單位字節(jié)為64個字節(jié)的情形來看,單位時間為4ms(1ms=千分之一秒)。以前述帶寬控制方法的步驟來看,定時器214每4ms即產(chǎn)生一遞減訊號,第一計數(shù)器211的值也隨的減一 換言的,每過4ms就可以輸入一單位字節(jié)的數(shù)據(jù)量,即64個字節(jié),至隊列22中。依一個字節(jié)等于八個位換算,每秒可輸入隊列22的數(shù)據(jù)量恰好就等于128Kb。
本發(fā)明的帶寬控制方法還能處理一特殊情形。原則上,第一計數(shù)器211的值不能累加至超過其閾值。不過,有一種特殊情形是若一封包在第一計數(shù)器211的值未達(dá)其閾值的條件下,被準(zhǔn)許進(jìn)入隊列22,如步驟43所述但隨著一個個單位字節(jié)陸續(xù)輸入,就可能造成第一計數(shù)器211已累加到其閾值而此封包卻未輸入完畢的特殊情形。此時,本發(fā)明的帶寬控制方法允許持續(xù)輸入,直到此封包完全進(jìn)入隊列22為止。至于因此而多用掉的帶寬,則從后續(xù)單位時間的帶寬中扣除。例如,若此封包輸入完畢后,第一計數(shù)器211的值較其閾值多一,換言的,此封包多用了一個單位時間的帶寬,因此,必須比正常情形多等待一單位時間,方能使第一計數(shù)器211恢復(fù)至小于其閾值,再重新開始輸入封包至隊列22中。
藉由上述的處理方式,不但可避免因封包傳輸中斷造成的數(shù)據(jù)流失與浪費(fèi)帶寬的問題(不完整的封包形同廢棄),就一段較長時間看,仍能同樣精確地控制帶寬。此亦為本發(fā)明的帶寬控制方法的一項優(yōu)點(diǎn)。
關(guān)于單位字節(jié)大小與第一計數(shù)器211的閾值,熟知此領(lǐng)域技藝者當(dāng)能輕易隨應(yīng)用與其它因素而選取或調(diào)整。至于對本發(fā)明所作的些微的改變及調(diào)整使用,仍將不失本發(fā)明的要義所在,亦不脫離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種帶寬控制裝置,是位于一網(wǎng)絡(luò)交換器的一交換控制器中,該交換控制器包含至少一隊列,用以暫存待傳輸?shù)姆獍搸捒刂蒲b置包括有一第一計數(shù)器,對應(yīng)于該隊列,具一預(yù)設(shè)的閾值;一控制邏輯,耦接至該第一計數(shù)器,對該第一計數(shù)器執(zhí)行加一及減一的運(yùn)算,并依該第一計數(shù)器的值判斷封包能否進(jìn)入該隊列;一動作裝置,耦接至該隊列及該控制邏輯,執(zhí)行封包輸入與輸出該隊列的動作,且每輸入一單位字節(jié),即送出一遞增訊號至該控制邏輯一定時器,耦接至該控制邏輯,每隔一單位時間即產(chǎn)生一遞減訊號至該控制邏輯。
2.如權(quán)利要求1所述的帶寬控制裝置,其中當(dāng)該控制邏輯從該動作裝置接收到該遞增訊號且該第一計數(shù)器的值未達(dá)該閾值時,該第一計數(shù)器即加一 當(dāng)該控制邏輯從該定時器接收到該遞減訊號且該第一計數(shù)器的值不為零時,該第一計數(shù)器即減一。
3.如權(quán)利要求1所述的帶寬控制裝置,其中于該動作裝置內(nèi)對應(yīng)該隊列設(shè)置一第二計數(shù)器,當(dāng)一封包被準(zhǔn)許輸入該隊列時,每輸入一個字節(jié),便將該第二計數(shù)器加一;當(dāng)該第二計數(shù)器的值到達(dá)一單位字節(jié)的大小時,該動作裝置即產(chǎn)生該遞增訊號至該控制邏輯,且將該第二計數(shù)器重設(shè)為零。
4.如權(quán)利要求1所述的帶寬控制裝置,其中該交換控制器更包含一內(nèi)存,耦接至該控制邏輯,以儲存該第一計數(shù)器的閾值、該單位字節(jié)的大小與該單位時間的大小,并供該控制邏輯存取。
5.一種帶寬控制方法,適用于一交換控制器中,包括下列步驟(a)接受一封包;(b)比較一第一計數(shù)器的值是否落在一預(yù)設(shè)的閾值范圍;(c)若步驟(b)的比較結(jié)果為“是”,則依序?qū)⒃摲獍念A(yù)定數(shù)量單位的位數(shù)據(jù)輸入一隊列中,并將一第二計數(shù)器的值加上一第一值;(d)比較第二計數(shù)器的值是否超出一預(yù)設(shè)的單位字節(jié)值范圍外;(e)若步驟(d)的比較結(jié)果為“否”,則跳回執(zhí)行步驟(c);(f)若步驟(d)的比較結(jié)果為“是”,則將第二計數(shù)器的值回歸為一默認(rèn)值,并將該第一計數(shù)器的值加上一第二值。
6.如權(quán)利要求5所述的帶寬控制方法,其中,在步驟(f)后還包括有一步驟(g)判斷是否已輸入到該封包結(jié)尾 若“否”,則跳回執(zhí)行步驟(c) 若“是”,則結(jié)束輸入該封包的動作。
7.如權(quán)利要求5所述的帶寬控制方法,其中,在步驟(e)中,當(dāng)步驟(d)的比較結(jié)果為“否”時,則在跳回執(zhí)行步驟(c)之前還包括有一步驟(e1)判斷是否已輸入到該封包結(jié)尾 若“否”,則繼續(xù)執(zhí)行該跳回執(zhí)行步驟(c)的動作 若“是”,則結(jié)束輸入該封包的動作;并且,在步驟(b)與步驟(c)的間還包括有一步驟(b1)若步驟(b)的比較結(jié)果為“否”則該隊列于激活流量控制及丟棄該封包中兩者擇一。
8.如權(quán)利要求5所述的帶寬控制方法,其中更包括有一定時器其可在每經(jīng)過一預(yù)定單位時間即對第一計數(shù)器的值減去該第二值。
9.一種帶寬控制方法,包括下列步驟a.提供一交換控制器,該交換控制器中具有一控制邏輯、一動作裝置、一定時器、一第一計數(shù)器、一第二計數(shù)器、一內(nèi)存其至少儲存有該第一計數(shù)器的一閾值、以及一隊列,該定時器可在每單位時間即產(chǎn)生一遞減訊號至該控制邏輯,以將該第一計數(shù)器的值減一;b.該交換控制器接受一封包到達(dá)該隊列;c.該動作裝置詢問該控制邏輯是否準(zhǔn)許該封包進(jìn)入,若該第一計數(shù)器的值不小于該第一計數(shù)器的閾值,則不準(zhǔn)該封包進(jìn)入且結(jié)束輸入封包的動作若該第一計數(shù)器的值小于該第一計數(shù)器的閾值,則準(zhǔn)許該封包進(jìn)入并繼續(xù)以下步驟d.該動作裝置依序?qū)⒃摲獍囊蛔止?jié)輸入該隊列,并將該第二計數(shù)器加一e.該動作裝置判斷該第二計數(shù)器的值是否到達(dá)一單位字節(jié)的大小,若否,則跳至步驟h 若是,則繼續(xù)以下步驟f.動作裝置將該第二計數(shù)器重設(shè)為零,并產(chǎn)生一遞增訊號至該控制邏輯g.該控制邏輯根據(jù)該遞增訊號而將該第一計數(shù)器加一h.判斷是否已輸入到該封包結(jié)尾 若否,則跳回步驟d 若是,則結(jié)束輸入該封包的動作。
10.如權(quán)利要求9所述的帶寬控制方法,其中步驟c還包括當(dāng)該封包不被準(zhǔn)許進(jìn)入該隊列時,該隊列于激活流量控制及丟棄該封包中兩者擇一。
全文摘要
本發(fā)明提供了一種帶寬控制裝置及方法,用于網(wǎng)絡(luò)交換器的一交換控制器中,以簡化帶寬控制所需的計數(shù)運(yùn)算,及雙重計數(shù)器的設(shè)計,以達(dá)到簡化電路且精確控制帶寬的目的。帶寬控制裝置包括一第一計數(shù)器 一控制邏輯,依遞增減訊號對第一計數(shù)器執(zhí)行加減一的運(yùn)算,并依第一計數(shù)器的值判斷封包能否進(jìn)入交換控制器內(nèi)的隊列;一動作裝置,執(zhí)行封包輸出入隊列的動作,且內(nèi)含一第二計數(shù)器,每輸入一字節(jié)即加一,待累加至一單位字節(jié),則將其重設(shè)為零,并送出遞增訊號至控制邏輯 一定時器,每隔一單位時間即產(chǎn)生遞減訊號至控制邏輯。帶寬控制方法則主要是運(yùn)用前述控制裝置來輸入封包,并藉每經(jīng)一單位時間,就將第一計數(shù)器減一,來限制單位時間內(nèi),固定只能輸入一單位字節(jié)的數(shù)據(jù)量。
文檔編號H04B17/00GK1434600SQ0210246
公開日2003年8月6日 申請日期2002年1月22日 優(yōu)先權(quán)日2002年1月22日
發(fā)明者陳俊儒, 吳昌璉 申請人:瑞昱半導(dǎo)體股份有限公司