馮小歐(鄭州旅游職業學院 信息中心,河南 鄭州 450001)
BGP流量負載分擔規劃
馮小歐(鄭州旅游職業學院 信息中心,河南 鄭州 450001)
如何優化地利用網絡帶寬資源,是流量負載分擔的關注重點。BGP(Border%Gateway%Protocol,邊界網關協議)選擇單條最優路徑的這一特征往往會出現流量負載不均衡的流量模型,BGP流量負載均衡可從兩個角度出發解決這個問題:通過BGP強大的策略控制流量的負載均衡,通過多路徑選路實現負載分擔。本文主要從這兩個角度來展開分析BGP在流量負載分擔方面的技術應用。
BGP;負載均衡;多跳;多路徑
在實際網絡中進行負載均衡需要綜合考慮鏈路和設備節點的負載情況,在滿足業務的實際需求前提下,可以通過BGP的策略工具對流量進行均衡的規劃和調整。對于一個AS來說,流量的方向分為入境和出境兩個方向,這種區分對應到實際的網絡有不同的規劃,所以我們在此通過不同的場景進行介紹。

圖1 多宿主到不同的上游的負載均衡
我們先分析一下圖1的場景,AS100希望流量能夠在AS200和AS300間進行負載均衡,也就是說根據業務分別映射到Link1和Link2上。
在規劃中我們有如下思路:
AS100可以在RA和RB上通過策略只向各自的對等體通告部分路由前綴,這樣可以達到不同的業務對應不同的AS承載。如172.168.1.0/25通過RA通告給RC,172.168.1.128/25通過RB通告給RD。這種規劃能夠滿足流量分擔的效果,但是一旦出現鏈路或節點的失效,就會導致部分流量無法切換,業務中斷。
通過步驟1我們可以看到簡單地通過路由過濾無法很好地實現需求。我們可以通過對不同的前綴進行策略區分。接著步驟1的思路,AS100希望172.168.1.0/25優先通過AS200進入,希望172.168.128.0/128通告的AS-PATH加一個ASNumber,如:1000%100。RB上通過策略將172.168.1.0/25通告給RD的AS-PATH加一個AS-Number,如:2000%100。
RE上關于172.168.1.0/25的前綴從RC通告過來的ASPATH是:200%100,通過RD通告過來的AS-PATH是:300%2000%100,因此優選走AS200。關于172.168.128.0/25同理會優選AS300。該規劃可以在滿足需求的同時解決路由備份的問題。但是我們考慮下面一個場景,當RC合RD建立BGP連接,RD上關于172.168.1.0/25的前綴從RC通告過來的AS-PATH是100%200,從RB上通告過來的AS-PATH是2000100,也就是說RD上關于172.168.1.0/25無法很好地進行路由選路控制。
團體屬性是進行本地路由控制的重要屬性,但是團體屬性需要BGP對等雙方有屬性處理的共識。在步驟2的基礎上,RB在通告172.168.1.0/25時,可以將團體屬性值修改為100:120,在RD上將團體屬性的前綴預定義Local-preference為120,這樣對于RD來說,在收到RC和RB的前綴AS-PATH相同長度的情況下,RB通告的前綴Local-preference高,優選RB。
分析完圖1所示的場景,我們可以繼續看看多宿主相同上游的場景,如圖2:

