專利名稱:一般化管理網(wǎng)絡(luò)處理器用表的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng),更具體地說(shuō),涉及一種方法和系統(tǒng),用于提供一種機(jī)制以允許主機(jī)以一種可擴(kuò)展的、靈活的方式管理諸如查詢表等表。
背景技術(shù):
受不斷增加的各種網(wǎng)絡(luò)應(yīng)用(如涉及因特網(wǎng)的那些應(yīng)用)的驅(qū)動(dòng),計(jì)算機(jī)網(wǎng)絡(luò)越來(lái)越受到關(guān)注。為了把一個(gè)網(wǎng)絡(luò)的各部分耦合在一起或把若干網(wǎng)絡(luò)耦合在一起,通常使用駐留在交換機(jī)、路由器和/或其他部件中的網(wǎng)絡(luò)處理器。為了適當(dāng)?shù)乜刂仆ㄟ^(guò)網(wǎng)絡(luò)的流量,網(wǎng)絡(luò)處理器必須對(duì)包進(jìn)行分類并完成其他使用表(如查詢表)的功能。為了使用這些表,要管理這些表的性質(zhì)。例如,大小、數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的速度、位置(選擇的存儲(chǔ)器)、表中條目的插入、以及各表間的某些關(guān)系都受到控制。因此,網(wǎng)絡(luò)管理員通常希望管理由網(wǎng)絡(luò)處理器使用的表的性質(zhì)。
圖1顯示用于管理網(wǎng)絡(luò)處理器的表的傳統(tǒng)系統(tǒng)10的方塊圖。系統(tǒng)10包括由網(wǎng)絡(luò)管理員使用的傳統(tǒng)的主處理器12以及傳統(tǒng)的網(wǎng)絡(luò)處理器30、40和50。傳統(tǒng)的主處理器12通常包括一個(gè)表管理應(yīng)用程序22,它至少部分地是由傳統(tǒng)系統(tǒng)10的所有者開(kāi)發(fā)的。網(wǎng)絡(luò)管理員使用傳統(tǒng)的表管理應(yīng)用程序22配置、更新或以其他方式管理傳統(tǒng)系統(tǒng)10中傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50的這些表,如查詢表。
傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50通常是由傳統(tǒng)系統(tǒng)10的所有者購(gòu)買的。每個(gè)傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50分別包括用于管理表(未明確地示出)的傳統(tǒng)軟件和/或固件32、42和52。此外,傳統(tǒng)的軟件和/或固件32、42和52可以是不同的。例如,傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50可能包括來(lái)自一個(gè)特定零售商的特定型號(hào)的網(wǎng)絡(luò)處理器的不同版本和/或可能來(lái)自其他零售商的其他型號(hào)的網(wǎng)絡(luò)處理器。因此,傳統(tǒng)網(wǎng)絡(luò)處理器30、40被描述為具有軟件和/或固件32和42,它們是型號(hào)X的網(wǎng)絡(luò)處理器的不同版本,而傳統(tǒng)的網(wǎng)絡(luò)處理器50的軟件和/或固件52是型號(hào)Y的網(wǎng)絡(luò)處理器。因?yàn)閭鹘y(tǒng)的網(wǎng)絡(luò)處理器30、40和50被設(shè)計(jì)成與不同的控制應(yīng)用程序通信,每個(gè)傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50分別利用傳統(tǒng)的應(yīng)用程序接口(API)12、14和16,它們分別專用于特定的軟件和/或固件32、42和52。
傳統(tǒng)的表管理應(yīng)用程序22用于管理分別由傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50使用的表。因此傳統(tǒng)的表管理應(yīng)用程序22包括相應(yīng)的一組傳統(tǒng)行為24、26和28,分別用于每組傳統(tǒng)的API 12、14和16。傳統(tǒng)的API 12、14和16被設(shè)計(jì)成分別與傳統(tǒng)行為24、26和28通信。傳統(tǒng)的API 12、14和16還用于分別控制相應(yīng)的軟件和/或固件32、42和52。這樣,使用分別對(duì)應(yīng)于傳統(tǒng)的API 12、14和16的傳統(tǒng)的行為24、26和28,傳統(tǒng)的表管理應(yīng)用程序22可以分別控制用于傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50的表。
盡管傳統(tǒng)的系統(tǒng)10能發(fā)揮其功能,但本領(lǐng)域普通技術(shù)人員將容易認(rèn)識(shí),傳統(tǒng)的系統(tǒng)難于擴(kuò)展而且可能有高的維護(hù)費(fèi)用。傳統(tǒng)網(wǎng)絡(luò)處理器30、40和50本質(zhì)上通常是異質(zhì)的。因?yàn)閭鹘y(tǒng)網(wǎng)絡(luò)處理器30、40和50是異質(zhì)的,傳統(tǒng)的網(wǎng)絡(luò)處理器可能包括一個(gè)特定型號(hào)網(wǎng)絡(luò)處理器的不同版本和/或不同型號(hào)的網(wǎng)絡(luò)處理器。此外,特定表在每個(gè)傳統(tǒng)的網(wǎng)絡(luò)處理器中的使用方式可能有很大的不同。因此,不同網(wǎng)絡(luò)處理器的軟件和/或固件32、42和52通常是不同的。這樣,API 12、14和16也就不同。結(jié)果,傳統(tǒng)的表管理應(yīng)用程序22的相應(yīng)的行為24、26和28是截然不同的。本領(lǐng)域普通技術(shù)人員還將容易認(rèn)識(shí)到,傳統(tǒng)的系統(tǒng)10實(shí)際上可能包括大量網(wǎng)絡(luò)處理器。于是,傳統(tǒng)的表管理應(yīng)用程序22必須兼容數(shù)目眾多的傳統(tǒng)API 12、14和16。結(jié)果,由傳統(tǒng)主處理器20所使用并由傳統(tǒng)系統(tǒng)10的所有者開(kāi)發(fā)的不同的傳統(tǒng)行為(如傳統(tǒng)的行為24、26和28)的數(shù)量可能是大的。結(jié)果,傳統(tǒng)的表管理應(yīng)用程序22可能是復(fù)雜的,而且包括多種行為的混合,每種行為用于一種傳統(tǒng)網(wǎng)絡(luò)處理器型號(hào)和/或版本。這樣,可能難于納入新的網(wǎng)絡(luò)處理器,它們可能具有以前不支持的軟件和/或固件以及API。所以,傳統(tǒng)的系統(tǒng)10難于擴(kuò)展。因?yàn)樵诩{入新的軟件和/或固件及其相應(yīng)的API方面的困難,發(fā)展傳統(tǒng)的表管理應(yīng)用程序22并因此發(fā)展傳統(tǒng)的系統(tǒng)10以便利用改進(jìn)的網(wǎng)絡(luò)處理器可能是成問(wèn)題的。再有,因?yàn)橹С侄喾N傳統(tǒng)的行為24、26和28,這使得傳統(tǒng)的表管理應(yīng)用程序22更加復(fù)雜,所以傳統(tǒng)的系統(tǒng)10可能需要更高的維護(hù)費(fèi)用。
因此,需要的是一種系統(tǒng)和方法,它允許主機(jī)以可擴(kuò)展、靈活的方式管理由網(wǎng)絡(luò)處理器使用的表。本發(fā)明滿足這一需求。
發(fā)明內(nèi)容
本發(fā)明提供一種方法和系統(tǒng),用于管理網(wǎng)絡(luò)中多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表。該網(wǎng)絡(luò)還包括至少一個(gè)主處理器,它利用至少一個(gè)表管理應(yīng)用程序。該方法和系統(tǒng)包括提供多個(gè)通用應(yīng)用程序接口(API)。通用API與一個(gè)或多個(gè)控制應(yīng)用程序以及異質(zhì)網(wǎng)絡(luò)處理器通信。通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與一個(gè)或多個(gè)表管理應(yīng)用程序通信,但以特定于網(wǎng)絡(luò)處理器的方式管理異質(zhì)網(wǎng)絡(luò)處理器使用的表。這樣,通用API允許一個(gè)或多個(gè)控制應(yīng)用程序可以是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,并允許以特定于網(wǎng)絡(luò)處理器的方式管理異質(zhì)網(wǎng)絡(luò)處理器使用的表。
根據(jù)這里公開(kāi)的系統(tǒng)和方法,本發(fā)明提供一種用于管理網(wǎng)絡(luò)處理器所用的表的通用機(jī)制。結(jié)果,客戶不需維持一個(gè)用于不同類型(例如型號(hào)和/或版本)網(wǎng)絡(luò)處理器的具有不同組API的表管理應(yīng)用程序。
圖1是用于管理傳統(tǒng)的網(wǎng)絡(luò)處理器所用表的傳統(tǒng)系統(tǒng)的方塊圖。
圖2是根據(jù)本發(fā)明,用于管理網(wǎng)絡(luò)處理器用表的系統(tǒng)的一個(gè)實(shí)施例的高層示意圖。
圖3是高層流程圖,它示出了根據(jù)本發(fā)明的一種方法的一個(gè)實(shí)施例,該方法提供了根據(jù)本發(fā)明的用于管理網(wǎng)絡(luò)處理器用表的機(jī)制。
圖4A-4D描述根據(jù)本發(fā)明抽象出來(lái)的一般化網(wǎng)絡(luò)處理器用表的實(shí)施例。
圖5是根據(jù)本發(fā)明的一種方法的一個(gè)實(shí)施例的高層流程圖,該方法使用根據(jù)本發(fā)明的機(jī)制來(lái)管理網(wǎng)絡(luò)處理器用表。
具體實(shí)施例方式
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)中的一個(gè)改進(jìn)。下文的描述使本領(lǐng)域普通技術(shù)人員能實(shí)施和使用本發(fā)明,并且是以一個(gè)專利申請(qǐng)及其權(quán)利要求為背景而給出的。對(duì)于本領(lǐng)域技術(shù)人員而言對(duì)優(yōu)選實(shí)施例的各種修改是顯而易見(jiàn)的,并且這里的一般性原理也可應(yīng)用于其他實(shí)施例。這樣,本發(fā)明不是要限定于所給出的實(shí)施例,而是要得到與這里所描述的原理和特性相一致的最廣范的范圍。
本發(fā)明提供一種方法和系統(tǒng),該方法和系統(tǒng)用于管理網(wǎng)絡(luò)中多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表。該網(wǎng)絡(luò)還包括至少一個(gè)主處理器,它利用至少一個(gè)表管理應(yīng)用程序。該方法和系統(tǒng)包括提供多個(gè)通用應(yīng)用程序接口(API)。通用API與一個(gè)或多個(gè)控制應(yīng)用程序及異質(zhì)網(wǎng)絡(luò)處理器通信。通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與一個(gè)或多個(gè)表管理應(yīng)用程序通信,但以特定于網(wǎng)絡(luò)處理器的方式管理異質(zhì)網(wǎng)絡(luò)處理器使用的表。因此,通用API允許一個(gè)或多個(gè)控制應(yīng)用程序是與網(wǎng)絡(luò)處理器無(wú)關(guān)的控制應(yīng)用程序,并允許以特定于網(wǎng)絡(luò)處理器的方式管理異質(zhì)網(wǎng)絡(luò)處理器使用的表。
將根據(jù)特定的計(jì)算機(jī)系統(tǒng)、特定的網(wǎng)絡(luò)處理器和某些API來(lái)描述本發(fā)明。然而,本領(lǐng)域普通技術(shù)人員將容易認(rèn)識(shí)到,這一方法和系統(tǒng)將可以有效地運(yùn)行于其他計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)處理器以及附加的和/或其他的API。本發(fā)明還是以一個(gè)包括專用部件和特定數(shù)量部件的網(wǎng)絡(luò)為背景描述的。然而,本發(fā)明的普通技術(shù)人員將容易認(rèn)識(shí)到,本發(fā)明與含有其他和/或附加部件以及其它數(shù)目的部件的其他網(wǎng)絡(luò)是相容的。對(duì)本發(fā)明的描述還是以特定表類型為背景而進(jìn)行的。本領(lǐng)域普通技術(shù)人員將容易認(rèn)識(shí)到,該方法和系統(tǒng)與其他的表類型是相容的。
為了更具體地說(shuō)明根據(jù)發(fā)明的方法和系統(tǒng),現(xiàn)在參考圖2,它說(shuō)明了根據(jù)本發(fā)明的用于管理網(wǎng)絡(luò)處理器用表(未示出)的系統(tǒng)100的一個(gè)實(shí)施例。系統(tǒng)100被描述為包括主處理器110和網(wǎng)絡(luò)處理器120、130和140。主處理器110包括表管理應(yīng)用程序112。網(wǎng)絡(luò)處理器120、130和140分別包括表管理軟件和/或固件122、132和142。然而,本領(lǐng)域普通技術(shù)人員將容易認(rèn)識(shí)到,通用API 150是特定的實(shí)用程序。此外,通用API 150被描述為單獨(dú)的實(shí)體。然而,本領(lǐng)域普通技術(shù)人員將容易認(rèn)識(shí)到,主處理器110和網(wǎng)絡(luò)處理器120、130和140利用通用API 150進(jìn)行通信和控制。
網(wǎng)絡(luò)處理器120、130和140可以是異質(zhì)的。這樣,網(wǎng)絡(luò)處理器120、130和140可以有用于管理表的顯著不同的硬件、軟件和/或固件。例如,如圖2中所示,網(wǎng)絡(luò)處理器120使用的軟件和/或固件122的型號(hào)是X,版本為1.0。與此相反,網(wǎng)絡(luò)處理器130包括型號(hào)為X的軟件和/或固件132,版本為2.0。網(wǎng)絡(luò)處理器140是一個(gè)完全不同的型號(hào),具有型號(hào)為Y的軟件和/或固件142,版本為1.0。還可包括有不同型號(hào)和/或版本號(hào)的其他網(wǎng)絡(luò)處理器(未示出)。因?yàn)樗鼈兪钱愘|(zhì)的,在沒(méi)有本發(fā)明時(shí),網(wǎng)絡(luò)處理器120、130和140中的每個(gè)網(wǎng)絡(luò)處理器將需要一組專用于單個(gè)網(wǎng)絡(luò)處理器的API,以便由傳統(tǒng)的表管理應(yīng)用程序(如圖1中說(shuō)明的表管理應(yīng)用程序12)進(jìn)行控制。
現(xiàn)在再次參考圖2,通用API 150包括由表管理應(yīng)用程序112和網(wǎng)絡(luò)處理器120、130和140使用的那些API。特別是,通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與表管理應(yīng)用程序112通信并被它使用。換言之,表管理應(yīng)用程序112是與網(wǎng)絡(luò)處理器無(wú)關(guān)的。在本發(fā)明的上下文中,與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式意味著表管理應(yīng)用程序112不需要具有關(guān)于任何網(wǎng)絡(luò)處理器120、130和140(表管理應(yīng)用程序112為這些網(wǎng)絡(luò)處理器管理表)的特定硬件、軟件和/或固件的知識(shí)。與此同時(shí),表管理應(yīng)用程序112能通過(guò)分別管理軟件和/或固件122、132和142來(lái)控制網(wǎng)絡(luò)處理器120、130和140使用的表。因?yàn)楸砉芾響?yīng)用程序112是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,所以表管理應(yīng)用程序112能控制(如配置和更新)網(wǎng)絡(luò)處理器120、130和140使用的表,而不需要關(guān)于單個(gè)網(wǎng)絡(luò)處理器120、130和140各自的硬件、軟件和/或固件的特定知識(shí)。
通用API 150還以特定于網(wǎng)絡(luò)處理器的方式與網(wǎng)絡(luò)處理器120、130和140通信并控制它們。在本發(fā)明的上下文中,特定于網(wǎng)絡(luò)處理器包括關(guān)于特定的網(wǎng)絡(luò)處理器的知識(shí),如分別由特定網(wǎng)絡(luò)處理器120、130和140使用的硬件、軟件和/或固件122、132和142以及可能的其他部件。這樣API 150允許表管理應(yīng)用程序112是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,而同時(shí)允許以特定于網(wǎng)絡(luò)處理器的方式控制每個(gè)網(wǎng)絡(luò)處理器120、130和140。
使用系統(tǒng)100,更具體地說(shuō)是使用通用API 150,表管理應(yīng)用程序112可以是與網(wǎng)絡(luò)處理器無(wú)關(guān)的。因?yàn)槭褂猛ㄓ肁PI 150,表管理應(yīng)用程序112還能以特定于網(wǎng)絡(luò)處理器的方式控制可能是異質(zhì)的網(wǎng)絡(luò)處理器120、130和140所使用的表。結(jié)果,表管理應(yīng)用程序112不需要為所用的網(wǎng)絡(luò)處理器120、130和140的每種類型包括單獨(dú)一組API。所以,表管理應(yīng)用程序112更簡(jiǎn)單。結(jié)果,擴(kuò)展系統(tǒng)100,包括添加新類型網(wǎng)絡(luò)處理器,將會(huì)顯著地更加簡(jiǎn)單。因此,通過(guò)添加改進(jìn)的網(wǎng)絡(luò)處理器還可以更容易地改善系統(tǒng)100的性能。此外,由于使用更簡(jiǎn)單的表管理應(yīng)用程序112,可以降低系統(tǒng)100的維護(hù)費(fèi)用。
圖3是高層流程圖,其描述了根據(jù)本發(fā)明的方法200的一個(gè)實(shí)施例,該方法提供了根據(jù)本發(fā)明的管理網(wǎng)絡(luò)處理器用表的機(jī)制。對(duì)方法200的描述是以圖2說(shuō)明的系統(tǒng)100為背景進(jìn)行的。特別是,方法200可被用于確定通用API 150。參考圖2和圖3,于是能使用通用API 150,以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式開(kāi)發(fā)表管理應(yīng)用程序112。類似地,可能是異質(zhì)的網(wǎng)絡(luò)處理器120、130和140分別有諸如軟件和/或固件122、132和142等部件,它們能由通用API以特定于網(wǎng)絡(luò)的方式進(jìn)行管理。因此,可使用通用API150,以特定于網(wǎng)絡(luò)處理器的方式控制網(wǎng)絡(luò)處理器120、130和140。
由網(wǎng)絡(luò)處理器(如網(wǎng)絡(luò)處理器120、130和140)使用的表(圖2中未示出)的性質(zhì)經(jīng)由步驟202被抽象出來(lái)。每個(gè)網(wǎng)絡(luò)處理器120、130和140有以某種方式使用的特定的表。步驟202把這些表抽象到一個(gè)更一般的水平。
例如,由網(wǎng)絡(luò)處理器(如網(wǎng)絡(luò)處理器120、130和140)使用的表是表現(xiàn)出某些性質(zhì)的復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。每個(gè)表起一個(gè)或多個(gè)用戶數(shù)據(jù)記錄的容器的作用,并保持各種狀態(tài)。每個(gè)表通常還有最大的大小,或能存儲(chǔ)的固定大小記錄的數(shù)量。
在一個(gè)優(yōu)選實(shí)施例中,步驟202把這些表抽象為或者是快速的或是標(biāo)準(zhǔn)的表。這些表被放置在相應(yīng)的網(wǎng)絡(luò)處理器120、130和/或140的內(nèi)部或外部的各種存儲(chǔ)器中。例如,這些表可以被放在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)中。能夠從表中訪問(wèn)數(shù)據(jù)的速度取決于多種因素,如表的大小,在存儲(chǔ)器中的位置以及表所使用的搜索算法類型。在步驟202中,表的大小和放置記錄的存儲(chǔ)器(即放置表的存儲(chǔ)器)被抽象為快速表和標(biāo)準(zhǔn)表。快速表的大小與標(biāo)準(zhǔn)表相比要小并放在相應(yīng)網(wǎng)絡(luò)處理器120、130和140內(nèi)部的存儲(chǔ)器或SRAM中。標(biāo)準(zhǔn)表的大小可以很大并被放在較慢的存儲(chǔ)器中,如DRAM。這樣,步驟202把表的類型抽象為快速的或標(biāo)準(zhǔn)的。然而,對(duì)這種“抽象”概念的嚴(yán)格解釋取決于由特定網(wǎng)絡(luò)處理器實(shí)現(xiàn)的軟件和/或固件122、132和142。
例如,圖4A和4B分別說(shuō)明了一個(gè)快速表160和一個(gè)標(biāo)準(zhǔn)表170的抽象。表160和170還表示了對(duì)表的其他特性的抽象。快速表160被描述為包括記錄162、164、166和168以及書簽167和169。記錄162、164、166和168有相應(yīng)的關(guān)鍵字162A至168A。還給出了指針161A、161B、163A、163B、165A和165B。如下文討論的那樣,關(guān)鍵字162A至168A一般用于嚴(yán)格匹配。換言之,通常是在快速表160中搜索對(duì)關(guān)鍵字162A至168A之一的嚴(yán)格匹配。標(biāo)準(zhǔn)表170還包括記錄172、174、176和178、相應(yīng)的關(guān)鍵字172A至178A以及指針171A、171B、173A、173B、175A和175B。然而,如下文討論的那樣,用于標(biāo)準(zhǔn)表的算法通常是最長(zhǎng)前綴匹配。
除了抽象表的類型外,步驟202優(yōu)選地抽象由表使用的搜索算法。例如,通??梢砸噪S機(jī)方式或順序方式訪問(wèn)這些表。當(dāng)以隨機(jī)方式訪問(wèn)時(shí),提供一個(gè)搜索關(guān)鍵字。所提供的搜索關(guān)鍵字的類型取決于該表用于訪問(wèn)特定記錄的搜索算法。一個(gè)表通常納入一個(gè)用于隨機(jī)訪問(wèn)記錄的算法。在一個(gè)實(shí)施例中,抽象步驟202定義兩類搜索關(guān)鍵字,它們對(duì)應(yīng)于兩類搜索算法。所述的關(guān)鍵字是嚴(yán)格匹配關(guān)鍵字,例如關(guān)鍵字162A到168A,以及最長(zhǎng)前綴匹配關(guān)鍵字,例如圖4B中所表示的關(guān)鍵字172A到178A。不必指定這些關(guān)鍵字的最大長(zhǎng)度,但是最佳地它們應(yīng)足夠大以便支持在一個(gè)網(wǎng)絡(luò)處理器的異質(zhì)系統(tǒng)內(nèi)可能會(huì)指定的最大的關(guān)鍵字。
如果表支持順序訪問(wèn),則也可以從該表的開(kāi)頭或該表內(nèi)某個(gè)標(biāo)記的部位起順序地訪問(wèn)該表中的記錄。因此,表160和170被描述為包括指針161A、161B、163A、163B、165A和165B以及171A、171B、173A、173B、175A和175B。對(duì)記錄的順序訪問(wèn)可以沿向前方向發(fā)生(這里術(shù)語(yǔ)“向前”表明在第n個(gè)記錄之后訪問(wèn)第n+1個(gè)記錄)或沿向后方向發(fā)生(這里術(shù)語(yǔ)“向后”表明在第n個(gè)記錄之后訪問(wèn)第n-1個(gè)記錄)或者二者。如果支持順序訪問(wèn),則表中的所有記錄是環(huán)形鏈接的。所以,沒(méi)有表的開(kāi)始(或結(jié)尾)的概念,因?yàn)闆](méi)有參考點(diǎn)來(lái)支持這一概念。然而,表可以支持書簽,如書簽167、169、177和179,它們可以暫時(shí)為順序訪問(wèn)記錄指出參考點(diǎn)。一個(gè)書簽,如書簽167、177和179,指出一個(gè)順序訪問(wèn)的起點(diǎn)。如果第N+1(或?qū)τ谙蚝笤L問(wèn)的第N-1)次順序訪問(wèn)返回一個(gè)作為書簽的記錄,則稱整個(gè)表已被順序地遍歷了一遍。
一個(gè)表,如表160或170,在本質(zhì)上是多用戶的,這使多個(gè)實(shí)體能分別訪問(wèn)表160或170。在主處理器110上的表管理應(yīng)用程序112實(shí)體(以及它在每個(gè)網(wǎng)絡(luò)處理器120、130和140上的代理,如果被這樣實(shí)現(xiàn)的話)也被認(rèn)為是管理性實(shí)體。所有實(shí)體可以同時(shí)訪問(wèn)表,以便或是進(jìn)行隨機(jī)/順序搜索或是插入/刪除/更新查詢表中的記錄。希望對(duì)表進(jìn)行順序訪問(wèn)的每個(gè)實(shí)體向該表進(jìn)行注冊(cè),并得到順序訪問(wèn)用戶標(biāo)識(shí)符。這一標(biāo)識(shí)符使表160或170能獨(dú)立地分別管理與每個(gè)注冊(cè)的實(shí)體相關(guān)聯(lián)的書簽167和169或書簽177和179。這樣,所有注冊(cè)的實(shí)體能同時(shí)分別順序訪問(wèn)表160和170中的條目162、164、166和168以及172、174、176和178而不會(huì)彼此造成有害影響。
圖4C描述了表182、184、186和188的級(jí)聯(lián)的抽象。如果諸表支持同一類型的搜索關(guān)鍵字/算法的話,一個(gè)表可以與其他表級(jí)聯(lián)。當(dāng)一些表被級(jí)聯(lián)時(shí),對(duì)一個(gè)特定記錄的隨機(jī)搜索延伸到該級(jí)聯(lián)的其他表中,直至檢測(cè)到一個(gè)“命中”為止。只有當(dāng)對(duì)所請(qǐng)求記錄的搜索在級(jí)聯(lián)的所有表中都搜索失敗時(shí)才報(bào)告一個(gè)搜索失敗。這樣,在級(jí)聯(lián)180中,對(duì)表182的搜索會(huì)延伸到表184和186中。再有,應(yīng)當(dāng)注意,級(jí)聯(lián)180可以包括快速表182和186以及標(biāo)準(zhǔn)表184這兩種表。因此,不同類型的表182、184和186能被放入級(jí)聯(lián)180。
記錄是表的必要組成部分,這樣,抽象步驟202還抽象與記錄有關(guān)的操作。表的記錄是固定長(zhǎng)度的。指定長(zhǎng)度是表定義過(guò)程的一部分。記錄包含用戶特定的數(shù)據(jù)并可包含為實(shí)現(xiàn)某些行為(如順序訪問(wèn))所需要的特定于實(shí)現(xiàn)的控制信息。此外,在查尋表中能由該表添加、修改或刪除任何記錄(如果在那個(gè)時(shí)候該記錄未被另一實(shí)體訪問(wèn)的話)。表包含有能確保避免共享違規(guī)的行動(dòng)。
圖4D描述了表的狀態(tài)190。表的可能狀態(tài)包括禁止191、未定義192、允許193和鎖定194,它們以圖4D中描述的方式相互關(guān)聯(lián)。優(yōu)選地,對(duì)表的訪問(wèn)被限定于一個(gè)管理性實(shí)體。這一限制允許諸如為了進(jìn)行維護(hù)和查錯(cuò)而使一個(gè)表不能提供服務(wù)等操作。為了提供這一功能,每個(gè)表維護(hù)狀態(tài)190。當(dāng)在禁止?fàn)顟B(tài)191時(shí),該表不能提供服務(wù)。該表不能被訪問(wèn),除非是由該管理性實(shí)體或它在網(wǎng)絡(luò)處理器上的代理所進(jìn)行訪問(wèn)。在這一狀態(tài)下,該管理性實(shí)體只可以刪除此表、刪除表中一些條目或允許此表。當(dāng)在未定義狀態(tài)192時(shí),該表的標(biāo)識(shí)符尚未與一組表特性綁定。當(dāng)在允許狀態(tài)193時(shí),該表處于服務(wù)中,并且通??捎伤袑?shí)體訪問(wèn)。優(yōu)選地,除了定義該表或刪除該表的能力外,所有訪問(wèn)操作都是可用的。當(dāng)表處在鎖定狀態(tài)194時(shí),該表處于服務(wù)中,但除了由該管理性實(shí)體訪問(wèn)外暫時(shí)不可用于訪問(wèn)。所有表操作對(duì)于該管理性實(shí)體都是可用的,但定義該表、刪除該表、允許該表和禁止該表的能力除外。
在網(wǎng)絡(luò)處理器120、130和140中,表的記錄中的信息有一個(gè)有限的有效時(shí)段。在這一時(shí)段終止時(shí),該條目被自動(dòng)從表中刪除。在一個(gè)有限時(shí)段之后刪除記錄的過(guò)程稱作老化(aging)。因此優(yōu)選地,步驟202還對(duì)表的老化過(guò)程進(jìn)行抽象。在步驟202中執(zhí)行的表的抽象支持老化功能。在一個(gè)優(yōu)選實(shí)施例中,該抽象將要求用戶說(shuō)明是否要求對(duì)該表支持老化,如果是,則要說(shuō)明需要被調(diào)用的老化過(guò)程的標(biāo)識(shí)符、在老化周期間所經(jīng)過(guò)的時(shí)間間隔、在單個(gè)周期內(nèi)必須被訪問(wèn)的記錄數(shù)、和/或在老化過(guò)程中使用的任何其他信息。優(yōu)選地,在步驟202中還抽象表的其他方面。
通過(guò)步驟204,使用所提供的抽象定義通用API 150。這樣,步驟204提供了通用API 150,優(yōu)選地,它們能為網(wǎng)絡(luò)處理器120、130和140管理表,如表160和170。再有,當(dāng)一個(gè)特定操作不被一個(gè)特定網(wǎng)絡(luò)處理器120、130和140的表所支持時(shí),通用API 150通過(guò)向表管理應(yīng)用程序112提供一個(gè)“空行為”來(lái)解決這一點(diǎn)。
步驟204還提供通用API 150,從而API 150能被用于與網(wǎng)絡(luò)處理器無(wú)關(guān)的表管理應(yīng)用程序112。因此,使用方法200能提供通用API 150。與網(wǎng)絡(luò)處理器無(wú)關(guān)的表管理應(yīng)用程序112以及網(wǎng)絡(luò)處理器120、130和140能被開(kāi)發(fā)成利用通用API 150。
在一個(gè)優(yōu)選實(shí)施例中,通用API 150至少包括用于以特定于網(wǎng)絡(luò)處理器的方式為每個(gè)網(wǎng)絡(luò)處理器120、130和140配置和更新表的API。因此,通用API包括通常情況下管理表以及各條目(記錄)所用到的那些API。優(yōu)選地,通用API 150包括用于設(shè)置表類型和設(shè)置表狀態(tài)(定義、允許、禁止和鎖定表)的API。通用API還包括用于鏈接(級(jí)聯(lián))表、更新條目、添加條目、刪除條目、清除條目和老化條目的API。除了以特定于網(wǎng)絡(luò)處理器方式控制網(wǎng)絡(luò)處理器120、130和140所用表之外,優(yōu)選地,API 150還為被特定網(wǎng)絡(luò)處理器沒(méi)有實(shí)現(xiàn)的特定功能返回一個(gè)“空行為”。
在一個(gè)優(yōu)選實(shí)施例中,通用API 150包括25個(gè)API。優(yōu)選地,API包括表定義、表刪除、表添加條目、表更新條目、表讀條目、表刪除條目、表清除、表設(shè)置鏈接、表切換版本、表允許、表禁止、表鎖定、表解鎖、表查看配置、表列表、表注冊(cè)SA、表取消注冊(cè)SA、表得到當(dāng)前條目、表得到下一條目、表得到前一條目、表處理?xiàng)l目、表設(shè)置書簽、表轉(zhuǎn)向書簽、表開(kāi)始老化以及表停止老化。在通用API(包括配置、更新、允許、禁止和列表等API)的一個(gè)優(yōu)選實(shí)現(xiàn)中,指定了它們的參數(shù)和字段。表1描述所用字段的優(yōu)選實(shí)施例。
表1字段名 字段描述老化條目每個(gè)老化周期要掃描的條目數(shù)老化功能選擇老化算法。值零指出無(wú)老化老化間隔老化周期中的秒數(shù)自動(dòng)允許表一經(jīng)創(chuàng)建立即允許使用書簽ID 要使用的用戶書簽ID高速緩存允許允許高速緩存數(shù)據(jù)條目數(shù)據(jù)數(shù)據(jù)偏移在條目中在寫數(shù)據(jù)字段之前要跳過(guò)的字節(jié)數(shù)數(shù)據(jù)大小要添加的數(shù)據(jù)以字節(jié)計(jì)的大小方向在順序訪問(wèn)表中的行進(jìn)方向條目數(shù)據(jù)大小以字節(jié)計(jì)的條目大小條目過(guò)程ID 被調(diào)用來(lái)處理?xiàng)l目的過(guò)程的標(biāo)識(shí)符條目大小以字節(jié)計(jì)的固定條目大小,如果條目類型是可變的,則為最大大小差錯(cuò)區(qū)大小 從第2個(gè)字開(kāi)始以字?jǐn)?shù)計(jì)的差錯(cuò)消息大小差錯(cuò)碼 特定于部件的差錯(cuò)碼散列算法散列算法選擇,零值指出對(duì)該關(guān)鍵字不進(jìn)行散列調(diào)用ID 由服務(wù)請(qǐng)求器使用的字段,用于使調(diào)用與響應(yīng)關(guān)聯(lián)關(guān)鍵字 關(guān)鍵字的各個(gè)比特關(guān)鍵字長(zhǎng)度 用于這一操作的LPM關(guān)鍵字長(zhǎng)度(以比特計(jì))。
在已定義為嚴(yán)格匹配的表上,這一字段被忽略關(guān)鍵字長(zhǎng)度字段 這些8比特字段定義每個(gè)關(guān)鍵字部分的長(zhǎng)度。在
“關(guān)鍵字字段數(shù)目”中指了這些字段的個(gè)數(shù),對(duì)于West表,沒(méi)有實(shí)現(xiàn)多字段鍵值,故只使用關(guān)鍵字字段0掩碼大小其指出僅用于反轉(zhuǎn)方式的掩碼的大小最大關(guān)鍵字大小 這個(gè)表的關(guān)鍵字中的最大的比特?cái)?shù)最大表大小 最大條目數(shù)新版本 新的表ID下一個(gè)表ID 其指出在未成功搜索的情況下將被訪問(wèn)的下一個(gè)表。值255表明將不搜索其它表。如果選擇“高速緩存允許”,則不應(yīng)使用這一特性關(guān)鍵字字段數(shù)目 在搜索此表期間使用的關(guān)鍵字字段數(shù)目。這些字段的長(zhǎng)度在可變大小的關(guān)鍵字長(zhǎng)度字段中定義。對(duì)于West表,這個(gè)數(shù)為1操作類 指出向服務(wù)請(qǐng)求器發(fā)送響應(yīng)的條件操作碼 指出一個(gè)操作,它的調(diào)用正被請(qǐng)求操作版本指出該操作的版本級(jí)別輸出方式選擇在響應(yīng)中的信息量,如果這一特性被激活,則返回每個(gè)表的配置數(shù)據(jù)。如果這一特性被關(guān)掉,則只返回表ID參數(shù)區(qū)大小 指出與此操作關(guān)聯(lián)的參數(shù)區(qū)的大小(以字?jǐn)?shù)計(jì))布局?jǐn)?shù)據(jù)在設(shè)計(jì)時(shí)定義這些字段以包含任何依賴于硬件的表資源信息。注意對(duì)于West表,這個(gè)字段中沒(méi)有布局?jǐn)?shù)據(jù)布局?jǐn)?shù)據(jù)長(zhǎng)度可變長(zhǎng)布局?jǐn)?shù)據(jù)字段中的字?jǐn)?shù),在West表的實(shí)現(xiàn)中不使用資源分配方法表資源能被人工或自動(dòng)地分配。人工分配需要在布局?jǐn)?shù)據(jù)字段提供資源數(shù)據(jù)并需要在布局?jǐn)?shù)據(jù)長(zhǎng)度中提供相應(yīng)的大小結(jié)果區(qū)大小結(jié)果消息的大小,從第2個(gè)字開(kāi)始以字?jǐn)?shù)計(jì)SA用戶ID 應(yīng)被釋放的SA_UserID搜索類型 表所支持的搜索類型,可以是嚴(yán)格匹配、最長(zhǎng)前綴匹配或范圍匹配順序訪問(wèn) 此表所允許的順序訪問(wèn)類型。條目能被向前掃描、向前/向后搜索或不掃描。
服務(wù)單元類型 指出服務(wù)特性,可能值是API調(diào)用、API結(jié)果或API錯(cuò)。
表ID 表標(biāo)識(shí)符表速度對(duì)于自動(dòng)表資源分配,選擇兩類表之一正常表和加速表。如果人工地選擇資源分配方法,則不用此字段閾值 如果條目數(shù)超過(guò)此閾值,則發(fā)出通知,如果此值為零,則不發(fā)出通知更新方式 選擇更新方式標(biāo)準(zhǔn)的、選擇性的、反轉(zhuǎn)的。選擇性方式和反轉(zhuǎn)方式要求在掩碼字段指出要修改的比特位的位置優(yōu)選地,上述字段的某些部分被通用API 150用于進(jìn)行不同的操作,諸如在網(wǎng)絡(luò)處理器的不同點(diǎn)配置和調(diào)用不同類型的擁塞控制。然而,應(yīng)當(dāng)注意,另一個(gè)實(shí)施例可能使用具有其他用途的附加的和/或其他字段。下面描述表定義API、表刪除API、表添加條目API、表更新條目API、表讀條目API、表刪除條目API、表清除API、表設(shè)置鏈接API、表切換版本API、表允許API、表禁止API、表鎖定API、表解鎖API、表查看配置API、表列表API、表注冊(cè)SA API、表取消注冊(cè)SA API、表得到當(dāng)前條目API、表得到下一條目API、表得到前一條目API、表處理?xiàng)l目API、表設(shè)置書簽API、表轉(zhuǎn)到書簽API、表開(kāi)始老化API,表停止老化API的優(yōu)選實(shí)施例。然而,并不禁止使用附加的和/或不同的API。
表定義API允許表管理應(yīng)用程序112定義表的特征。由用戶向系統(tǒng)提供一個(gè)表ID以標(biāo)識(shí)該表,并將表ID與那些定義的特征綁定在一起。一且定義一個(gè)表ID,它便唯一地標(biāo)識(shí)該表,直至該表被刪除。與這一API關(guān)聯(lián)的參數(shù)如表2中所示。如果該操作成功且指定為順序訪問(wèn),則返回一個(gè)順序訪問(wèn)ID。
表2參數(shù)名 值備注表ID 0..255在一個(gè)網(wǎng)絡(luò)處理器(NP)中定義256個(gè)表之一。
搜索關(guān)鍵字長(zhǎng) 0..255 以比特定義的長(zhǎng)度。
度搜索類型 嚴(yán)格匹配最長(zhǎng)前綴匹配順序訪問(wèn)方法 無(wú)順序訪問(wèn)只向前向前和向后自動(dòng)允許 真 真表示該表被自動(dòng)轉(zhuǎn)換為允許狀態(tài)假 (否則它留在禁止?fàn)顟B(tài))。
表速度 正常 這些對(duì)應(yīng)于在抽象模型中提到的標(biāo)準(zhǔn)加速 表和快速表。
記錄大小 1..1024以字節(jié)定義的大小。
老化標(biāo)識(shí)符 0..255 值0表示無(wú)老化。
級(jí)聯(lián)表 真 “真”表示此表被級(jí)聯(lián),“下一個(gè)表假 ID”字段指出級(jí)聯(lián)中的下一個(gè)表。
“假”意味著“下一個(gè)表ID”字段不被解釋。
下一個(gè)表ID 0..255 指出該級(jí)聯(lián)中的下一個(gè)表。
最大表大小 1..16777216指出該表中的記錄數(shù)的最大值。
最大關(guān)鍵字大 1..255 在LPM關(guān)鍵字中的比特位數(shù)最大值。
小閾值 1..16777216如果記錄數(shù)達(dá)到這個(gè)數(shù),則產(chǎn)生一個(gè)警告。
表刪除API允許表被刪除。優(yōu)選地,在調(diào)用這一API之前表處在禁止?fàn)顟B(tài)。當(dāng)一個(gè)表被刪除時(shí),所有條目和表配置全被刪除。然后該表ID準(zhǔn)備供重新使用。優(yōu)選地,用于表刪除API的唯一參數(shù)是表ID。
表添加條目API允許將一個(gè)條目添加到一個(gè)現(xiàn)有表中。對(duì)于這一操作,該表處在允許或鎖定狀態(tài)。與這一API關(guān)聯(lián)的參數(shù)列于表3。
表3參數(shù)名 值 備注表ID0..255 唯一標(biāo)識(shí)在其上進(jìn)行該操作的表。
搜索關(guān)鍵字長(zhǎng)0..255 以比特定義的長(zhǎng)度。
度搜索關(guān)鍵字 該關(guān)鍵字用于插入該記錄。
覆蓋條目 真 如果設(shè)為真,則與指定關(guān)鍵字相應(yīng)的任何現(xiàn)假 有記錄都將被覆蓋寫,否則該操作將不成功(如果該記錄預(yù)先存在的話)。
用戶數(shù)據(jù)大小 1..1024 需要進(jìn)入該記錄的用戶信息大小(以字節(jié)計(jì))。
用戶數(shù)據(jù) 1..1024 實(shí)際的用戶數(shù)據(jù)。
表更新條目API允許表中的條目被更新。優(yōu)選地,有三種操作方式可用標(biāo)準(zhǔn)更新、選擇和反轉(zhuǎn)。所有方式都指定要修改的條目數(shù)據(jù)的大小和位置。在標(biāo)準(zhǔn)方式中,在該記錄內(nèi)指定的數(shù)據(jù)偏移處開(kāi)始覆蓋寫用戶數(shù)據(jù)。在選擇方式中,指定一個(gè)掩碼,其用于指出只有這些比特位置要被修改。在選擇方式中,掩碼大小與數(shù)據(jù)大小相同。反轉(zhuǎn)方式使用掩碼指出哪些比特位要反轉(zhuǎn)。在調(diào)用這一API之前該表處于允許或鎖定狀態(tài)。與表更新條目API關(guān)聯(lián)的參數(shù)示于表4
表4參數(shù)名 值 備注表ID 0..255 唯一標(biāo)識(shí)在其上進(jìn)行該操作的表。
搜索關(guān)鍵字長(zhǎng) 0..255 以比特定義的長(zhǎng)度。
度搜索關(guān)鍵字 該關(guān)鍵字用于更新該記錄。
更新方式 標(biāo)準(zhǔn)選擇反轉(zhuǎn)用戶數(shù)據(jù) 1..1024 需要進(jìn)入該記錄的用戶信息大小(以大小 字節(jié)計(jì))。
用戶數(shù)據(jù) 1..1024 記錄中的偏移,應(yīng)在該偏移處寫數(shù)據(jù)。
偏移用戶數(shù)據(jù) 1..1024 實(shí)際用戶數(shù)據(jù)。
選擇掩碼 1..1024 其大小等于“用戶數(shù)據(jù)大小”字段中指定的大小。只有當(dāng)更新方式是“選擇”或“反轉(zhuǎn)”時(shí)這一參數(shù)才被解釋。
表讀條目API用于讀表中的一個(gè)條目。為使表讀條目API利用該表,該表應(yīng)處在允許或鎖定狀態(tài)。從與指定關(guān)鍵字關(guān)聯(lián)的記錄中讀出所需數(shù)量的數(shù)據(jù)并將其返回。與表讀條目API關(guān)聯(lián)的參數(shù)示于表5。
表5參數(shù)名 值 備注表ID 0..255 唯一標(biāo)識(shí)在其上進(jìn)行該操作的表。
搜索關(guān)鍵字長(zhǎng) 0..255 以比特定義的長(zhǎng)度。
度搜索關(guān)鍵字 該關(guān)鍵字用于讀該記錄。
用戶數(shù)據(jù)大小 1..1024 需要讀出的用戶信息大小(以字節(jié)數(shù)計(jì))。
用戶數(shù)據(jù)偏移 1..1024 該記錄中的偏移,應(yīng)在該偏移處讀數(shù)據(jù)。
表刪除條目API允許從表中刪除一個(gè)條目。對(duì)于這一API,該表是處在允許或鎖定狀態(tài)。與表刪除條目API關(guān)聯(lián)的參數(shù)示于表6。
表6參數(shù)名 值 備注表ID 0..255 唯一標(biāo)識(shí)在其上進(jìn)行該操作的表。
搜索關(guān)鍵字長(zhǎng)度 0..255 以比特定義的長(zhǎng)度。
搜索關(guān)鍵字 該關(guān)鍵字用于刪除該記錄。
表清除API用于清除表中全部條目。然后將這些條目所消耗的資源返回系統(tǒng)供再使用。在利用此API之前該表可以處在允許狀態(tài)或者禁止?fàn)顟B(tài)。優(yōu)選地,表清除API鎖定該表,清除條目,然后解鎖該表。在一個(gè)優(yōu)選實(shí)施例中,與表清除API關(guān)聯(lián)的唯一參數(shù)是表ID。
表設(shè)置鏈接API允許在表配置中設(shè)置下一個(gè)表ID字段。盡管在定義表時(shí)設(shè)置了下一個(gè)表ID,但其后對(duì)該表鏈的行動(dòng),如表刪除API更新了初始定義中的鏈接。如果級(jí)聯(lián)表參數(shù)被設(shè)為“假”,則由表ID參數(shù)標(biāo)識(shí)的表是該級(jí)聯(lián)中的最后一個(gè)表。優(yōu)選地,對(duì)于表設(shè)置鏈接API,該表處在允許狀態(tài)。在一個(gè)優(yōu)選實(shí)施例中,這一API自動(dòng)把該表轉(zhuǎn)換為鎖定狀態(tài),設(shè)置新的鏈接值,然后轉(zhuǎn)換回到允許狀態(tài)。與這一API關(guān)聯(lián)的參數(shù)示于表7。
表7參數(shù)名值備注表ID 0..255唯一標(biāo)識(shí)在其上進(jìn)行該操作的表。
級(jí)聯(lián)表真“真”表明此表是被級(jí)聯(lián)的,而“下一個(gè)表假ID”字段指出該級(jí)聯(lián)中的下一個(gè)表。
“假”意味著“下一個(gè)表ID”字段不被解釋。
下一個(gè)表ID0..255如果“級(jí)聯(lián)表”參數(shù)設(shè)為“真”,則該字段指出級(jí)聯(lián)中的下一個(gè)表。
表切換版本API用于交換一個(gè)表的兩個(gè)版本,優(yōu)選地,即使系統(tǒng)100正在運(yùn)行中。在完成該操作后,在老表上已注冊(cè)的順序用戶被轉(zhuǎn)移到該表的較新版本。與每個(gè)用戶關(guān)聯(lián)的順序訪問(wèn)指針和書簽被重新設(shè)置。如果已對(duì)老表啟動(dòng)了老化,而且如果能夠在該表的較新版本上進(jìn)行老化,則老化參數(shù)被傳送到新表并繼續(xù)老化操作。優(yōu)選地,順序訪問(wèn)ID、老化間隔和老化條目參數(shù)都從老表繼承下來(lái)。優(yōu)選地,在表切換版本API操作之前該表處在允許狀態(tài)。在一個(gè)優(yōu)選實(shí)施例中,在進(jìn)行切換操作之前兩表被轉(zhuǎn)換為鎖定狀態(tài),并在切換操作結(jié)束時(shí)自動(dòng)轉(zhuǎn)回允許狀態(tài)。與表切換版本API關(guān)聯(lián)的參數(shù)示于表8。
表8參數(shù)名 值 備注表ID0..255 唯一標(biāo)識(shí),在其上進(jìn)行該操作的表。
下一個(gè)表ID 0..255 指出將與初始表進(jìn)行交換的表。
表允許API用于將表從禁止?fàn)顟B(tài)轉(zhuǎn)換為允許狀態(tài)。從其他表狀態(tài)進(jìn)行轉(zhuǎn)換可能會(huì)造成錯(cuò)誤。如果該表已經(jīng)處于允許狀態(tài),優(yōu)選地,這一操作被處置為基本上是空操作。在一個(gè)優(yōu)選實(shí)施例中,與此操作關(guān)聯(lián)的唯一參數(shù)是表ID。
表禁止API允許將一個(gè)表從允許狀態(tài)轉(zhuǎn)換為禁止?fàn)顟B(tài)。如果該表已經(jīng)處于禁止?fàn)顟B(tài),這一操作基本上是作為空操作處置。在一個(gè)優(yōu)選實(shí)施例中,與表禁止API關(guān)聯(lián)的唯一參數(shù)是表ID。
表鎖定API用于把表從允許狀態(tài)移到鎖定狀態(tài)。在轉(zhuǎn)換到鎖定狀態(tài)之后,該表被認(rèn)為是暫時(shí)不為非管理性實(shí)體提供服務(wù)。由這些實(shí)體對(duì)該表的操作被封鎖,直至該表被解鎖或者這些操作超時(shí)。在一個(gè)優(yōu)選實(shí)施例中,所有通用API可以使用表控制應(yīng)用程序112完成,但表定義API、表刪除API、表允許API以及表禁止API除外。在一個(gè)優(yōu)選實(shí)施例中,與此操作關(guān)聯(lián)的唯一參數(shù)是表ID。
表解鎖API用于把表從鎖定狀態(tài)轉(zhuǎn)移到允許狀態(tài)。在一個(gè)優(yōu)選實(shí)施例中,與此操作關(guān)聯(lián)的唯一參數(shù)是表ID。
表查看配置API返回與一個(gè)表關(guān)聯(lián)的配置信息。優(yōu)選地,該配置信息與在使用表定義API過(guò)程中指定的信息相同。在一個(gè)優(yōu)選實(shí)施例中,與此操作關(guān)聯(lián)的唯一參數(shù)是表ID。
表列表API允許列出在系統(tǒng)100中當(dāng)前被定義的表。在一個(gè)優(yōu)選實(shí)施例中,在標(biāo)準(zhǔn)方式下,使用表列表API得到的輸出中包含表ID、每個(gè)表中的條目數(shù)、搜索類型以及表狀態(tài)的列表。在一個(gè)詳細(xì)方式的優(yōu)選實(shí)施例中,表列表API操作的輸出除了狀態(tài)外還包含表定義API操作中所見(jiàn)到的所有參數(shù)。優(yōu)選地,處于未定義狀態(tài)的表被這一API忽略。搜索過(guò)濾器能夠說(shuō)明搜索判據(jù)。與此操作關(guān)聯(lián)的參數(shù)示于表9。
表9參數(shù)名 值備注起始表ID0..255表ID,列表操作應(yīng)從該表開(kāi)始進(jìn)行。
最大表數(shù)0..255指出在列表操作中包括的表個(gè)數(shù)的最大值。
輸出方式標(biāo)準(zhǔn)詳細(xì)搜索過(guò)濾器 全部表只是嚴(yán)格匹配的只是LPM匹配的還可以使用表注冊(cè)SA API。一個(gè)表能被設(shè)置為執(zhí)行向前順序訪問(wèn)或既向前又向后順序訪問(wèn)。這種訪問(wèn)能由多用戶同時(shí)進(jìn)行而彼此沒(méi)有任何傷害。然而,在進(jìn)行順序訪問(wèn)之前,用戶(例如一個(gè)實(shí)體)必須注冊(cè)以接收一個(gè)特定表上的順序訪問(wèn)服務(wù)。對(duì)這一服務(wù)請(qǐng)求的響應(yīng)是一個(gè)SA用戶ID,它用于區(qū)別在一個(gè)特定表上的各個(gè)SA用戶。對(duì)于這個(gè)API,表處在允許或鎖定狀態(tài)。在一個(gè)優(yōu)選實(shí)施例中,這一操作的唯一參數(shù)是表ID。如果該操作成功,則優(yōu)選地返回一個(gè)順序訪問(wèn)ID,它被用于進(jìn)行該表上的順序訪問(wèn)。
表取消注冊(cè)SA API用于釋放順序訪問(wèn)ID及其相關(guān)資源。優(yōu)選地,在注冊(cè)的實(shí)體已結(jié)束順序遍歷一個(gè)表并已不再進(jìn)一步使用該ID時(shí)才調(diào)用這一API。在利用表取消注冊(cè)SA API之前,表處在允許或鎖定狀態(tài)。優(yōu)選地,與這一API關(guān)聯(lián)的參數(shù)只有表ID和順序訪問(wèn)ID。
表得到當(dāng)前條目API用于取回由一特定實(shí)體的順序訪問(wèn)指針指向的當(dāng)前記錄。該表處在允許或鎖定狀態(tài),而且該實(shí)體先前已在該表中注冊(cè)過(guò)以進(jìn)行順序訪問(wèn),從而使表得到當(dāng)前條目API能按所希望的那樣起作用。優(yōu)選地,與這一API關(guān)聯(lián)的參數(shù)只有表ID和順序訪問(wèn)ID。優(yōu)選地,表得到當(dāng)前條目API返回用戶數(shù)據(jù)大小和用戶數(shù)據(jù)。
表得到下一條目API操作用于取回該實(shí)體指向下一個(gè)記錄的順序訪問(wèn)指針,然后取回這下一個(gè)記錄的內(nèi)容。優(yōu)選地,該表處在允許或鎖定狀態(tài),而且該實(shí)體先前已經(jīng)注冊(cè)過(guò)了要進(jìn)行順序訪問(wèn),從而使表得到下一條目API按所希望的那樣起作用。順序訪問(wèn)指針也相應(yīng)地被更新。在一個(gè)優(yōu)選實(shí)施例中,與此操作關(guān)聯(lián)的參數(shù)只有表ID和順序訪問(wèn)ID。該操作返回用戶數(shù)據(jù)大小和用戶數(shù)據(jù)(對(duì)這兩個(gè)字段的說(shuō)明參考查詢表添加條目Lookup_Table_AddEntry)。
表得到前一條目API用于取回該實(shí)體指向前一個(gè)記錄的順序訪問(wèn)指針,然后取回該記錄的內(nèi)容。優(yōu)選地,該順序訪問(wèn)指針也相應(yīng)地被更新。該表處在允許或鎖定狀態(tài),而且對(duì)于表得到前一條目,該實(shí)體必須先前已為順序訪問(wèn)進(jìn)行注冊(cè)。在一個(gè)優(yōu)選實(shí)施例中,表的性質(zhì)指出它即能向前又能向后遍歷。在一個(gè)優(yōu)選實(shí)施例中,與此操作關(guān)聯(lián)的參數(shù)是表ID和順序訪問(wèn)ID,該操作返回用戶數(shù)據(jù)大小和用戶數(shù)據(jù)。
表處理?xiàng)l目API允許整個(gè)表或整個(gè)表的一段被順序地“走過(guò)”(或向前或向后)。此外,對(duì)每次訪問(wèn),調(diào)用一個(gè)指定的過(guò)程以使該過(guò)程能處理該條目。表處理?xiàng)l目API通常由老化例程使用。指定的過(guò)程的地址必須先前已綁定于一個(gè)代表那個(gè)地址的普通數(shù)字。該表應(yīng)處于允許或鎖定狀態(tài),該實(shí)體必須先前已為順序訪問(wèn)進(jìn)行了注冊(cè)。與此操作關(guān)聯(lián)的參數(shù)示于表10。
表10參數(shù)名值 備注表ID 0..255 要在其上進(jìn)行該操作的表的標(biāo)識(shí)符。
順序訪問(wèn)ID0..15指出注冊(cè)用戶的標(biāo)識(shí)符。
行走方向 向前 指出進(jìn)行反復(fù)遍歷的方向。
向后過(guò)程ID0..255 為處理每個(gè)條目要調(diào)用的過(guò)程條目數(shù)0..最大條目數(shù)指出要處理的條目數(shù)。零指出表中全部條目。這個(gè)值不能大于指定的該表最大條目數(shù)(參考查詢表定義(Lookup_Table_Define))。
表設(shè)置書簽API與書簽一起使用。書簽與順序表訪問(wèn)相關(guān)聯(lián),用于“標(biāo)記”一個(gè)表中的特定位置或記錄,從而在以后能直接到達(dá)該書簽并從書簽標(biāo)記的記錄開(kāi)始順序“行走”。如果一個(gè)以書簽標(biāo)記的記錄被刪除,則該書簽只是簡(jiǎn)單地移到該鏈中的下一個(gè)記錄。書簽與注冊(cè)的用戶相關(guān)聯(lián)。所以每個(gè)用戶可以在同一文件內(nèi)的不同記錄位置處保持獨(dú)立的書簽。表設(shè)置書簽API允許在表內(nèi)當(dāng)前順序訪問(wèn)點(diǎn)處設(shè)置書簽。為使用這一API,該表處于允許或鎖定狀態(tài)。其他先決條件包括配置的對(duì)順序訪問(wèn)的支持和用戶注冊(cè)。與表設(shè)置書簽API關(guān)聯(lián)的參數(shù)示于表11。
表11參數(shù)名值 備注表ID 0..255 要對(duì)其進(jìn)行該操作的表的標(biāo)識(shí)符。
順序訪問(wèn)ID0..15指出注冊(cè)的用戶的標(biāo)識(shí)符。
書簽ID0..3 每個(gè)注冊(cè)的用戶對(duì)每個(gè)表可設(shè)置多達(dá)四個(gè)書簽。
表轉(zhuǎn)到書簽API用于初始化與注冊(cè)用戶相關(guān)聯(lián)的順序訪問(wèn)指針,使其指向該用戶所希望的書簽。如果使用了一個(gè)后續(xù)的表得到當(dāng)前條目API,則返回與該書簽關(guān)聯(lián)的記錄的內(nèi)容。類似地,如果使用了一個(gè)后續(xù)的表得到下一條目API,則返回被書簽標(biāo)記的記錄的下一個(gè)記錄的內(nèi)容。為成功使用這一API,該表應(yīng)處在允許或鎖定狀態(tài)。此外,已經(jīng)預(yù)先配置了對(duì)順序訪問(wèn)的支持和用戶針對(duì)順序訪問(wèn)的注冊(cè)。與這一操作關(guān)聯(lián)的參數(shù)與表設(shè)置書簽API的參數(shù)相同。
表開(kāi)始老化API允許開(kāi)始對(duì)表的老化。當(dāng)一個(gè)表被定義時(shí),有可能指出對(duì)該表是否支持老化,如果是,則提供老化過(guò)程ID(關(guān)于該參數(shù)的詳情,參考查詢表定義API)。如果支持老化,則查詢表定義API允許用戶被自動(dòng)地注冊(cè)為順序訪問(wèn)并返回順序訪問(wèn)ID。然而,在使用表開(kāi)始老化API之前老化過(guò)程并不實(shí)際開(kāi)始。因?yàn)槔匣^(guò)程涉及順序訪問(wèn),故返回順序訪問(wèn)ID作為表定義API操作的一部分,并作為一個(gè)參數(shù)提供給這一操作。利用表開(kāi)始老化API的表處在允許或鎖定狀態(tài)。與表開(kāi)始老化API關(guān)聯(lián)的參數(shù)示于表12。
表12參數(shù)名值 備注表ID 0..255 對(duì)其進(jìn)行該操作的表的標(biāo)識(shí)符。
順序訪問(wèn)ID0..15 指出已注冊(cè)的用戶的標(biāo)識(shí)符。
老化間隔 1..216-1 在老化周期之間的經(jīng)過(guò)的時(shí)間,以秒數(shù)計(jì)。
老化條目 0-最大條目數(shù) 指出要處理的條目數(shù)。零指出表中全部條目。這個(gè)值不能大于指定的該表最大條目數(shù)(參考查詢表定義)。
表停止老化API操作用于停止老化功能。這預(yù)先假定先前已使用表開(kāi)始老化API開(kāi)始了老化。該表要滿足的條件與表開(kāi)始老化API的條件相似。與這一API相關(guān)聯(lián)的參數(shù)優(yōu)選地限定于表ID以及由表開(kāi)始老化API使用的順序訪問(wèn)ID。
圖5是根據(jù)本發(fā)明的方法210的一個(gè)實(shí)施例的高層流程圖,該方法使用根據(jù)本發(fā)明的機(jī)制管理網(wǎng)絡(luò)處理器用表。為了清楚,結(jié)合圖2中所示系統(tǒng)100來(lái)描述方法210。參考圖2和圖5,方法210假定網(wǎng)絡(luò)處理器120、130和140以及表管理應(yīng)用程序112已被配置成與通用API 112一起使用。例如,表管理應(yīng)用程序112是與網(wǎng)絡(luò)處理器無(wú)關(guān)的并且具有適于與通用API112一起使用的通用接口。
一個(gè)用戶,如網(wǎng)絡(luò)管理員,被允許通過(guò)步驟212輸入信息,以與網(wǎng)絡(luò)無(wú)關(guān)的方式使用通用API 150來(lái)管理網(wǎng)絡(luò)處理器120、130和140使用的表。所以,在步驟212中,用戶可提供希望控制的網(wǎng)絡(luò)處理器的標(biāo)識(shí)、適當(dāng)參數(shù)和標(biāo)志的值以及所使用的通用API中的一個(gè)(些)API所使用的其他信息。然后,通過(guò)步驟214,通用API 150以特定于網(wǎng)絡(luò)處理器的方式對(duì)可能是異質(zhì)的網(wǎng)絡(luò)處理器120、130和140所使用的表進(jìn)行控制。
使用系統(tǒng)100、方法200和210、特別是通用API 150,表管理應(yīng)用程序112可以是與網(wǎng)絡(luò)處理器無(wú)關(guān)的。由于使用通用API,表管理應(yīng)用程序112仍能以特定于網(wǎng)絡(luò)處理器的方式控制可能是異質(zhì)的網(wǎng)絡(luò)處理器120、130和140使用的表。結(jié)果,表管理應(yīng)用程序112不需要為所使用的網(wǎng)絡(luò)處理器120、130和140中的每種類型包括單獨(dú)的一組API。所以表管理應(yīng)用程序112更簡(jiǎn)單了。結(jié)果,擴(kuò)展系統(tǒng),包括添加新類型網(wǎng)絡(luò)處理器,都變得明顯地簡(jiǎn)單了。因此更容易通過(guò)添加改進(jìn)的網(wǎng)絡(luò)處理器來(lái)改善系統(tǒng)100的性能。此外,由于使用更簡(jiǎn)單的表管理應(yīng)用程序112,可以減少系統(tǒng)100的維護(hù)費(fèi)用。
已經(jīng)公開(kāi)說(shuō)明了一種方法和系統(tǒng),用于使用與網(wǎng)絡(luò)處理器無(wú)關(guān)的控制應(yīng)用程序來(lái)管理異質(zhì)網(wǎng)絡(luò)處理器使用的表。根據(jù)本發(fā)明寫成的軟件存儲(chǔ)在某種形式的計(jì)算機(jī)可讀介質(zhì)中,如CD-ROM,或者在網(wǎng)絡(luò)上被傳送,并由處理器執(zhí)行。因此,計(jì)算機(jī)可讀介質(zhì)要包括計(jì)算機(jī)可讀信號(hào),所述信號(hào)可以例如在網(wǎng)絡(luò)上被傳輸。盡管已根據(jù)所示實(shí)施例描述了本發(fā)明,但本領(lǐng)域普通技術(shù)人員將容易認(rèn)識(shí)到,會(huì)存在對(duì)這些實(shí)施例的各種改變,而且那些改變將在本發(fā)明的精神和范圍內(nèi)。因此,可以由本領(lǐng)域普通技術(shù)人員做出許多修改而不脫離所附權(quán)利要求的精神和范圍。
權(quán)利要求
1.一種用于管理網(wǎng)絡(luò)中多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的至少一個(gè)表的系統(tǒng),該網(wǎng)絡(luò)還包括至少一個(gè)主處理器,它利用至少一個(gè)表管理應(yīng)用程序,該系統(tǒng)包括多個(gè)通用應(yīng)用程序接口(API),它們與這至少一個(gè)表管理應(yīng)用程序及這多個(gè)異質(zhì)網(wǎng)絡(luò)處理器通信,所述的多個(gè)通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與所述的至少一個(gè)主處理器中的至少一個(gè)表管理應(yīng)用程序通信,所述的多個(gè)通用API以特定于網(wǎng)絡(luò)處理器的方式管理這多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表;其中所述的多個(gè)通用API允許所述的至少一個(gè)表管理應(yīng)用程序是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,并允許以特定于網(wǎng)絡(luò)處理器的方式管理所述多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表。
2.如權(quán)利要求1的系統(tǒng),其中所述的多個(gè)通用API由至少一個(gè)表管理應(yīng)用程序用于控制該表的至少一個(gè)性質(zhì)和所述至少一個(gè)表的至少一個(gè)記錄。
3.如權(quán)利要求2的系統(tǒng),其中該表的至少一個(gè)性質(zhì)包括表的狀態(tài),而且其中所述的多個(gè)API的一部分用于設(shè)置表的狀態(tài)。
4.如權(quán)利要求3的系統(tǒng),其中狀態(tài)包括允許狀態(tài)、禁止?fàn)顟B(tài)和鎖定狀態(tài)。
5.如權(quán)利要求2的系統(tǒng),其中表的至少一個(gè)性質(zhì)進(jìn)一步包括該表是否與至少一個(gè)第二表鏈接。
6.如權(quán)利要求2的系統(tǒng),其中所述的多個(gè)通用API的一部分用于確定是否添加第二記錄、刪除記錄、清除記錄和/或老化記錄。
7.一種計(jì)算機(jī)可讀介質(zhì),其上包括有用于管理網(wǎng)絡(luò)中多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表的程序,該網(wǎng)絡(luò)還包括至少一個(gè)主處理器,它使用至少一個(gè)表管理應(yīng)用程序,所述程序包括用于如下方面的指令實(shí)現(xiàn)多個(gè)通用應(yīng)用程序接口(API),它們與所述的至少一個(gè)表管理應(yīng)用程序及所述多個(gè)異質(zhì)網(wǎng)絡(luò)處理器通信,所述的多個(gè)通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與所述至少一個(gè)主處理器中的至少一個(gè)表管理應(yīng)用程序通信,所述多個(gè)通用API以特定于網(wǎng)絡(luò)處理器的方式管理這多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表;其中所述多個(gè)通用API允許所述至少一個(gè)表管理應(yīng)用程序是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,并允許以特定于網(wǎng)絡(luò)處理器的方式管理這多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表。
8.如權(quán)利要求7的計(jì)算機(jī)可讀介質(zhì),其中多個(gè)通用API由至少一個(gè)表管理應(yīng)用程序用于控制該表的至少一個(gè)性質(zhì)和所述至少一個(gè)表的至少一個(gè)記錄。
9.如權(quán)利要求8的計(jì)算機(jī)可讀介質(zhì),其中表的至少一個(gè)性質(zhì)包括表的狀態(tài),而且其中所述的多個(gè)API的一部分用于設(shè)置表的狀態(tài)。
10.如權(quán)利要求9的計(jì)算機(jī)可讀介質(zhì),其中的狀態(tài)包括允許狀態(tài)、禁止?fàn)顟B(tài)和鎖定狀態(tài)。
11.如權(quán)利要求8的計(jì)算機(jī)可讀介質(zhì),其中表的至少一個(gè)性質(zhì)進(jìn)一步包括該表是否與至少一個(gè)第二表鏈接。
12.如權(quán)利要求8的計(jì)算機(jī)可讀介質(zhì),其中所述的多個(gè)通用API的一部分用于確定是否添加第二記錄、刪除記錄、清除記錄和/或老化記錄。
13.一種管理網(wǎng)絡(luò)中多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表的方法,該網(wǎng)絡(luò)還包括至少一個(gè)主處理器,它使用至少一個(gè)表管理應(yīng)用程序,該方法包含(a)對(duì)所述多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表進(jìn)行抽象;(b)根據(jù)該抽象提供多個(gè)通用應(yīng)用程序接口(API),所述的多個(gè)通用API與所述的至少一個(gè)表管理應(yīng)用程序及所述的多個(gè)異質(zhì)網(wǎng)絡(luò)處理器通信,所述的多個(gè)通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與所述至少一個(gè)主處理器中的至少一個(gè)表管理應(yīng)用程序通信,所述的多個(gè)通用API以特定于網(wǎng)絡(luò)處理器的方式管理這多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表;其中所述多個(gè)通用API允許所述的至少一個(gè)表管理應(yīng)用程序是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,并允許以特定于網(wǎng)絡(luò)處理器的方式管理這多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表。
14.權(quán)利要求13的方法,其中所述的多個(gè)通用API由至少一個(gè)表管理應(yīng)用程序用于控制該表的至少一個(gè)性質(zhì)和所述的至少一個(gè)表的至少一個(gè)記錄。
15.權(quán)利要求14的方法,其中該表的至少一個(gè)性質(zhì)包括表的狀態(tài),而且其中所述的多個(gè)API的一部分用于設(shè)置表的狀態(tài)。
16.權(quán)利要求15的方法,其中的狀態(tài)包括允許狀態(tài)、禁止?fàn)顟B(tài)和鎖定狀態(tài)。
17.權(quán)利要求14的方法,其中表的至少一個(gè)性質(zhì)進(jìn)一步包括該表是否與至少一個(gè)第二表鏈接。
18.權(quán)利要求14的方法,其中所述的多個(gè)通用API的一部分用于確定是否添加第二記錄、刪除記錄、清除記錄和/或老化記錄。
全文摘要
本發(fā)明公開(kāi)了一種用于管理網(wǎng)絡(luò)中多個(gè)異質(zhì)網(wǎng)絡(luò)處理器使用的多個(gè)表的方法和系統(tǒng)。該網(wǎng)絡(luò)還包括至少一個(gè)主處理器,它利用至少一個(gè)表管理應(yīng)用程序。該方法和系統(tǒng)包括提供多個(gè)通用應(yīng)用程序接口(API)。通用API與控制應(yīng)用程序以及異質(zhì)網(wǎng)絡(luò)處理器通信。通用API以與網(wǎng)絡(luò)處理器無(wú)關(guān)的方式與表管理應(yīng)用程序通信,但以特定于網(wǎng)絡(luò)處理器的方式管理異質(zhì)網(wǎng)絡(luò)處理器使用的表。這樣,通用API允許控制應(yīng)用程序是與網(wǎng)絡(luò)處理器無(wú)關(guān)的,并以特定于網(wǎng)絡(luò)處理器的方式管理異質(zhì)網(wǎng)絡(luò)處理使用的表。
文檔編號(hào)G06F9/44GK1617513SQ20041005709
公開(kāi)日2005年5月18日 申請(qǐng)日期2004年8月30日 優(yōu)先權(quán)日2003年11月12日
發(fā)明者S·哈里哈蘭, B·約翰斯頓, M·C·拉韋涅, S·拉奧, B·撒那伊 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司