本發(fā)明的實施例涉及生成對于給定網(wǎng)絡(luò)拓撲的網(wǎng)絡(luò)依賴性。
背景技術(shù):
網(wǎng)絡(luò)拓撲通常描述網(wǎng)絡(luò)內(nèi)的網(wǎng)絡(luò)元件的布置。網(wǎng)絡(luò)的網(wǎng)絡(luò)拓撲可以描繪網(wǎng)絡(luò)元件的放置,包括設(shè)備位置和/或網(wǎng)絡(luò)元件之間的連接的安裝。網(wǎng)絡(luò)拓撲還可以圖示在網(wǎng)絡(luò)內(nèi)的不同的網(wǎng)絡(luò)元件之間如何傳輸數(shù)據(jù)。
技術(shù)實現(xiàn)要素:
根據(jù)第一實施例,一種方法可以包括通過輪詢引擎確定根。該根可以包括網(wǎng)絡(luò)的節(jié)點群集內(nèi)的第一節(jié)點。該方法還可以包括在根與第二節(jié)點之間生成至少一個網(wǎng)絡(luò)依賴性。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于網(wǎng)絡(luò)的節(jié)點之間的連接。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于從輪詢引擎到第二節(jié)點的定向路徑。該方法還可以包括輪詢第二節(jié)點。該輪詢經(jīng)由在輪詢引擎與第二節(jié)點之間已經(jīng)生成的至少一個網(wǎng)絡(luò)依賴性而發(fā)生。該方法還可以包括確定第二節(jié)點是不可到達的。該方法還可以包括:如果第二節(jié)點的父節(jié)點中的任何父節(jié)點被確定為由輪詢引擎可到達,則生成與不可到達的第二節(jié)點有關(guān)的激活警報。
在第一實施例的方法中,確定根可以包括:基于用戶定義和輪詢引擎的本地信息中的至少一個來確定根。
在第一實施例的方法中,在輪詢引擎與第二節(jié)點之間已經(jīng)添加至少一個手動添加的依賴性。
在第一實施例的方法中,至少一個手動添加的依賴性具有超過至少一個自動生成的依賴性的優(yōu)先級。
在第一實施例的方法中,至少一個自動生成的依賴性與至少一個手動添加的依賴性不沖突。
根據(jù)第二實施例,一種裝置可以包括至少一個處理器。該裝置還可以包括至少一個存儲器,其包括計算機程序代碼。該至少一個存儲器和該計算機程序代碼可以被配置為與至少一個處理器一起使得裝置至少確定根。該根可以包括網(wǎng)絡(luò)的節(jié)點群集內(nèi)的第一節(jié)點。還可以使得該裝置在根與第二節(jié)點之間生成至少一個網(wǎng)絡(luò)依賴性。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于網(wǎng)絡(luò)的節(jié)點之間的連接。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于從裝置到第二節(jié)點的定向路徑。還可以使得該裝置輪詢第二節(jié)點。該輪詢經(jīng)由在裝置與第二節(jié)點之間已經(jīng)生成的至少一個網(wǎng)絡(luò)依賴性而發(fā)生。還可以使得該裝置確定第二節(jié)點是不可到達的。還可以使得該裝置如果第二節(jié)點的父節(jié)點中的任何父節(jié)點被確定為由裝置可到達,則生成與不可到達的第二節(jié)點有關(guān)的激活警報。
在第二實施例的裝置中,確定根可以包括:基于用戶定義和裝置的本地信息中的至少一個來確定根。
在第二實施例的裝置中,在裝置與第二節(jié)點之間已經(jīng)添加至少一個手動添加的依賴性。
在第二實施例的裝置中,至少一個手動添加的依賴性具有超過至少一個自動生成的依賴性的優(yōu)先級。
在第二實施例的裝置中,至少一個自動生成的依賴性與至少一個手動添加的依賴性不沖突。
根據(jù)第三實施例中,計算機程序產(chǎn)品可以被實現(xiàn)在非暫態(tài)計算機可讀介質(zhì)上。該計算機程序產(chǎn)品可以被配置為控制處理器以執(zhí)行方法,包括通過輪詢引擎確定根。該根可以包括網(wǎng)絡(luò)的節(jié)點群集內(nèi)的第一節(jié)點。該方法還可以包括生成根與第二節(jié)點之間的至少一個網(wǎng)絡(luò)依賴性。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于網(wǎng)絡(luò)的節(jié)點之間的連接,并且所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于從輪詢引擎到第二節(jié)點的定向路徑。該方法還可以包括輪詢第二節(jié)點。該輪詢經(jīng)由在輪詢引擎與第二節(jié)點之間已經(jīng)生成的至少一個網(wǎng)絡(luò)依賴性而發(fā)生。該方法還可以包括確定第二節(jié)點是不可到達的。該方法還可以包括如果第二節(jié)點的父節(jié)點中的任何父節(jié)點被確定為由輪詢引擎可到達,則生成與不可到達的第二節(jié)點有關(guān)的激活警報。
在第三實施例的計算機程序產(chǎn)品中,確定根可以包括:基于用戶定義和輪詢引擎的本地信息中的至少一個來確定根。
在第三實施例的計算機程序產(chǎn)品中,在輪詢引擎與第二節(jié)點之間已經(jīng)添加至少一個手動添加的依賴性。
在第三實施例的計算機程序產(chǎn)品中,至少一個手動添加的依賴性具有超過至少一個自動生成的依賴性的優(yōu)先級。
在第三實施例的計算機程序產(chǎn)品中,至少一個自動生成的依賴性與至少一個手動添加的依賴性不沖突。
附圖說明
為了對本發(fā)明的適當?shù)睦斫?,?yīng)當對附圖進行參考,其中:
圖1圖示了根據(jù)本發(fā)明的某些實施例的包括輪詢引擎的示例網(wǎng)絡(luò)拓撲。
圖2圖示了根據(jù)本發(fā)明的某些實施例的輪詢引擎與網(wǎng)絡(luò)節(jié)點之間的路徑。
圖3(a)圖示了根據(jù)本發(fā)明的某些實施例的確定中心節(jié)點/根和群集的依賴性。
圖3(b)圖示了根據(jù)某些實施例的確定針對每個節(jié)點群集/組的根。
圖3(c)圖示了根據(jù)某些實施例的用于計算針對群集的根的示例程序。
圖3(d)圖示了根據(jù)某些實施例的根據(jù)輪詢器本地信息確定根。
圖4圖示了自動地生成依賴性同時避免生成與用戶定義的依賴性沖突的依賴性的過程。
圖5圖示了根據(jù)本發(fā)明的某些實施例的將所生成的依賴性存儲在表內(nèi)。
圖6圖示了根據(jù)本發(fā)明的某些實施例的移除對應(yīng)于依賴性的條目。
圖7圖示了根據(jù)本發(fā)明的某些實施例的允許用戶忽略自動生成的依賴性的接口。
圖8圖示了根據(jù)本發(fā)明的某些實施例的允許用戶啟用或禁用自動生成依賴性的方法的接口。
圖9圖示了根據(jù)本發(fā)明的某些實施例的允許用戶管理已經(jīng)被用戶配置和已經(jīng)被自動生成的不同的依賴性的示例接口。
圖10圖示了根據(jù)本發(fā)明的某些實施例的示例依賴性樹。
圖11圖示了根據(jù)本發(fā)明的某些實施例的用于計算拓撲并且確定自動依賴性的過程。
圖12圖示了根據(jù)本發(fā)明的某些實施例的計算針對給定輪詢器的群集的依賴性。
圖13圖示了根據(jù)本發(fā)明的某些實施例的方法的流程圖。
圖14圖示了根據(jù)本發(fā)明的某些實施例的裝置。
圖15圖示了根據(jù)本發(fā)明的某些實施例的裝置。
具體實施方式
本發(fā)明的某些實施例可以涉及用于生成給定網(wǎng)絡(luò)拓撲的節(jié)點之間的依賴性的方法和裝置。生成依賴性通常指代確定和/或認定網(wǎng)絡(luò)的至少兩個節(jié)點之間的關(guān)系,其中一個節(jié)點依賴于至少一個其他節(jié)點。換句話說,所生成的依賴性可以是網(wǎng)絡(luò)拓撲內(nèi)的節(jié)點到節(jié)點連接。網(wǎng)絡(luò)拓撲通常指代網(wǎng)絡(luò)的節(jié)點如何連接到彼此的表示。某些實施例可以在不要求任何附加用戶輸入的情況下自動地生成針對給定網(wǎng)絡(luò)拓撲的依賴性。某些實施例可以通過將算法應(yīng)用在給定網(wǎng)絡(luò)拓撲上自動地生成依賴性。對于某些實施例而言,用戶可以定義節(jié)點群集/組,其中依賴性存在于群集/組的節(jié)點之間。某些實施例還可以涉及確定每簇/組節(jié)點的根節(jié)點,如下文更詳細描述的。某些實施例可以自動生成每群集/組內(nèi)的依賴性,并且可以確保在所生成的依賴性內(nèi)沒有沖突并且沒有不一致性。
網(wǎng)絡(luò)設(shè)備(諸如輪詢引擎)可以與網(wǎng)絡(luò)內(nèi)的節(jié)點通信。輪詢引擎可以與節(jié)點通信以例如確定節(jié)點的狀態(tài)、確定節(jié)點的操作特性和/或確定節(jié)點的可用性。當生成依賴性時,所生成的依賴性可以對應(yīng)于輪詢引擎與相關(guān)節(jié)點之間的所確定/所認定的路徑。輪詢引擎可以使用路徑來到達相關(guān)節(jié)點。
圖1圖示了包括輪詢引擎110的示例網(wǎng)絡(luò)拓撲100。如上文所描述的,輪詢引擎通常執(zhí)行網(wǎng)絡(luò)設(shè)備的狀態(tài)的檢查以確定網(wǎng)絡(luò)設(shè)備處于什么狀態(tài)和/或執(zhí)行網(wǎng)絡(luò)設(shè)備是否仍然與網(wǎng)絡(luò)通信的檢查。網(wǎng)絡(luò)拓撲100可以包括多個群集(151、152和153)。每個群集可以對應(yīng)于整個網(wǎng)絡(luò)的不同的部分。一個群集可以是總部群集,同時另一群集可以是分支群集。某些連接/設(shè)備可能不是立即明顯的。例如,虛線140指示總部與分支之間的網(wǎng)絡(luò)設(shè)備/連接在拓撲100中是不可見的??偛颗c分支之間的網(wǎng)絡(luò)設(shè)備可以可能地不由輪詢引擎監(jiān)測,這是因為用戶可能地不具有對他們的訪問。用戶可以可能地不具有對總部與分支之間的網(wǎng)絡(luò)設(shè)備的訪問,這是因為服務(wù)提供商可能在控制這樣的網(wǎng)絡(luò)設(shè)備。節(jié)點可以在每個群集內(nèi)部被連接,同時在群集自身之間可能不存在可見的連接。
圖2圖示了根據(jù)某些實施例的輪詢引擎與網(wǎng)絡(luò)節(jié)點之間的路徑。如上文所描述的,當自動生成依賴性時,生成過程可以確定輪詢引擎可以跟隨以到達網(wǎng)絡(luò)節(jié)點的路徑。例如,輪詢引擎210可以跟隨去往到達節(jié)點250的路徑。由不同的輪詢引擎(210、220)跟隨以到達給定節(jié)點的路徑可以是不同的。例如,從輪詢引擎210至到達節(jié)點250的路徑與從輪詢引擎220至到達節(jié)點250的路徑不同。如此,某些實施例可以針對每個輪詢引擎確定到達每個網(wǎng)絡(luò)節(jié)點的路徑。
如此,當確定輪詢引擎與給定節(jié)點之間的路徑時,所生成的每個依賴性(例如,在兩個節(jié)點之間)可以是路徑中的定向步驟。可以存在從一個輪詢引擎到給定網(wǎng)絡(luò)節(jié)點的多個路徑。
兩個節(jié)點之間的一種類型的依賴性關(guān)系是父節(jié)點對子節(jié)點關(guān)系,其中子節(jié)點依賴于父節(jié)點。再參考圖2,父節(jié)點240具有多個子節(jié)點(節(jié)點250和節(jié)點260)。在父節(jié)點240發(fā)生故障(使得父節(jié)點240通過網(wǎng)絡(luò)不能到達或通信)的情況下,父節(jié)點240的子節(jié)點250繼續(xù)由網(wǎng)絡(luò)輪詢。即,輪詢引擎210可以仍然嘗試與子節(jié)點250通信。由于子節(jié)點250看起來也發(fā)生故障(作為父節(jié)點240實際上發(fā)生故障的結(jié)果,子節(jié)點250是由輪詢引擎210不可到達的),因而輪詢引擎可以激活網(wǎng)絡(luò)警報以指示子節(jié)點250發(fā)生故障。輪詢引擎可以生成警報,并且用戶接口(UI)可以將警報顯示給用戶。用戶可以利用web瀏覽器或特殊工具(諸如例如警報中心)來查看警報。在輪詢引擎不能到達子節(jié)點250的情況下,檢查子節(jié)點的相關(guān)聯(lián)的依賴性,并且從所檢查的依賴性導出子節(jié)點的父節(jié)點或組。然后,如果子節(jié)點的所有父節(jié)點發(fā)生故障,則某些實施例確定節(jié)點250的狀態(tài)是不可到達的。如果警報被配置為當節(jié)點狀態(tài)改變到發(fā)生故障時生成,并且如果節(jié)點250的狀態(tài)被確定為不可到達的,則不由輪詢引擎生成警報,如上文所描述的。如果未確定依賴性,則無論何時輪詢引擎不能到達節(jié)點250,節(jié)點250的狀態(tài)將被認為是發(fā)生故障。在這種情況下,如果警報被配置為當節(jié)點狀態(tài)改變到發(fā)生故障時生成,那么通過輪詢引擎生成這樣的警報。
然而,在子節(jié)點由于對應(yīng)的父節(jié)點發(fā)生故障而不可到達的情況下,由于問題在于父節(jié)點,因而應(yīng)當忽略與子節(jié)點有關(guān)的激活警報。對于某些實施例而言,生成/激活警報可以包括兩個步驟。第一步驟是確定子節(jié)點的節(jié)點狀態(tài)。第二步驟是當已經(jīng)滿足用于生成警報的條件時而生成警報。存在處理警報的至少兩個方式。利用處理警報的第一方式,生成的僅有警報是旨在由用戶查看的警報。利用該方法,如上文所指定的,當節(jié)點250不能由輪詢引擎到達并且其所有父節(jié)點發(fā)生故障時,其節(jié)點狀態(tài)是不可到達的。因此,針對該不可到達的節(jié)點未生成警報,這是因為用于生成警報的條件是發(fā)生故障的節(jié)點狀態(tài)。當節(jié)點狀態(tài)改變到不可到達時,尚未滿足用于生成警報的條件,并且因此未生成警報。利用處理警報的第二方式,首先生成警報,并且然后如果用戶不應(yīng)當查看所生成的警報,則忽略所生成的警報??赡艿氖?,當輪詢引擎不能到達節(jié)點250時生成警報,并且然后當進一步的處理指示節(jié)點250的父節(jié)點全部發(fā)生故障時忽略警報。在其中所生成的一些警報將被忽略的這樣的情況下,與子節(jié)點有關(guān)的激活警報應(yīng)當由輪詢引擎忽略以便避免利用激活警報充滿網(wǎng)絡(luò)。輪詢引擎還應(yīng)當避免激活針對子節(jié)點的網(wǎng)絡(luò)警報。
父節(jié)點可以是中心節(jié)點(諸如例如邊緣路由器)。如上文所描述的,當網(wǎng)絡(luò)的中心節(jié)點發(fā)生故障時,輪詢引擎可能不能夠到達/通信被配置在發(fā)生故障的中心節(jié)點后面(即,被配置為依賴于的)節(jié)點。
如上文所描述的,與被配置在發(fā)生故障的中心節(jié)點后面的節(jié)點有關(guān)的激活警報應(yīng)當由輪詢引擎忽略,以便避免警報的泛濫。如此,某些實施例可以首先通過標識被配置在中心節(jié)點后面的節(jié)點來標識依賴節(jié)點。與針對被配置在中心節(jié)點后面的所有節(jié)點生成警報相反,某些實施例可以然后僅針對中心節(jié)點生成警報。
鑒于上文,當節(jié)點是不可到達的時,某些實施例可以基于由輪詢引擎(即,被分配給不可到達的節(jié)點的輪詢引擎)已知的依賴性,確定針對該不可到達的節(jié)點的所有父節(jié)點。如果(節(jié)點的)父節(jié)點中的任何父節(jié)點是正常的/可到達的,那么不可到達的節(jié)點的狀態(tài)被認為是“發(fā)生故障的(down)”。另一方面,如果所有父節(jié)點發(fā)生故障,那么節(jié)點的狀態(tài)將被認為是僅“不可到達的(unreachable)”,并且可以忽略來自這樣的節(jié)點的激活警報。利用某些其他實施例,如果針對不可到達的節(jié)點的所有父節(jié)點發(fā)生故障,那么未針對不可到達的節(jié)點生成警報。
某些實施例可以執(zhí)行/運行算法以便在需要時或根據(jù)規(guī)律間隔自動生成網(wǎng)絡(luò)依賴性,使得所生成的依賴性是最新的。某些實施例還可以允許用戶手動添加依賴性。雖然依賴性的手動配置通常是繁瑣的并且雖然手動配置通常地不能適當?shù)剡m于改變網(wǎng)絡(luò)拓撲,但是本發(fā)明的某些實施例可以提供實現(xiàn)手動配置的有效方法。特別地,某些實施例可以集成自動生成依賴性的功能連同其中用戶配置依賴性的功能。對于某些實施例而言,用戶定義/用戶配置的依賴性可以取得超過自動生成的依賴性的優(yōu)先級。
在生成依賴性時,如上文所描述的,某些實施例可以抑制某些警報,可以導出基于拓撲的組,并且可以報告節(jié)點可用性。關(guān)于導出基于拓撲的組,用戶可能想要定義包含直接或間接地(遞歸地)依賴于特定節(jié)點的所有節(jié)點的組。利用自動確定依賴性(即,“自動依賴性”),某些實施例可以確定該節(jié)點作為父節(jié)點直接或遞歸的所有依賴性,并且然后那些依賴性中的所有子代在該組中。例如,用戶可以將對該組的訪問許可分配給賬戶或基于組狀態(tài)定義警報條件。這允許用戶管理組級別而不是節(jié)點級別上的網(wǎng)絡(luò)設(shè)備。如上文所描述的,所生成的依賴性可以被用于適當?shù)墓?jié)點狀態(tài)(即,關(guān)于節(jié)點狀態(tài)是否“發(fā)生故障”或僅“不可到達的”)。
某些實施例的算法可以處理具有多個輪詢引擎的場景。
每個節(jié)點可以被分配給不同的輪詢引擎,并且節(jié)點與輪詢引擎之間的分配可以隨時間改變。在任何時刻,節(jié)點通常被分配給單個輪詢引擎。通常不可能的是,用戶分配超過一個輪詢引擎以對來自給定節(jié)點的數(shù)據(jù)進行輪詢。在不同的時間處,用戶可以改變配置,并且讓另一輪詢引擎對給定節(jié)點進行輪詢。
圖3(a)圖示了根據(jù)某些實施例的確定中心節(jié)點/根和群集的依賴性。拓撲連接可以是某些實施例的計算的輸入,并且自動生成的依賴性可以是輸出。某些實施例可以確定其中連接群集內(nèi)的節(jié)點的節(jié)點群集。在步驟310處,某些實施例可以確定每個群集的根節(jié)點。對于每個輪詢引擎而言,某些實施例可以確定每個群集的根節(jié)點。根節(jié)點可以對應(yīng)于群集中的其他節(jié)點所依賴的的節(jié)點(諸如例如父節(jié)點)。根節(jié)點可以然后保存在AutoDependencyRoot表內(nèi)。為了確定群集的根節(jié)點,自動生成依賴性的過程可以首先確定最接近特定輪詢引擎(其然后被確定為群集的根)的節(jié)點。該過程可以然后構(gòu)建/生成從所確定的根節(jié)點開始的每個群集內(nèi)的依賴性。換句話說,某些實施例可以確定從所確定的根節(jié)點到群集中的其他節(jié)點的路徑。依賴性可以然后保存在Dependency表內(nèi)。
關(guān)于手動配置依賴性,某些實施例可以允許用戶通過添加從所生成的依賴性的集合缺少的依賴性來手動地調(diào)節(jié)依賴性。某些實施例還可以校正錯誤的自動生成的依賴性。例如,如果拓撲連接出于任何原因是錯誤的(其中例如節(jié)點1未連接到節(jié)點2,但是拓撲數(shù)據(jù)示出節(jié)點1連接到節(jié)點2),那么自動生成的依賴性可能是錯誤的,或者依賴性的方向可能是錯誤的。用戶可以通過添加用戶定義的依賴性對此進行改正。用戶還可以忽略不需要的依賴性。對于某些實施例而言,用戶可以調(diào)節(jié)由自動生成過程所執(zhí)行的計算:(1)允許用戶配置的依賴性采取超過自動生成的依賴性的優(yōu)先級,和/或(2)避免生成用戶依賴性與自動生成條目之間的循環(huán)依賴性回路。循環(huán)依賴性回路對應(yīng)于一系列依賴性,其中每個節(jié)點取決于相同系列依賴性中的另一節(jié)點。
圖3(b)圖示了根據(jù)某些實施例的確定針對節(jié)點的每個群集/組的根。第一,某些實施例可以確定節(jié)點的群集/組。群集可以包括基于拓撲連接到彼此的節(jié)點。在一個群集中的節(jié)點與不同群集中的另一節(jié)點之間可以不存在(如由拓撲所反映的)連接。第二,某些實施例可以根據(jù)以下過程確定針對每個群集的根(一旦確定根,則過程可以停止)。某些實施例可以確定針對給定群集的用戶定義根。例如,某些實施例可以從地址解析協(xié)議(ARP)表得到根。某些實施例還可以從輪詢引擎的默認網(wǎng)關(guān)得到根。當確定特定群集的根時,某些實施例可以跟蹤從輪詢引擎到群集中的節(jié)點的路由。最接近輪詢引擎的節(jié)點可以被確定為是群集的根。例如,參考圖1,輪詢器1可以是總部,并且某些實施例可以確定針對群集“分支辦公室B”中的輪詢器1的根。輪詢器1可以向節(jié)點10發(fā)出跟蹤路由,并且跟蹤路由的路徑可以包括“輪詢器1、節(jié)點1、節(jié)點2、節(jié)點8、節(jié)點9、節(jié)點10”。如此,節(jié)點8可以是針對群集“分支辦公室B”中的輪詢器1的根,因為節(jié)點8是從“分支辦公室B”內(nèi)到輪詢器1最接近的節(jié)點。
圖3(c)圖示了根據(jù)某些實施例的用于計算針對群集的根的示例程序。首先,某些實施例可以確定來自輪詢器的列表的拓撲的輪詢器。接下來,某些實施例可以來自根據(jù)輪詢器的列表中的要處理的輪詢器。某些實施例可以處理利用群集內(nèi)的超過一個節(jié)點對群集進行輪詢的輪詢器。如果存在群集中的、針對輪詢器的用戶定義根,那么用戶定義根可以被確定為是該群集中的、針對該輪詢器的根。如果不存在任何用戶定義根,則某些實施例可以使用來自輪詢器的本地信息來確定群集的根。如上文所描述的,某些實施例還可以使用跟蹤路由來確定群集的根。
圖3(d)圖示了根據(jù)某些實施例的根據(jù)輪詢器本地信息來確定根。首先,可以從輪詢器的ARP表確定與輪詢器相鄰的節(jié)點。接下來,如果相鄰的節(jié)點由輪詢器監(jiān)測,則某些實施例確定被監(jiān)測并且具有與其他所監(jiān)測的節(jié)點最多連接的相鄰的節(jié)點。該相鄰的節(jié)點可以被認為是針對輪詢器的根。備選地,如果一個默認網(wǎng)關(guān)由輪詢器監(jiān)測,那么默認網(wǎng)關(guān)可以被認為是針對輪詢器的根。
圖4圖示了自動地生成依賴性同時避免生成與用戶定義的依賴性沖突的過程。在用戶將節(jié)點420定義為依賴于節(jié)點410的情況下,那么某些實施例的自動生成過程將避免復制該用戶定義的依賴性。參考圖4,假設(shè)節(jié)點3被建立為節(jié)點1的依賴節(jié)點(在節(jié)點3與節(jié)點1之間建立依賴性),那么某些實施例將避免生成節(jié)點2與節(jié)點3之間的依賴性。避免節(jié)點2與節(jié)點3之間的依賴性,這是因為節(jié)點3經(jīng)由與節(jié)點1的依賴性已經(jīng)是可到達的。而且,某些實施例的自動生成將還避免生成與用戶定義的依賴性沖突的依賴性。例如,再參考圖4,如果節(jié)點1被確定為依賴于節(jié)點2,那么某些實施例避免生成其中節(jié)點2依賴于節(jié)點1的依賴性。
某些實施例可以確保在依賴性內(nèi)未形成循環(huán)依賴性回路。某些實施例還可以最小化通過僅保留對單次通過中的輪詢引擎有用/相關(guān)的那些依賴性而被生成的依賴性的數(shù)目。單次通過可以一般地意指節(jié)點僅被處理一次以用于生成依賴性并且最小化依賴性的數(shù)目。備選方案是首先處理用于生成依賴性的給定節(jié)點。一旦完成針對所有節(jié)點的處理,那么再次處理相同節(jié)點以移除沒有用的依賴性來最小化依賴性的數(shù)目。備選方案可以要求兩次通過并且可以要求將所有所生成的依賴性保持在存儲器中(其可以導致高存儲器要求)或?qū)⑺傻囊蕾囆员4娴綌?shù)據(jù)庫中并且然后將其移除,其可能引起大量的數(shù)據(jù)庫更新并且引起性能問題。下文描述了單次通過處理的細節(jié)。依賴性可以被確定為是有用/相關(guān)的,如下文更詳細描述的。
如果依賴性在將輪詢引擎連接到被分配給該輪詢引擎的節(jié)點的路徑內(nèi),則依賴性可以被確定為是對輪詢引擎有用/相關(guān)的。如果沒有依賴性的子代(和/或依賴性的遞歸子代)是被分配給輪詢引擎的節(jié)點,則依賴性對輪詢引擎不是有用/相關(guān)的。如果依賴性對輪詢引擎不是有用/相關(guān)的,那么可以安全地移除依賴性。當節(jié)點未對來自其分配的輪詢引擎的輪詢請求作出反應(yīng),則所移除的依賴性將不被用于確定節(jié)點由于發(fā)生故障的父節(jié)點而是發(fā)生故障還是不可到達的。
當生成每個依賴性時,則依賴性可能是或可能不是有用的。如此,所生成的依賴性可以需要存儲,直到已經(jīng)處理依賴性的所有子代或者直到子代之一被分配給相關(guān)輪詢引擎。如此,所生成的依賴性可以需要保持在存儲器中。所生成的依賴性是否是有用的可能是未知的,直到已經(jīng)處理所有子代(其被分配給該輪詢引擎并且是依賴性的父節(jié)點的子代)或者直到子代之一被分配給相關(guān)輪詢引擎。某些實施例可以確定何時已經(jīng)處理父節(jié)點的所有子代,這是因為某些實施例可以跟蹤已經(jīng)處理分配給該群集內(nèi)的該輪詢引擎的節(jié)點個數(shù),并且某些實施例可以知道該群集中的、被分配給該輪詢引擎的節(jié)點的總數(shù)。在已經(jīng)處理依賴性的所有子代之后,某些實施例可以然后認定子代中的任何是否被分配到給定輪詢引擎,并且因此可以確定依賴性自身對給定輪詢引擎是否是有用的。當子代之一被確定為被分配給相關(guān)輪詢引擎時,依賴性可以被確定為是有用的。如果已經(jīng)處理依賴性的所有子代,并且沒有子代被確定為被分配給相關(guān)輪詢引擎,那么依賴性可以被確定為不是有用的。
鑒于上文,某些實施例可以計算/生成針對給定輪詢引擎的群集內(nèi)的依賴性,并且某些實施例可以計算/生成群集中的根節(jié)點。
某些實施例可以基于未來輸入執(zhí)行過濾。某些實施例可以集成第2層和第3層路徑以生成緊密地類似網(wǎng)絡(luò)的真實性的依賴性。第2層連接示出了關(guān)于如何連接節(jié)點的較多細節(jié),但是節(jié)點不是連續(xù)的。第3層示出了關(guān)于如何連接節(jié)點的較小細節(jié),但是其在群集中是連續(xù)的。例如,在圖2中,第2層連接示出了節(jié)點3被連接到節(jié)點4,并且節(jié)點4被連接到節(jié)點5。第2層連接未示出節(jié)點1被連接到節(jié)點3,這是因為節(jié)點1和節(jié)點3二者是路由器。第3層連接僅示出了節(jié)點3直接被連接到節(jié)點5,這是因為節(jié)點4是交換機并且在第3層連接中不是可見的。從節(jié)點3到節(jié)點5的實際路徑是從節(jié)點3到節(jié)點4并且然后到節(jié)點5。圖12示出了如何使用第2層連接和第3層連接來構(gòu)建整個路徑。
某些實施例可以自動處理其中網(wǎng)絡(luò)是不連續(xù)的網(wǎng)絡(luò)的情況。不連續(xù)的網(wǎng)絡(luò)可以通常指代不是對用戶完全可訪問/可控制的網(wǎng)絡(luò)。網(wǎng)絡(luò)的一部分可以不是對用戶完全可訪問/可控制的,這是因為該部分可以由例如服務(wù)提供商控制。為了處理其中網(wǎng)絡(luò)是不連續(xù)的網(wǎng)絡(luò)的情況,某些實施例可以找到針對每個輪詢引擎和每個群集的根,如上文所描述的。圖5圖示了將所生成的依賴性存儲在表510內(nèi)。在使能依賴性的自動生成時,可以迅速地生成依賴性(511、512、513、514等)。新生成的依賴性可以出現(xiàn)在表510(諸如例如Orion.Dependencies表)中。在禁能依賴性的自動生成時,可以從Orion.Dependencies表迅速地移除先前生成的依賴性。當設(shè)置被改變到禁能活使能依賴性的自動生成時,設(shè)置的改變可以觸發(fā)審計事件。
圖6圖示了根據(jù)本發(fā)明的某些實施例的移除依賴性的條目。某些實施例可以允許用戶管理自動生成的依賴性。某些實施例可以既不允許用戶編輯也不允許用戶刪除自動生成的依賴性。然而,用戶可以忽略某些依賴性??梢詮腛rion.Dependencies表610移除忽略的條目(諸如條目611)。用戶可以決定自動生成條目是否應(yīng)當忽略(未示出在Dependencies表中)。例如,用戶可以決定如果用戶知道這樣的依賴性不存在,則忽略自動生成的條目。例如,用戶可以知道節(jié)點4未被連接到節(jié)點5,但是拓撲可以是錯誤的,并且不正確的拓撲可以包括節(jié)點4與節(jié)點5之間的連接。然后,當Auto Dependency(自動依賴性)生成條目611時,用戶可以通過忽略條目611來改正該問題。如果存在節(jié)點4與節(jié)點5之間的連接,其指示節(jié)點5依賴于節(jié)點4,但是節(jié)點4實際上依賴于節(jié)點5,那么用戶可以通過添加用戶配置的依賴性(其中,父節(jié)點是節(jié)點5,并且子代是節(jié)點4)校正該問題。由于條目可以對應(yīng)于作為依賴性612的復制的依賴性,因而可以忽略條目611。忽略的依賴性將不影響與忽略的依賴性有關(guān)的節(jié)點的狀態(tài)。例如,忽略的依賴性可以示出在圖7的標簽“管理忽略的依賴性(Manage Ignored Dependencies)”730下。
圖7圖示了允許用戶忽略自動生成的依賴性的接口710。接口710允許用戶管理依賴性。接口710可以包括允許用戶忽略一個或多個自動生成的依賴性的窗口720。
圖8圖示了根據(jù)某些實施例的允許用戶啟用或禁用自動生成依賴性的方法的接口810。對于某些實施例而言,可以通過具有管理員權(quán)限的用戶啟用或禁用自動生成依賴性的過程。用戶可以經(jīng)由例如輪詢設(shè)置(Polling Setting)頁/管理依賴性(Manage Dependencies)頁啟用/禁用功能性。
對于某些實施例而言,如果網(wǎng)絡(luò)拓撲慮及依賴性的自動生成,則可以啟用依賴性的自動生成。某些實施例可以允許用戶移除忽略的自動生成的依賴性。然而,作為移除忽略的自動生成的依賴性的結(jié)果,在執(zhí)行后續(xù)計算/生成過程時,可以將這些自動生成的依賴性重新添加/重新列入Orion.Dependencies表中,并且忽略的自動生成的依賴性可以然后再次變得有效。
對于某些實施例而言,當用戶忽略自動生成的依賴性時或當用戶移除忽略的自動生成的依賴性時,可以生成審計事件。審計事件的一個示例涉及創(chuàng)建針對動作的事件并且將其添加到事件日志。因此,用戶可以觀看事件并記錄事件,并且通知改變依賴性的動作。因此,動作可以記錄在歷史中并且可以稍后審計。
關(guān)于自動生成依賴性的功能,以下配置信息可以存儲在數(shù)據(jù)庫中如下。第一,條目可以指示是否啟用自動生成功能??梢詥⒂没蚪脳l目(諸如“SWNetPerfMon-Settings-AutoDependency”)。
依賴性中的每個依賴性可以存儲有以下參數(shù)中的一些或全部參數(shù)。每個依賴性的一個參數(shù)可以是“AutoManaged”參數(shù)。該參數(shù)可以指示對應(yīng)的依賴性/條目是否是被自動生成的(即,其中參數(shù)被設(shè)定為“真”)或者對應(yīng)的依賴性/條目是否是用戶/手動定義的(即,其中參數(shù)被設(shè)定為“假”)。
每個依賴性的另一參數(shù)可以是“引擎ID(EngineID)”參數(shù)。該參數(shù)可以指示與依賴性相關(guān)聯(lián)的輪詢引擎。對于某些實施例而言,用戶定義的依賴性可以與所有輪詢引擎相關(guān)聯(lián)。自動生成的依賴性可以通常與一個輪詢引擎相關(guān)聯(lián)。
針對每個依賴性的另一參數(shù)可以是“類別”參數(shù)。該參數(shù)可以指示依賴性的類型。
出于性能原因,可以針對每個依賴性添加一些其他參數(shù)。這些其他參數(shù)可以包括ParentEntityType,其指示依賴性的父節(jié)點的實體類型。另一參數(shù)可以包括ParentNetObjectID,其指示依賴性的父對象的標識符。另一參數(shù)可以包括ChildEntityType,其指示依賴性的子節(jié)點的實體類型。另一參數(shù)可以包括ChildNetObjectID,其指示依賴性的子對象的標識符。
對于某些實施例而言,新表可以是“AutoDependencyRoot”表。當計算依賴性時,可以使用該表。該表可以包含針對每個輪詢引擎和群集計算的根節(jié)點。某些實施例還可以包括“DeletedAutoDependencies”表。該表可以包含忽略的自動生成的依賴性。
圖9圖示了允許用戶管理已經(jīng)被用戶配置和已經(jīng)被自動生成的不同的依賴性的示例接口910。接口910的每個條目911、912、913可以對應(yīng)于不同的依賴性。彈出式窗口915可以圖示每個依賴性的每個依賴節(jié)點的操作特性/可用性。
圖10示出了示例依賴性樹。對于某些實施例而言,用戶可以查看已經(jīng)通過使用可視化依賴性樹生成的依賴性。用戶可以然后確定自動生成的依賴性中的一些依賴性是否應(yīng)當忽略。示例依賴性樹內(nèi)的每個條目可以對應(yīng)于依賴性,并且每個條目可以包括依賴性的名稱/標識符、依賴性的父節(jié)點以及依賴性的子節(jié)點。
圖11圖示了根據(jù)本發(fā)明的某些實施例的用于計算拓撲并且確定自動依賴性的過程。在步驟1處,用戶可以觸發(fā)計算(諸如例如根據(jù)需求計算)或者計時器可以觸發(fā)計算(諸如例如周期性計算)。在步驟2處,可以計算拓撲,并且可以將拓撲連接存儲到TopologyConnections表中。在步驟3處,基于從步驟2生成的連接,可以自動生成依賴性。
圖12圖示了根據(jù)本發(fā)明的某些實施例的計算針對給定輪詢器的群集的依賴性。如上文所描述的,某些實施例可以集成第2層和第3層路徑以生成緊密地類似網(wǎng)絡(luò)的真實性的依賴性。圖12示出了針對給定輪詢引擎的處理流程并且示出如何組合第2層和第3層連接以生成詳細依賴性來形成從輪詢引擎到群集中的所有節(jié)點的路徑。計算從針對給定輪詢引擎的群集的根開始。直接連接到根的所有節(jié)點是其子代。首先針對N個步驟(例如,N的默認值可以是3個步驟)遞歸地計算使用第2層連接的依賴性。然后,計算使用第3層連接的依賴性。如果可以通過從第2層導出由依賴性到達節(jié)點,則將不從第3層導出依賴性以到達這樣的節(jié)點。例如,在圖2中,基于第2層連接,節(jié)點3具有子節(jié)點4(AutoDep-1-3-4-2),并且節(jié)點4具有子節(jié)點5(AutoDep-1-4-5-3)。然而,基于第3層連接,節(jié)點3具有子節(jié)點5(AutoDep-1-3-5-2,由于輪詢引擎可以使用第2層導出的依賴性通過節(jié)點4到達節(jié)點5,因而可以忽略該依賴性)。由于第2層提供連接性的更多細節(jié),因而第2層依賴性可以采取超過第3層依賴性的優(yōu)先級。
當處理分配給該輪詢引擎的所有節(jié)點并且不可以生成更有用的依賴性時,檢查該輪詢器的經(jīng)處理的節(jié)點的數(shù)目的條件試圖最小化依賴性的數(shù)目。
圖13圖示了根據(jù)本發(fā)明的某些實施例的方法的流程圖。在圖13中所圖示的方法包括在1310處通過輪詢引擎確定根。該根包括網(wǎng)絡(luò)的節(jié)點群集內(nèi)的第一節(jié)點。該方法還可以包括在1320處生成在根與第二節(jié)點之間的至少一個網(wǎng)絡(luò)依賴性。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于網(wǎng)絡(luò)的節(jié)點之間的連接。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于從輪詢引擎到第二節(jié)點的定向路徑。該方法還可以包括在1330處輪詢第二節(jié)點。該輪詢經(jīng)由在輪詢引擎與第二節(jié)點之間已經(jīng)被生成的至少一個網(wǎng)絡(luò)依賴性而發(fā)生。該方法還可以包括在1340處確定第二節(jié)點是不可到達的。對于某些實施例而言,輪詢的第二節(jié)點可以被確定為在輪詢引擎發(fā)送出請求并且在超時發(fā)生之前未接收到響應(yīng)之前而是不可到達的。該方法還可以包括在1350處如果第二節(jié)點的父節(jié)點中的任何父節(jié)點被確定為是由輪詢引擎可到達的,則生成與不可到達的第二節(jié)點有關(guān)的激活警報。如果沒有父節(jié)點是可到達的,則某些實施例不生成與不可到達的輪詢節(jié)點有關(guān)的警報。
圖14圖示了根據(jù)本發(fā)明的某些實施例的裝置。在一個實施例中,裝置可以是網(wǎng)絡(luò)節(jié)點,其被配置為執(zhí)行例如輪詢引擎的功能。輪詢引擎可以在服務(wù)器上。輪詢引擎可以是或可以不是網(wǎng)絡(luò)設(shè)備。輪詢引擎可以是終端主機。輪詢引擎可以執(zhí)行確定網(wǎng)絡(luò)依賴性的功能。如果在系統(tǒng)中存在多個輪詢引擎,則一旦對輪詢引擎給定整個系統(tǒng)的拓撲,僅一個輪詢引擎可能需要計算針對整個系統(tǒng)的依賴性。
圖14的裝置可以至少執(zhí)行圖13的方法。裝置10可以包括用于處理信息和執(zhí)行指令或操作的處理器22。處理器22可以是任何類型的通用或?qū)S锰幚砥?。輸入在圖14中示出單個處理器22,但是根據(jù)其他實施例,可以利用多個處理器。處理器22還可以包括以下各項中的一項或多項作為示例:通用計算機、專用計算機、微處理器、數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)和基于多核處理器架構(gòu)的處理器。
裝置10還可以包括耦合到處理器22的存儲器14,其用于存儲可以由處理器22執(zhí)行的信息和指令。存儲器14可以是適于本地應(yīng)用環(huán)境的任何類型的一個或多個存儲器,并且可以使用任何適合的易失性或非易失性數(shù)據(jù)存儲技術(shù)(諸如基于半導體的存儲器設(shè)備、磁性存儲器設(shè)備和系統(tǒng)、光學存儲器設(shè)備和系統(tǒng)、固定存儲器和可移除存儲器)而進行實現(xiàn)。例如,存儲器14包括隨機訪問存儲器(RAM)、只讀存儲器(ROM)、靜態(tài)存儲(諸如磁或光盤)或任何其他類型的非暫態(tài)機器或計算機可讀介質(zhì)的任何組合。存儲器14中所存儲的指令可以包括程序指令或計算機程序代碼,其在由處理器22執(zhí)行時使得裝置10能夠執(zhí)行如本文所描述的任務(wù)。
裝置10還可以包括用于將信號和/或數(shù)據(jù)發(fā)射到裝置10和從裝置10接收信號和/或數(shù)據(jù)的一個或多個天線(未示出)。裝置10還可以包括收發(fā)器28,其將信息調(diào)制到載波波形上用于由(一個或多個)天線傳輸并且解調(diào)經(jīng)由(一個或多個)天線所接收的信息,以用于由裝置10的其他元件進一步處理。在其他實施例中,收發(fā)器28可能能夠直接發(fā)射和接收信號或數(shù)據(jù)。
處理器22可以執(zhí)行與裝置10的操作相關(guān)聯(lián)的功能和裝置10的總體控制,所述裝置10的操作包括但不限于天線增益/相位參數(shù)的預編碼、形成通信消息的單獨比特的編碼和解碼、信息的格式化,并且所述裝置10的總體控制包括與通信資源的管理有關(guān)的過程。裝置10還可以以插入網(wǎng)絡(luò)中的網(wǎng)絡(luò)卡的形式操作為收發(fā)器。
在實施例中,存儲器14可以存儲當由處理器22執(zhí)行時提供功能性的軟件模塊。該模塊可以包括提供針對裝置10的操作系統(tǒng)功能的操作系統(tǒng)15。該存儲器還可以存儲用于提供針對裝置10的附加功能的一個或多個功能模塊18(諸如應(yīng)用或程序)??梢砸杂布蜃鳛橛布蛙浖娜魏芜m合的組合實現(xiàn)裝置10的部件。
圖15圖示了根據(jù)本發(fā)明的某些實施例的裝置。例如,裝置1500可以是網(wǎng)絡(luò)元件/實體(諸如網(wǎng)絡(luò)節(jié)點),其被配置為作為輪詢引擎執(zhí)行。裝置1500可以包括確定根的第一確定單元1510。該根包括網(wǎng)絡(luò)的節(jié)點群集內(nèi)的第一節(jié)點。裝置1500還可以包括第一生成單元1520,其生成在根與第二節(jié)點之間的一個網(wǎng)絡(luò)依賴性。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于網(wǎng)絡(luò)的節(jié)點之間的連接。所生成的至少一個網(wǎng)絡(luò)依賴性對應(yīng)于從輪詢引擎到第二節(jié)點的定向路徑。裝置1500還可以包括輪詢單元1530,其輪詢第二節(jié)點。該輪詢經(jīng)由在輪詢引擎與第二節(jié)點之間已經(jīng)被生成的至少一個網(wǎng)絡(luò)依賴性而發(fā)生。裝置1500還可以包括第二確定單元1540,其確定第二節(jié)點是不可到達的。裝置1500還可以包括第二生成單元1550,如果第二節(jié)點的父節(jié)點中的任何父節(jié)點被確定為是由裝置1500可到達的,則第二生成單元1550生成與不可到達的第二節(jié)點有關(guān)的激活警報。
在一個或多個實施例中,可以以任何適合的方式組合本發(fā)明的所描述的特征、優(yōu)點和特性。相關(guān)領(lǐng)域的技術(shù)人員將認識到,可以在沒有特定實施例的特定特征或優(yōu)點中的一個或多個的情況下實踐本發(fā)明。在其他實例中,可以在不存在于本發(fā)明的所有實施例中的某些實施例中認識到附加特征和優(yōu)點。本領(lǐng)域的普通技術(shù)人員將容易理解到,可以利用以不同的順序的步驟和/或利用與所公開的那些配置不同的配置中的硬件元件來實踐如上文所討論的本發(fā)明。因此,雖然基于這些優(yōu)選的實施例已經(jīng)描述了本發(fā)明,但是對于本領(lǐng)域的技術(shù)人員而言將明顯的是,在保持在本發(fā)明的精神和范圍的情況下,一些修改、變化和備選構(gòu)造將是明顯的。