專利名稱:一種劃分樹節(jié)點資源方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種劃分樹節(jié)點資源方法及裝置。
背景技術(shù):
在基于二叉樹存儲路由轉(zhuǎn)發(fā)前綴的路由器中,通常需要將多個虛擬專用網(wǎng)
(VPN, Virtual Private Network)的轉(zhuǎn)發(fā)前綴存儲在同一個二叉樹中,為了達 到比較理想的路由刷新性能,首先需要解決的是如何在一個二叉樹中為每個 VPN分配轉(zhuǎn)發(fā)前綴所需要的樹節(jié)點資源,使得當(dāng)一個或者多個VPN的表項增 多時,路由器可以分配足夠的樹節(jié)點資源,并且,路由器應(yīng)該盡量保證為每個 VPN分配的樹節(jié)點的編號連續(xù),因為,為一個VPN分配了編號連續(xù)的樹節(jié)點 后,查找引擎在搜索該VPN的時候,只需知道為該VPN分配的樹節(jié)點編號的 上邊界和下邊界就可以了 ,否則查找引擎需要記錄該VPN所使用的全部離散 的大樹節(jié)點,這除了需要增加額外的片內(nèi)隨機存儲器(RAM, Random Access Memory)資源外,還增加了對查找引擎設(shè)計的復(fù)雜度,降低了路由器路由的 刷新性能。
現(xiàn)有技術(shù)中,路由器中將二叉樹中的樹節(jié)點資源首先劃分為相同大小的 頁,所說的相同大小的頁是指每個頁中包括的樹節(jié)點數(shù)量相同,每個頁中的樹 節(jié)點編號連續(xù)。當(dāng)有一個VPN需要的樹節(jié)點數(shù)量比單個頁中提供的樹節(jié)點數(shù) 量大時,則需要為該VPN分配多于一個的頁。雖然每個頁中的樹節(jié)點編號連 續(xù),但是,為一個VPN分配的多個頁中包括的所有的樹節(jié)點編號未必是連續(xù) 的。
在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中采 用將樹節(jié)點資源劃分為相同大小的頁,雖然每個頁中的樹節(jié)點編號連續(xù),但是, 很難保證為每一個VPN分配的多個頁中的所有樹節(jié)點的編號都是連續(xù)的,增 加了對查找引擎設(shè)計的復(fù)雜度,降低了路由的刷新性能,并且很難提高樹節(jié)點 的利用率。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種劃分樹節(jié)點資源方法及裝置,可以解決了為 一個
VPN分配的樹節(jié)點編號不連續(xù)的問題,與現(xiàn)有技術(shù)相比提高了路由器的路由 刷新性能。
本發(fā)明實施例提供一種劃分樹節(jié)點資源方法,包括 對二叉樹中的樹節(jié)點資源編號,使得所述二叉樹中的樹節(jié)點的編號連續(xù);
將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點的編號 連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點。
本發(fā)明實施例還提供一種劃分樹節(jié)點資源的裝置,包括編號單元、配置 單元,
所述編號單元,用于對二叉樹中的樹節(jié)點資源編號,使得所述二叉樹中 的樹節(jié)點的編號連續(xù);
所述配置單元,用于將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個 頁中的樹節(jié)點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點。
本發(fā)明實施例將樹節(jié)點資源劃分為大小不同的頁,使得設(shè)備可以根據(jù)具體 VPN所需的樹節(jié)點數(shù)目來選擇相應(yīng)的頁,可以保證為每一個VPN分配一個頁, 即保證了為每一個VPN分配的樹節(jié)點編號連續(xù),與現(xiàn)有技術(shù)相比,提高了路由 器的路由刷新性能,降低了對查找引擎設(shè)計的復(fù)雜度。
為了更清楚地說明本發(fā)明實施例技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描 述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是 本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性 的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖l是本發(fā)明實施例一提供的一種劃分樹節(jié)點資源方法流程簡圖2是本發(fā)明實施例一中劃分頁和塊的簡單示意圖3是本發(fā)明實施例二中舉例的 一 個23層二叉樹結(jié)構(gòu)示意圖4是本發(fā)明實施例二提供的一種劃分樹節(jié)點資源方法流程簡圖;圖5是本發(fā)明實施例三中舉例的 一個二叉樹結(jié)構(gòu)示意圖6是本發(fā)明實施例三提供的 一種劃分樹節(jié)點資源方法流程簡圖7是本發(fā)明實施例四提供的一種存儲裝置的邏輯單元示意圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清 楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是 全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造 性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一、
本實施例提供一種劃分樹節(jié)點資源方法,如圖l所示,該方法包括 1:對二叉樹中的樹節(jié)點資源編號,使得二叉樹中的樹節(jié)點的編號連續(xù); 其中,對二叉樹中的樹節(jié)點從右至左的編號,使得所述二叉樹中的樹節(jié)點 的編號連續(xù),且最右邊樹節(jié)點的編號小于最左邊樹節(jié)點的編號。本實施例和后 續(xù)說明的實施例中都不限于從右至左的編號方法,也可以有其它編號的方法。 2:將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點的 編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點。
需要了解采用二叉樹結(jié)構(gòu)的存儲轉(zhuǎn)發(fā)前綴的路由器中的二叉樹中的每一 個樹節(jié)點都有固定的編號,編號是連續(xù)的整數(shù)。在路由器執(zhí)行為VPN分配二叉 樹上的樹節(jié)點資源之前,二叉樹上的樹節(jié)點資源已經(jīng)預(yù)先被分類,即二叉樹中 的樹節(jié)點資源被劃分為不同的頁(Page),多個頁的大小是不固定的,即有 些頁中包括的樹節(jié)點數(shù)量可以相同,有些頁中包括的樹節(jié)點的數(shù)量不同。對二 叉樹上的樹節(jié)點資源的劃分不必每次執(zhí)行資源分配方法時都執(zhí)行。
通過本實施例提供的一種劃分樹節(jié)點資源方法,采用將樹節(jié)點資源劃分為 大小不同的頁,使得設(shè)備可以根據(jù)具體VPN所需的樹節(jié)點數(shù)目來選擇相應(yīng)的 頁,可以保證為每一個VPN分配一個頁,即保證了為每一個VPN分配的樹節(jié)點 編號連續(xù),與現(xiàn)有技術(shù)相比,提高了路由器的路由刷新性能,降低了對查找引 擎設(shè)計的復(fù)雜度。本實施例提供的一種劃分樹節(jié)點資源方法,在2之后,還可以包括
3:將劃分的頁再劃分為多于一個的塊,劃分后的每一個塊中包括一個或 者多于一個頁,屬于一個塊中的每頁都具有相同數(shù)量的樹節(jié)點,屬于不同塊中 的任意兩個頁具有不同數(shù)量的樹節(jié)點。
其中,還需要說明的,上述3也可以在2之前執(zhí)行,即將二叉樹中的樹節(jié)點 資源劃分在多于 一 個的塊中;
則上述2中具體包括將劃分的塊中的樹節(jié)點資源劃分在多于一個的頁中, 每個頁中的樹節(jié)點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹 節(jié)點,且每一個塊中包括一個或者多于一個頁,屬于一個塊中的每頁都具有相 同數(shù)量的樹節(jié)點,屬于不同塊中的任意兩個頁具有不同數(shù)量的樹節(jié)點。
通過增加3,相當(dāng)于對頁做分類,具體可以使將大小相同的頁分類為一個 塊中,從而便于設(shè)備對樹節(jié)點資源的管理。
執(zhí)行完成上述2之后,或者,執(zhí)行完成上述2和3之后,本實施例提供的一 種劃分樹節(jié)點資源方法,還可以包括
4:獲取一個虛擬專用網(wǎng)(VPN)需要的樹節(jié)點數(shù)量;
其中,獲取一個VPN需要的樹節(jié)點數(shù)量具體可以是網(wǎng)絡(luò)管理員輸入的需要 為該VPN提供的數(shù)節(jié)點數(shù)量,也可以是其他方法使得路由器可以得知需要為該 VPN分配的資源大小。
5:為該VPN分配一個頁,該頁中包括的編號連續(xù)的樹節(jié)點數(shù)量大于或者 等于該VPN所需的樹節(jié)點數(shù)量。
其中,由于兩個或者多于兩個的頁中包括的所有樹節(jié)點的編號存在不連續(xù) 的情況,因此,通過5,將根據(jù)一個VPN實際需要的樹節(jié)點情況,選擇一個頁, 使得該頁可以為一個VPN纟是供足夠的,且編號連續(xù)的樹節(jié)點資源。
還需要說明的是,通常為了使得路由器便于管理樹節(jié)點資源,還需要對頁 進行劃分,將頁劃分為塊。如 一顆二叉樹中的樹節(jié)點資源被劃分為多個塊, 每個塊中的又包括一個或者多于一個的頁,相同塊中的每頁都具有相同數(shù)量的 樹節(jié)點資源;每塊中的單個頁中樹節(jié)點的數(shù)量逐漸遞增。如圖2所示,其中, 塊也可以分為兩類,包括普通塊(Normal Block)和混合塊(Hybrid Block);普通塊中可以包括多個塊,從Blockl、 Block2至Block n,且一個Block中的每 個Page的中的包括的樹節(jié)點數(shù)量相同(即同一個Block中的每個Page的大小相 同),Block2中單個Page的大小,比Blockl中單個Page的大,同理,按照從Blockl、 Block2至Blockn的順序,每個Block中單個Page的大小依次增大,即每個Block 中單個Page中包括的樹節(jié)點數(shù)量逐漸增多,其中,每個Block中單個Page中的 樹節(jié)點數(shù)量增多的方式可以有多種,如采用等差數(shù)列的方式增多,也可以按 照2K(K為0、 1、 2、 3等的整數(shù),K的個數(shù)與NormalBlock的數(shù)量相同)為每個 Block中單個Page分配樹節(jié)點資源,還可以根據(jù)具體的樹節(jié)點的最大利用率來 決定為每個Block的單Page規(guī)劃樹節(jié)點數(shù)量。其中,當(dāng)每個NormalBlock中單個 Page按照2K規(guī)劃樹節(jié)點資源時,不同Normal Block中的Page的粒度的差異比較 大,此時樹節(jié)點的最大利用率為50%。
上述將Page歸類為不同的Block的方法,使得路由器對二叉樹中的樹節(jié)點 資源的管理更加靈活、合理。
本實施例提供的一種劃分樹節(jié)點資源方法,路由器根據(jù)每個VPN所需要的 樹節(jié)點數(shù)量,來選擇為每個VPN分配一個相應(yīng)的頁,該相應(yīng)的頁也就是具有編 號連續(xù)的樹節(jié)點數(shù)量大于或者等于與頁相應(yīng)的VPN所需的樹節(jié)點數(shù)量的頁,采 用這種資源分配方法,使得為每個VPN分配的樹節(jié)點資源的編號連續(xù),與現(xiàn)有 技術(shù)相比,提高了路由器的路由刷新性能,降低了對查找引擎設(shè)計的復(fù)雜度。 同時,提高了基于二叉樹存儲轉(zhuǎn)發(fā)前綴的路由器中樹節(jié)點的利用率。
實施例二、
本實施例提供一種劃分樹節(jié)點資源方法,本實施例提供的方法與實施例一 提供的方法相似,本實施例提供的方法是比實施例一更具體的一種劃分樹節(jié)點 資源方法。在本實施例中僅以一個23層的二叉樹為例做說明一種劃分樹節(jié)點資 源方法,其它基于具體形式的二叉樹的資源分配方法,可以參考本實施例而容 易獲得。
如圖3所示, 一個23層的二叉樹結(jié)構(gòu),該二叉樹又分為兩部分,包括二 叉樹的頂部包括15層、 一共32K-1個的大樹節(jié)點,和底部共有8層的小樹節(jié)點。 其中,32K-l個的大樹節(jié)點中每一個大樹節(jié)點通過指針與一棵小樹關(guān)聯(lián)。其中,為每個VPN分配的樹節(jié)點資源是大樹節(jié)點,可以理解成為VPN分配的樹節(jié)點資 源是按照255的粒度進行的。采用為VPN分配大樹節(jié)點的好處是大樹節(jié)點的 數(shù)量是32K-1個,而大樹節(jié)點和小樹節(jié)點的總和是8M個;對32K-1個樹節(jié)點的 管理顯然比對8M個樹節(jié)點的管理更容易。因此,下面所說明的為VPN分配的 樹節(jié)點資源是指分配的大樹節(jié)點。
如圖4所示,本實施例提供的方法包括
Al:對二叉樹中的樹節(jié)點資源編號,使得二叉樹中的樹節(jié)點的編號連續(xù); A2:將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點
的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點;
A3:將劃分的頁再劃分為多于一個的塊,劃分后的每一個塊中包括一個
或者多于一個頁,屬于一個塊中的每頁都具有相同數(shù)量的樹節(jié)點,屬于不同塊
中的任意兩個頁具有不同數(shù)量的樹節(jié)點;
A4:獲取一個虛擬專用網(wǎng)(VPN)需要的大樹節(jié)點數(shù)量;
其中,獲取一個VPN需要的大樹節(jié)點數(shù)量的方法具體可以是首先獲取該
VPN—共需要的樹節(jié)點資源,再次,計算該VPN需要的大樹節(jié)點的數(shù)量。例如
一個VPN需要的是600個樹節(jié)點資源, 一個大樹節(jié)點下包括有255個小數(shù)節(jié)點,
則該VPN需要三個大樹節(jié)點。還有其它獲取VPN需要的大樹節(jié)點數(shù)量的方法,
此處說明不應(yīng)該理解為對本實施例的限制。
需要理解的是,大樹節(jié)點和小樹節(jié)點在路由器中的作用是相同的,都用于
存儲轉(zhuǎn)發(fā)前綴。
A5:為該VPN分配一個頁,該頁中包括的編號連續(xù)的樹節(jié)點數(shù)量大于或 者等于該VPN所需的大樹節(jié)點數(shù)量。
其中,需要說明的是,在該路由器中二叉樹中的大樹節(jié)點在執(zhí)行該方法之 前已經(jīng)預(yù)先被劃分為頁,多個頁又被歸類為不同的塊,塊被劃分為普通塊和 混合塊。仍然參見圖2所示,在該路由器中包括8個NormalBlock和l個Hybrid Block,其中,8個NormalBlock分別是Blockl至Block8。每個Block中包括多 于l個Page,歸屬于同一個NormalBlock中的每個Page包括有相同數(shù)目的大樹節(jié) 點。且從Blockl至Block8中單個Page中大樹節(jié)點數(shù)目逐漸增多,具體可以是歸屬于Blockl中單個Page的大樹節(jié)點數(shù)目為l,歸屬于Block2中單個Page的大 樹節(jié)點數(shù)目為2,歸屬于Block3中單個Page的大樹節(jié)點數(shù)目為4,依次類推,歸 屬于Block8中單個Page的大樹節(jié)點數(shù)目為27;將Hybrid Block中單個Page中的大 樹節(jié)點數(shù)目可以設(shè)置為350。則采用上述設(shè)置各個Page的大小的方法,二叉樹 中所有樹節(jié)點的利用率最差可以達到50 % 。通常多個Normal Block中單Page的 大小是有規(guī)律增大,而Hybrid Block中的單Page通常比Normal Block中單Page 的大。
如果當(dāng)前VPN需要的大樹節(jié)點數(shù)量是7個,則路由器會將Block4中(單Page 大小為8個大樹節(jié)點)分配一個Page給該VPN。
其中,需要說明的是各個Page中具體的大樹節(jié)點的數(shù)目不是固定的,可以 根據(jù)目的利用率而具體設(shè)置數(shù)目。通常利用率越低則該路由器路由刷新性能越 好;而利用率越高,則路由器中存儲的轉(zhuǎn)發(fā)前綴越多,存儲前綴的容量就越大, 而路由器的路由刷新性能則比采用利用率低的劃分樹節(jié)點的路由器性能低。因 此,設(shè)計者根據(jù)實際情況決定利用率,從而劃分塊和頁。
A6:當(dāng)一個VPN需要的大樹節(jié)點數(shù)量增加,使得當(dāng)前VPN需要的大樹節(jié) 點數(shù)量大于已經(jīng)分配的頁中提供的大樹節(jié)點數(shù)量時,為該VPN重新分配一個 頁,重新分配的頁中包括的編號連續(xù)的大樹節(jié)點數(shù)量大于或者等于當(dāng)前VPN 需要的大樹節(jié)點數(shù)量;
其中,以A5中已經(jīng)說明的,對路由器中二叉樹中的大樹節(jié)點的預(yù)先劃分 結(jié)果,如果VPN需要的大樹節(jié)點數(shù)量增加,當(dāng)前VPN需要30個大樹節(jié)點,則在 Normal Block5中(單Page大小為32個大樹節(jié)點)分配兩個Page給該VPN; 如果當(dāng)前VPN需要300個大樹節(jié)點,則在Hybrid Block中(單Page大小為350個 大樹節(jié)點)分配一個Page給該VPN。則Block4中的Page被釋放,如下A5中的說 明。
A7:釋放A6中的VPN增加需要的大樹節(jié)點數(shù)量之前,已經(jīng)為該VPN分配 的頁。
需要說明的是,上述A6中,當(dāng)VPN需要的大樹節(jié)點數(shù)量增加到300個時, Hybrid Block中分配了 一個Page給該VPN。本實施例提供的一種劃分樹節(jié)點資源方法,將樹節(jié)點資源劃分為大小不同
的頁,根據(jù)每個VPN所需要的樹節(jié)點數(shù)量,來選擇為每個VPN分配一個相應(yīng)的
頁,該相應(yīng)的頁也就是具有編號連續(xù)的樹節(jié)點數(shù)量大于或者等于與頁相應(yīng)的
VPN所需的大樹節(jié)點數(shù)量的頁,采用這種資源分配方法,使得為大多數(shù)VPN 分配的樹節(jié)點資源的編號連續(xù),與現(xiàn)有技術(shù)相比,提高了路由器的路由刷新性 能,降低了對查找引擎設(shè)計的復(fù)雜度。 實施例三、
本實施例提供一種劃分樹節(jié)點資源方法,本實施例提供的方法是在實施例 一或者實施例二的基礎(chǔ)上實施的。在對本實施例做說明之前,需要說明的是, 路由器中的二叉樹是用來存儲IPv4或者IPv6等表項的,由于一個樹節(jié)點只能存 儲長度為32比特(bit)的表項,因此,對于超過32bit的表項,需要同時使用多 個樹節(jié)點,例如存儲64bit的表項,需要使用2個32bit的樹節(jié)點。
由于大樹節(jié)點和小樹節(jié)點的作用是相同的,因此,可以將大樹節(jié)點和小樹 節(jié)點統(tǒng)一稱為樹節(jié)點。本實施例中以樹節(jié)點做說明。
為了提高樹節(jié)點的利用率,通常二叉樹中用來存儲32bit和64bit的表項,如 圖5所示,對于64bit的表項,需要兩個同層的32bit樹節(jié)點來進行存儲,并且需 要保證32bit和64bit的空間不能重疊,為便于理解這里說的重疊,舉例包括如 果一棵二叉樹中的樹節(jié)點的編號分別是從1到31,其中,編號從1到16的樹節(jié)點 用于存儲32bit的表項,編號從17到31的樹節(jié)點用于存儲64bit的表項;則當(dāng)32bit 的表項空間不夠用,即使編號從17至23的樹節(jié)點即時沒有64bit的表項占用,也 不可以將編號從17至23的樹節(jié)點分配給32bit的表項使用,因此,在32bit和64bit 的邊界處會產(chǎn)生節(jié)點浪費的情況,降低了節(jié)點的利用率。
因此,在一棵二叉樹被32bit和64bit的邊界分為兩部分 一部分存儲32bit 的表項, 一部分存儲64bit的表項,即一棵二叉樹中的樹節(jié)點分為存儲短表項 的樹節(jié)點和存儲長表項的樹節(jié)點的兩部分,其中,存儲短表項就認(rèn)為是存儲 32bit的表項,存儲長表項就認(rèn)為是存儲64bit,或者更高位寬的表項。對于現(xiàn)有 技術(shù)中,二叉樹中32bit和64bit的邊界是根據(jù)路由表項的變化而相應(yīng)調(diào)整的,長 表項和短表項共享整個二叉樹空間。為了便于路由器查找和刷新表項,二叉樹中存儲每個表項的位置都有固定
的編號,如圖5中簡單舉例,VPN A和VPN B是兩個需要用64bit表項表示的虛 擬專用網(wǎng),兩個同層的樹節(jié)點(便于理解,也可以認(rèn)為是由一個父節(jié)點衍生出 的兩個子節(jié)點)存儲一個表項,對兩個樹節(jié)點組成的存儲位置重新編號,重新 編號后的兩個樹節(jié)點組成的存儲位置的編號也是固定的,例如為VPN B分 配的是編號為9至12的存儲位置,每個存儲位置是由兩個樹節(jié)點組成;為VPNA 分配的是編號為13至15的存儲位置。
VPN C 、 VPN D和VPN E三個網(wǎng)絡(luò)是用32bit表項表示的虛擬專用網(wǎng),為這 三個虛擬專用網(wǎng)分配的樹節(jié)點分別是樹節(jié)點編號為8至16,樹節(jié)點編號為3 至7,和樹節(jié)點編號為1至2。
如果路由器需要給VPNF分配樹節(jié)點資源,VPNF中網(wǎng)段采用32bit的表項 表示,而當(dāng)前32bit空間中的樹節(jié)點資源已經(jīng)用盡,而64bit空間中還有樹節(jié)點沒 有被使用,如圖5所示,假設(shè)樹節(jié)點17至19沒有被占用,則可以增加一個虛擬 樹節(jié)點,該虛擬樹節(jié)點與編號為22的樹節(jié)點組成一個64bit的存儲空間,因此, 可以將樹節(jié)點17至19劃分到32bit的存儲空間中,使得32bit和64bit的邊界是動 態(tài)的,而不是固定不變的。從而提高了二叉樹中樹節(jié)點的利用率。圖5所示的 二叉樹是一種非常簡單的二叉樹,對于路由器中包括層數(shù)較多的二叉樹可以依 照圖5所示的二叉樹進行資源分配。
上述是為了便于理解本實施例三提供的一種劃分樹節(jié)點資源方法的說明, 下面對本實施例提供的方法做說明,如圖6所示,該方法包括
Bl:對二叉樹中的樹節(jié)點資源縞號,使得二叉樹中的樹節(jié)點的編號連續(xù);
B2:將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點 的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點;
B3:將劃分的頁再劃分為多于一個的塊,劃分后的每一個塊中包括一個 或者多于一個頁,屬于一個塊中的每頁都具有相同數(shù)量的樹節(jié)點,屬于不同塊 中的任意兩個頁具有不同數(shù)量的樹節(jié)點;
其中,對于采用32bit的表項來表示VPN的包括的網(wǎng)段時,每一個樹節(jié)點就 可以存儲32bit的網(wǎng)段,因此,一個樹節(jié)點就可以表示一個表項;而對于采用64bit的表項來表示VPN的包括的網(wǎng)段時,需要兩個樹節(jié)點來表示一個表項,已經(jīng)說 明通常這兩個樹節(jié)點是同層的。為了更清楚的理解本發(fā)明,可以將同層的兩個
樹節(jié)點認(rèn)為重新構(gòu)成了一個新的樹節(jié)點,這個新的樹節(jié)點可以存儲64bit的網(wǎng) 段。因此,B2和B3中的樹節(jié)點可以理解為每一個樹節(jié)點可以存儲32bit的網(wǎng)段, 也可以理解為每一個樹節(jié)點可以存儲64bit的網(wǎng)段(即該樹節(jié)點是由兩個位寬為 32bit的樹節(jié)點構(gòu)成的),或者,也可以理解為每一個樹節(jié)點可以存儲32bit的整 數(shù)倍的網(wǎng)段。
上述B2、 B3可以與實施一中的l、 2相同,具體i兌明可以參考實施例一。 B4:當(dāng)用于存儲短表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié) 點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲長表項的樹節(jié) 點時,將邊界處,沒有被占用的用于存儲長表項的樹節(jié)點,劃分為用于存儲短 表項的樹節(jié)點,重新獲得用于存儲短表項的樹節(jié)點,和用于存儲長表項的樹節(jié) 點的第一邊界;
其中,B4中說的存儲短表項的樹節(jié)點和存儲長表項的樹節(jié)點的邊界處, 仍然參照圖5,對于如圖中所示的對二叉樹的樹節(jié)點的編號規(guī)律,可知,此處 所說的邊界,就是將編號1至31的樹節(jié)點,從編號16和17之間劃界,其中,編 號1至16的樹節(jié)點用于存儲短表項,編號17至31的樹節(jié)點用于存儲長表項,位 于存儲短表項的樹節(jié)點和存儲長表項的樹節(jié)點的邊界處是指從編號17開始,編 號連續(xù)遞增的樹節(jié)點。
以上根據(jù)圖5所示的編號方式來說明邊界的概念,需要理解的是,對于不 同的編號方式,邊界的理解有多種,從標(biāo)準(zhǔn)的二叉樹圖形來看,存儲短表項的 樹節(jié)點和存儲長表項的樹節(jié)點的邊界,如圖5中所示用直線將二叉樹中樹節(jié)點 分為兩部分。
B5:如果邊界將附屬于同一個父節(jié)點的兩個用于存儲長表項的樹節(jié)點中 的低32比特樹節(jié)點,劃分為用于存儲短表項的樹節(jié)點時,則增加虛擬樹節(jié)點, 使得附屬于同一個父節(jié)點的兩個用于存儲長表項的樹節(jié)點中的高32比特樹節(jié) 點,與增加的虛擬樹節(jié)點形成存儲長表項的空間;
其中,B5中增加的虛擬樹節(jié)點在實現(xiàn)上可以通過增 加的隨機存儲器(RAM, Random Access Memory)實現(xiàn)。
其中,為了便于理解B5,仍然以圖5為例說明,假設(shè)被劃分為用于存儲長 表項編號為17、 18、 19三個樹節(jié)點當(dāng)前是沒有被占用的,而存儲短表項的樹節(jié) 點不夠用,則將編號為17、 18、 19的三個樹節(jié)點劃分為可以存儲短表項,而與 編號18的樹節(jié)點附屬于同一個父節(jié)點的樹節(jié)點,即編號為22的樹節(jié)點,沒有被 劃分為存儲短表項,編號為22的樹節(jié)點需要和增加的虛擬樹節(jié)點重新組合,才 可以用于存儲長表項。還需要說明的是,屬于同一個父節(jié)點中的兩個用于存儲 長表項的樹節(jié)點包括高32比特樹節(jié)點和低32比特樹節(jié)點;例如編號為28 的樹節(jié)點和編號為20的樹節(jié)點是同屬于一個父節(jié)點(即編號為24的樹節(jié)點), 其中,編號為28的樹節(jié)點為高32比特樹節(jié)點,編號為20的樹節(jié)點低32比特樹節(jié) 點;通常同屬于一個父節(jié)點的兩個樹節(jié)點中,編號數(shù)大的樹節(jié)點為高32比特樹 節(jié)點,編號數(shù)小的樹節(jié)點為低32比特樹節(jié)點。
或者,假設(shè)被劃分為用于存儲長表項編號為17、 18、 19、 20四個樹為節(jié)點 當(dāng)前是沒有被占用的,將上述四個樹節(jié)點劃分為存儲短表項,而與編號20、 18 的樹節(jié)點附屬于同一個父節(jié)點的樹節(jié)點,即編號為28、 22的樹節(jié)點,沒有被劃 分為存儲短表項,編號分別為28、22的樹節(jié)點需要和增加虛擬樹節(jié)點重新組合, 才可以用于存儲長表項。
通過上述對B5的說明可知,對于一次重新劃分邊界,需要增加的虛擬樹 節(jié)點的數(shù)量可以是多于一個。對于一個二叉樹的底層和頂層一般不會增加虛擬 樹節(jié)點,例如對于15層大樹的二叉樹,其第1層和第15層不會增加虛擬樹節(jié) 點。
B6:當(dāng)用于存儲長表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié) 點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲短表項的樹節(jié) 點時,將邊界處,沒有被占用的用于存儲短表項的樹節(jié)點,劃分為用于存儲長 表項的樹節(jié)點;其中,用于存儲長表項的樹節(jié)點中,歸屬于同一個父節(jié)點的兩 個樹節(jié)點存儲一個長表項;用于存儲短表項的樹節(jié)點中, 一個樹節(jié)點存儲一個 短表項。
其中,當(dāng)用于存儲長表項的樹節(jié)點資源中沒有虛擬樹節(jié)點時,則B6中可以直接將沒有被占用的存儲短表項的樹節(jié)點,劃分為用于存儲長表項。
B7:當(dāng)用于存儲長表項的樹節(jié)點資源中有虛擬樹節(jié)點時,判斷與虛擬樹 節(jié)點形成存儲長表項的空間的樹節(jié)點,是否能夠與第二邊界從用于存儲短表項 的樹節(jié)點中劃分的,用于存儲長表項的樹節(jié)點,重新形成存儲長表項的空間, 如果是,則釋放虛擬樹節(jié)點。
通過上述B7,使得在有虛擬樹節(jié)點的情況下,將用于存儲短表項的樹節(jié) 點劃分為用于存儲長表項時,新加入的樹節(jié)點不會與虛擬樹節(jié)點沖突。
還需要說明的是,對于上述B4和B7,路由器中不可能無限制的擴大存儲 短表項的空間,或者不可能無限制的擴大存儲長表項的空間,可以允許的最大 范圍可以根據(jù)實際應(yīng)用而決定。
通過上述對B1至B7的說明,可知路由器根據(jù)每個VPN所需要的樹節(jié)點數(shù) 量,來選擇為每個VPN分配一個相應(yīng)的頁,在很大程度上使得為大多數(shù)VPN 分配的樹節(jié)點資源的編號連續(xù),與現(xiàn)有技術(shù)相比,提高了路由器的路由刷新性 能,降低了對查找引擎設(shè)計的復(fù)雜度;進一步,根據(jù)VPN所需的樹節(jié)點情況, 動態(tài)的劃分用于存儲長表項和存儲短表項的樹節(jié)點資源,提高了樹節(jié)點的利用 率,與現(xiàn)有技術(shù)相比,減少了對樹節(jié)點的浪費。
還需要說明的是,以上提供的三個實施例中是以路由器作為方法的執(zhí)行實 體,事實上,執(zhí)行該方法的實體不限于路由器,也可以是一種存儲裝置,也可 以是其它,不應(yīng)該理解為對以上三個實施例的限制。
實施例四、
本實施例提供一種劃分樹節(jié)點資源的裝置,如圖7所示,該劃分樹節(jié)點資 源的裝置包括編號單元10和配置單元20。
其中,編號單元IO,用于對二叉樹中的樹節(jié)點資源編號,使得所述二叉 樹中的樹節(jié)點的編號連續(xù);
該配置單元20,用于將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個 頁中的樹節(jié)點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié) 點。
配置單元20中具體可以是根據(jù)樹節(jié)點的利用率來劃分頁的大小。配置單元20中詳細(xì)的劃分頁和塊的說明可以由方法實施例中說明而容易 獲得,此處不重述。
通過本實施例子提供的一種劃分樹節(jié)點資源的裝置,采用將樹節(jié)點資源劃
分為大小不同的頁,使得設(shè)備可以根據(jù)具體VPN所需的樹節(jié)點數(shù)目來選擇相應(yīng) 的頁,可以保證為每一個VPN分配的一個頁,即保證了為每一個VPN分配的樹 節(jié)點編號連續(xù)。
可選的,該配置單元20,還可以用于將所述劃分的頁再劃分為多于一個的 塊,所述劃分后的每一個塊中包括一個或者多于一個頁,屬于一個塊中的每頁 都具有相同數(shù)量的樹節(jié)點,屬于不同塊中的任意兩個頁具有不同數(shù)量的樹節(jié) 點。
該配置單元20通過增加上述功能,相當(dāng)于對頁做分類,具體可以使將大小 相同的頁分類為一個塊中,從而便于裝置對樹節(jié)點資源的管理。
可選的,該裝置還可以包括獲取單元30,分配單元40和存儲單元50。
其中,獲取單元30,用于獲取一個虛擬專用網(wǎng)(VPN)需要的樹節(jié)點數(shù)量;
分配單元40,用于為該VPN分配一個頁,該頁中包括的編號連續(xù)的樹節(jié)點 數(shù)量大于或者等于該VPN所需的樹節(jié)點數(shù)量;
所述存儲單元50,用于根據(jù)為VPN分配的頁,存儲VPN的轉(zhuǎn)發(fā)前綴,所述 樹節(jié)點代表存儲空間。
通過上述對本實施例提供的一種劃分樹節(jié)點資源的裝置,該裝置可以根據(jù) 每個VPN所需要的樹節(jié)點數(shù)量,來選擇為每個VPN分配一個相應(yīng)的頁,該相應(yīng) 的頁也就是具有編號連續(xù)的樹節(jié)點數(shù)量^于或者等于與頁相應(yīng)的VPN所需的 樹節(jié)點數(shù)量的頁,采用這種資源分配方法,使得為每個VPN分配的樹節(jié)點資源 的編號連續(xù),與現(xiàn)有技術(shù)相比,提高了路由器的路由刷新性能,降低了對查找 引擎設(shè)計的復(fù)雜度。
可選的,分配單元40還用于當(dāng)一個VPN需要的樹節(jié)點數(shù)量增加,使得當(dāng)前 VPN需要的樹節(jié)點數(shù)量大于已經(jīng)為該VPN分配的頁中提供的樹節(jié)點數(shù)量時,為 該VPN重新分配一個頁,重新分配的頁中包括的編號連續(xù)的樹節(jié)點數(shù)量大于或 者等于當(dāng)前VPN需要的樹節(jié)點數(shù)量。則所述存儲單元50還用于釋放已經(jīng)為該VPN分配的頁,其中,已經(jīng)為該 VPN分配的頁為為該VPN在增加需要的樹節(jié)點數(shù)量之前已經(jīng)分配的頁。
其中,存儲單元50中釋放之前為VPN分配的頁,具體的操作可以是將該頁 中存儲的轉(zhuǎn)發(fā)前綴刪除,作為空的頁回收。
可選的,該存儲裝置中還可以包括第二資源調(diào)整單元80和配置虛擬樹節(jié) 點單元70。
其中,第二資源調(diào)整單元80,用于當(dāng)用于存儲短表項的樹節(jié)點數(shù)量不足, 并且位于存儲短表項的樹節(jié)點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占 用的用于存儲長表項的樹節(jié)點時,將所述邊界處,沒有被占用的用于存儲長表 項的樹節(jié)點,劃分為用于存儲短表項的樹節(jié)點,重新獲得用于存儲短表項的樹 節(jié)點,和用于存儲長表項的樹節(jié)點的第一邊界;
配置虛擬樹節(jié)點單元80,用于如果所述邊界將附屬于同一個父節(jié)點的兩個 用于存儲長表項的樹節(jié)點中的低32比特樹節(jié)點,劃分為用于存儲短表項的樹節(jié) 點時,則增加虛擬樹節(jié)點,使得所述附屬于同一個父節(jié)點的兩個用于存儲長表 項的樹節(jié)點中的高32比特樹節(jié)點,與所述增加的虛擬樹節(jié)點形成存儲長表項的 空間。
則分配單元30,還用于將劃分后獲得的用于存儲短表項的樹節(jié)點分配給所 述一個或者多于一個虛擬專用網(wǎng)。
可選的,該存儲裝置還可以包括第一資源調(diào)整單元60,用于當(dāng)用于存儲 長表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié)點和存儲長表項的樹節(jié) 點的邊界處,存在沒有被占用的用于存儲短表項的樹節(jié)點時,將所述邊界處, 沒有被占用的用于存儲短表項的樹節(jié)點,劃分為用于存儲長表項的樹節(jié)點;其 中,所述用于存儲長表項的樹節(jié)點中,歸屬于同一個父節(jié)點的兩個樹節(jié)點存儲 一個長表項;所述用于存儲短表項的樹節(jié)點中, 一個樹節(jié)點存儲一個短表項。
述一個或者多于一個虛擬專用網(wǎng)。
可選的,第一資源調(diào)整單元60,還用于當(dāng)用于存儲長表項的樹節(jié)點數(shù)量不 足,并且位于存儲短表項的樹節(jié)點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲短表項的樹節(jié)點時,將所述邊界處,沒有被占用的用于存儲 短表項的樹節(jié)點,劃分為用于存儲長表項的樹節(jié)點,從而重新獲得用于存儲短 表項的樹節(jié)點,和用于存儲長表項的樹節(jié)點的第二邊界;
貝'J,本實施例提供的一種劃分樹節(jié)點資源的裝置,還包括判斷單元90; 其中,判斷單元90,用于當(dāng)用于存儲長表項的樹節(jié)點資源中有虛擬樹節(jié)點 時,判斷與所述虛擬樹節(jié)點形成存儲長表項的空間的樹節(jié)點,是否能夠與第二
邊界從用于存儲短表項的樹節(jié)點中劃分的,用于存儲長表項的樹節(jié)點,重新形 成存儲長表項的空間,如果是,通知所述配置虛擬樹節(jié)點單元;
貝'J,配置虛擬樹節(jié)點單元70,還用于當(dāng)與虛擬樹節(jié)點形成存儲長表項的空 間的樹節(jié)點,能夠與第二邊界從用于存儲短表項的樹節(jié)點中劃分的,用于存儲 長表項的樹節(jié)點,重新形成存儲長表項的空間時,釋放所述虛擬樹節(jié)點。
還需要說明的是,虛擬樹節(jié)點的實現(xiàn)通??梢圆捎肦AM實現(xiàn),因此,在 該存儲裝置中還可以可選的包括RAM,用于實現(xiàn)虛擬樹節(jié)點。
上述所說明的所有邏輯模塊的其他說明,可以參考本實施例提供的一種劃 分樹節(jié)點資源方法的相關(guān)說明,而容易得知。
本實施例中提供的存儲裝置,通過增加第一資源調(diào)整單元60、第二資源調(diào) 整單元80、配置虛擬樹節(jié)點單元70和判斷單元90,使得該存儲裝置可以根據(jù) VPN所需的樹節(jié)點情況,動態(tài)的劃分用于存儲長表項和存儲短表項的樹節(jié)點資 源,提高了樹節(jié)點的利用率,與現(xiàn)有技術(shù)相比,減少了對樹節(jié)點的浪費。
領(lǐng)i或晉通《爻冬人貝
驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀 存儲介質(zhì)中,存儲介質(zhì)可以包括ROM、 RAM、磁盤或光盤等。
以上對本發(fā)明實施例所提供的一種劃分樹節(jié)點資源方法及裝置進行了詳
實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng) 域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有 改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理 為對本發(fā)明的限制。
權(quán)利要求
1、一種劃分樹節(jié)點資源方法,其特征在于,包括對二叉樹中的樹節(jié)點資源編號,使得所述二叉樹中的樹節(jié)點的編號連續(xù);將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點。
2、 根據(jù)權(quán)利要求l所述的劃分樹節(jié)點資源方法,其特征在于,在將二叉樹 中的樹節(jié)點資源劃分在多于 一個的頁中之后,所述方法還包括將劃分的頁再劃分為多于一個的塊,所述劃分后的每一個塊中包括一個或 者多于一個頁,屬于一個塊中的每頁都具有相同數(shù)量的樹節(jié)點,屬于不同塊中 的任意兩個頁具有不同數(shù)量的樹節(jié)點。
3、 根據(jù)權(quán)利要求l所述的劃分樹節(jié)點資源方法,其特征在于,在將二叉樹 中的樹節(jié)點資源劃分在多于一個的頁中之前,所述方法還包括將二叉樹中的樹節(jié)點資源劃分在多于一個的塊中;則所述將二叉樹中的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié) 點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點,具體包括將劃分的塊中的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點的 編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點,且每一個塊中 包括一個或者多于一個頁,屬于一個塊中的每頁都具有相同數(shù)量的樹節(jié)點,屬 于不同塊中的任意兩個頁具有不同數(shù)量的樹節(jié)點。
4、 根據(jù)權(quán)利要l所述的劃分樹節(jié)點資源方法,其特征在于,在將二叉樹中 的樹節(jié)點資源劃分在多于一個的頁中之后,所述方法還包括獲取一個虛擬專用網(wǎng)需要的樹節(jié)點數(shù)量;為所述虛擬專用網(wǎng)分配一個頁,所述頁中包括的編號連續(xù)的樹節(jié)點數(shù)量大 于或者等于所述虛擬專用網(wǎng)所需的樹節(jié)點數(shù)量。
5、 根據(jù)權(quán)利要求4所述的劃分樹節(jié)點資源方法,其特征在于,所述為虛擬 專用網(wǎng)分配一個頁之后,所述方法還包括當(dāng)一個虛擬專用網(wǎng)需要的樹節(jié)點數(shù)量增加,使得當(dāng)前所述虛擬專用網(wǎng)需要 的樹節(jié)點數(shù)量大于已經(jīng)為所述虛擬專用網(wǎng)分配的頁中提供的樹節(jié)點數(shù)量時,為 所述虛擬專用網(wǎng)重新分配一個頁,新分配的一個頁中包括的編號連續(xù)的樹節(jié)點數(shù)量大于或者等于所述當(dāng)前虛擬專用網(wǎng)需要的樹節(jié)點數(shù)量;釋放已經(jīng)為所述虛擬專用網(wǎng)分配的頁,所述已經(jīng)為虛擬專用網(wǎng)分配的頁為為所述虛擬專用網(wǎng)在增加需要的樹節(jié)點數(shù)量之前已經(jīng)分配的頁。
6、 根據(jù)權(quán)利要求l所述的劃分樹節(jié)點資源方法,其特征在于,在將二叉樹 中的樹節(jié)點資源劃分在多于一個的頁中之后,所述方法還包括當(dāng)用于存儲長表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié)點和存 儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲短表項的樹節(jié)點時, 將所述邊界處,沒有被占用的用于存儲短表項的樹節(jié)點,劃分為用于存儲長表 項的樹節(jié)點;其中,所述用于存儲長表項的樹節(jié)點中,歸屬于同一個父節(jié)點的兩個樹節(jié) 點存儲一個長表項;所述用于存儲短表項的樹節(jié)點中, 一個樹節(jié)點存儲一個短 表項。
7、 根據(jù)權(quán)利要求1或者6所述的劃分樹節(jié)點資源方法,其特征在于,在將 二叉樹中的樹節(jié)點資源劃分在多于一個的頁中之后,所述方法還包括當(dāng)用于存儲短表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié)點和存 儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲長表項的樹節(jié)點時, 將所述邊界處,沒有被占用的用于存儲長表項的樹節(jié)點,劃分為用于存儲短表 項的樹節(jié)點,重新獲得用于存儲短表項的樹節(jié)點,和用于存儲長表項的樹節(jié)點 的第一邊界;如果所述邊界將附屬于同一個父節(jié)點的兩個用于存儲長表項的樹節(jié)點中 的低32比特樹節(jié)點,劃分為用于存儲短表項的樹節(jié)點時,則增加虛擬樹節(jié)點, 使得所述附屬于同一個父節(jié)點的兩個用于存儲長表項的樹節(jié)點中的高32比特 樹節(jié)點,與所述增加的虛擬樹節(jié)點形成存儲長表項的空間。
8、 根據(jù)權(quán)利要求7所述的劃分樹節(jié)點資源方法,其特征在于,所述增加虛 擬樹節(jié)點之后,所述方法還包括當(dāng)用于存儲長表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié)點和存 儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲短表項的樹節(jié)點時, 將所述邊界處,沒有被占用的用于存儲短表項的樹節(jié)點,劃分為用于存儲長表項的樹節(jié)點,從而重新獲得用于存儲短表項的樹節(jié)點,和用于存儲長表項的樹節(jié)點的第二邊界;當(dāng)用于存儲長表項的樹節(jié)點資源中有虛擬樹節(jié)點時,判斷與所述虛擬樹節(jié) 點形成存儲長表項的空間的樹節(jié)點,是否能夠與第二邊界從用于存儲短表項的 樹節(jié)點中劃分的,用于存儲長表項的樹節(jié)點,重新形成存儲長表項的空間,如 果是,則釋放所述虛擬樹節(jié)點。
9、 根據(jù)權(quán)利要求l所述的劃分樹節(jié)點資源方法,其特征在于,所述對二叉 樹中的樹節(jié)點編號,使得所述二叉樹中的樹節(jié)點的編號連續(xù),具體包括對二叉樹中的樹節(jié)點從右至左的編號,使得所述二叉樹中的樹節(jié)點的編號連續(xù),且最右邊樹節(jié)點的編號小于最左邊樹節(jié)點的編號。
10、 一種劃分樹節(jié)點資源的裝置,其特征在于,包括編號單元、配置單元,所述編號單元,用于對二叉樹中的樹節(jié)點資源編號,使得所述二叉樹中 的樹節(jié)點的編號連續(xù);所述配置單元,用于將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個 頁中的樹節(jié)點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié) 點。
11、 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述配置單元,還用于將 劃分的頁再劃分為多于一個的塊,所述劃分后的每一個塊中包括一個或者多于 一個頁,屬于一個塊中的每頁都具有相同數(shù)量的樹節(jié)點,屬于不同塊中的任意 兩個頁具有不同數(shù)量的樹節(jié)點。
12、 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括獲取單 元、分配單元和存儲單元;所述獲取單元,用于獲取一個虛擬專用網(wǎng)需要的樹節(jié)點數(shù)量; 所述分配單元,用于為所述虛擬專用網(wǎng)分配一個頁,所述頁中包括的編號連續(xù)的樹節(jié)點數(shù)量大于或者等于所述虛擬專用網(wǎng)所需的樹節(jié)點數(shù)量;所述存儲單元,用于根據(jù)為所述虛擬專用網(wǎng)分配的頁,存儲所述虛擬專用網(wǎng)的轉(zhuǎn)發(fā)前綴,所述樹節(jié)點代表存儲空間。
13、 根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述分配單元,還用于當(dāng)一個虛擬專用網(wǎng)需要的樹節(jié)點數(shù)量增力口,使得當(dāng)前所述虛擬專用網(wǎng)需要的樹節(jié) 點數(shù)量大于已經(jīng)為所述虛擬專用網(wǎng)分配的頁中提供的樹節(jié)點數(shù)量時,為所述虛 擬專用網(wǎng)重新分配一個頁,新分配的一個頁中包括的編號連續(xù)的樹節(jié)點^t量大 于或者等于所述當(dāng)前虛擬專用網(wǎng)需要的樹節(jié)點數(shù)量;所述存儲單元,還用于釋放已經(jīng)為所述虛擬專用網(wǎng)分配的頁,所述已經(jīng)為虛擬專用網(wǎng)分配的頁為為所述虛擬專用網(wǎng)在增加需要的樹節(jié)點數(shù)量之前已經(jīng) 分配的頁。
14、 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括第一資 源調(diào)整單元,所述第一資源調(diào)整單元,用于當(dāng)用于存儲長表項的樹節(jié)點數(shù)量不足,并且 位于存儲短表項的樹節(jié)點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占用的 用于存儲短表項的樹節(jié)點時,將所述邊界處,沒有被占用的用于存儲短表項的 樹節(jié)點,劃分為用于存儲長表項的樹節(jié)點;其中,所述用于存儲長表項的樹節(jié)點中,歸屬于同一個父節(jié)點的兩個樹節(jié) 點存儲一個長表項;所述用于存儲短表項的樹節(jié)點中, 一個樹節(jié)點存儲一個短 表項。
15、 根據(jù)權(quán)利要求10或者14所述的存儲裝置,其特征在于,所述裝置還包 括第二資源調(diào)整單元和配置虛擬樹節(jié)點單元,所述第二資源調(diào)整單元,用于當(dāng)用于存儲短表項的樹節(jié)點數(shù)量不足,并且 位于存儲短表項的樹節(jié)點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占用的 用于存儲長表項的樹節(jié)點時,將所述邊界處,沒有被占用的用于存儲長表項的 樹節(jié)點,劃分為用于存儲短表項的樹節(jié)點,重新獲得用于存儲短表項的樹節(jié)點, 和用于存儲長表項的樹節(jié)點的第 一邊界;所述配置虛擬樹節(jié)點單元,用于如果所述邊界將附屬于同一個父節(jié)點的兩 個用于存儲長表項的樹節(jié)點中的低32比特樹節(jié)點,劃分為用于存儲短表項的樹 節(jié)點時,則增加虛擬樹節(jié)點,使得所述附屬于同一個父節(jié)點的兩個用于存儲長 表項的樹節(jié)點中的高32比特樹節(jié)點,與所述增加的虛擬樹節(jié)點形成存儲長表項的空間。
16、根據(jù)權(quán)利要求15所述的存儲裝置,其特征在于,所述第一資源調(diào)整單 元,還用于當(dāng)用于存儲長表項的樹節(jié)點數(shù)量不足,并且位于存儲短表項的樹節(jié) 點和存儲長表項的樹節(jié)點的邊界處,存在沒有被占用的用于存儲短表項的樹節(jié) 點時,將所述邊界處,沒有被占用的用于存儲短表項的樹節(jié)點,劃分為用于存 儲長表項的樹節(jié)點,從而重新獲得用于存儲短表項的樹節(jié)點,和用于存儲長表項的樹節(jié)點的第二邊界;所述裝置還包括判斷單元,所述判斷單元,用于當(dāng)用于存儲長表項的樹節(jié)點資源中有虛擬樹節(jié)點時, 判斷與所述虛擬樹節(jié)點形成存儲長表項的空間的樹節(jié)點,是否能夠與第二邊界 從用于存儲短表項的樹節(jié)點中劃分的,用于存儲長表項的樹節(jié)點,重新形成存 儲長表項的空間,如果是,通知所述配置虛擬樹節(jié)點單元;則所述配置虛擬樹節(jié)點單元,還用于當(dāng)與虛擬樹節(jié)點形成存儲長表項的空 間的樹節(jié)點,能夠與第二邊界從用于存儲短表項的樹節(jié)點中劃分的,用于存儲 長表項的樹節(jié)點,重新形成存儲長表項的空間時,釋放所述虛擬樹節(jié)點。
全文摘要
本發(fā)明公開了一種劃分樹節(jié)點資源方法及裝置,該方法包括對二叉樹中的樹節(jié)點資源編號,使得所述二叉樹中的樹節(jié)點的編號連續(xù);將編號后的樹節(jié)點資源劃分在多于一個的頁中,每個頁中的樹節(jié)點的編號連續(xù),所有的頁中不是每個頁中都包括相同數(shù)目的樹節(jié)點。本發(fā)明實施例還提供相應(yīng)的裝置。本發(fā)明技術(shù)方案由于將二叉樹中的樹節(jié)點資源劃分為大小不同的頁,使得設(shè)備可以根據(jù)每個VPN所需要的樹節(jié)點數(shù)量,來選擇為每個VPN分配一個相應(yīng)的頁,從而為每個VPN分配的樹節(jié)點資源的編號連續(xù),與現(xiàn)有技術(shù)相比,提高了路由器的路由刷新性能,降低了對查找引擎設(shè)計的復(fù)雜度。同時,提高了基于二叉樹存儲轉(zhuǎn)發(fā)前綴的路由器中樹節(jié)點的利用率。
文檔編號H04L12/56GK101616090SQ20091015205
公開日2009年12月30日 申請日期2009年7月28日 優(yōu)先權(quán)日2009年7月28日
發(fā)明者商紅章, 猛 李, 郭玲波 申請人:華為技術(shù)有限公司