圖2 多宿主相同AS的負載均衡
對于相同的上游AS,我們更多地需要考慮上游AS內部的選路,對于跨過上游AS的遠端AS的選路我們很難控制,因此本文討論的重點就在本地和上游AS的選路策略部署。先分析需求,本地AS希望172.168.1.0/25通過RB進入,172.168.128.0/ 25通過RC進入。存在下述三種方式:
借鑒上文中多宿主不同AS的做法,將172.168.128.0/25通告給RB時,將AS-PATH設置為1000%100,將172.168.1.0/25通告給RC時,將AS-PATH設置為2000%100。由于RB和RC之間是IBGP鄰居,因此對于RB來說,172.168.1.0/25從RA學習到的AS-PATH是100,從RC上學習到的AS-PATH是2000%100,優選RA的路由。對于172.168.128.0/24來說,從RA學習的路由ASPATH為1000%100,從RC學習的路由AS-PATH為100,優選RC。這滿足了需求。
同樣,在AS間協商進行策略部署的前提下,可以在RA上對不同的業務前綴進行屬性賦值的區分,在RB/RC對不同的屬性設置不同的本地優先級進行業務的分擔均衡。
還是針對圖2,對于AS200進行入方向的流量負載分擔部署,最直接的方法就是通過修改MED值的方法,使得RA通過MED值直接進行路由的優選。
我們還是先分析圖1的場景,AS100希望出方向的業務流量能夠在RA和RB間進行合理的負載均衡:可以通過在RA和RB上進行入境路由前綴過濾,通過前綴在不同的出口路由器的通告分擔來實現業務流量出方向的負載均衡。
入境的過濾適用于對端AS的業務負載分擔,但是對于遠端Internet的業務,無法通過入境路由前綴過濾的方法實現,否則會出現單點故障導致業務中斷的情況。對于Internet業務就需要進行入境路由前綴策略控制,例如通過添加AS-PATH或者對特定前綴設置不同的本地優先級等。
對于單點故障導致業務中斷的考慮還可以通過出口路由器發布缺省路由的方式作為路徑的備份,一旦出現某個出口路由器故障,路徑可以通過缺省路由切換至其他出口路由器,起到備份的效果。
同樣可以和上游AS協商,通過通告來的前綴攜帶不同的團體屬性進行相應的策略控制。
對于圖2的場景,單出口路由器上進行負載分擔可以借助路由策略的方法更為靈活:針對不同對等體進行入境路由前綴過濾,使業務自然分擔到不同的出口鏈路上。同時配置缺省路由指向對等體,防止單點故障業務中斷。
通過針對特定前綴設置多種屬性,如Local-preference、Origin、MED等,在本地進行路由優選。
AS內部的負載均衡相對容易部署,通過策略對業務進行區分,對不同的業務使用不同的BGP屬性進行控制。如圖3,RB和RC同時向RA通告172.168.1.0/25和172.168.128.0/ 25,RA希望172.168.1.0/25業務從RB走,172.168.128.0/128從RC走。
滿足這種需求,可以直接在RA上對業務進行區分,對RB通告的172.168.1.0/25的Local%preference設置為120,本地優選結果能夠滿足需求。

圖3 AS內部負載均衡
上文介紹的是多宿主情況下的負載均衡規劃思路,本章節需要關注的是通過等價路由在路由器之間進行負載分擔的部署方式。
圖4的場景是兩臺路由器之間通過環回建立在EBGP鄰接,我們知道對于EBGP鄰接超過1跳建立鄰接需要通過命令peer%x.x.x.x%ebgp-max-hop

圖4 多鏈路多跳EBGP對等體負載負擔
圖5的場景和圖4類似,區別在于兩個出口路由器通過鏈路接口地址建立了多個EBGP會話,每一個會話對應于特定的鏈路。

圖5 多鏈路多EBGP對等體負載分擔
RA和RB通過兩條鏈路的物理接口地址建立兩個單挑EBGP鄰接關系,以RA舉例,從兩個EBGP會話均收到關于172.168.1.0/24的路由信息,在其他屬性都相同的前提下,兩個EBGP對等體通告的路由形成等價。
比較上述兩種負載分擔方式,第一種方式,建立了一個EBGP會話,會話直接綁定在兩個出口路由器的環回地址,通過直連路由迭代下一跳的方式在鏈路間實現負載分擔。這種方式EBGP會話屬于多跳會話,需要兩個AS間進行環回地址的路由部署,適用性有一定的限制。第二種方式,需要建立多個會話,對資源有一定的消耗,同時對于EBGP等價路由的配置,是針對本設備所以BGP對等體適用,無法區分對等體,因此,缺少一定的靈活性。
AS內部的負載分擔規劃同樣可以采用下一跳迭代的方式在同一個IBGP會話間進行多鏈路的負載分擔。對于多IBGP對等體通告的路由在迭代屬性相同的前提下能夠形成負載分擔。對于圖6中的場景,RB和RC向RA通告172.168.1.0/ 24的路由前綴,在ORIGIN,LOCAL-PREFERENCE以及ASPATH路徑屬性均相同的前提下能夠形成負載分擔。

