本發明涉及網絡拓撲校準
技術領域:
:,特別是指一種網絡拓撲校準方法。
背景技術:
::在網絡通訊中,當網絡中產生鏈路錯位、硬件故障或者軟件崩潰等異常狀況時,網絡拓撲會隨之發生動態變化。但對許多拓撲使能的協議或應用程序來說,它們必須精確地知道底層網絡當前的拓撲情況,由此引出了拓撲校準問題。考慮一對給定的拓撲ga和gb,拓撲校準問題的任務是推導出ga和gb之間不同的節點和鏈路。實際上,拓撲校準是各種網絡系統和分布式應用中常見且基本的任務。在配置階段,連線錯誤或其他人為錯誤都可能導致實際建立的網絡拓撲與設計藍圖之間的不匹配。舉例來說,對于dcell、bcube等增強數據中心的網絡性能的新型拓撲來說,錯誤的連線將破壞拓撲的對稱或層次結構,因此必須進行拓撲校準。此外,許多基本應用程序或協議,例如:源路由、多播、incast、單播,必須了解底層網絡的確切拓撲;源路由要求每個主機記錄網絡拓撲以推導出正確的路由路徑。因此,一旦網絡拓撲發生變化,主機就必須追蹤和更新它的拓撲視圖。如果過時的拓撲不能被及時更新,就會對路由性能造成負面影響。多播、incast和單播協議沿著基于當前網絡拓撲生成的最小代價樹或路徑傳送數據包。此外,在軟件定義網絡(sdn)的模式下,多個控制器以分層或分布式方式部署。每個控制器負責及時維護整個網絡的拓撲,以便能夠立即地為每一個新的流生成正確的路由路徑。最后,在計算機網絡社區之外,在圖形被用作一種高層次抽象(例如圖形數據挖掘,知識圖譜,社交網絡)的其他領域中,推導出生成的圖形之間的差異對于揭示演變模式或識別其拓撲相似性是至關重要的。對于兩種給定的拓撲結構,拓撲校準的任務是推導出它們之間所有不同的節點和鏈路。實際上,可以通過用新型的數據結構表示每個拓撲中的所有節點,例如bloomfilter,哈希表,搜索樹,來有效地搜索那些不同的節點。然而,網絡中的鏈路數量遠遠大于節點的數量。用上述數據結構來表示鏈路將會導致巨大的存儲成本和通信開銷。綜上,在實現本申請的過程中,發明人發現現有技術至少存在以下問題:現有數據結構及校準方法無法在缺乏先驗知識的條件下實現高效率的校準。技術實現要素:有鑒于此,本發明的目的在于提出一種網絡拓撲校準方法,能夠在缺乏先驗知識的條件下實現高效率的網絡拓撲校準,并能降低存儲成本及通信開銷。基于上述目的本發明提供的一種網絡拓撲校準方法,包括:采用現有算法查找得到給定兩個原始拓撲中的差異節點;基于差異節點得到與差異節點相連接的鏈路,并且在兩個原始拓撲中刪除差異節點以及與差異節點相連接的鏈路,得到具有相同節點的兩個優化拓撲;采用預設的圖過濾器結構來表示兩個優化拓撲結構中的拓撲信息;其中,所述預設的圖過濾器包括與n個節點對應且相互獨立的n個單元,每個單元分別采用idsum表示對應節點的所有鄰居節點的id進行異或操作得到的聚合信息、采用count表示對應節點的鄰居節點的個數;對于每個節點,通過對兩個優化拓撲中的idsum進行異或運算、對兩個優化拓撲中的count進行相減運算得到兩個優化拓撲對應的抽取結果;所述抽取結果用于消除兩個優化拓撲中的共同鏈路而保留差異鏈路;采用預設的解碼算法對抽取結果進行解碼運算,得到差異鏈路,并且通過差異節點和差異鏈路進行網絡拓撲校準。可選的,所述預設的解碼算法包括:對抽取結果進行遍歷并且搜索得到錨單元;其中,所述錨單元為兩個優化拓撲中具有不同數量的鄰居節點且至少有1個不同的鄰居節點對應的單元;通過錨單元中的節點信息得到錨單元對應的鏈路信息;將上述錨單元中得到的鏈路加入到差異鏈路集合中并且在抽取結果中刪除該鏈路;重復上述過程,直到無法找到錨單元,則退出算法,得到差異鏈路集合。可選的,所述通過錨單元中的節點信息得到錨單元對應的鏈路信息的步驟包括:判斷選定的錨單元所指向的單元是否為空單元;若是,則該選定的錨單元為非法錨單元,重新選取錨單元。可選的,所述預設的解碼算法還包括:解碼后得到剩余拓撲結構,包括剩余節點和剩余鏈路;構建一條與剩余節點連接的鏈路;對剩余拓撲結構生成一個剩余拓撲結構副本;在剩余拓撲結構副本中刪除構建的鏈路,并且執行解碼過程,獲得新的差異鏈路以及參與解碼過程的單元;判斷所有參與解碼過程的單元是否均為相應節點具有相同數量的鄰居界節點對應的單元;若是,則將差異鏈路添加到差異鏈路集合中,并退出算法;否則,重新構建一條不同的鏈路并且重復上述過程。可選的,針對于多個獨立的閉環鏈路,通過對應多次執行破環算法將所有閉環鏈路進行破解并解碼。從上面所述可以看出,本發明提供的網絡拓撲校準方法通過在現有算法獲取差異節點的基礎上,采用預設的圖過濾器結構來表示兩個給定的拓撲結構優化得到的拓撲結構,進而通過編碼、抽取以及解碼的過程得到差異鏈路。因此,本申請所述網絡拓撲校準方法能夠在缺乏先驗知識的條件下實現高效率的網絡拓撲校準,并能降低存儲成本及通信開銷。附圖說明圖1為本發明提供的網絡拓撲校準方法的一個實施例的流程圖;圖2為本發明提供的網絡拓撲校準中解碼算法的一個實施例的流程圖;圖3為本發明提供的網絡拓撲校準方法中抽取操作示意圖;圖4為本發明提供的網絡拓撲校準方法中解碼操作示意圖;圖5為本發明提供的閉環鏈路無法解碼的一個實施例的示意圖;圖6a為本發明提供的圖過濾器與其他數據結構進行比較時傳銷開銷示意圖;圖6b為本發明提供的圖過濾器與其他數據結構進行比較且|v1|變化時的時間開銷示意圖;圖6c為本發明提供的圖過濾器與其他數據結構進行比較且|d1|變化時的時間開銷示意圖;圖6d為本發明提供的圖過濾器與其他數據結構進行比較且p0變化時的時間開銷示意圖;圖7a為本發明提供的節點從200-3000且|v1|變化時的假陽性比例示意圖;圖7b為本發明提供的節點從200-3000且|v1|變化時的假陰性比例示意圖;圖8a為本發明提供的鏈路從20-280個且|v1|變化時的假陽性比例示意圖;圖8b為本發明提供的鏈路從20-280個且|v1|變化時的假陰性比例示意圖;圖9a為本發明提供的p0變化時的假陽性比例示意圖;圖9b為本發明提供的p0變化時的假陰性比例示意圖;圖10a為本發明提供的網絡規模和差異邊數量增加且k變化時的時間開銷示意圖;圖10b為本發明提供的網絡規模和差異邊數量增加且|d1|變化時的時間開銷示意圖;圖11a為本發明提供的網絡規模和差異邊數量增加且k變化時的假陽性比例示意圖;圖11b為本發明提供的網絡規模和差異邊數量增加且|d1|變化時的假陽性比例示意圖;圖12a為本發明提供的網絡規模和差異邊數量增加且k變化時的假陰性比例示意圖;圖12b為本發明提供的網絡規模和差異邊數量增加且|d1|變化時的假陰性比例示意圖。具體實施方式為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例,并參照附圖,對本發明進一步詳細說明。需要說明的是,本發明實施例中所有使用“第一”和“第二”的表述均是為了區分兩個相同名稱非相同的實體或者非相同的參量,可見“第一”“第二”僅為了表述的方便,不應理解為對本發明實施例的限定,后續實施例對此不再一一說明。拓撲校準需要有效推導出兩種給定拓撲之間不同的節點和鏈路。實際上,推導出不同的節點是相對簡單的。然而,從大規模鏈路中挑選出不同的鏈路卻需要花費很大的代價。因此,本申請提出了一種根據以下理念定位不同的鏈路的方法:1)高效率,耗費較低的存儲成本與通信開銷;2)沒有先驗知識,由于沒有支持信息,因此不同的鏈路需要能被反向解碼。現有的基于bloomfilter、哈希表或搜索樹的策略無法同時實現這兩個理念。因此,本申請提出圖過濾器,即一種高空間效率的數據結構,它能以可逆的方式來表示和推導出不同的鏈路。并且本申請提出了相關的編碼、抽取和原始解碼算法。注意到,編碼階段的異或陷阱可能導致解碼時的計算錯誤。因此,進一步提出了解碼增強算法,通過終止一些非法解碼過程來緩和異或陷阱的影響。此外,本申請也設計了一種破環算法來處理不同鏈路連接成環的情況。綜合評估表明,與其他數據結構相比,圖過濾器消耗的空間開銷最少,并且能以可接受的錯誤率為代價,進行合理的可逆解碼。本申請對應的校準方法為拓撲使能的協議和應用程序帶來前所未有的好處,特別是能夠確保其服務質量(qos)。參照圖1所示,為本發明提供的網絡拓撲校準方法的一個實施例的流程圖。所述網絡拓撲校準方法包括:步驟101,采用現有算法查找得到給定兩個原始拓撲中的差異節點;其中,所述現有算法包括基于bloomfilter、哈希表或搜索樹等策略實現的校準方法;這是由于現有方法中查找差異節點屬于較為容易的過程,而本申請主要在于查找差異鏈路的改進。步驟102,基于差異節點得到與差異節點相連接的鏈路,并且在兩個原始拓撲中刪除差異節點以及與差異節點相連接的鏈路,得到具有相同節點的兩個優化拓撲;基于差異節點,那么與差異節點連接的鏈路也應該是差異鏈路,進而可以在原始拓撲結構中刪除這些差異節點以及與差異節點相連接的鏈路,得到具有相同節點的優化拓撲結構,進而將校準問題轉化為在優化拓撲中查找差異鏈路的問題,你個優化校準準確性和效率。需要說明的是,本申請中所述鏈路通常是指在拓撲結構中不同節點之間連接形成的邊,也即鏈路等同于邊。步驟103,采用預設的圖過濾器結構來表示兩個優化拓撲結構中的拓撲信息;其中,所述預設的圖過濾器包括與n個節點對應且相互獨立的n個單元,每個單元分別采用idsum表示對應節點的所有鄰居節點的id進行異或操作得到的聚合信息、采用count表示對應節點的鄰居節點的個數;本申請提出一種新的數據結構來表示拓撲中的信息,尤其是針對于節點id進行聚合得到的信息以及鄰居節點的數目。同樣,對于拓撲信息的處理也為本申請中對信息的編碼過程。步驟104,對于每個節點,通過對兩個優化拓撲中的idsum進行異或運算、對兩個優化拓撲中的count進行相減運算得到兩個優化拓撲對應的抽取結果;所述抽取結果用于消除兩個優化拓撲中的共同鏈路而保留差異鏈路;其中,所述異或運算是指相同則取1,不同則取0;通過運算實現信息提取,使得后續能夠消除共同鏈路保留差異鏈路。步驟105,采用預設的解碼算法對抽取結果進行解碼運算,得到差異鏈路,并且通過差異節點和差異鏈路進行網絡拓撲校準。通過對提取信息的解碼,可以得到拓撲中的差異鏈路。由上述實施例可知,本申請提供的網絡拓撲校準方法通過在現有算法獲取差異節點的基礎上,采用預設的圖過濾器結構來表示兩個給定的拓撲結構優化得到的拓撲結構,進而通過編碼、抽取以及解碼的過程得到差異鏈路。因此,本申請所述網絡拓撲校準方法能夠在缺乏先驗知識的條件下實現高效率的網絡拓撲校準,并能降低存儲成本及通信開銷。參照圖2所示,為本發明提供的網絡拓撲校準中解碼算法的一個實施例的流程圖。所述預設的解碼算法包括:步驟201,對抽取結果進行遍歷并且搜索得到錨單元;其中,所述錨單元為兩個優化拓撲中具有不同數量的鄰居節點且至少有1個不同的鄰居節點對應的單元;步驟202,通過錨單元中的節點信息得到錨單元對應的鏈路信息;步驟203,將上述錨單元中得到的鏈路加入到差異鏈路集合中并且在抽取結果中刪除該鏈路;步驟204,重復上述過程,直到無法找到錨單元,則退出算法,得到差異鏈路集合。這樣,通過上述遞歸解碼的過程,能夠將鏈路集合均解碼出來,通過錨單元的選取及刪除,能夠使得更多的錨單元進一步暴露出來。因此,上述解碼算法既高效又穩定。在本申請一些可選的實施例中,所述通過錨單元中的節點信息得到錨單元對應的鏈路信息的步驟包括:判斷選定的錨單元所指向的單元是否為空單元;若是,則該選定的錨單元為非法錨單元,重新選取錨單元。這樣,通過排除非法的錨單元,可以一定程度上減緩或者消除異或陷阱,提高校準精度。在本申請一些可選的實施例中,所述預設的解碼算法還包括:解碼后得到剩余拓撲結構,包括剩余節點和剩余鏈路;構建一條與剩余節點連接的鏈路;對剩余拓撲結構生成一個剩余拓撲結構副本;在剩余拓撲結構副本中刪除構建的鏈路,并且執行解碼過程,獲得新的差異鏈路以及參與解碼過程的單元;判斷所有參與解碼過程的單元是否均為相應節點具有相同數量的鄰居界節點對應的單元;若是,則將差異鏈路添加到差異鏈路集合中,并退出算法;否則,重新構建一條不同的鏈路并且重復上述過程。這樣,通過對假設鏈路的嘗試可以將閉環鏈路打破,進而實現對閉環鏈路的解碼,提高網絡拓撲校準的準確性。在本申請的一些可選的實施例中,為了更加清楚的顯示本申請所述網絡拓撲校準方法的具體原理,還公開了本申請網絡拓撲校準方法的實現、研究過程。具體內容如下:首先,需要對拓撲校準相關問題進行建模:在許多情況下,確定兩個給定拓撲之間不同的節點和鏈路是一項基本任務。其中,兩個給定拓撲為檢測到的物理拓撲和設計網絡的藍圖或者當前實際拓撲和sdn控制器保存的拓撲。用ga(va,ea)與gb(vb,eb)來分別表示兩個給定的拓撲。va、vb是節點,即網絡設備的集合,ea、eb是網絡設備之間鏈路的集合。拓撲校準的任務是及時地提取出ga和gb之間增刪的鏈路和節點。用δv和δe分別表示不同的節點與不同的鏈路。顯然,當以ga作為參照時,其中,與分別記錄了增加和刪除的節點。同樣地,其中,與分別記錄了增加和刪除的鏈路。雖然廣泛研究的子圖匹配算法能夠解決網絡拓撲校準問題。然而,這些算法是計算密集型的,且這些被設計應用的子圖匹配問題被證明是np-hard問題。但發明人發現,在給定的網絡中,每個節點都與唯一的地址相關聯,其中,地址為ip地址或mac地址。基于這一觀察,子圖匹配算法不再需要進行復雜的比較。此外,這也使得給定的拓撲能夠用巧妙的數據結構來表示,例如bloomfilter及其變種、哈希表、樹等等。舉例來說,bloomfilter可以將va中所有的節點記錄下來,它將每個節點的ip地址或mac地址映射到對應的一個位向量中。注意到,將δv中節點導出的方法有很多。一個簡單有效的方案是將va和vb中所有節點的ip地址或mac地址映射到bloomfilter或其變體之中。如果使用的是bloomfilter,則可以通過查詢va中所有的元素是否被bfb記錄,進而得出其中,bfb記錄了vb中所有的節點。同樣可以通過查詢vb中所有的元素是否被bfa記錄來得出其中bfa記錄了va中所有的節點。這個算法的時間復雜度是o(n),其中,n表示ga和gb之間節點數的最大值。然而,現有策略無法有效地識別δe中的鏈路。主要原因是在高度連接的網絡中,鏈路的數量遠遠高于節點的數量。特別是在某些超額認購的網絡設計中,為了保證可靠的連通性以及容錯性,鏈路數目甚至高達o(n2)。因此,利用bloomfilter或其他數據結構來表示鏈路將會導致更多的存儲成本和時間開銷。基于現有方法在導出δe時的低效表現,本申請提出一種新型的數據結構來表示每個拓撲中的所有鏈路,然后識別出δe中不同的鏈路。由于找出兩個拓撲之間的差異節點δv可以通過現有的數據結構來有效解決。本申請主要聚焦于解決找出差異連邊δe上,也即本申請關鍵在于操作差異鏈路。需要注意的是,通過查找δv,δv中與差異節點相連的邊也能被一起推導出。從給出的原有拓撲ga和gb中將δv中所有節點及與之相連的邊刪除,進而分別得到優化拓撲和事實上,以上操作所得到和具有完全相同的節點,但是可能會擁有不同的邊。如此一來,就將拓撲校準問題簡化為尋找和之間差異邊問題。n表示和中的節點個數,為了方便計算,用1到n之間的整數來標記和中的每個節點。這一全局標記策略可以通過對網絡中每個節點的ip地址或mac地址建立字典序來得到。隱藏,每條邊可以標記為<i,j>,其中,i和j分別代表與這條邊相連的兩個節點。為了計算出本申請首先設計了一種內存友好的數據結構,即圖過濾器,用于表示任意的拓撲結構。然后,基于圖過濾器來實現計算出和之間差異邊的目的。具體的,一個圖過濾器由n個相互獨立的單元組成,其中第i個單元記錄拓撲中標記為i的節點的所有鄰居節點信息。每個單元包含兩個域,即idsum域和count域。其中,count域用于記錄該節點的鄰居節點個數,而idsum域則對將該節點所有鄰居節點的id進行異或操作從而實現鄰居節點信息聚合。注意到,節點的id實際上是其對應標記的二進制形式。因此,每個id消耗的字節數為n+1表明節點的標號從1開始而不是0。參照圖3所示,為本發明提供的網絡拓撲校準方法中抽取操作示意圖。圖3描述了一個使用圖過濾器表示拓撲結構的例子。具體的,給定拓撲中有5個節點,因此節點的標記為1到5之間的整數,而節點的id則需要3個比特位。在最終的圖過濾器中,需要5個單元來分別記錄每個節點的鄰居信息。中,節點1有兩個鄰居(節點2和節點3),因此同樣的,其他單元也以此種方式記錄相應節點的鄰居信息。對于和中相同位置的單元如果得到相同的idsum和count,則表示和中該節點具有相同的鄰居節點的概率很高。基于提出的圖過濾器結構,相應的需要三種操作來計算出中所包含的邊,即編碼,抽取和解碼。首先,分別用圖過濾器將和分別表示為和然后,抽取操作將和中共同的邊消除,得到記錄中邊信息的最后,將中所包含的邊進行反向解碼,得到差異邊或差異鏈路。編碼操作的基本原則是第i個單元記錄標號為i的節點的鄰居信息。當一個鄰居節點被錄入時,相應單元的count域加1,而idsum域則執行異或運算。所以,idsum域將所有鄰居信息進行融合,而count域則記錄鄰居節點數量。抽取操作的主要任務是消除兩個拓撲之間的共同邊,但保留差異邊。為實現這一目的,需要遍歷和并推斷出可選的,對于中的任意第i個單元,推導算法為大多數情況下,均能正確記錄中的邊,然而,由于抽取過程中的異或陷阱,可能會導致計算錯誤。其原因是,不同鄰居節點的組合經過異或運算會得到相同的idsum。例如,001⊙101和110⊙011的結果都是100。在中,如果001和101正好是節點i的鄰居,而110和011是中節點i的鄰居。在此種情況下,抽取操作的結果為因而會將所有鄰居節點的信息都消除。本申請稱此種情況為異或陷阱。但是,在沒有發生異或陷阱時,如果則和中節點i必然具有不同的鄰居。另外,若則和中節點i必然具有不同數量的鄰居節點。因此,經過抽取操作,中可能存在以下四種類型的單元。類型1:idsum≠0并且count≠0。和中的相應節點擁有不同數量的鄰居,并且至少有count個不同的鄰居節點。類型2:idsum≠0并且count=0。和中的相應節點有相同數量的鄰居,但這些鄰居節點并不完全相同。類型3:idsum=0并且count≠0。和中的相應節點擁有不同數量的鄰居,抽取過程中出現了異或陷阱,導致將不同鄰居節點的信息隱藏。類型4:idsum=0并且count=0。和中的相應節點有相同數量的鄰居,但不能斷定這些鄰居節點是否完全相同。圖3完整展示了給定兩個拓撲的抽取操作,其計算所得中包含三種類型的單元,即類型1、類型2和類型4。由于和中標號為1的節點都有兩個鄰居節點,但這些鄰居節點并不完全相同,因此,所得到的但count域的正負屬性則代表從中增加(負)或刪除(正)了count條邊。更具挑戰性的任務是從抽取結果中還原出其中記錄的不同的邊,從而完成拓撲校準任務。為完成這一任務,本申請將中那些idsum≠0并且count=1的單元設定為錨單元。利用loc表示所選取的錨單元在中所在位置,tag表示id為的節點標號。則錨單元中記錄的是邊<loc,tag>的概率很高。基于此觀察,本申請以一種遞歸的方式將從中反向還原出來。算法1中闡述了解碼操作的具體實現細節,主要包含以下內容:對應的,解碼操作包括以下步驟:步驟1:掃描。算法對當前的進行遍歷并搜索出一個合適的錨單元,對應算法1中的第2行到第7行。如果當前中無法找到錨單元,則算法退出,否則進入步驟2。步驟2:轉錄。這一步將推斷出錨單元里記錄的邊信息。為達到這一目的,必須計算出邊的兩端節點。注意到,錨單元中記錄的邊一端節點正好是錨單元所在位置對應的節點,而另一個節點則是錨單元中idsum所描述的節點。因此,將轉換為整數,便得到另一端節點,對應算法1中的第8行到第9行。步驟3:記錄。將步驟2中所得邊加入到δd中對應算法1中的第11行。步驟4:刪除。在推斷出一條邊信息之后,需要將這條邊從當前中刪除,以便暴露出更多錨單元。為此,需要將中的idsum域和count域都置為0。相應地,中原本存儲的節點loc的信息也要刪除,具體操作是使用異或操作刪除中loc節點的id,并將進行重置對應算法1中的第12行到第18行。最后,返回到步驟1重復運算。實際上,在圖過濾器中,任一條邊<i,j>的信息均存儲在和中。因此,當兩者中任意一個單元被選作錨單元時,邊<i,j>都能從解碼出來。另外,將解碼出的邊從中刪除,能暴露出更多的錨單元,從而使得解碼算法能持續迭代運行。圖4中展示了將圖3所得進行解碼的過程。首先,算法遍歷并確定為錨單元。之后,運行步驟2,計算出loc和tag的值分別為2和1。所得的邊<2,1>在步驟3中被加入δd中。之后,刪除節點1的信息,而則刪除節點2的信息。如此一來,新的錨單元將會出現,即通過多次執行以上步驟,所有中的邊將會以較高概率被成功解碼出來,也即差異邊被以遞歸的方式逐個解碼。雖然由于存在異或陷阱,圖過濾器可能會錯過一些中的邊,或者解碼算法可能會提前停止,使得中留下一些沒有被解碼的邊。但是,本申請的校驗方法能在沒有先驗知識的條件下,以高概率成功解碼特別是當拓撲之間差異邊數量較少時,準確率已足夠滿足要求。此外,網絡中大量邊同時失效的概率是微乎其微的。假設任何一條邊在某一時間窗口內失效的概率為p0,k表示某個時間窗口內失效的邊數量。對于任意整數0≤x≤|e1|,其中|e1|表示中邊的總數,則:也就是說,p(k=x)服從典型的二項分布,因此,網絡中大量邊同時失效的概率非常小。也即,本申請中的校準方法是實際有效的。進一步,針對于一旦出現異或陷阱,以上解碼算法就可能導致假陽性誤判和假陰性誤判的情形。例如:假設中節點e的鄰居節點的id為0101,1100和1011,其對應的為0010。而在中,如果節點e的鄰居節點的id為1001和0110,則將會在抽取過程中出現異或陷阱,因為在節點e在中的鄰居節點0101和1100異或的值為1001,而1001正好是e在中的一個鄰居節點。所以,經過抽取操作而得到的而在計算出的中,節點e在中的鄰居節點1001和0110,以及節點e在中的鄰居節點1001信息將會由于異或陷阱的存在而被消除。如此一來,解碼過程中將會出現假陰性誤判,也即漏掉幾條邊。另外,計算出的滿足作為錨單元的條件,一旦被選中作為錨單元,則將會引入一條額外的邊進入δd,即從節點e到節點1101的邊。而這無疑會導致假陽性誤判。需要注意的是,一旦抽取操作被執行完畢,潛在的異或陷阱將會被嵌入所得的之中并且不能被消除。本申請可以通過執行調整后的解碼算法來減緩異或陷阱的負面影響。在上面提到的例子中,如果正好選中作為錨單元,則將會引入一條額外的邊進入δd,即從節點e到節點1101的邊。然后,解碼算法將會根據步驟4把中節點e的信息通過異或的方式刪除。類似地,有可能也能滿足作為錨單元的條件,如此一來,當被選作錨單元時,又會引入一條額外的從節點1101到其他節點的邊。也就是說,異或陷阱可能會導致級聯的錯誤解碼操作,并引入一系列假陽性誤判。換句話說,必須想辦法阻止級聯錯誤出現,從而減輕異或陷阱的負面影響。一般地,在中,大多數單元都是空的,也就是說其idsum域為0…00,而其count域值為0。因此,上述級聯的錯誤解碼很可能指向一個原本為空的單元。假設一個指向空單元的候選錨單元被判定為不合法,并且不執行后續的解碼操作,則能從一定程度上減輕異或陷阱帶來的影響。基于此觀察,本申請重新設計了圖過濾器的解碼算法,并嚴格對選定的錨單元的約束。具體而言,在算法1的轉錄過程中,即步驟2,如果且則將被認為不是合法的錨單元,后續的步驟3和步驟4將不會被執行。這樣一來,某些潛在的錯誤解碼將會被有效杜絕。上面所述策略,能減少解碼的假陽性誤判,但是一定程度上會增加假陰性誤判。通過終止某些潛在的會引起假陽性誤判的解碼操作,此種策略同時也會漏掉那些第4類單元所存儲的邊。實際上,對于第4類單元而言,其dsum=00…0且count=0,意味著該節點在和中具有相同個數的鄰居節點,但是不能斷定這些鄰居節點是否一樣,因為可能存在異或陷阱。比如,標號為6的節點在和中有不同的鄰居節點,記錄節點1100和0101的信息,而則由節點0100和1101聚合而成。則經過抽取操作后,所得將是一個典型的第4類單元。當(節點12是中節點6的一個鄰居)被選作候選的錨單元時,根據上面的對解碼算法的改進策略,由于是第4類單元,解碼操作將會被終止,便不能成功解碼出從節點6到節點12的邊,從而導致遺漏。因此,需要對假陽性和假陰性進行權衡,相應調整算法。更進一步,圖過濾器將拓撲中節點的鄰居節點信息通過異或操作進行聚合,但是在解碼操作執行之后,仍然有可能會存在一些無法被反向解碼的邊。例如,一旦和中的一些差異邊組成若干閉環,這些閉環中的邊則不能通過以上解碼方法從中反向解碼。如圖5所示,和中一共有5個節點,但是和之間一共有4條不同的邊,即<1,2>,<2,3>,<3,4>和<4,1>。這四條邊正好形成一個閉環,因此,無論是原始的解碼算法1還是經過改進的解碼算法都無法從中找出合法的錨單元。為了解決這一困境,必須想辦法將形成的閉環打破,以便暴露出更多合法的錨單元。然而,直接將閉環打破并不可行,因為沒有關于閉環中邊的任何先驗信息。并且不知道究竟存在多少個閉環,更致命的是,一個節點或者邊可能參與構建多個閉環。為此,本申請提出算法2,用于解決單個閉環的解碼問題。其基本思想是假設與剩下的節點相連的某條邊為該閉環中的一條邊,并將該邊從中刪除,以便使能更多的錨單元。特別地,讓表示經過解碼操作之后剩余下的版本,u表示中未被解碼的單元數量,而locj(1≤j≤u)表示中未被解碼的單元的位置。注意到,形成閉環的節點度都為2,因此只需要刪除其中任何一條邊,都可以使整個閉環變得可解。算法2具體包括:算法2試圖刪除以loc1位置的節點為端點且指向任何可能節點的一條邊。因此,逐一嘗試的話,需要嘗試u-1種可能的邊。在每次嘗試時,都生成一個的副本,記為后續的操作將在這個副本上進行對應算法2的第5行。在算法2的第6行中,一個假設的邊test被實體化。然后,將test從中刪除,以此來使能更多錨單元,對應算法2的第7行到第10行。在選定一個錨單元之后,將執行解碼操作以計算出存儲在中的邊,對應算法2的第11行。如果所有參與解碼過程的單元都被最終置為類型4的單元,則認為test為閉環中的一條邊這一假設成立,對應算法2的第12行到第13行。如此一來,解碼出來的邊將被加入δd中并終止算法2,對應算法2的第14行到第15行。否則,進入下一輪嘗試。實際上,此種策略嘗試的次數服從集合分布,其概率參數所以,其期望值為同時,以上的假設-檢驗策略也可以用于解決當中出現多個相互獨立的閉環時解碼算法不可用的問題。通過執行算法2多次,中的多個獨立閉環可以逐一被破解,從而將中記錄的邊信息解碼。讓c表示中獨立閉環的個數,表示中未被解碼的單元數量,其中ui是第i個閉環所包含的邊數。則算法2執行次數的期望值便為:值得注意的是,由于閉環相互獨立,對某個閉環的解碼操作將不會影響其他閉環。當解碼第一個閉環時,在u-1個節點中只有2個是節點的鄰居。因此,算法2執行次數的期望值為類似地,當解碼第i個閉環時,節點將會有個可能的鄰居,所以算法2執行次數的期望值為也就意味著,算法2執行次數與中未解碼的單元個數u和相互獨立的閉環個數c成正比。實際上,當多個閉環公用某些邊或者節點時,算法2也不能成功解碼中未解碼的單元。然而,一方面,這種特殊情況在大型數據中心里出現的概率是極小的。另一方面,那些參與多個閉環的節點信息仍然存儲在中,因此,可以直接對比和中相應節點來確定出差異邊。此外,本申請實施例還對異或陷阱的概率進行了分析。對于拓撲中的任意節點,圖過濾器通過異或操作聚合其鄰節點的信息。這種壓縮思想可以降低存儲成本,減少通信開銷,但是在解碼過程中會出現計算錯誤的風險。因此,本申請將量化異或陷阱的概率。對于異或陷阱,不同的節點對會產生相同的異或結果,導致對后續解碼操作的負面影響。令l為常數并表示id的位數,n表示給定拓撲中的節點數。為了簡化分析,考慮n等于2l-1的情況。要注意的是,l位的id可以用以識別21個節點,但是不使用00…00來表示節點,因此節點數量為2l-1。對于拓撲中的任意節點e,使λ為e的度數,即節點e具有λ個鄰節點。e的鄰節點已被記錄在中。注意到,通過異或操作記錄了它的λ個鄰節點的id。將λ個鄰節點可能的組合的異或結果稱為中間結果。令α表示中間結果的數量。因此,不同的鄰節點會導致不同的α值。例如,如果e具有三個鄰居,即101,111和011,那么異或操作將有四個中間結果,包括由101和111異或得到的010,由101和011得到的110,由111和011得到的100,以及由它全部三個鄰節點101,111和011進行異或得的001。注意,對于任何節點,不同的鄰節點將導致不同數量的中間結果。鄰節點的id或中間結果都可能遇到gfb產生的異或陷阱,導致解碼時的計算錯誤。經過以上分析,可以得到定理1:用pλ與pα分別表示λ個鄰節點中任意一個節點與α個中間結果中任意一個中間結果遇到gb中異或陷阱的概率。那么有:證明:注意到,當計算pα時,一個中間結果只會遇到gb中一個鄰節點導致的異或陷阱。例如,在gfa[i]中的中間結果1100會被gb中的鄰節點1100消除。但是對于記錄在gfa[i]中的鄰節點1010來說,如果gfb[i]中也記錄有1010,那么它就不是一個異或陷阱。因此,pλ的分子比pα大1。在接下來的內容中,只計算pα,而pλ能夠以相同的方式計算得出。給定一個記錄在gfa[i]中的中間結果,記作inter。令x表示gfb[i]中異或結果正好等于inter的鄰節點的數目。令c(x=x)表示當x=x時inter引起異或陷阱的組合的數目。這時有:實際上,當x=1時,中間結果inter只有在當gfb[i]中恰好保存了id與inter相等的節點時才會遇到異或陷阱。因此,c(x=1)=1。當x=x并且2≤x≤λ時,假設inter=id1⊙id2⊙…⊙idx,其中idi(1≤i≤x)表示包含在這個異或陷阱中的鄰節點。為了正確求出c(x=x),需要確定idi可能存在的情況。注意到id1,id2,…,idx彼此間需要進行區分。因此,id1共有2l-2種選擇,不包含00…00與inter本身。而id2除了00…00與inter本身以外,id1選擇的值也不能再次選擇。因此id2共有21-3種可能的選擇。以此類推,idi共有2l-i-1種選擇。等式可以利用數學歸納法證明。根據上述等式,gfa[i]中的inter會引起異或陷阱的情況共有種。注意到,對于gfa[i],它的鄰節點共有種可能的組合,其中λ表示ga中節點e的鄰節點的總數。因此,pα可以計算為同樣地,pλ也能夠被合理地計算出來。因此定理1得證。根據定理1,能夠確定gfa[i]中不發生異或陷阱的概率,記其為pc。簡要來說,本申請認為λ個鄰節點或α個中間結果中的任意一個發生異或陷阱的事件都是獨立的。因此,pc能夠被計算為(1-pα)α×(1-pλ)λ。并且,令y表示沒有發生異或陷阱的單元數目。那么p(y=y)服從典型的二項分布,即其中0≤y≤n。并且y值得期望為n×pc。顯然,更大的pc會導致更多的異或陷阱,并因此降低解碼操作的準確性。在圖過濾器的框架中,異或陷阱不可避免。但是只有當中的鏈路遇到異或陷阱時,才會影響到圖過濾器解碼操作的準確性。在本申請的另一些可選的實施例中,本申請對提出的圖過濾器進行綜合評估。通常情況下,在存儲成本、解碼精度和時間消耗方面將圖過濾器與其他數據結構(包括相鄰矩陣、相鄰表和搜索樹)進行比較。在不失一般性的情況下,首先生成不同規模的er隨機圖作為輸入拓撲。拓撲的連通性由給定的概率p0確定,其定量了給定節點對之間互連的概率。此后,使用兩個代表性的數據中心拓撲:fat-tree和scafida對圖過濾器的性能進行進一步的測試。最后,本申請提出了破環算法,并通過不同的參數設置對其進行了評估。注意,解碼精度由解碼結果中的假陽性率和假陰性率二者共同確定。可選的,所有算法和方法都在2.6ghzcpu和16gbram的測試臺上實現。除了圖過濾器,一般的數據結構,如相鄰矩陣、相鄰表和搜索樹,也有能力記錄給定拓撲的信息。因此,本申請在通信開銷、解碼精度和時間消耗方面將圖過濾器與其他數據結構進行比較。考慮的參數包括或中的節點數,即|v1|,和之間保留的不同鏈路的數量,即|d1|,以及er隨機圖中的概率p0。首先,比較了采用圖過濾器、相鄰矩陣、相鄰表和搜索樹引起的存儲或通信開銷。圖6a描述了當和中的節點數量從100增加到1500時的結果。給定er隨機圖的參數p=0.1,計算使用上述數據結構來表示拓撲所產生的存儲成本。為了增加可讀性,用10的對數值而不是實際值來進行繪制。無論在何種情況下,相鄰表消耗最多的存儲空間,這是因為在相鄰表的一個節點需要兩個數據域。相比之下,圖過濾器需要最少的存儲空間。原因表述如下:相鄰表和搜索樹都需要大量的存儲空間來進行構造,但是相鄰矩陣并不是存儲友好的,因為它可能相當稀疏。因此,圖過濾器在存儲成本方面優于其他數據結構。當|v1|,|d1|和p0分別變化時,推導過程中的時間消耗在圖6b,圖6c和圖6d中進行了比較。依舊以10的對數值進行圖形繪制。請注意,圖例中的“matrix”和“table”分別表示相鄰矩陣和相鄰表的方法引起的時間消耗。“gf-o”表示圖過濾器初始解碼操作的時間消耗。相比之下,“gf-o”記錄擴展解碼操作的時間消耗,這種解碼操作將任何指向空單元的候選單元認作是非法的錨單元。顯然,給定相同的參數設置,所有方法導致的時間消耗隨|v1|的增長而增加。可以清楚看到,當|v1|的值從200增加到3000,|d1|和p0分別給定為100和0.1,基于相鄰表的方法效果最差,而通過比較兩個相鄰矩陣導出的方法所需時間最少。通過圖過濾器反向解碼中的鏈路比基于相鄰矩陣的方案稍慢,但比基于鄰接表的方法快得多。然而,圖過濾器支持可逆解碼,而其他方法則不支持。這種特性將圖過濾器的使用擴展到更多的先驗知識不可用的場景。并且,針對圖過濾器所設計的初始和增強的解碼操作以推斷的剩余鏈路花費了相似的時間。為減少假陽性率,擴展解碼操作并終止了對空單元的解碼處理。但是,在影響需要的總解碼時間方面,非法錨單元的數量可以忽略不計。給定|v1|和p0分別為2000和0.1。圖6c描述了|d1|從20增加到280時所引起的時間消耗。顯然,相鄰矩陣和相鄰表都消耗了恒定的時間(分別約7.3ms和3.4s)以得出兩個拓撲之間的不同鏈路。由于它們通過運行矩陣或表來推導出不同的鏈路,因此它們的時間復雜度都是o(|v1|)。相比之下,當|d1|增加時,圖過濾器的時間消耗顯著增加(從2.1ms到34.7ms)。圖過濾器逐一解碼不同的鏈路,因此其時間消耗與不同鏈路的數量|d1|成正比。并且,“gf-o”和“gf-a”之間的差距很小。此外,當|v1|時和|d1|固定為2000和200,設置p0從0.05變化到0.5,并記錄其所引起的時間消耗。結果如圖6d所示。當p0增加時,更多的鏈路被引入網絡。通常,er圖中鏈路數量的期望可以被計算為|v1|*(|v1|-1)*p0/2。注意,與相鄰矩陣不同,相鄰表基于每個拓撲中的鏈路來進行構造。因此,“table”曲線迅速上升,而“matrix”曲線只在8ms左右波動。對于圖過濾器,更多的鏈路意味著解碼期間xor陷阱和錯誤計算的可能性更高。隨著p0的增加,初始和增強的圖過濾器需要更多輪的解碼操作。因此,圖6d中的“gf-a”和“gf-o”都顯示出緩慢增長的趨勢。實際上,與“gf-o”相比,“gf-a”花費更多的時間來識別非法的錨點。這種現象表明,當p0增長時,增加的xor陷阱將顯著增大“gf-a”和“gf-o”之間的差距。通過比較相關聯的相鄰矩陣或相鄰表,兩個給定拓撲之間的不同鏈路可以被正確計算得出。因此,不管是相鄰矩陣還是相鄰表,其精度都為100%。因此,本申請量化了用于圖過濾器的初始和擴展解碼操作的假陽性比例和假陰性比例。圖7a、圖7b、圖8a、圖8b、圖9a、圖9b分別記錄了不同參數設置下的假陽性率和假陰性率。其中,“missed-o”和“missed-a”分別表示初始和擴展解碼操作的假陽性率。類似地,“added-o”和“added-a”分別表示初始和擴展解碼操作的假陰性率。首先,圖7a、圖7b分別描述了和的節點數從200變為3000時的假陽性率和假陰性率。隨著|v1|的增加,“missed-o”和“missed-o”中的值都急劇下降。在圖7b中的“added-a”呈類似的下降趨勢。理論上說,當|v1|隨著固定|d1|的增加,圖過濾器的解碼會受到較少的xor陷阱的影響,因此假陽性率和假陰性率都會下降。但是,如圖7b所示,“added-o”有不穩定的表現。還可以看出,以假陽性率的微小增加為代價,擴展解碼操作的假陰性率大大降低。然后將兩個拓撲結構中不同鏈路數量從20個變為280個,并在圖8a、圖8b中記錄所得到的假陽性率和假陰性率。圖8a、圖8b中展示了當|d1|增加時,假陽性率以及假陰性率都會顯著上升。內在的原因是,對于圖過濾器的解碼,更多不同的鏈路導致xor陷阱的風險增加。此外,當|d1|增加時,擴展的解碼策略在假陽性率和假陰性率方面都優于初始解碼操作。最后,當er圖模型中的參數p0從0.05增加到0.5時,得到的假陽性率和假陰性率如圖9a、圖9b所示。較大的p0意味著更多的拓撲鏈路和更高的xor陷阱風險。如圖9a、圖9b所示,圖過濾器解碼更多的錯過的和新加入的邊。顯然,擴展解碼算法在假陰性率方面勝過初始解碼策略。總結圖7a、圖7b、圖8a、圖8b、圖9a、圖9b,擴展解碼算法可以顯著地減少圖過濾器的假陰性率,但是存在丟失一些不同鏈路的風險。除一般的er隨機圖之外,本申請還進一步評估了其他兩個典型數據中心拓撲結構,如fat-tree和scafida的圖過濾器的性能。考慮fat-tree中的交換機端口數量k,以及網絡中不同鏈路的數量|d1|。指標包括解碼時間消耗,假陽性率和假陰性率。結果如圖10a、圖10b、圖11a、圖11b、圖12a、圖12b所示。為了簡單起見,在fat-tree和scafida中實現了圖過濾器的擴展解碼操作。作為代表性的結構化數據中心拓撲,fat-tree由與k3/4個服務器互連的5k2/4個商品交換機組成。fat-tree中的鏈路數可以計算為3k3/4個。相反,scafida是數據中心中典型的隨機或不規則拓撲。為了公平起見,在實驗中,fat-tree中的鏈路和節點的總數都設置相同。但是它們適用不同的規則,因此具有完全不同的拓撲特征(例如,網絡直徑,度分布和平分帶寬)。當k從10變化到24,并且|d1|給定為400時,圖10a、圖11a、圖12a描述了fat-tree和scafida的性能。如圖10a所示,比起在fat-tree拓撲,在scafida拓撲中,圖過濾器需要多一點點的時間來完成解碼操作。事實上,scafida是一個高度偏度的拓撲,網絡中的大多數節點與幾個巨型節點相連。因此,這些巨型節點可能涉及多個不同的鏈路。然而,這種鏈路不能直接從巨型節點解碼,因為巨型節點不會被選定為錨單元。圖過濾器必須等到這種鏈路的另一端被搜索為合法的錨單元。這就是scafida中的解碼更耗時的原因。根據圖11a、圖12a所示,當k增加時,圖過濾器的假陽性率和假陰性率都迅速下降。注意,當k=10時,假陽性率和假陰性率都非常高,這意味著在這種情況下圖過濾器是不適用的。然而,本申請認為k=10意味這網絡中有750條邊。同時改變750個鏈路中的400個鏈路是不切實際的,因為數據中心網絡規模是增量演進而不是斷崖式增長的。此外,與scafida相比,fat-tree中的解碼導致較高的假陰性率以及較低的假陽性率。原因在于,在實驗中,不同的鏈路是(添加的鏈路或刪除的鏈路)隨機生成的。在fat-tree中刪除的鏈路比在scafida中的更加分散。這是因為scafida中的巨型節點有更大的刪除鏈路的可能性。也就是說,在scafida中,較少節點的鏈路被刪除,而在解碼時,圖過濾器將處理較少的節點。因此,對scafida中刪除的鏈路進行解碼將會錯過更多的鏈路,也會使更少的鏈路被加入到δd中去。此后,圖10b、圖11b、圖12b一起揭示了當k=20時|d1|在fat-tree和scafida中的影響。毫無疑問的是,當網絡中引入了更多不同的鏈路時,圖過濾器需要更多的時間去進行推導。如圖10b所示,在scafida中的解碼比在fat-tree中要耗費更多的時間。此外,根據圖11b和圖12b,scafida中的解碼導致了較高的假陽性率以及較低的假陰性率。其基本原因是,與fat-tree不同,在scafida中,不同的鏈路主要聚集在巨型節點周圍。此外,當|d1|增長時,圖過濾器有著較高的假陽性率和假陰性率。但實際中,為了確保可用性,數據中心在一段時間內不允許遇到大量而同時的鏈路故障。這保證了圖過濾器在數據中心中的實用性。基于圖10a、圖10b、圖11a、圖11b、圖12a、圖12b,可以得出結論:圖過濾器在不同的數據中心拓撲中顯示出不同的性能。圖過濾器可以在數據中心中實現,因為數據中心是增量演進的。進一步,本申請實施例還對破環算法進行評估:當不同的鏈路在拓撲中形成環路時,必須使用算法2來通過假設-檢查策略來破壞潛在的環路。如果沒有節點或邊參與多個閉環,那么算法2可以在沒有假陽性率和假陰性率的情況下對鏈路進行解碼。因此,只在表1中描述了算法2的時間開銷。表1算法2在不同參數場景下的時間開銷閉環個數3691215182124耗時(秒)0.430.891.1311.612.212.423.003.23|dc|5060708090100110120耗時(秒)0.971.141.261.571.842.212.342.63|v1|0.511.522.533.54耗時(秒)0.801.361.311.732.212.953.303.43通常情況下,考慮閉環數量c、節點數量和環路中不同鏈路數量的影響,|v1|和|dc|。表1記錄了當c、|v1|和|dc|變化時,破壞環路所需的時間開銷。算法2的預期執行次數與節點總數u(u=|dc|)和閉環數量c成正比。因此,如表1所示。當c和|dc|增加時,造成的時間開銷明顯增加。此外,給定c和|dc|分別為15和100,設置中的單元總數|v1|從500改變到5500。表1展示了更大的|v1|將減慢解碼進度,因為搜索錨單元必須檢查所有單元。也就是說,通過遵循假設-檢查策略,算法2可以以額外的時間開銷為代價來正確地破壞中的環路。終上所述,圖過濾器比其他數據結構節省空間,并且其所得到的時間開銷是可以接受的。擴展解碼操作以較高的假陽性率為代價,顯著降低了假陰性率。此外,圖過濾器在不同的數據中心拓撲中具有不同的性能。最后,設計的環路破壞算法確實可以破壞潛在的環路并解碼底層的鏈路。因此,本申請的圖過濾器對于不允許大量而同時的故障的數據中心是實用的。在本申請另一些可選的實施例中,針對于一些空間高效的數據結構,例如bloomfilter及其變種,雖然能夠推斷出ga和gb之間不同的節點,但是無法有效地從大量鏈路中識別出不同的鏈路。為了解決拓撲校準問題,本申請首先使用bloomfilter來查找不同的節點。此后,設計了一種叫作圖過濾器的新型數據結構來表示每個拓撲,并識別出兩個拓撲之間不同的鏈路。通常,圖過濾器由n個單元組成,每個單元映射拓撲中一個特定的節點。通過維護標簽機制可實現這種一一映射。一個單元通過兩個域(即idsum和count)記錄映射節點的相關鏈路。具體來說,對于第i個單元,其idsum將第i個節點的所有鄰節點的id通過異或操作組合在一起,而count計錄了它的鄰節點的數目。此外,針對圖過濾器提出了三種操作(編碼,抽取和解碼),以便推導出兩種拓撲之間不同的鏈路。在編碼過程中,用圖過濾器聚合表示每個拓撲中的所有鏈路。然后,用抽取操作消除兩個拓撲中相同的鏈路,同時保留下不同的鏈路。最后,可以遞歸地從抽取結果中解碼得到不同的鏈路。基于錨單元(idsum≠0并且count=1的單元)的定義,對于任意一條鏈路<i,j>,只要抽取后的圖過濾器的第i個單元或者第j個單元能夠作為錨單元,這條鏈路就有較高概率被反向解碼出來。本申請提出了兩種解碼算法來推導出底層不同的鏈路,即原始解碼算法和增強解碼算法。原始解碼算法遞歸地搜索錨單元,并刪除與錨單元相關聯的鏈路。然而,在解碼時,潛在的異或陷阱(不同的節點在編碼時產生相同的異或結果)可能會導致假陽性和假陰性錯誤。因此,增強解碼算法通過消除一些非法的錨單元來減少異或陷阱的影響。此外,在極端情況下,一些不同的鏈路會連成環,并且不會暴露錨單元來解碼這些鏈路。因此,進一步設計一個破環算法來分解環并推導出這些鏈路。所提出的破環算法按照假設檢驗策略來選擇和刪除環中的鏈路,使得更多合法的錨單元暴露出來。雖然圖過濾器是概率數據結構,但對于只有部分鏈路可能同時改變的情況,它是有效和高效的。綜合實驗表明,圖過濾器比其他數據結構都要節省空間,并且所耗費的時間開銷是可以接受的。增強的解碼操作可以顯著降低假陰性率,但這會導致稍高的假陽性率。此外,圖過濾器在不同的數據中心拓撲中具有不同的性能。最后,設計的破環算法可以切實有效地分解潛在的環并解碼底層的鏈路。因此,本申請所述網絡拓撲校準方法能夠在缺乏先驗知識的條件下實現高效率的網絡拓撲校準,并能降低存儲成本及通信開銷。所屬領域的普通技術人員應當理解:以上任何實施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權利要求)被限于這些例子;在本發明的思路下,以上實施例或者不同實施例中的技術特征之間也可以進行組合,步驟可以以任意順序實現,并存在如上所述的本發明的不同方面的許多其它變化,為了簡明它們沒有在細節中提供。另外,為簡化說明和討論,并且為了不會使本發明難以理解,在所提供的附圖中可以示出或可以不示出與集成電路(ic)芯片和其它部件的公知的電源/接地連接。此外,可以以框圖的形式示出裝置,以便避免使本發明難以理解,并且這也考慮了以下事實,即關于這些框圖裝置的實施方式的細節是高度取決于將要實施本發明的平臺的(即,這些細節應當完全處于本領域技術人員的理解范圍內)。在闡述了具體細節(例如,電路)以描述本發明的示例性實施例的情況下,對本領域技術人員來說顯而易見的是,可以在沒有這些具體細節的情況下或者這些具體細節有變化的情況下實施本發明。因此,這些描述應被認為是說明性的而不是限制性的。盡管已經結合了本發明的具體實施例對本發明進行了描述,但是根據前面的描述,這些實施例的很多替換、修改和變型對本領域普通技術人員來說將是顯而易見的。例如,其它存儲器架構(例如,動態ram(dram))可以使用所討論的實施例。本發明的實施例旨在涵蓋落入所附權利要求的寬泛范圍之內的所有這樣的替換、修改和變型。因此,凡在本發明的精神和原則之內,所做的任何省略、修改、等同替換、改進等,均應包含在本發明的保護范圍之內。當前第1頁12當前第1頁12