專利名稱:高效處理路由聚合的方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機網(wǎng)絡(luò)通信領(lǐng)域,具體涉及一種BGP高效處理路由聚合的解決方法及設(shè)備。
背景技術(shù):
BGP(邊界網(wǎng)關(guān)協(xié)議)作為一類用于在自治系統(tǒng)間實現(xiàn)路由發(fā)現(xiàn)與傳遞的EGP協(xié)議,常常工作在網(wǎng)絡(luò)的核心層。該協(xié)議交互和維護的路由數(shù)目很多,據(jù)統(tǒng)計,目前Internet網(wǎng)的路由已經(jīng)超過了10萬條,而且這個數(shù)字還將繼續(xù)增長,路由數(shù)目的持續(xù)增長,路由表的急劇膨脹,給傳統(tǒng)的BGP路由交互方式帶來了挑戰(zhàn)。
在這種情況下,聚合被廣泛應(yīng)用于BGP協(xié)議,聚合就是將具體路由歸納成更為抽象的路由,從而大大地減少BGP向外通告路由的數(shù)目,并最終有效地減小路由表的空間消耗,在實際的組網(wǎng)應(yīng)用中,聚合是一個非常有用且常被使用的功能。
對于聚合,協(xié)議中有如下規(guī)定只有當聚合地址覆蓋至少一條具體路由時,聚合地址對應(yīng)的路由(即聚合路由)方可生效;另外,在策略允許的情況下,聚合路由需要繼承所有下屬的具體路由的屬性信息。從上面的約定中,不難看出,任何一條具體路由的增刪,都有可能觸發(fā)聚合路由的相關(guān)處理,即聚合路由需要對下屬具體路由屬性進行繼承。傳統(tǒng)的聚合采取以下方式實現(xiàn)當具體路由增加或者刪除時,首先刪除之前產(chǎn)生的所有聚合路由,隨后,根據(jù)當前BGP路由表的信息,重新生成新的聚合路由(當然,前提條件是該聚合地址至少覆蓋一條具體路由)。這樣做的好處不言而喻流程簡單。BGP協(xié)議不用為聚合路由專門維護其下屬具體路由的屬性信息,在每一次具體路由的增加、刪除后,聚合路由都在執(zhí)行先刪除后添加的過程,在聚合路由添加的同時,實現(xiàn)了屬性信息的繼承和同步。但缺點也是明顯的,由于每一條具體路由的增刪,都將觸發(fā)聚合路由的刪除,并重新計算、生成新的屬性信息,所以,效率低下。
舉個例子,當?shù)谝粭l具體路由增加,聚合路由在重新生成時,需要繼承所有下屬具體路由的屬性信息,由于當前只有一條被覆蓋的具體路由,因此屬性計算需要1次;當?shù)诙l具體路由增加時,聚合路由需要先刪除再添加。屬性生成過程中,由于覆蓋了兩條具體路由,因此需要計算2次;以此類推,當?shù)贜條具體路由增加時,聚合路由的屬性則需計算N次。假設(shè)每一次屬性計算的時間均為T,忽略聚合路由刪除過程的時間消耗,當N條被聚合地址覆蓋的具體路由添加時,聚合模塊處理的時間為T*n*(n+1)/2,效率的低下,可見一斑。
通過實地的測試,進一步驗證了上述的結(jié)論。
測試環(huán)境100條路由,連續(xù)增刪1000次1.沒有配置任何聚合的情況下,處理時間約為41s;2.配置一個聚合地址時,處理時間約為380s;3.配置兩個聚合地址時,處理時間約為710s;修改一下測試環(huán)境,如果當前只配置了一個聚合地址,且這條聚合地址覆蓋了十萬條具體路由,路由仍然振蕩1000次,聚合的處理需要大約12年。這顯然不是我們所希望的,所以,如何高效的處理路由聚合,就成了每一個網(wǎng)絡(luò)設(shè)備供應(yīng)商首當其沖應(yīng)該考慮的問題。
發(fā)明內(nèi)容
本發(fā)明能有效的解決上述由于聚合的出現(xiàn)所引發(fā)的BGP處理效率低下的問題,提供了一種高效處理BGP路由聚合的解決方法及設(shè)備。
本發(fā)明的技術(shù)內(nèi)容一種高效處理路由聚合的方法,包括(1)為每一個聚合路由建立與其下屬具體路由屬性繼承的映射關(guān)系;(2)當網(wǎng)絡(luò)拓撲發(fā)生變化,路由振蕩時,同步更新聚合路由的屬性信息,并生成或刪除屬性映射關(guān)系;(3)當需要計算聚合路由的屬性時,重新進行聚合路由的屬性計算,并保存結(jié)果信息。
所述步驟(1)包括a.在處理每一條具體路由時,將其對應(yīng)的所有屬性信息放入公共緩沖池中,進行暫存;同時,增加引用計數(shù)信息,記錄此條屬性信息被路由引用的情況;b.聚合路由在繼承其下屬所有具體路由的屬性信息時,只需要維護聚合路由與其下屬具體路由屬性之間的映射關(guān)系,使得每一條聚合路由都能夠清楚的知道其所有下屬具體路由的屬性信息;c.當一條具體路由對應(yīng)的屬性信息也同時被聚合路由所繼承時,需要遞交公共緩沖池中,記錄該具體路由屬性的引用計數(shù)。
所述步驟(2)為當新配置了一條聚合地址表項,需要遍歷本地路由信息庫,生成實時的屬性映射關(guān)系;當取消一條聚合地址表項的配置時,需要刪除聚合路由,廢除聚合路由與其下屬具體路由屬性的映射關(guān)系。
一種高效處理路由聚合的設(shè)備,包括BGP聚合路由處理模塊,在BGP聚合路由處理模塊內(nèi)增加構(gòu)造一為每一個聚合路由建立與其下屬具體路由屬性繼承映射關(guān)系的聚合路由屬性映射表。
進一步包括一聚合路由增刪仲裁模塊,用于判斷是否有新的符合條件的聚合路由生成,或是否觸發(fā)對原聚合路由的撤銷。
進一步包括一聚合路由屬性計算仲裁模塊,用于判斷是否需要聚合路由屬性的重新計算。
本發(fā)明的技術(shù)效果通過在聚合路由中,增加建立聚合路由與其下屬具體路由屬性繼承的映射關(guān)系,通過維護與其下屬具體路由屬性的映射關(guān)系,廢除聚合路由的時間消耗與其下屬具體路由條數(shù)之間的線性關(guān)系,即保存了屬性計算的中間變量而非最終結(jié)果,實現(xiàn)二者之間的線性無關(guān),以空間換取時間,最終實現(xiàn)聚合路由與其下屬具體路由的時間復雜度由當前的O(n)轉(zhuǎn)變?yōu)镺(1),從而,高效地提高路由聚合的處理效率。
圖1是本發(fā)明中聚合路由屬性與具體路由屬性的映射關(guān)系示意圖;圖2是本發(fā)明中路由變化在聚合模塊中處理的流程示意圖;圖3是本發(fā)明中聚合路由屬性計算處理的流程示意圖。
具體實施例方式
BGP高效處理路由聚合的一種解決辦法包括以下步驟參考圖1,為每一個聚合路由建立與其下屬具體路由屬性繼承的映射關(guān)系。在每一條具體路由中,都會保存自己的屬性信息,從而表明具體路由的特性;在本地路由信息庫中,具體路由屬性信息的存儲是必不可少的。同時,聚合路由將繼承所有下屬具體路由的屬性信息,因此,如果在聚合路由中保存一個關(guān)于下屬具體路由屬性的映射表,通過此映射表,可以簡單、快捷地定位到具體路由屬性的字段信息,最終實現(xiàn)在聚合路由中,只保存屬性計算所要用到的中間變量,即各具體路由的屬性信息。
當網(wǎng)絡(luò)拓撲發(fā)生變化,路由振蕩時,調(diào)用BGP聚合處理的仲裁模塊,得出該具體路由在聚合模塊中需要進行何種處理的結(jié)論如果此具體路由增加,同時聚合仲裁模塊的結(jié)論是需要同步更新聚合路由的屬性信息,則遍歷本地路由信息庫,對符合條件的聚合路由,在其屬性映射表中,增加對此新路由的屬性映射關(guān)系;如果此具體路由撤銷,同時聚合仲裁模塊的結(jié)論是需要同步更新聚合路由的屬性信息,則遍歷本地路由信息庫,對符合條件的聚合路由,在其屬性映射表中,去除對此具體路由的屬性映射關(guān)系。其處理過程為a.在處理每一條具體路由時,將其對應(yīng)的所有屬性信息放入公共緩沖池中,進行暫存;同時,增加引用計數(shù)信息,記錄此條屬性信息被路由引用的情況;b.聚合路由在繼承其下屬所有具體路由的屬性信息時,只需要維護聚合路由與其下屬具體路由屬性之間的映射關(guān)系,使得每一條聚合路由都能夠清楚的知道其所有下屬具體路由的屬性信息;c.當一條具體路由對應(yīng)的屬性信息也同時被聚合路由所繼承時,需要遞交公共緩沖池中,記錄該具體路由屬性的引用計數(shù)。
參考圖2,當收到一條具體路由的變化信息后,將送交聚合仲裁模塊,進行仲裁,確定該具體路由是否需要進行聚合處理如果不需要聚合處理,則直接退出聚合處理模塊;否則,需要進行聚合處理,還需進一步區(qū)分此具體路由的變化類型如果是路由更新,則需要確定是否觸發(fā)新聚合路由的生成,并更新聚合路由中屬性映射表的關(guān)系;如果是路由的撤銷,則要在更新聚合路由屬性映射表之后,判斷是否觸發(fā)對原聚合路由的撤銷。即增加一聚合路由增刪仲裁模塊,用于判斷是否有新的符合條件的聚合路由生成,或是否觸發(fā)對原聚合路由的撤銷。
當有一條具體路由發(fā)生變化,需要將其送交聚合仲裁模塊,進行決策。如果此時用戶配置了聚合地址,同時,該聚合地址覆蓋了此具體路由,則需要對此具體路由執(zhí)行聚合處理;否則,無需進行聚合處理。
在對此具體路由進行聚合處理過程中,需要進一步區(qū)分此具體路由的變化類型如果此具體路由為路由更新,則需要首先送交聚合路由增刪仲裁模塊,確定是否有新的符合條件的聚合路由生成;隨后,更新聚合路由的屬性映射表,將此具體路由的屬性信息映射到聚合路由的屬性映射表中,最終實現(xiàn)聚合路由對此具體路由屬性信息的繼承;如果此時具體路由為撤銷路由,則首先進行聚合路由屬性映射表的更新操作,去除關(guān)于此具體路由的屬性映射關(guān)系;隨后,仍然需要送交聚合路由增刪仲裁模塊,判斷是否觸發(fā)對已存在聚合路由的刪除處理。
其中,關(guān)于聚合配置響應(yīng)的處理過程當新配置了一條聚合地址表項,需要遍歷本地路由信息庫,對其聚合地址覆蓋的各個具體路由,主動調(diào)用上述的變化路由處理響應(yīng)過程,其中,路由的變化事件為路由更新;從而實現(xiàn)為當前新配置下的聚合路由,生成實時的屬性映射關(guān)系;當取消一條聚合地址表項的配置時,需要刪除聚合路由,同時,廢除聚合路由屬性映射表中維護的與其下屬具體路由屬性的映射關(guān)系。
當本地需要向外通告聚合路由抑或本地在進行聚合路由的顯示時,需要計算出當前聚合路由屬性的結(jié)果信息,用于BGP路由報文的構(gòu)造以及顯示;基于效率的考慮,在此增加一個聚合路由屬性計算仲裁模塊,用以決策是否必須需要聚合路由屬性的重新計算,對于必須的,則重新進行計算,并保存結(jié)果信息;而對于不是必須的,則只需取出之前的結(jié)果信息即可,從而,盡可能的減少了聚合路由屬性計算的次數(shù),再次提高了路由聚合的處理效率。
參考圖3,在所有可能需要對聚合路由屬性計算的地方,調(diào)用聚合屬性重新計算仲裁模塊進行處理如果仲裁結(jié)論是需要對屬性進行重新計算,則計算聚合路由的屬性,并保存結(jié)果信息,以減少網(wǎng)絡(luò)穩(wěn)定時,多次計算聚合路由屬性的可能;如果仲裁結(jié)論是不需要對屬性進行重新計算,則直接使用之前計算的結(jié)果信息,無需對此再做任何后續(xù)操作。
下面以一條路由處理為例,簡單說明一下具體的處理過程當有一條具體路由發(fā)生變化,需要將其送交聚合仲裁模塊,進行決策。如果此時用戶配置了聚合地址,同時,該聚合地址覆蓋了此具體路由,則需要對此具體路由執(zhí)行聚合處理;否則,無需進行聚合處理;在聚合路由中保存一個關(guān)于下屬具體路由屬性的映射表,在對此具體路由進行聚合處理過程中,如果此具體路由為路由更新,則需要首先送交聚合路由增刪仲裁模塊,確定是否有新的符合條件的聚合路由生成;隨后,更新聚合路由的屬性映射表,生成實時的屬性映射關(guān)系;如果此時具體路由為撤銷路由,則首先進行聚合路由屬性映射表的更新操作,去除關(guān)于此具體路由的屬性映射關(guān)系;隨后,仍然需要送交聚合路由增刪仲裁模塊,判斷是否觸發(fā)對已存在聚合路由的刪除處理。
當需要計算聚合路由的屬性時,調(diào)用聚合屬性重新計算仲裁模塊進行處理如果仲裁結(jié)論是需要對屬性進行重新計算,則計算聚合路由的屬性,并保存結(jié)果信息;如果仲裁結(jié)論是不需要對屬性進行重新計算,則直接使用之前計算的結(jié)果信息,無需對此再做任何后續(xù)操作。
權(quán)利要求
1.一種高效處理路由聚合的方法,其特征在于(1)為每一個聚合路由建立與其下屬具體路由屬性繼承的映射關(guān)系;(2)當網(wǎng)絡(luò)拓撲發(fā)生變化,路由振蕩時,同步更新聚合路由的屬性信息,并生成或刪除屬性映射關(guān)系;(3)當需要計算聚合路由的屬性時,重新進行聚合路由的屬性計算,并保存結(jié)果信息。
2.如權(quán)利要求1所述的高效處理路由聚合的方法,其特征在于所述步驟(1)包括a.在處理每一條具體路由時,將其對應(yīng)的所有屬性信息放入公共緩沖池中,進行暫存,并增加引用計數(shù)信息;b.聚合路由在繼承其下屬所有具體路由的屬性信息時,只需要維護聚合路由與其下屬具體路由屬性之間的映射關(guān)系;c.當一條具體路由對應(yīng)的屬性信息也同時被聚合路由所繼承時,需要遞交公共緩沖池中,記錄該具體路由屬性的引用計數(shù)。
3.如權(quán)利要求1或2所述的高效處理路由聚合的方法,其特征在于所述步驟(2)為當新配置了一條聚合地址表項,需要遍歷本地路由信息庫,生成實時的屬性映射關(guān)系;當取消一條聚合地址表項的配置時,需要刪除聚合路由,廢除聚合路由與其下屬具體路由屬性的映射關(guān)系。
4.一種高效處理路由聚合的設(shè)備,包括BGP聚合路由處理模塊,其特征在于在BGP聚合路由處理模塊內(nèi)增加構(gòu)造一為每一個聚合路由建立與其下屬具體路由屬性繼承映射關(guān)系的聚合路由屬性映射表。
5.如權(quán)利要求4所述的高效處理路由聚合的設(shè)備,其特征在于進一步包括一聚合路由增刪仲裁模塊,用于判斷是否有新的符合條件的聚合路由生成,或是否觸發(fā)對原聚合路由的撤銷。
6.如權(quán)利要求4或5所述的高效處理路由聚合的設(shè)備,其特征在于進一步包括一聚合路由屬性計算仲裁模塊,用于判斷是否需要聚合路由屬性的重新計算。
全文摘要
本發(fā)明提供了一種高效處理路由聚合的方法及設(shè)備,屬于計算機網(wǎng)絡(luò)通信領(lǐng)域。該方法為每一個聚合路由建立與其下屬具體路由屬性繼承的映射關(guān)系,當網(wǎng)絡(luò)拓撲發(fā)生變化,路由振蕩時,同步更新聚合路由的屬性信息,生成或刪除屬性映射關(guān)系,當需要計算聚合路由的屬性時,重新進行聚合路由的屬性計算,保存結(jié)果信息,并通過在聚合路由中增加屬性映射表,用于維護與其下屬具體路由屬性的映射關(guān)系。由于保存了路由聚合屬性計算的中間變量而非最終結(jié)果,廢除聚合路由的時間消耗與其下屬具體路由條數(shù)之間的線性關(guān)系,即以空間換取時間,最終實現(xiàn)提高路由聚合的處理效率。
文檔編號H04L29/06GK1561063SQ20041000658
公開日2005年1月5日 申請日期2004年3月9日 優(yōu)先權(quán)日2004年3月9日
發(fā)明者劉博旻, 李萍, 劉博 申請人:港灣網(wǎng)絡(luò)有限公司