圖6 AS內部負載分擔
多鏈路的負載分擔還是可以通過下一跳迭代到等價IGP路由或者默認路由來實現,例如圖7所示場景:

圖7 IGP路由的下一跳迭代
RD和RA建立IBGP鄰接關系,RD向RA通告路由172.168.1.0/24,RA上關于172.168.1.0/24的路由下一跳是RD的環回口地址,在RA上針對RD環回口地址有兩條等價的IGP路由:RA-RB-RD和RA-RC-RD,通過下一跳迭代,在RA上針對172.168.1.0/24的BGP路由也形成等價。
ORIGIN,LOCAL-PREFERENCE,MED以及AS-PATH路徑屬性均相同是形成負載分擔的前提,在此前提下還要遵循一定的原則進行負載分擔規劃。以圖8舉例。
RB/RC均與RA通過廣播網絡建立單挑EBGP對等體,RA向RB/RC通告路由前綴172.168.1.0/24,RB和RC同時向RD通告,RE上收到RB和RC的路由不會形成負載分擔,為什么?
缺省情況下,邊界路由器向IBGP對等體通告EBGP路由時,不會修改下一跳,因此RB和RC向RE通告的路由下一跳均為RA的接口地址,在RE上由于下一跳相同,因此不會形成負載分擔。
可解決的辦法是:
在RB和RC上針對IBGP對等體通過配置修改為:peer%x.x. x.x%next-hop-local,將下一跳修改為本地地址,這樣RE上收到的路由下一跳不同,可以形成負載分擔。
同樣利用圖8舉例,RD是RR,RB和RE是其RR%Client,同時RB和RE間建立IBGP鄰接關系,RB通告路由172.168.1.0/24,RD反射至RE.RR在反射路由時缺省不會修改下一跳,因此在RE上關于172.168.1.0/24的路由下一跳均為RB的環回地址,可以利用前文的路由迭代,將RE-RB和RE-RD-RB的IGP路由Metric設置相同,此時能否形成負載分擔?此時無法形成負載分擔。在圖8中,可以將RC/RD均配置為RR,RB/RE為RR%Client,RC和RD反射RB的路由172.168.1.0/24至RE,這樣RE可以在兩個反射路由間形成負載分擔。

圖8 負載分擔規劃原則
負載均衡和負載分擔均是BGP通過策略控制達到流量在網絡中不同節點、不同鏈路間的平衡,起到合理利用網絡資源的效果。本文介紹的是對具體網絡負載均衡或分擔的需求進行規劃的思路,實際中滿足需求的手段多種多樣,需要根據實際情況作相應的規劃調整,因此在實際的網絡規劃時不要拘泥于本文提及的方法,更多的是思路上的借鑒。同時,負載均衡和分擔往往需要經過多次嘗試才能盡可能接近均衡的,過于精確的均衡往往會帶來策略上的復雜度,同時在考慮均衡的同時還要兼顧路徑的備份。
[1]黃博.BGP設計與實現[J].北京:人民郵電出版社,2008.
[2]陶駿.基于BGP協議的網絡故障分析[J].計算機系統應用,2008,(07).
[3]周耀勝.網絡流量分析技術的應用及方案比較[J].現代電信科技,2009,(07).
[4]鄧煒,趙武,范春湘.利用BGP虛擬下一跳技術實現IP骨干網流量負載均衡[J].電信工程技術與標準化,2009,(08).
TP317
A
1671-2862(2011)01-0110-03
2011-01-06
馮小歐,女,鄭州旅游職業學校教師。