物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

如何利用外部路由協(xié)議實現(xiàn)門禁系統(tǒng)VPN異地集中管理

作者:RFID世界網(wǎng) 收編
來源:中國智能家居聯(lián)盟
日期:2011-03-18 10:35:44
摘要:本文對BGP擴展性相關(guān)的幾個問題和相關(guān)的措施進行了論述,在實際的應(yīng)用中需要根據(jù)具體情況來部署。
  (1)I-BGP的Full-Mesh問題  

  BGP路由協(xié)議分為I-BGP和E-BGP兩個部分。I-BGP用于自治域內(nèi)的路由器之間,E-BGP用于自治域間的路由器之間。為了防止產(chǎn)生環(huán)回路由,BGP協(xié)議要求一個路由器通過I-BGP學(xué)到的路由,不再向其他I-BGP鄰居廣播,所以一個自治域內(nèi)所有參加I-BGP協(xié)議的路由器都要與其他路由器建立會話,從而保證路由信息能夠正確地廣播到每一個路由器。依照這個原則,一個自治域內(nèi)總的I-BGP會話數(shù)為N×(N-1)/2(N為運行I-BGP的路由器數(shù)),當(dāng)N不斷增大時,這個數(shù)字會大得驚人:如100臺路由器,則會話數(shù)為4950。這對網(wǎng)絡(luò)設(shè)備而言是個非常大的負擔(dān),而且還將使網(wǎng)絡(luò)的管理與配置變得異常復(fù)雜。而骨干網(wǎng)通常由大量的運行I-BGP的路由器組成,因此,這個問題是否能夠解決,直接影響到網(wǎng)絡(luò)規(guī)模的大小。

 ?。?)更改路由策略時路由振蕩的問題 

  BGP屬于增量更新的路由協(xié)議,當(dāng)有新的路由要發(fā)布時,路由器會向鄰居發(fā)送Update信息,而如果要刪除某條路由時,就會發(fā)送Withdraw信息。BGP路由的Flap的定義是:當(dāng)一條路由在被收回(Withdraw)后,又被廣播(Update)出來,視為一次Flap。由于任何一條路由的收回和更新都會導(dǎo)致一臺路由器整個路由表重新計算,因此當(dāng)Flap的情況比較多時,對路由器設(shè)備的負載將產(chǎn)生巨大的壓力。根據(jù)筆者在實際工作中的經(jīng)驗,一般情況下,一臺高端路由器在計算BGP路由的時候,CPU的負載基本上在80%~90%左右,有時甚至達到100%,占用了幾乎所有的CPU資源。雖然目前大部分的高端路由器都將路由計算的模塊與轉(zhuǎn)發(fā)模塊分布在不同的硬件上,來減少主CPU忙導(dǎo)致的路由器性能下降的問題,但是路由表的頻繁變化和更新,對整個設(shè)備的運行還是有一定的影響的,而且這樣的計算會隨著路由的收回或廣播,繼續(xù)向自治域內(nèi)部擴展,使內(nèi)部的路由器產(chǎn)生同樣的問題。

 ?。?)其他需要考慮的問題

  除了上面的兩個問題會導(dǎo)致對路由器資源過量消耗之外,還有其他的一些因素,如路由的數(shù)目、BGP路由表的大小和路由計算的方式等,同樣也會影響路由器的性能.另外,網(wǎng)絡(luò)越大,路由條目越多,配置和管理的工作也就越復(fù)雜,這就需要在網(wǎng)絡(luò)設(shè)計的時候盡量簡化配置,降低管理人員的工作強度,避免人為原因造成故障。

  如何解決制約BGP擴展性的問題

  針對以上問題,介紹一些相關(guān)的解決方法。

  (1)解決I-BGP會話數(shù)瓶頸的方法

  上面提到的I-BGP的會話數(shù)過多的問題,可以采取兩種辦法來解決:

  1)聯(lián)盟的方法(Confederations):聯(lián)盟的工作原理是:將原來一個自治域的網(wǎng)絡(luò)分成多個子自治域,通過Confederationsid將原AS號配置到每個路由器上。這樣有兩個好處: 一是可以保留原有的I-BGP屬性,包括Local Preference、MED和NEXT_HOP;二是能在Confederations的功能中自動實現(xiàn),無需管理員在網(wǎng)絡(luò)的出口處配置過濾內(nèi)部AS號信息的操作。

  2)路由反射器(Route-Reflector):采用路由反射器是目前應(yīng)用最廣泛的方法,較之前面聯(lián)盟的方法,具有更好的擴展性。路由反射器的工作原理是:將一個自治域內(nèi)的路由器分成幾個Cluster,每個Cluster由Reflector和Client組成。Reflector之間形成Full Mesh,運行常規(guī)的I-BGP;Client只與Reflector運行I-BGP,對于Client來說,Reflector只是普通的鄰居而已,Reflector則扮演了路由集散地的角色,將從其他Reflector學(xué)到的I-BGP路由轉(zhuǎn)發(fā)給Client,同時,將從Client學(xué)到的I-BGP路由轉(zhuǎn)發(fā)給Cluster內(nèi)的其他Clients和Cluster外的其他Reflector,再借由Reflectors廣播到其所在的Cluster。在實際的網(wǎng)絡(luò)中,為了提高冗余度,通常一個Client與多個Reflector建立鄰居關(guān)系,而且不局限于Client所在Cluster的Reflector。

  由此可見,Client上的I-BGP會話數(shù)一般為1~2個,與聯(lián)盟的方法相比,只要Reflector的性能足夠高,Cluster就可以做得很大,而Client的負載不會隨Cluster的變化有太大的變化。對于前一種方法,由于一個子自治域的所有路由器還是要做到Full Mesh,所以最低性能的路由器決定了一個子自治域的大小;而路由反射器法則通常是一個或多個最高性能的路由器決定Cluster的大小,因此,具有更好的網(wǎng)絡(luò)擴展性能。

  另外,一個Reflector也可以成為另外一個Reflector的Client,形成層級結(jié)構(gòu),這特別適用于按照分層結(jié)構(gòu)建設(shè)的網(wǎng)絡(luò),可以很容易地把平面的網(wǎng)絡(luò)管理演變?yōu)榉謱庸芾怼?nbsp; 

  當(dāng)然,在使用路由反射器的時候,也有一些需要注意的地方,比如:Reflector并不是純粹的轉(zhuǎn)發(fā)路由,所有收到的路由在Reflector上同樣要 經(jīng)過最優(yōu)計算,然后將優(yōu)選路由向外廣播,所以Reflector的選擇要依據(jù)網(wǎng)絡(luò)結(jié)構(gòu)而定,盡量使I-BGP鄰居關(guān)系與實際的電路連接關(guān)系相對應(yīng)。

 ?。?)控制路由振蕩

  目前,控制RouteFlap主要采取Damping的方法:一個BGP路由器對收到的E-BGP路由設(shè)定Penalty值,每一次路由Flap都會使該路由的Penalty值增大,而路由穩(wěn)定時,Penalty值會隨時間而減?。划?dāng)Penalty值超過預(yù)設(shè)的抑制限制時,該路由就不再被廣播,而當(dāng)Penalty減小至低于重用限制時,該路由才會被重新向外廣播。這種方法主要是針對E-BGP鄰居而言的。這樣,當(dāng)一個網(wǎng)絡(luò)內(nèi)部發(fā)生路由振蕩時,與之相連的其他網(wǎng)絡(luò)通過Damping可以有效地防御對各自網(wǎng)絡(luò)的影響。

  在網(wǎng)絡(luò)維護中,經(jīng)常會遇到這樣的情況:寧愿一條電路中斷一段時間,也不希望它在不停地震蕩。因為中斷一段時間后,只要電路恢復(fù),網(wǎng)絡(luò)流量也會隨之恢復(fù);與此相反,振蕩的電路恢復(fù)后,需要等待一段時間才能恢復(fù)正常的流量(其他網(wǎng)絡(luò)都在抑制振蕩的路由)。Damping則可以有效地保證因特網(wǎng)的穩(wěn)定,但同時也會導(dǎo)致一些故障的延時恢復(fù)。

  當(dāng)前的設(shè)備基本都支持Damping的功能,而且提供可以配置的參數(shù)來精細控制Damping。一般情況下,設(shè)備提供的缺省配置能夠滿足大多數(shù)網(wǎng)絡(luò)的需求,如果確有特殊需要,則一定要經(jīng)過仔細計算,否則,不是沒有效果,就是把別人的路由抑制后很長時間不能恢復(fù)。

 ?。?)Peer Group的應(yīng)用

  在實際的網(wǎng)絡(luò)中,有一種非常普遍的現(xiàn)象,即一個路由器會有多個屬于一類的BGP Peer。這里的“屬于一類”是指BGP的策略相同或類似,當(dāng)Peer 比較多時,BGP的配置會變得臃腫,同時,路由器的負載也會加重,因為一旦有路由的更新,路由器需要針對每個Peer做一次策略計算(雖然策略都相同)。 
