專利名稱::用于網絡裝置上容錯的持久性服務的方法和設備的制作方法
技術領域:
:本發明涉及通信網絡,更具體地,涉及用于光學通信網絡的數據存儲。
背景技術:
:盡管到2002年,因特網協議(“IP”)通信量將達到公共通信網絡通信總量的90%以上,并且通信服務供應商計劃在核心路由以及光學傳輸設備方面投入700多億美元的資金,以大大擴展其IP/光學主干網,然而從IP服務獲得的收入僅將達到250億美元,與750億美元的通信網絡服務總收入相比,只占三分之一。此收入困境主要是因特網訪問市場中過度的競爭造成的,其從根本上導致了商品的包價收費制。雖然圖形、音頻以及視頻內容的廣泛使用大大提高了平均使用率,然而對用戶來說收取的費率仍然是相同的。服務供應商必須增加網絡核心的容量但在收入方面沒有任何相應的增加。對于服務供應商來說,真正的挑戰在于如何從他們的IP/光學主干網得到更多的收入。通過利用IP服務質量(“QoS”)、多協議標記交換(“MPLS”)以及服務轉換技術(非IP服務向IP服務的轉換)方面的最新進展,服務供應商可以將專用的IP結構發展為多服務網絡結構,作為操作分離的服務專用網絡的一種選擇。該新型的網絡結構是單一的多服務網絡,使用IP作為所有服務傳遞的基本協議。這就允許服務供應商在其他已確定的網絡服務收入的基礎上補充源自幀中繼、TDM專線以及ATM的IP收入,這樣就使得他們在IP/光學網絡中巨大的運營投入得到更快的回報。然而,所述多服務網絡結構的方方面面都必須確保其想要補充或者替代的網絡具有可靠性。容錯必須在服務集中的網絡邊際開始。盡管傳統的數據庫提供了有效的存儲,但是它們沒有解決在此環境中提供網絡裝置所必須的高度可靠的容錯系統的問題。因此需要一種用于該多服務網絡環境中的高度可靠的容錯的數據庫存儲。
發明內容一方面,本發明提供了一種在網絡化環境中針對外部應用,提供持久性容錯數據的方法,其中所述數據存儲在所述網絡化環境中的一裝置的數據庫中,該裝置具有一現用的處理器系統以及一備用處理器系統。該方法包括下列步驟在所述備用處理器系統上提供與位于現用處理器系統上的現用數據庫相同的備用副本;監視該現用處理器是否出現故障;當檢測到故障時由所述備用處理器接管控制;其中,從所述現用數據庫到所述備用數據庫的切換對外部應用來說是透明的。并且公開了一種系統。結合附圖考慮以下說明書內容可以獲得對本發明的更完整的理解,在附圖中圖1是表示系統元件關系的高級原理框圖;以及圖2是表示一代表性的外部應用和數據存儲模塊之間交互作用的高級原理框圖。具體實施例方式盡管本發明特別適合與琥珀網(AmberNetwork)ASR2000和ASR2020路由器裝置一起使用,并且在本文中也是這樣描述的,但是其也同樣適合與具有類似容量和特性用于實現MPLS冗余的的其他光學路由器一起使用。MPLS(多協議標記交換)是一項得到標準改善的技術,用于加速網絡業務流量并且使其更容易管理。MPLS涉及為一給定順序的信息包設置一個特定的路徑,其中,所述給定順序的信息包由放在每個信息包中的標記來識別,因此節省了路由器查找將信息包轉發到的下一節點的地址所需要的時間。MPLS被稱為多協議是因為其使用因特網協議(“IP”)、異步傳輸模式(“ATM”)以及各種幀中繼網絡協議工作。參照標準的開放系統互連(“OSI”),MPLS允許絕大多數信息包在第二(交換)層而不是在第三(路由)層被轉發。除了使通信整體移動更快之外,MPLS還使管理用于服務質量(“QoS”)的網絡變得容易。由于這些原因,隨著網絡開始承載更多不同業務的組合,預計該技術將容易被采用。盡管最初MPLS是提高路由器轉發速度的一種方法,然而其正在成為能夠為大規模IP網絡提供新性能的一個關鍵的標準技術。業務流量工程一網絡操作員指令業務流通過其網絡行進的路徑的能力,以及虛擬專用網支持是MPLS優于當前任何可用的IP技術的兩個關鍵應用的例子。因特網工程任務組(“IETF”)定義了MPLSLDP,CR-LDP,RSVP,RSVP-TE以及其他的一些協議。這些定義描述了對協議冗余的需要;但是沒有提供其實施信息,這實際上是留給銷售商/制造商結合他們特別的應用要求來實現。邊緣路由器是邊緣裝置的一個例子,并且有時其被稱為是指邊界路由器。邊緣路由器有時是與核心路由器相對而言的,所述核心路由器在一網絡內(而不是在網絡之間)將信息包轉發到計算機主機。隨著聚合和核心路由器的應用,協議的故障會導致不可接受的網絡故障時間。必須提供硬件和軟件冗余以提供網絡的高度可靠性。盡管傳統的數據庫提供了有效的存儲,但是它們沒有解決提供在該環境下網絡裝置所需的高度可靠的容錯系統的問題。本發明,用于網絡裝置上的容錯服務的方法和設備,能夠實現在多服務網絡環境中的高可靠性的容錯數據庫存儲。一方面,本發明提供了一種在網絡化環境中為外部應用提供持久性容錯數據的系統和方法。簡言之,該方法包括使用第二版本的管理信息結構(SMIv2)的格式來定義一數據庫,然后使用該SMIv2定義產生對應于該數據庫的結構和元數據。在一第二系統上提供與位于主系統上的數據庫相同的備用副本,并且通過一應用程序接口訪問所述現用的數據庫。當在主系統中檢測到故障時,從所述主數據庫切換到所述備用數據庫,該切換的完成對于外部應用來說是透明的。本發明為容錯的網絡數據存儲裝置提供了有效的持久性。本發明允許一應用程序以SMIv2(管理信息結構-版本2)格式來定義數據持久性要求,并且產生所需的方案。該應用程序使用API(應用程序接口)交互作用來讀取或者寫入持久性信息。這樣就使該應用程序高度可用,因為所述數據和必需的數據庫的副本被冗余地保存在另一控制面板中。當發生故障時,由該冗余卡來接管,在該冗余的控制面板上可以獲得同樣的數據。本發明支持不同種類的常規數據,包括不透明的數據。該應用程序可以對該數據庫的帶有其簽名的副本進行校驗,而不必從該數據庫抽取該數據。從網絡管理員的角度來看,網絡管理發生在兩種主要類型的系統之間那些進行控制的系統,稱為管理系統,那些被觀察并且被控制的系統,稱為被管理的系統。最常見的管理系統稱為網絡管理系統(NMS)。被管理的系統可以包括主機、服務器或者網絡組件,例如路由器或者智能中繼器。為了促進互操作性,協同操作的系統必須遵守一公用框架以及一公用語言,稱為協議。在因特網網絡管理框架中,該協議是簡單網絡管理協議,通常稱為SNMP。在被管理的網絡裝置與一強壯的NMS之間進行信息交換對于被管理的網絡的可靠運行來說是必要的。因為這些裝置中的一些裝置在運行管理軟件方面的能力有限,因此所述軟件必須使其對被管理裝置的運行影響達到最小化。因此大量的計算機處理負擔由該NMS來承擔。該NMS依次運行網絡管理應用程序,所述網絡管理應用程序向網絡管理員以及其他用戶提供管理信息。在一被管理的裝置中,專用的低影響軟件模塊,稱為代理,訪問與被管理的裝置有關的信息,并且使其可以被該NMS使用。被管理的裝置保存若干變量的值,并且根據需要將它們報告到該NMS。例如,一代理可以報告諸如以下的數據出入該裝置的字節和信息包的數量,或者被發送和接收的廣播消息數量。在因特網網絡管理框架中,這些變量中的每一個被稱為一個被管理的對象。一個被管理的對象是可以被管理的任何事物的一個分類,其中,代理能夠訪問所述的任何事物并且能夠將其報回至NMS。所有被管理的對象均被包含在管理信息庫(MIB)中,其為被管理的對象的數據庫。NMS可以通過向(該被管理的裝置的)代理發送一消息,請求該裝置改變一個或者多個其變量的值來控制一被管理的裝置。該被管理的裝置可以對例如Set和Get的指令作出反應。NMS使用Set來控制該裝置。NMS使用Get來監視該裝置。MIB變量可以通過簡單網絡管理協議(SNMP)來訪問,其為一應用層協議,被設計用于促進網絡裝置之間的管理信息的交換。該SNMP系統由三個部分組成SNMP管理員、SNMP代理以及MIB。SNMP不是定義一個大的指令集,而是將所有的操作設置在get-request、get-next-request、get-bulk-request以及set-request格式中。例如,一SNMP管理員可以從一SNMP代理獲取一個值,或者在該SNMP代理中存儲一個值。該SNMP管理員可以是網絡管理系統(NMS)的一部分,并且該SNMP代理可以駐留在一網絡裝置,例如路由器上。該MIB由網絡管理軟件來編輯。如果SNMP被配置在一路由器上,則該SNMP代理可以對由該NMS發送的與MIB相關的查詢作出響應。NMS的一個例子是網絡管理軟件,其使用MIB變量來設置裝置變量,并對因特網上的裝置進行輪詢以獲取特定的信息。可以將輪詢的結果制成圖表并對其進行分析,以幫助你排除因特網問題,提高網絡品質,檢驗裝置的配置,監視通信負荷等等。該SNMP代理獲取來自該MIB的數據,所述MIB是與裝置參數和網絡數據相關的信息的儲存庫。該代理也可以將捕獲的信息(traps)或者特定事件的通知發送到管理員。本發明,即用于在網絡裝置上進行容錯服務的方法和裝置使用了一個數據庫,所述數據庫使用IETFSMIv2格式實現為包含在一MIB中的被管理對象的集合,其中MIB是一個被管理對象的數據庫。該程序使用API交互作用以讀取或者寫入持久性信息。該數據庫使用IETFSMIv2格式作為數據定義語言。SMIv2管理信息被看作是被管理對象的集合,駐留在虛擬信息存儲器MIB(管理信息庫)中。相關對象的集合被定義在MIB模塊中。這些模塊是使用OSI的抽象語法表示1,ASN.1(1988)的一個適合的子集而寫入的。管理信息的結構(SMI)定義了所述適合的子集,并且用于分配一組相關的管理值。該SMI被分成三部分模塊定義、目標定義以及通知定義。定義SMIv2的最終的RFC(請求注解)已經在1999年4月公布為因特網標準58管理信息結構-版本2(SMIv2),RFC2578,STD58,1999年4月;SMIv2的原文規則,RFC2579,STD58,1999年4月;以及SMIv2的一致性描述,RFC2580,STD58,1999年4月,這里參考引用上述標準的詳細內容。常規的數據庫使用復雜的機制來存儲數據,其實質上并非被設計用作一網絡裝置,因為它們缺少容錯。本發明提供了一種能夠容錯的用于存儲數據的新方法。該應用服務需要持久性信息,其使用SMIv2格式來定義該數據庫的設計方案。其他的數據庫或者使用一種專有的數據定義語言或者使用一種結構化查詢語言(SQL)來定義其數據。本發明具有以SMIv2格式定義的數據元,其隨后被用于產生結構和元數據。所產生的結構被該應用程序用來讀寫數據。該元數據被稱為數據存儲(datastore)的數據庫服務使用以提供對數據的訪問。當網絡裝置第一次啟動時,在該文件系統上啟動設計方案。該文件系統被期待提供符合POSIX的文件IO功能。在完成第一次讀取時,通過返回一個錯誤消息,該應用程序被通知隨后對其記錄進行初始化。本發明支持能夠動態增加的動態記錄。該應用程序隨后能夠使用數據庫記錄id(由工具產生)以及行號來讀寫該持久性信息。為每個記錄保存一個校驗和,并且每次在該系統重新啟動時檢驗該校驗和。該數據庫的一個相同的副本保持在備用狀態。當插入備用模塊時,凍結現用模塊的供給并且將數據庫從該模塊復制到該備用系統。該數據庫副本完成之后,備用任務就產生了。因為現用數據庫中的每個改變均被同樣地發送到該備用數據庫,因此,這就使所有的任務看到同樣的數據庫。該數據庫的備份副本(快照)是通過使用tar和壓縮技術來制作的。該備份機制類似于標準應用程序。另外保留一個幻數以使用數據存儲快照來區分任何采用tar和zip格式壓縮的文件。版本號被存儲在該采用zip格式壓縮的文件中。gzip的標題的注釋區域用于存儲該幻數以及版本信息。所有的備份副本都保持為冗余的。該數據庫被設計為在其檢測到舊版本時提供一個透明的版本升級。其完成是通過使用dsrevise工具尋找數據庫版本之間的變化,然后產生將舊的版本更新為較新的版本的代碼來實現的。參見圖1,其示出了在定義、datastore和應用程序之間的交互作用。該應用程序實際上是通過定義該MIB而確定數據定義。這些方案文件102描述了諸如以下項目的定義主機、溫度傳感器、系統卡信息以及線路卡信息,這些信息需要是持久性的,以使該系統高度可靠并且高度可用。在MIB被定義之后,隨后使用該MIB定義來產生該系統使用的信息。這通過使用datastore語言處理器實用程序(dslp)104來完成。這樣產生由datastore106和應用程序108使用的文件。其包括元數據110以及C標題文件112。該應用程序108使用一個編譯程序114從該運行時程序庫118以及C源代碼文件120來產生一個可執行模塊116。該dslp實用程序104隨后產生下列文件。●dsRecId.h包含記錄標識。其包含確定的所有記錄的記錄標識符。這些記錄標識符由該應用程序來使用。●dsMeta.h包括datastore需要的記錄信息。●dsPrintDir.h包括打印功能的映射。其被用于ds_showRecords。●dsPrintProto.h包括所有的datastore記錄的打印原型。該應用程序開發商能夠提供這些程序的執行。默認的執行還以dsPrintImpl.c文件的形式來實現。●dsPrintImpl.c該C文件包括所有記錄的默認的打印消息。該應用程序也能夠提供該程序的執行。●rmDsStruc.h該結構被應用程序使用來讀寫該文件。參見表1,其示出了典型的代碼(在該MIB文件中找到),其被使用IETFSMIV2格式寫為數據定義語言。該例子涉及溫度傳感器的定義。表1tempSensorTable對象類型SYNTAXtempSensorEntry的序列MAX-ACCESS不可訪問STATUS當前的DESCRIPTION“Systemcardinfotable”∷={systemCard3}tempSensorEntry對象類型SYNTAXtempSensorEntryMAX-ACCESS不可訪問STATUS當前的DESCRIPTION“Anentry(conceptualrow)inthetempSensorTable.”INDEX{lcIndex}∷={tempSensorTable1}TempSensorEntry∷=SEQUENCE{tsNumber無符號16位,tsThresholdLow無符號16位,tsThresholdHigh無符號16位,}tsNumber對象類型SYNTAX無符號16位MAX-ACCESS只讀的STATUS當前的DESCRIPTION“傳感器號碼”∷={tempSensorEntry1}tsThresholdLow對象類型SYNTAX無符號16位MAX-ACCESS讀-寫STATUS當前的DESCRIPTION“以攝氏度表示的低閾值”∷={tempSensorEntry2}tsThresholdHigh對象類型SYNTAX讀-寫MAX-ACCESS當前的STATUS“以攝氏度表示的高閾值”DESCRIPTION∷={tempSensorEntry3}tempSensorTableMaxRows對象類型SYNTAX整數(4)MAX-ACCESS只讀STATUS當前的DESCRIPTION“最大的行數”∷={systemCard4}...tempSensorGroup對象組OBJECTS{tempSensorTableMaxRows}STATUS當前的DESCRIPTION“thesystemgroupdefinesobjectswhicharecommontoallmanagedsystems”∷={resMgr17}參見圖2,其示出了一框圖,描述了代表性的外部應用程序202與datastore模塊204之間的交互作用。該外部應用程序202通過調用由“dslibrary(數據庫)”206提供的庫功能來使用datastore模塊204。Datastore204包括元數據208、日志文件210以及數據文件212。用于訪問datastore204的指令包括dsinitialize(數據庫啟動)214,dsutils(數據庫應用)(檢查、編輯、清除、轉儲等等)216以及dsexport(數據庫導出)218。Dsexport218提供了產生一ASCII文件220的必要的接口。參見表2,其示出了用于訪問永久性信息(數據)的采樣偽代碼。表2intresMgrTaskMain(){AX2000HOST_DS_REChostEntry;/*從該datastore讀取記錄*/if(ds_getRecord(AX2000HOST_ID,0,&hostEntry)==ERROR){/*檢查該記錄是否沒有初始化。以默認的值來初始化該記錄*/if(errno==DS_INIT_RECORD){appTaskUpdateDefaultValue(&hostEntry);ds_setRecord(AX2000HOST_ID,0,&hostEntry);}}else{/*根據該值來采取行動*/appUpdatePrompt(hostEntry.ax2000hostName);}/*應用程序具體碼*//*改變值以及更新該datastore*/strncpy(hostEntry.ax2000hostName,”ASRBOX1”);ds_setRecord(AX2000HOST_ID,0,&hostEntry);}這里,負責保持主機名稱的資源管理器任務使用指令ds_getRecord來獲取存儲在該持久性信息中的值。其使用在dsRecId.h文件中定義的記錄標識,行號(0),以及用于放置該值的緩沖區。如果該數據還沒有初始化,則ds_getRecord返回一個錯誤,并且使用默認值來初始化該記錄。當一個記錄改變時,其被使用ds_setRecord來更新。本發明包括一種用于(通過使用dsreport指令)以ASCII格式輸出數據的方法,并且該顯示機構使用幻數來處理字節調整。每個數據文件包含一個四個字節的幻數,其十六進制表示是Oxafbeadde。當在小尾數(endian)機器上讀取datastore數據文件時,此幻數被讀為Oxdeadbeaf。這指示尾數已經完全改變了,并且隨后的顯示通過將大尾數轉換為小尾數來完成。考慮到前面的描述,對于本專業技術人員來說,本發明的大多數修改和可選的實施方式都是顯而易見的。需要清楚理解的是,可以以多種語言多種方式來實現特定的典型的計算機代碼,其同樣能夠很好地適應多個硬件平臺。因此,此說明書僅應該被看作是說明性的,并且目的是向本專業技術人員講解本發明的最佳模式。在不脫離本發明的精神的范圍內該結構的細節可以有很大的不同,并且保留對落在該附加的權利要求的范圍內的所有修改的專用權。權利要求1.一種在網絡化環境中針對外部應用提供持久性容錯數據的方法,其中,所述數據存儲在該網絡化環境中的一裝置的數據庫中,所述裝置具有一現用處理器系統以及一備用處理器系統,所述方法包括以下步驟在所述備用處理器系統上提供與位于所述現用處理器系統上的現用數據庫相同的備用副本;監視所述現用處理器是否有故障;當檢測到有故障時,由所述備用處理器接管控制;其中,從所述現用數據庫到所述備用數據庫的切換對外部應用來說是透明的。2.如權利要求1所述的方法還包括在所述現用處理器系統以及所述備用處理器系統上保留所述數據庫帶簽名的壓縮備用副本的步驟。3.如權利要求2所述的方法還包括在故障事件發生時從所述壓縮的備用副本恢復數據的步驟。4.如權利要求2所述的方法還包括在有惡化事件發生時從所述壓縮的備用副本恢復數據的步驟。5.如權利要求1所述的方法還包括使用一預定的格式來定義所述數據庫的步驟。6.如權利要求5所述的方法還包括使用所述預定格式的定義產生與所述數據庫相對應的結構和元數據的步驟。7.如權利要求1所述的方法還包括通過一個應用程序接口訪問所述現用數據庫的步驟。8.如權利要求5所述的方法,其中所述預定的格式是管理信息結構版本2(SMIv2)的格式。9.一種在網絡化環境中針對外部應用提供持久性容錯數據的系統,其中,所述數據存儲在該網絡化環境中的一裝置上的數據庫中,所述裝置具有一現用處理器系統以及一備用處理器系統,所述系統包括以下裝置用于在所述備用處理器系統上提供與位于所述現用處理器系統上的現用數據庫相同的備用副本的備用裝置;監視所述現用處理器是否出現故障的監視裝置;當檢測到故障時,用于由所述備用處理系統接管控制的控制裝置;其中,從所述現用數據庫到所述備用數據庫的切換對外部應用來說是透明的。10.如權利要求9所述的系統,還包括備份裝置,用于在所述現用處理器系統以及所述備用處理器系統上保留所述數據庫帶簽名的壓縮備用副本。11.如權利要求10所述的系統,還包括用于在發生故障事件時從所述壓縮的備用副本恢復數據的裝置。12.如權利要求10所述的系統,還包括用于在出現惡化事件時從所述壓縮的備用副本恢復數據的裝置。13.如權利要求9所述的系統,還包括使用一預定的格式來定義所述數據庫的裝置。14.如權利要求13所述的系統,還包括使用所述預定格式的定義產生與所述數據庫相對應的結構和元數據的裝置。15.如權利要求9所述的系統,還包括通過一個應用程序接口訪問所述現用數據庫的裝置。16.如權利要求13所述的系統,其中所述預定的格式是管理信息結構版本2(SMIv2)的格式。全文摘要一種在網絡化環境中針對外部應用提供持久性容錯數據的方法,其中,所述數據存儲在該網絡化環境中的一裝置的數據庫中,所述裝置具有一現用處理器系統以及一備用處理器系統,所述方法包括以下步驟在所述備用處理器系統上提供與位于所述現用處理器系統上的現用數據庫相同的備用副本;監視所述現用處理器是否出現故障;當檢測到有故障時,由所述備用處理器接管控制;其中,從所述現用數據庫到所述備用數據庫的切換對外部應用來說是透明的。文檔編號H04L12/24GK1605067SQ02825244公開日2005年4月6日申請日期2002年12月20日優先權日2001年12月20日發明者阿賈伊·卡馬萬什,馬德希·格朗迪申請人:諾基亞有限公司