專利名稱:一種基于gis的計算機網絡地圖的組織維護方法
技術領域:
本發明涉及地理信息系統(GIS)與網絡管理系統的結合技術領域,特別是涉及一種基于GIS的計算機網絡地圖的組織維護方法,尤其是層次化網絡GIS地圖的組織維護方法。
GIS與網絡管理系統的結合引入了一個需要解決的新的問題,即虛擬的網絡拓撲與實際的GIS地圖的結合。網絡拓撲是網絡組件的物理或邏輯分布形式,即網絡節點(包括計算機、網絡打印機、服務器等)在互通網絡上的分布形式,GIS地圖展現某一地域的地理位置信息,需要利用一定方法才能將二者的信息有效的統一在一張層次化網絡GIS地圖中。一種比較簡單的實現方法是將整個網絡的拓撲信息全部顯示在一張GIS地圖上,但是由于GIS地圖顯示平面大小及人眼視野范圍有限,在網絡對象較多時,顯示效果不佳,并且在一張地圖上顯示大量對象嚴重影響系統性能。對于具有設備種類繁多、數量巨大、網絡拓撲復雜等特點的大型計算機網絡,需要考慮網絡GIS地圖的使用效果、性能和效率問題,因此需要適用的解決方法。
圖1是一個計算機網絡拓撲示意圖;圖2是本發明中層次化網絡GIS地圖示意圖;圖3是本發明中網絡或節點標識的層次結構示意圖;圖4是本發明中展開網絡地圖示意圖;圖5是本發明中添加一條實際連接過程示意圖;圖6是本發明中刪除一條實際連接過程示意圖。
發明的實施方式首先給出層次化網絡GIS地圖的定義包括三個基本對象,節點,表示被管理網絡設備,如主機、交換機、路由器等;網絡,表示一組對象集合以及這些對象的互連,這些對象可以是節點,亦可以是網絡;鏈路,鏈路表示節點或網絡之間的連接;此外還有網絡狀態的定義。
定義1節點節點是三元組<I,L,S>,其中I是節點的標識;L表示節點在層次化地圖中所處層次;S表明節點運行狀態,詳見定義9。
定義2網絡網絡是五元組<I,L,M,T,S>,其中I是網絡的標識;L是網絡在層次化地圖中所處層次;M是網絡相關的GIS地圖,詳見定義4;T是網絡內各對象的互連拓撲信息集合,詳見定義3;S是運行狀態集,詳見定義9。
定義3拓撲對于網絡GIS地圖中的一個網絡而言,拓撲是四元組<Ns,Vs,Ei,Ex>,其中,Ns是網絡內子網集合;Vs是網絡內節點的集合;Ei是內部鏈路集合,Ex是外部鏈路集合,參見定義3-1、3-2。
定義3-1鏈路
鏈路為五元組<I,R,P1,P2,S>,其中,I是鏈路標識,R是鏈路的依賴參數,參見定義8,P1和P2是一條鏈路的兩個端點,可以是網絡或節點,S是鏈路狀態,詳見定義9。鏈路表示節點或網絡之間的連接。
定義3-2內部鏈路集與外部鏈路集對于網絡N的拓撲T而言,內部鏈路集為五元組集合{<I,R,P1,P2,S>|P1,P2∈T.Ns∪T.Vs}。外部鏈路集為五元組集合Ex={<I,R,P1,P2,S>|P1 T.Ns∪T.Vs,P2∈T.Ns∪T.Vs或者P2 T.Ns∪T.Vs,Pi∈T.Ns∪T.Vs}定義4網絡相關GIS地圖對于網絡N,其相關GIS地圖M是四元組<B1,N1,V1,E1>,其中B1是背景地層,存儲網絡所在的地理范圍信息,如網絡覆蓋省市、街區的地理信息等,N1是子網圖層,層存儲網絡內子網的分布信息;V1是節點圖層,存儲網絡內節點的分布信息;E1是鏈路圖層,存儲網絡內鏈路的分布信息。
定義4-1子網圖層對于網絡N的GIS地圖M而言,子網圖層是二元組集合{<I,LOC>| net∈N.T.Ns,I=net.I,LOC是net所在地理位置}定義4-2節點圖層對于網絡NET的GIS地圖M而言,節點圖層是二元組集合{<I,LOC>| node∈N.T.Vs,I=node.I,LOC是node所在地理位置}定義4-3鏈路圖層對于網絡N的GIS地圖集M而言,鏈路圖層是五元組集合{<I,I1,I2,LOC1,LOC2>| link∈N.T.Ei或N.T.Ex,I=link.I,I1=link.P1.I,I2=link.P2.I,LOC1、LOC2分別是link.P1和link.P2所在地理位置}
這里不定義B1圖層的細節,而定義4-1,4-2,4-3也只是對N1,V1,E1三個圖層應該包括的內容的抽象(當前實際的GIS系統均可以提供),這里不做進一步詳細定義。
定義5父網絡,祖先,子孫對于網絡net1,net2,節點node1,如果net1∈net2.T.Ns,node1∈net2.T.Vs,則稱net1為net2的子網絡,node1為net2的子節點,net2為net1、node1的父網絡,且net1.L=net2.L+1,node1.L=net2.L+1,記net2=f(net1)=f(node1);記f(f(...f(a)))=fn(a),且f0(a)=a,稱fn(a)(n>1)為a的祖先,a為其子孫。對于鏈路link,如果link.P1或link.P2是網絡net的子孫,則稱鏈路link是網絡net的子孫鏈路。
定義6層次化網絡GIS地圖層次化網絡GIS地圖是一個四元組<NO,Ln,ILEN,P>,其中NO是頂層網絡,P是參數指標集(見定義9),Ln是網絡分層(不包括頂層),ILEN是各層地圖網絡或節點標識有效位長度集合ILEN=<LEN1,LEN2,......,LENi,......,LENH.Ln>其中ΣiLENi=32,]]>且當i≤j,1≤i,j≤H.Ln時,LENi<LENj。
為適應層次化網絡的組織,網絡/節點ID的構成也是層次化的,如附圖3每一級網絡/節點都有一個ID長度,表明本級別的網絡/節點對象ID的有效位數,除了頂級網絡外,每一級網絡/節點對象ID均以其父對象ID作為前綴。根據ID有效長度來計算掩碼,可以方便地判別兩個節點、網絡之間在網絡層次結構上的位置。
舉例說明網絡GIS地圖,附圖1是一個實際的網絡拓撲,a-i是節點,附圖2是對應于附圖1中網絡拓撲的層次化網絡GIS地圖,最頂層的頂級網絡是整個網絡的抽象;下一層是一組一級子網,表明整個網絡在本層的抽象,如此類推。最底層的顯示對象包括諸如主機、交換機、路由器等的網絡設備和設備之間的實際鏈路;通過綜合特定網絡的GIS地圖的四個圖層(背景圖層、節點圖層、網絡圖層、鏈路圖層),我們可以得到該網絡的直觀形象的網絡地圖,并且,特定的網絡地圖顯示的信息與網絡和抽象層次相關。這種層次化的實現方法減少了一張GIS地圖需要顯示的對象信息,可以改善系統的運行性能。
通過遞歸的網絡定義,網絡GIS地圖實現了逐層向上的網絡拓撲與狀態信息匯聚。而在實際應用中,全局的詳細的網絡視圖也是必不可少的,此時,需要在一張地圖上展現網絡具有一定詳細程度的拓撲和狀態信息。因此,我們在層次化網絡模型的基礎上定義展開網絡,實現網絡信息的解匯聚。
定義7展開網絡對于層次化網絡GIS地圖H中的一個網絡N,展開至層次le(N.L<le≤H.Ln)的展開網絡Ne為六元組<I,L,le,M,T,S>,其中I=N.I,L=N.L,M,T,S的定義同定義2,且Ne.S=N.S;Ne.T.Ns={net|fn(net)=N,n=le-N.L};Ne.T.Vs={node|fn(node)=N,1≤n≤le-N.L};Ne.T.Ei={link| n∈Ne.T.Ns∪Ne.T.Vs,link∈f(n).T.Ei∪f(n).T.Ex,link.R=0,并且link.P1,link.P2∈Ne.T.Ns∪Ne.T.Vs};Ne.T.Ex={link| n∈Ne.T.Ns∪Ne.T.Vs,link∈f(n).T.Ex,link.P1(或ink.P2)=n,且link.p2(或ink.P1) Ne.T.Ns∪Ne.T.Vs};Ne.m.B1=N.M.B1;Ne.M.N1={<I,LOC>| net∈Ne.T.Ns,I=net.I,且<I,LOC>∈f(net).M.N1};Ne.M.V1={<I,LOC>| node∈Ne.T.Vs,I=node.I,<I,LOC>∈f(node).M.V1};Ne.M.E1={<I,I1,I2,LOC1,LOC2>| link∈Ne.T.Ei∪Ne.T.Ex,令link.p1∈Ne.T.Ns∪Ne.T.Vs,I=link.I,且<I,I1,I2,LOC1,LOC2>∈f(link.P1).M.E1}
下面舉例說明展開網絡的概念附圖4是附圖2中的網絡1展開至第三層的展開網絡地圖。實際上附圖3是通過展開網絡1及其三層以上子孫網絡得到的,顯示了網絡1在第三層的全部的拓撲信息。通過將網絡逐層展開,可以得到網絡越來越詳細的信息,直至網絡完全的拓撲與狀態信息。
定義8實際鏈路,匯聚鏈路如果鏈路兩個端點都是節點,則該鏈路稱為實際鏈路,否則稱該鏈路為匯聚鏈路。對于一條匯聚鏈路,兩個端點之間以及端點的子孫之間的鏈路稱為該匯聚鏈路的相關鏈路。匯聚鏈路的依賴參數R等于它的相關實際鏈路數,而實際鏈路的依賴參數R等于0。如果網絡1的子孫節點與網絡2的一個子節點間存在實際鏈路,有以下幾種情況兩個網絡處于同一層次,則二者之間存在一條匯聚鏈路,如附圖2中的網絡1、2;如果兩個網絡處于不同層次,則低層網絡與高層網絡的子節點間存在匯聚鏈路,如附圖2中的網絡1、4。區分上述兩種情況,是為了體現層次化的網絡拓撲結構。此外,一個節點與一個網絡之間,或兩個網絡之間最多只能有一條匯聚鏈路。
定義9網絡/節點/鏈路狀態給定參數指標向量P=<p1,......,pM>,其中pi表示一個網絡運行狀況的參數指標,如鏈路的延遲,丟包率等,1≤i≤M,節點/網絡/鏈路的狀態S定義如下S=<s1,......,sM>,其中,若pi對于本節點/網絡/鏈路而言沒有定義,則令si=-1,否則si表示以參數pi為衡量標準,節點/實際鏈路發生故障的程度0≤si≤1,si為0表示完全沒有問題,為1表示確定出現故障,si越接近1,表明節點/網絡/實際鏈路狀態越接近發生故障,對于如何實現從參數pi到si的轉換,可以根據實際需要選擇算法,這里不做詳細規定。
網絡是一個抽象對象,它的狀態應當是其所有節點、相關實際鏈路狀態的匯聚,對于一個網絡net,定義net.S.si=Agi(Sid),其中Sid={s| a,a∈X∪Y,s=a.S.si且s≠-1,其中X、Y分別是網絡net的子孫節點集合、子孫實際鏈路集合},Ag是狀態信息匯聚函數,用于計算匯聚狀態信息,匯聚鏈路也是一個抽象對象,其狀態也應該是與其相關的所有實際鏈路狀態的匯聚,計算方法與上類似對于一個匯聚鏈路link,定義link.S.si=Agi(Sri),其中Sir={s| a,a∈Z,s=a.S.si且s≠-1,其中Z是匯聚鏈路link的相關實際鏈路集合}。
下面給出層次化網絡GIS地圖的組織,拓撲更新,狀態更新算法說明(a)在算法描述中引入了C語言的一些操作,包括(1)op1<<n表示將操作數op1按二進制左移n位(2)~op表示將操作數按二進制位取反(3)op1 & op2表示將操作數op1與操作數op2按二進制位與(b)下列算法中用到常用數據結構FIFO隊列Q,這里不做詳細定義,現將相關操作說明如下AddTail(Q,n)將n加入到隊列Q隊尾。
GetHead(Q)將隊列隊頭元素從隊列中取出。
(c)對于以下算法提及的新ID的計算方法,本發明不做詳細規定,但計算方法應當遵守定義6的規定。
首先是網絡GIS地圖的拓撲更新算法1.網絡GIS地圖中增加一個網絡在層次化網絡GIS地圖H的網絡f中添加一個子網絡的步驟如下假設,子網絡所在地理位置為loc,背景地層b1。
Step1.構造一個空的網絡net,net.L←f.L+1。根據f.I以及H.ILEN計算得到子網絡標識net.I,net.M.B1←b1。f.T.Ns←f.T.Ns∪{net}。f.M.N1←f.M.N1∪{<net.I,loc>}。
2.網絡GIS地圖中增加一個節點在層次化網絡GIS地圖H的網絡f中添加一個節點的步驟如下假設,節點所在地理位置loc。
Step1.構造一個空的節點node,node.L←f.L+1。根據f.I以及H.ILEN計算得到node.I。f.T.Vs←f.T.Vs∪{node}。f.M.V1←f.M.V1∪{<node.I,loc>}。
3.網絡GIS地圖中增加一條實際鏈路如果鏈路的兩個節點在網絡層次結構中具有相同的父網絡,則操作簡單直接,否則操作會影響兩節點的父網絡甚至是祖先網絡之間的匯聚鏈路的產生或狀態更新。對上層網絡匯聚鏈路的影響回溯至距離兩個節點最近的共同祖先網絡處終止。在層次化網絡GIS地圖H的網絡f中增加一條實際鏈路的基本步驟如下步驟1在鏈路兩端節點中處于較低層的節點的父網絡GIS地圖中添加實際鏈路;步驟2從步驟1中較低層的節點沿網絡層次結構向上回溯,在其祖先網絡中添加匯聚鏈路,直至與鏈路另一節點同層次的祖先網絡;若相應匯聚鏈路已經存在,則只將其相關實際鏈路數加一;步驟3在步驟2基礎上,沿網絡層次結構向上回溯,分別在鏈路兩端節點的祖先網絡GIS地圖中添加匯聚鏈路,直至離兩節點最近的祖先網絡處結束;若相應匯聚鏈路已經存在,則只將其相關實際鏈路數加一。
具體步驟如下假設鏈路兩個端點為節點1(node1),節點2(node2),Step1.不失一般性,設node1.L≥node2.L,net1←f(node1),net2←f(node2)。
Step2.構造一條空實際鏈路link,為其分配新鏈路標識,且link.P1←node1,link.P2←node2,link.R←0。設node1,node2的地理位置分別為loc1,loc2。若net1=net2,net1.T.Ei←net1.T.Ei∪{link},net1.M.E1←net1.M.E1∪{<link.I,node1.I,node2.I,loc1,loc2>},轉Step6;否則若node1.L=node2.L,則net1.T.Ex←net1.T.Ex∪{link},net1.M.E1←net1.M.E1∪{<link.I,node1.I,node2.I,loc1,loc2>},在net2地圖中類似地添加實際鏈路(產生的實際鏈路的標識相同),令n2←net2,轉Step4;若node1.L≠node2.L,只在net1中添加一條外部實際鏈路,令n2←node2,轉Step3。
Step3.若net1.L=n2.L,則轉Step4,否則,設f1←f(net1),若 link∈f1.T.Ex,且link.P1=net1(或n2),link.P2=n2(或net1),link.R←link.R+1,否則構造一條空匯聚鏈路alink,并為其分配新鏈路標識,且alink.R←1,alink.P1←net1,alink.P2←n2,f1.T.Ex←f1.T.Ex∪{alink};設net1,n2的地理位置分別為loc1,loc2,f1.M.E1←f1.M.E1∪{<alink.I,net1.I,n2.I,loc1,loc2>}。net1←f1,轉Step3。
Step4.若f(net1)=f(n2),轉Step5,否則用類似Step3的方法分別在f(net1),f(n2)中創建或更新net1到n2的匯聚鏈路。net1←f(net1),n2←f(n2),轉Step4。
Step5用類似Step3中方法,在f(net1)中創建或更新net1至n2的匯聚鏈路。
Step6結束。
舉個例子說明算法3的過程,如附圖5,現要在節點a和節點b之間添加一條實際鏈路。第一步在網絡3地圖中添加一條a到b的實際鏈路;第二步在網絡1地圖中添加一條網絡3到節點b的一條匯聚鏈路;第三步在網絡2地圖中添加一條節點b到網絡3的匯聚鏈路;第四部在頂層網絡地圖中添加一條網絡1到網絡2的匯聚鏈路。
4.網絡GIS地圖中刪除一條實際鏈路刪除一條實際鏈路,可能會影響鏈路端節點的父網絡甚至是祖先網絡之間的匯聚鏈路,但這種影響在兩個節點最近的共同祖先網絡處終止。如果匯聚鏈路所依賴的所有實際鏈路都被刪除,則要徹底將其從地圖中刪除,基本步驟如下步驟1在鏈路兩端節點中處于較低層的節點的父網絡GIS地圖中刪除實際鏈路;步驟2從步驟1中較低層的節點沿網絡層次結構向上回溯,在其祖先網絡中刪除至另一節點的匯聚鏈路,直至與另一節點同層次的祖先網絡處結束;若該匯聚鏈路的相關實際鏈路數大于1,則只將其減一,而不從地圖中刪除匯聚鏈路;步驟3在步驟2基礎上,沿網絡層次結構向上回溯,分別在鏈路兩端節點的祖先網絡GIS地圖中刪除相關匯聚鏈路,直至離兩節點最近的祖先網絡處結束;若該匯聚鏈路的相關實際鏈路數大于1,則只將其減一,而不從地圖中刪除匯聚鏈路。
具體步驟如下設刪除層次化網絡地圖H中節點1(node1),節點2(node2)之間的鏈路標識為I的一條實際鏈路。
Step1.若f(node1)=f(node2), link∈f(node1).T.Ei,link.I=I,令f(node1).T.Ei←f(node1).T.Ei-{link}; gislink∈f(node1).M.E1,gislink.I=I,令f(node1).M.El←f(node1).M.E1-{gislink},轉Step6,否則 link∈f(node1).T.Ex,link.I=I,令f(node1).T.Ex←f(node1).T.Ex-{link}; gislink∈f(node1).M.E1,gislink.I=I,令f(node1).M.E1←f(node1).M.E1-{gislink},Step2。
Step2.若node1.L=node2.L,則用類似Step1種的方法從f(node2)中刪除標識為I的實際鏈路,并且n1←f(node1),n2←f(node2),轉Step4。否則,不失一般性,設node1.L>node2.L,n1←f(node1),n2←node2。
Step3.若n1.L=n2.L,轉Step4,否則,設f1←f(n1),則 link∈f1.T.Ex且link.P1=n1(或n2),link.P2=n2(或n1),若link.R>1,link.R←link.R-1,否則f1.T.Ex←f1.T.Ex-{link},并且 g1∈f1.M.E1,g1.I=link.I,f1.M.E1←f1.M.E1-{g1}。n1←f(n1)。轉Step3。
Step4.若f(n1)=f(n2),則轉Step5,否則,類似Step3分別在f(n1),f(n2)中刪除或更新相關匯聚鏈路。n2←f(n2),f2←f(n2),轉Step4。
Step5.類似Step3,在f(n1)中刪除或更新相關匯聚鏈路。
Step6.結束。
舉個例子說明算法4的過程,如附圖6,現要刪除節點f和節點d之間的一條實際鏈路。第一步在網絡3地圖中刪除f到d的實際鏈路;第二步在網絡2地圖中刪除網絡3到節點d的匯聚鏈路;第三步在網絡1地圖中刪除節點d到網絡3的匯聚鏈路;第四部在頂層網絡地圖中刪除網絡1到網絡2的匯聚鏈路。
5.網絡GIS地圖中刪除一條匯聚鏈路刪除一條匯聚鏈路,必須刪除與此鏈路相關的所有低層匯聚鏈路和實際鏈路,并且刪除或更新其端點祖先網絡之間的匯聚鏈路。基本步驟如下步驟1從匯聚鏈路兩端點,分別沿網絡層次結構向下掃描,刪除兩端點的子孫之間的所有匯聚鏈路和實際鏈路,直至刪除的實際鏈路數目等于匯聚鏈路的相關實際鏈路數;
步驟2從匯聚鏈路兩端點,分別沿網絡層次結構向上回溯,刪除兩端點的祖先網絡之間的匯聚鏈路,直至離被刪匯聚鏈路兩端點最近的共同祖先網絡處結束;如果該匯聚鏈路的相關實際鏈路數大于被刪匯聚鏈路的相關實際鏈路數,則只更新該匯聚鏈路的相關實際鏈路數,而不從地圖中將其刪除。
具體步驟如下設刪除層次化網絡地圖H中p1,p2之間的匯聚鏈路,其中p1,p2中至少有一個是網絡。
Step1.設ref←匯聚鏈路的相關鏈路數R。調用子算法5-1或5-2刪除匯聚鏈路的低層的相關鏈路。不失一般性,設p1.L≥p2.L。
Step2.若p1.L=p2.L,轉Step3,否則,設f1←f(p1)。 link∈f1.T.Ex且link.P1=p1(或p2),link.P2=p2(或p1)。link.R←link.R-ref,如果link.R=0,f1.T.Ex←f1.T.Ex-{link},且 gislink∈f1.M.E1,gislink.I=link.I,f1.M.E1←f1.M.E1-{gislink}。p1←f1,轉Step2。
Step3.若f(p1)=f(p2),則轉Step4,否則用類似Step2.的方法,分別在f(p1)和f(p2)中刪除兩端點為p1和p2的匯聚鏈路。p1←f(p1),p2←f(p2),轉Step3。
Step4.用類似Step2.的方法,在f(p1)中刪除兩端點為p1和p2的匯聚鏈路。
Step5.結束。
5-1.匯聚鏈路的相關鏈路刪除算法-端點p1為節點,端點p2為網絡本算法從端點之一的網絡開始逐層向下,刪除每一層相關的匯聚鏈路或實際鏈路。
Step1.設Q為一隊列,AddTail(Q,p2),r←refStep2.若IsEmpty(Q)或r=0,轉Step3,否則,net←GetHead(Q),link∈net.T.Ex,link.P1(或link.P2)=node1(不妨設link.P1=p1)net.T.Ex←net.T.Ex-{link}。若link.R=0,則r←r-1,否則AddTail(Q,link.P2); g1∈net.M.E1,gislink.I=link.I,net.M.E1←net.M.E1-{g1}。轉Step2。
Step3.結束。
5-2.匯聚鏈路的相關鏈路刪除算法-端點p1、p2均為網絡分別從兩個網絡開始,逐層向下刪除以這兩個網絡子孫網絡或節點為兩個端點的匯聚鏈路或實際鏈路。
Step1.分別根據net1.L及net2.L在H.ILEN中查得p1和p2的標識長度id_len1和id_len2,計算掩碼如下mask1←~(1<<(32-id_len1)-1),mask2←~(1<<(32-id_len2)-1)。設Q為一隊列,AddTail(Q,p1),r←ref。
Step2.若IsEmpty(Q)或r=0,則AddTail(Q,p2),r←ref,轉Step3,否則net←GetHead(Q),link∈net.T.Ex且link.p1.I & mask2=p2.I或者link.P2.I & mask2=p2.I(不妨設為link.P1)net.T.Ex←net.T.Ex-{link},若link.R=0,r←r-1,否則AddTail(Q,link.P2); g1∈net.M.E1,g1.I=link.I,net.M.El←net.M.E1-{g1},轉Step2。
Step3.若IsEmpty(Q)或r=0轉Step4,否則net←GetHead(Q),link∈net.T.Ex且link.P1.I & mask1=p1.I或者link.P2.I & mask1=p1.I(不妨設為link.P1)net.T.Ex←net.T.Ex-{link},若link.R=0,r←r-1,否則AddTail(Q,link.P2); g1∈net.M.E1,gislink.I=link.I,net.M.E1←net.M.E1-{g1},轉Step3。
Step4.結束。
6.網絡GIS地圖中刪除一個節點刪除一個節點,必須刪除以該節點為端點的所有鏈路,具體步驟如下假設刪除層次化網絡地圖H中的節點node。
Step1.令net←f(node),link∈net.T.Ei∪net.T.Ex且link.P1=node或link.P2=node,調用算法5或算法6刪除鏈路link。
Step2.net.T.Vs←net.T.Vs-{node}, gisnode∈net.M.V1,且gisnode.I=node.I,net.M.V1←net.M.V1-{gisnode}。
Step3.結束7.網絡GIS地圖中刪除一個網絡因為網絡的內部鏈路被刪除不會影響H中其他網絡,只有刪除了以待刪網絡為一端點的外部鏈路,才會對H中其他網絡拓撲有影響,因此本算法中,首先刪除以待刪網絡為一端點的所有外部鏈路,然后逐層刪除其所有子孫網絡。具體步驟如下假設刪除層次化網絡地圖H中的網絡net。
Step1.令f←f(net),link∈f.T.Ei∪f.T.Ex且link.P1=net或者link.P2=net,調用算法6刪除link。
Step2. f.T.Ns←f.T.Ns-{net}, gisnet∈f.M.N1且gisnet.I=net.I,f.M.N1←f.M.N1-{gisnet}。設Q為一空隊列,AddTail(Q,net)。
Step3.如果Q為空隊列,轉Step5,否則Step4。
Step4.headnet←GetHead(Q),subnet∈headnet.T.Ns,AddTail(Q,subnet)。刪除headnet,轉Step3.
Step5..結束下面是網絡GIS地圖組織算法8.網絡GIS地圖的生成網絡GIS地圖的生成步驟如下Step1.根據管理需要,構造網絡層次結構。所謂網絡層次結構,是對網絡實際拓撲的一種層次化的抽象。層次結構是一棵樹,樹根是整個網絡的抽象代表,樹中每一個非葉子中間節點是一個抽象的網絡,每一個葉子節點代表是實際網絡拓撲中的節點。
Step2.構造一個空的網絡GIS地圖H,根據網絡層次結構初始化H。
Step3.根據算法1,2逐一將網絡層次結構中的網絡,節點添加到H中。
Step4.根據算法3,逐一將網絡節點連接拓撲中的實際鏈路添加到H中。
Step5.結束下面是網絡GIS地圖狀態更新算法9.展開網絡生成算法一種層次化網絡GIS地圖中網絡拓撲和運行狀態解匯聚方法-展開網絡,其特征在于,展開網絡表示了特定網絡在網絡層次結構中特定層次的全部拓撲細節和運行狀態細節。
從被展開網絡開始,逐層向下直到指定的展開層次遍歷其子孫網絡。遍歷過程將被遍歷網絡中的所有節點的拓撲和地理信息復制到展開網絡中;將被遍歷網絡中的所有實際鏈路的拓撲和地理信息復制到展開網絡中;在最后一層,將所有網絡的拓撲和地理信息復制到展開網絡中,并且將所有匯聚鏈路的拓撲和地理信息也復制到展開網絡中。基本步驟如下步驟1從被展開網絡開始,逐層向下直到指定的展開層次遍歷其子孫網絡。
步驟2在遍歷過程遇到的非指定層次網絡將其中的所有節點信息復制到展開網絡GIS地圖中;將其中的所有實際鏈路信息復制到展開網絡GIS地圖中;
步驟3在遍歷過程遇到的指定層次網絡將其所有的節點、子網絡、鏈路信息復制到展開網絡的GIS地圖中。
具體步驟如下假設展開層次化網絡GIS地圖H中的網絡net至層次le,(net.L<le≤H.Ln)。
Step1.構造一個空的展開網絡exnet。設Q為一空隊列,AddTail(Q,net)。根據net.L在H.IDLEN中查得net.I長度id_len,計算掩碼mask←~(1<<(32-id_len)-1)Step2.如果Q為空隊列,則轉Step7,否則Step3。
Step3 net1←GetHead(Q)。如果net1.L=le-1轉Step6,否則Step4。
Step4.(1)exnet.T.Vs←exnet.T.Vs∪net1.T.Vs,且exnet.M.V1←exnet.M.V1∪net1.M.V1;(2)link∈net1.T.Ei且link.R=0,exnet.T.Ei←exnet.T.Ei∪{link}。link∈net1.T.Ex且link.R=0,link.P1.I & mask=net.I,link.P2.I & mask=net.I,且link exnet.T.Ei,exnet.T.Ei←exnet.T.Ei∪{link};(3)link∈net1.T.Ex且link.R=0,link.P1.I & mask≠net.I或者link.P2.I &mask≠net.I,exnet.T.Ex←exnet.T.Ex∪{link}。對于上述link, g1∈net1.M.E1且g1.I=link.I,令exnet.M.E1←exnet.M.E1∪{g1}。
Step5.subnet∈net1.T.Ns,AddTail(Q,subnet)。轉Step2。
Step6.(1)exnet.T.Ns←exnet.T.Ns∪net1.T.Ns,且exnet.M.Nl←exnet.M.N1∪net1.M.N1;(2)exnet.T.Vs←exnet.T.Vs∪net1.T.Vs,且exnet.M.V1←exnet.M.V1∪net1.exnet.M.V1;(3)link∈net1.T.Ei且link exnet.T.Ei,exnet.T.Ei←exnet.T.Ei∪{link};link∈net1.T.Ex且link.P1.I & mask=net.I,link.P2.I &mask=net.I,link exnet.T.Ei,令exnet.T.Ei←exnet.T.Ei∪{link};link∈net1.T.Ex且link.p1.I & mask≠net.I或者link.P2.I & mask≠net.I,exnet.T.Ex←exnet.T.Ex∪{link}。對于上述link, g1∈net1.M.E1且g1.I=link.I,exnet.M.E1←exnet.M.E1∪{g1}。轉Step2。
Step7.結束10.節點狀態信息更新算法首先,更新節點自身狀態,然后逐層向上更新父網絡和祖先網絡狀態。基本步驟如下步驟1更新節點自身運行狀態;步驟2從節點開始,沿網絡層次結構向上回溯,更新祖先網絡運行狀態,直至網絡GIS地圖中的頂層網絡處結束。
具體步驟如下假設層次化網絡GIS地圖中,節點node的狀態發生了變化,Step1.更新節點node狀態。f←f(node)Step2.更新網絡f的狀態,如果f≠H.NO,f←f(f),轉Step2,否則Step3Step3.結束11.實際鏈路狀態信息更新算法首先,更新鏈路自身狀態,然后逐層向上更新相關匯聚鏈路狀態及父網絡和祖先網絡狀態。基本步驟如下步驟1更新實際鏈路自身運行狀態;步驟2從實際鏈路的兩個端節點開始,沿網絡層次結構向上回溯,更新祖先網絡及相應匯聚鏈路運行狀態,直至網絡GIS地圖中的頂層網絡處結束。
具體步驟如下假設層次化網絡GIS地圖中,鏈路link的狀態發生了變化,
Step1.令f1←f(link.P1),f1←f(link.P2),p1←link.P1,p2←link.P2,不妨設p1.L≥p2.LStep2.若p1.L=p2.L,則轉Step4,否則Step3。
Step3. link1∈f1.T.Ex,link1.P1=p1(p2)且link1.P2=p2(p1),更新link1狀態。更新f1狀態,p1←f1,f1←f(f1),轉Step3。
Step4若f1=f2,轉Step8,否則Step5。
Step5.則根據上述算法3, alink∈f1.T.Ex,alink.P1=p1(p2)且alink.P2=p2(p1),更新alink狀態。更新f1狀態。
Step6.則根據上述算法3, alink∈f2.T.Ex,alink.P1=p2(p1)且alink.P2=p1(p2),更新alink狀態。更新f2狀態。
Step7.p1←f1,f1←f(f1),p2←f2,f2←f(f2),轉Step4。
Step8.根據上述算法3, alinkef1.T.Ei,alink.P1=p1(或p2)且alink.P2=p2(或p1),更新alink狀態。更新f1狀態Step9.若f1=H.NO,則轉Step10,否則f1←f(f1),更新f1狀態。轉Step9。
Step10.結束
權利要求
1.一種層次化網絡GIS地圖組織方法,其特征在于,具體步驟如下步驟1按照管理需要,構造網絡的層次結構;步驟2對于層次結構中每一個網絡,構造相關GIS地圖,其中包括四個圖層背景圖層,子網絡圖層,節點圖層,鏈路圖層,顯示網絡內可見的拓撲信息;步驟3針對網絡連接拓撲中每一條節點之間的連接,在層次化網絡GIS地圖中添加相應實際鏈路,并維護實際鏈路與上層匯聚鏈路一致性,即如果兩個網絡的子孫節點間存在實際鏈路,則這兩個網絡之間有一條匯聚鏈路,其相關實際鏈路數等于子孫節點之間的所有實際鏈路總數;如果兩個網絡的子孫節點間不存在任何實際鏈路,則兩個網絡之間沒有匯聚鏈路。
2.根據權利要求1方法,其特征在于步驟3所述的層次網絡GIS地圖中實際鏈路添加方法,具體步驟如下步驟1在鏈路兩端節點中處于較低層的節點的父網絡GIS地圖中添加實際鏈路;步驟2從步驟1中較低層的節點沿網絡層次結構向上回溯,在其祖先網絡中添加匯聚鏈路,直至與鏈路另一節點同層次的祖先網絡;若相應匯聚鏈路已經存在,則只將其相關實際鏈路數加一;步驟3在步驟2基礎上,沿網絡層次結構向上回溯,分別在鏈路兩端節點的祖先網絡GIS地圖中添加匯聚鏈路,直至離兩節點最近的祖先網絡處結束;若相應匯聚鏈路已經存在,則只將其相關實際鏈路數加一。
3.一種層次化網絡GIS地圖中實際鏈路的刪除方法,其特征在于,自動維護上層匯聚鏈路的一致性,具體步驟如下步驟1在鏈路兩端節點中處于較低層的節點的父網絡GIS地圖中刪除實際鏈路;步驟2從步驟1中較低層的節點沿網絡層次結構向上回溯,在其祖先網絡中刪除至另一節點的匯聚鏈路,直至與另一節點同層次的祖先網絡處結束;若該匯聚鏈路的相關實際鏈路數大于1,則只將其減一,而不從地圖中刪除匯聚鏈路。步驟3在步驟2基礎上,沿網絡層次結構向上回溯,分別在鏈路兩端節點的祖先網絡GIS地圖中刪除相關匯聚鏈路,直至離兩節點最近的祖先網絡處結束;若該匯聚鏈路的相關實際鏈路數大于1,則只將其減一,而不從地圖中刪除匯聚鏈路。
4.一種層次化網絡GIS地圖中匯聚鏈路的刪除方法,其特征在于,自動維護網絡GIS地圖中實際鏈路與匯聚鏈路之間關系的一致性,具體步驟如下步驟1從匯聚鏈路兩端點,分別沿網絡層次結構向下掃描,刪除兩端點的子孫之間的所有匯聚鏈路和實際鏈路,直至刪除的實際鏈路數目等于匯聚鏈路的相關實際鏈路數;步驟2從匯聚鏈路兩端點,分別沿網絡層次結構向上回溯,刪除兩端點的祖先網絡之間的匯聚鏈路,直至離被刪匯聚鏈路兩端點最近的共同祖先網絡處結束;如果該匯聚鏈路的相關實際鏈路數大于被刪匯聚鏈路的相關實際鏈路數,則只更新該匯聚鏈路的相關實際鏈路數,而不從地圖中將其刪除。
5.一種層次化網絡GIS地圖中網絡運行信息表示與匯聚的通用方法,其特征在于給定參數指標向量P=<p1,......,pM>,其中pi表示一個網絡運行狀況的參數指標,1≤i≤M,節點/網絡/鏈路的狀態S定義如下S=<s1,......,sM>,其中,若pi對于本節點/網絡/鏈路而言沒有定義,則令si=-1,否則si表示以參數pi為衡量標準,節點/實際鏈路發生故障的程度0≤si≤1,si為0表示完全沒有問題,為1表示確定出現故障,si越接近1,表明節點/網絡/實際鏈路狀態越接近發生故障,對于如何實現從參數pi到si的轉換,可以根據實際需要選擇算法,網絡是一個抽象對象,它的狀態應當是其所有節點、相關實際鏈路狀態的匯聚,對于一個網絡net,定義net.S.si=Agi(Sdi),其中Sdi={s| a,a∈X∪Y,s=a.S.si且s≠-1,其中X、Y分別是網絡net的子孫節點集合、子孫實際鏈路集合},Ag是狀態信息匯聚函數,用于計算匯聚狀態信息可以根據實際需要選擇算法,匯聚鏈路也是一個抽象對象,其狀態也應該是與其相關的所有實際鏈路狀態的匯聚,計算方法與上類似對于一個匯聚鏈路link,定義link.S.si=Agi(Sri),其中Sri={s| a,a∈Z,s=a.S.si且s≠-1,其中Z是匯聚鏈路link的相關實際鏈路集合}。
6.一種層次化網絡GIS地圖中節點運行狀態更新方法,其特征在于,自動逐層向上更新高層祖先網絡運行狀態,具體步驟如下步驟1更新節點自身運行狀態;步驟2從節點開始,沿網絡層次結構向上回溯,更新祖先網絡運行狀態,直至網絡GIS地圖中的頂層網絡處結束。
7.一種層次化網絡GIS地圖中實際鏈路運行狀態更新方法,其特征在于,自動逐層向上更新高層祖先網絡及相應匯聚鏈路運行狀態,具體步驟如下步驟1更新實際鏈路自身運行狀態;步驟2從實際鏈路的兩個端節點開始,沿網絡層次結構向上回溯,更新祖先網絡及相應匯聚鏈路運行狀態,直至網絡GIS地圖中的頂層網絡處結束。
8.一種層次化網絡GIS地圖中網絡拓撲和運行狀態解匯聚方法-展開網絡,其特征在于,展開網絡表示了特定網絡在網絡層次結構中特定層次的全部拓撲細節和運行狀態細節。
9.根據權利要求8中的展開網絡方法,其特征在于,展開網絡的生成步驟如下步驟1從被展開網絡開始,逐層向下直到指定的展開層次遍歷其子孫網絡;步驟2在遍歷過程遇到的非指定層次網絡將其中的所有節點信息復制到展開網絡GIS地圖中;將其中的所有實際鏈路信息復制到展開網絡GIS地圖中;步驟3在遍歷過程遇到的指定層次網絡將其所有的節點、子網絡、鏈路信息復制到展開網絡的GIS地圖中。
全文摘要
本發明涉及一種層次化計算機網絡GIS地圖的組織方法,包括步驟步驟1按照網絡實際情況和管理需要,構造網絡的層次結構;步驟2對于層次結構中每一個網絡,構造相關GIS地圖;步驟3針對網絡拓撲中每一條連接,在層次化網絡GIS地圖中添加相應實際鏈路,并維護實際鏈路與上層匯聚鏈路一致性;層次化網絡GIS地圖提供了層次化的網絡拓撲和狀態信息的匯聚與解匯聚的方法,本發明給出了層次化網絡GIS地圖的拓撲更新、狀態更新算法,自動維護網絡GIS地圖的拓撲的一致性和狀態的一致性。本發明可廣泛應用于計算機網絡管理系統和網絡監測系統。同時,將本發明提出的模型推而廣之,可以應用于無線通訊、運輸管理等領域。
文檔編號G06F15/16GK1474297SQ0314514
公開日2004年2月11日 申請日期2003年6月18日 優先權日2003年6月18日
發明者王愷, 楊峰, 王 愷 申請人:中國科學院計算技術研究所