另外,應(yīng)用Peer Group還有一個好處,就是降低了對路由器設(shè)備的資源消耗,因為路由器對同一Group更新路由時,由于使用相同策略,因此只進行一次路由計算,從而大大減少了占用CPU的時間。

    在實際的網(wǎng)絡(luò)維護中,即使當(dāng)同一類的Peer很少時,一般也建議采用Peer Group的方式,因為這樣具有很好的擴展性。Peer Group不但適用于I-BGP的Peer,也適用于E-BGP的Peer。

 ?。?)關(guān)于route refresh的措施

  骨干網(wǎng)絡(luò)維護中,經(jīng)常會遇到修改BGP策略的情況,如更新某個Peer的as-path限制列表,在配置修改后需要使其生效,以前的做法是中斷當(dāng)前的BGP會話,然后重新建立,命令如下: 
  clear ip bgp x.x.x.x   
  這么做主要是因為路由器在收到對方的BGP路由表后,先進行策略運算,然后將最優(yōu)路由存儲在本機的BGP路由表中,而不是把原始的路由統(tǒng)統(tǒng)保存。當(dāng)策略改變時,必須重新建立連接來獲得對方的全部路由,然后利用新策略再次計算。這種方式的弊端顯而易見,如網(wǎng)絡(luò)阻斷、大量消耗路由器的CPU資源等。

  解決這個問題目前通常采用兩種方法:一種方法是設(shè)法保存原始的BGP路由,這樣,重新計算時就不需要重傳了;另外一種方法是在啟用新策略的時候,在不中斷BGP會話的前提下,向?qū)Ψ秸埱笾匕l(fā)全部BGP路由表。

  第一種方法是利用軟件配置實現(xiàn)的,配置的命令如下:

  neighbor 1.1.1.1 soft-reconfiguration inbound

  在啟用新策略的時候輸入命令:clear ip bgp 1.1.1.1 soft [in|out]

  這樣,所有的原始BGP路由就會被存儲在另外一張路由表里面,在修改策略的時候,通過對這張路由表進行運算,就可以得到最優(yōu)的BGP路由表,這樣對路由產(chǎn)生的資源消耗較小;而且有這樣一張原始的路由表,可以在修改策略后、正式啟用之前使用命令來檢查策略修改后的效果。但這種方法需要額外的內(nèi)存資源來存儲路由表。

  第二種方法是由路由器設(shè)備的BGP 能(BGP Capabilities)決定的,也就是系統(tǒng)軟件本身內(nèi)置的功能模塊。在建立BGP會話的時候,這個參數(shù)通過BGP OPEN在兩個路由器間進行交換。一個設(shè)備是否支持BGP Refresh Capabilites, 可以用命令下列來檢查: show ip bgp n x.x.x.x

  如果參與BGP的兩個路由器都具備這個功 能,那么不需要任何配置,當(dāng)執(zhí)行clear ip bgp n x.x.x.x in 時,本端BGP進程不會中斷BGP會話,而是向?qū)Χ苏埱笾匕l(fā)全部的BGP路由表。相對于第一種方法,這種方法的好處是可以節(jié)省內(nèi)存資源,缺點是網(wǎng)絡(luò)管理員無法了解對方發(fā)過來的原始路由,而且重發(fā)了全部路由表,效率上也沒有第一種方法高。目前骨干網(wǎng)內(nèi)的設(shè)備基本上都支持這個功能。

  總結(jié) 

  以上對BGP擴展性相關(guān)的幾個問題和相關(guān)的措施進行了論述,在實際的應(yīng)用中還需要根據(jù)具體情況來部署。但是總的思路和原則都是一樣的,即一方面要降低設(shè)備的資源消耗,另外一方面要簡化維護管理,從硬件、軟件兩方面來提高網(wǎng)絡(luò)的擴展性.