隨著客戶網絡規模和覆蓋范圍的不斷增長,使用BGP路由協議不再是運營商網絡的特權,越來越多的企業網絡也開始部署BGP。BGP能夠支持更大規模的網絡,支持豐富多變的選路策略,海量的路由表容量,但隨之而來的便是BGP性能瓶頸的問題:
1、 BGP位于應用層,比底層協議占用更多的系統資源,因此需要盡可能保證路由的穩定性、路由數量的控制,以及更強的路由硬件設備;
2、 BGP路由屬性復雜,每條路由比IGP協議消耗更多的字節,因此需要提高報文的傳輸效率,防止網絡中的報文分片;
3、 BGP路由源自不同的IGP,甚至不同的自治系統,路由數量繁多和來源復雜,任意一條路由的震蕩,都可能影響到全網設備的穩定性和路由收斂速度,因此需要限制路由震蕩的范圍,杜絕牽一發而動全身的現象;
4、 BGP自身路由收斂速度較慢,缺省BGP的HOLD TIME為180s,為了加快BGP的收斂速度,需要底層提供快速檢測機制。
針對BGP組網面臨的諸多性能相關問題,以下從報文傳輸、路由更新、快速檢測三個方面入手,介紹BGP網絡性能的優化思路,具體優化措施如下。
1 BGP鄰居PMTU檢測
BGP協議是運行在TCP之上的,所以TCP的參數設置會影響BGP的性能。在路由數目比較少的情況下TCP的參數調整可能對BGP性能影響不大,但是當路由數目比較龐大的時候調整TCP參數可以起到明顯優化性能的作用。下面分析具體的優化方法。
首先了解一下BGP協議報文發送的方法,如圖1所示。
圖 1 BGP與TCP數據傳輸格式
BGP首先需要把自己需要發送的數據告訴TCP,然后TCP根據數據的長度進行分段,分段大小由TCP協商的MSS值的大小決定,每個TCP分段對應著一個發出去的IP包。所以MSS參數的設置對于BGP數據傳輸的性能起著關鍵作用,如果設置過大可能會造成中間某臺設備的IP層分片,BGP協議報文的傳輸其實是一個端到端的傳輸過程,如果數據被分片了那么必然還需要重新組合恢復回來,這樣會給接收者的CPU帶來一定的負擔,組包的過程降低了處理效率;如果 MSS值設置過小,那么又會使網絡的有效利用率很低,發送端和接收端對能夠一次處理的報文進行多次處理,降低了效率。
通過BGP鄰居PMTU檢測功能可以解決前面提到的問題,在建立BGP鄰居之前,路由器會自動發送一個PMTU報文來檢測路徑上的最大MTU, TCP協議可以根據最大MTU值來設定MSS的大小,達到最優網絡傳輸性能。
2 BGP路由更新定時器
在BGP的RFC4271上定義了BGP的路由更新的定時器,該定時器只能對同一地址族的相同前綴的路由起作用,其主要作用是防止網絡中的某條路由震蕩過于頻繁,同時也是對路由設備CPU的一種保護。
圖 2 路由更新定時器說明
如圖2所示,紅色與藍色的箭頭代表相同前綴的路由,但是從不同鄰居學習而來,而且藍色的路由優于紅色的。假設RA上配置的更新定時器時間為30秒。那么RB路由收斂過程如下:
Ø RA接收到紅色路由后立刻發送給RB,同時RA上啟動更新定時器(30秒);
Ø 10秒以后RA接收到更優的藍色路由,由于定時器沒有超時暫時不發送給RB,但是更新本地路由表,在第10秒RA完成路由收斂;
Ø 第30秒RA上更新定時器超時,所以發送藍色路由給RB并且更新掉紅色路由,RB在第30秒完成收斂。
從上面的分析可以看出,RB的收斂時間比RA慢20秒左右,由于BGP是距離矢量路由協議這種延遲可能對整個網絡的BGP路由器都會有一定影響,所以需要在網絡穩定性和路由收斂速度之間進行抉擇,在設備性能允許、路由總體比較穩定的前提下,可以適當降低路由更新定時器的值,最小值為5s。
BGP還有一種路由衰減機制Dampening,用以懲罰頻繁震蕩的路由,如果某條BGP路由震蕩頻率超過設定閾值,該路由將被抑制,直至路由達到穩態位置,因此對于大型網絡來說,可以綜合使用路由更新定時器和路由衰減兩種方式,以達到路由收斂速度和路由穩定性的最佳結合。
3 與BFD協議聯動
前面介紹的功能和設置只能使路由的收斂時間達到秒級水平,對于一個運營商(SP)的網絡來說,往往需要更快地感知路由的變化或者BGP鄰居的狀態變化。但是IBGP鄰居狀態的感知往往由于鄰居非直連的原因,需要依靠IGP的收斂或者BGP自身的KEEPALIVE報文來感知鄰居的狀態,這樣最長可能需要 180秒時間,對于運營商來說是無法容忍的。
BFD(Bidirectional Forwarding Detection,雙向轉發檢測)是一種高速的獨立“Hello”協議,工作機制和路由協議的慢速“hello”相似。一對系統BFD能夠與相鄰系統建立對等關系,然后每個系統以協商的速率監測來自對端系統的BFD報文,監測速率能夠以毫秒級增量設定。當對等系統沒有接到預先設定數量的BFD數據包時,就認為BFD保護的軟件或硬件基礎設施發生故障,并通知上層路由協議,已達到路由快速切換收斂的目的。(注:BFD目前存在兩個版本:VER 0和VER 1,并且兩個版本不能互相兼容。)
借用此BFD的快速檢測特性,配置BGP與BFD聯動,一旦BGP鄰居建立后,BFD自動和BGP鄰居關系進行關聯,并周期性發送探測報文,這個周期時間一般為幾十毫秒,當超過5倍的時間沒有收到探測報文,BFD會通知BGP斷開鄰居關系,這樣就可以迅速的完成路由收斂。
4 結束語
BGP是一種非常強大的路由協議,肩負著大型企業網絡,乃至整個互聯網的路由交換重任,因此BGP協議的處理效率和收斂速度至關重要,關乎核心網絡的穩定和性能。本文提及的BGP幾種優化手段,從不同層面提升了BGP網絡的性能和穩定性,包括網絡傳輸效率、路由穩定性、路由快速收斂等,三者缺一不可,當然還可以結合路由聚合、路由策略、網絡結構等,全方位優化BGP網絡,止于至善。事實上,優化方法遠不止這幾種,隨著網絡技術的不斷發展,將來必然會涌現出更多的BGP相關的優化措施。