產生背景
網路路由技術通常都把連通性作為核心目標,即根據實際情況(如拓撲結構改變、網路發生故障等)維持網路的通暢,並未充分考慮網路性能最佳化等問題。其結果是,資源分配問題不被重視,網路實現效率不盡人意。
以頻寬預留為例,網路要選擇一條定量頻寬的路徑,相關的鏈路信息必不可少,但現有的路由協定卻無法做到這一點,如採用最短路徑算法會增加丟包率和惡化資源利用率,還常常導致網路上的流量分布不平衡,使得網路上有些地方產生擁塞 現象,而另一些地方的資源卻處於閒置狀態.
魚型問題
魚型問題
路由決策一般基於簡單度量(如跳數或時延) 原則,採用最短路徑算法,這種簡化做法使路由技術獲得了很好的伸縮性,但在資源分配和最佳化等方面卻沒有提供足夠的支持。這可以通過著名的“魚型問題”來說明。
圖1所示的網路拓撲形狀如一條魚,節點G代表魚頭,A和B代表魚尾,數據流從A和B流向G。
從魚尾到魚頭有C→D→F和C→E→F兩條路徑。如果C→D→F比C→E→F短,則路由協定將選擇C→D→F作為最短路由,A和B的業務流都將沿著C→D→F走,結果造成C→D→F負載沉重而C→E→F卻被閒置的情形。
從這個例子我們可以發現,路由協定實際上很“傻”。
這個問題源於IP路由協定的兩個基本特點:
第一,基於目的地選路。目的地址相同的數據包在被轉發時,選擇的下一跳也相同。所以,在路由表中,到達某目的地的路徑只有一條(除非有多條成本相同的路徑存在)。這樣,網路中可用的其他鏈路就無法被利用起來,流量分布很難預測,實現均衡更不可能。
第二,局部最佳化。每個節點都獨自選擇路徑,相互之間缺乏協調合作,故整個網路的路徑選擇無法得到最佳化。如在圖1中,很多節點都獨立地選擇C→D→F,結果導致最短路徑成了最擁擠的路徑。在這種情況下,較長的路徑反而可能是更好的選擇。為了最佳化網路總體資源利用率,路由決策應該從全局觀點出發,把整個網路視為一個對象考慮。
在極端的情況下,最短路徑算法還可能導致路由振盪。假如某節點在某時刻根據路由協定選擇C→D→F作為從C到F的最短路徑,當所有業務流都經過時,該路徑就變得異常擁塞,而另一條C→E→F則很空閒。下一次路由更新時,假如路由協定把C→E→F選為最短路徑,則此改變就會將原來C→D→F的流量轉移到C→E→F上。結果呢,情況倒置,C→E→F擁塞,而C→D→F卻變得空閒。每次路由更新都會引起路徑選擇的翻轉,從理論上講,該過程會持續到無窮大。
MPLS
MPLS
要克服魚型問題,讓路由技術變“聰明”,就必須改變網路選路基於目的地的特點,並提供網路內部流量管理機制,即路由技術必須能夠精確地控制業務流所遍歷的路徑,這需要路由技術提供額外的能力以及更好的管理工具。
過去,服務提供商一般採用IP over ATM技術解決此問題。ATM虛電路可以映射到物理拓撲結構中,所以,ATM骨幹網的業務流能夠得到有效管理。近幾年來,MPLS異軍突起,逐漸成了IP網路流量工程的主要機制,IETF正在對MPLS標記分配協定和IP路由協定擴展進行相應的標準化工作。
MPLS採用覆蓋模型解決流量工程。服務提供商使用MPLS建立由所有網路邊緣節點組成的邏輯連線的虛擬網路,這些邏輯連線是通過頻寬預留獲得的MPLS顯式路由,然後在物理網路上建立顯式路由路徑,從而均衡網路中所有幹線的業務流,最終實現流量工程的目的。
這種覆蓋的方法非常適用於BGP路由協定。在典型的骨幹網中,邊緣節點一般都是BGP路由器,它們連線不同的路由域。為了與其他域交換路由信息,BGP路由器相互之間需建立對等關係,這些邏輯對等連線可以被映射到MPLS標籤交換路徑(LSP)上,這些LSP通過覆蓋方法在所有的邊緣路由器之間建立。因此,我們可以用MPLS LSP替代BGP路由器之間的路由。MPLS LSP是基於流量工程建立的,而不是純粹基於IGP路由度量,故它能有效地提高網路資源的利用率。
在圖2所示的骨幹網路中,節點A、B、C、D、E是同外部域連線的邊緣路由器,實線表示物理鏈路,虛線表示邏輯連線,覆蓋方法可以根據邏輯連線建立虛擬網路。當MPLS LSP控制這些物理拓撲中的具體路由時,網路就可以建立起相應的邏輯連線。
現在,我們通過節點A和C之間的MPLS LSP來看看覆蓋方法的好處。A和C之間有四條路徑:A→G→H→C、A→F→H→C、A→G→F→H→C、A→F→G→H→C。假設A→G→H→C是從A到C的最短路徑,則最短路徑算法會選擇A→G→H→C,但覆蓋方法比最短路徑算法要靈活得多,它可以使用四條路徑中的任意一條,並根據兩個節點之間的流量做出選擇。如果節點A和B之間的業務流繁忙,則網路通過A→F→H→C建立A到C的LSP,這樣,鏈路A→G上的頻寬就全部留給了A和B之間的業務流。
覆蓋方法簡單、易實現,但其缺點是伸縮性不好。為了建立N個邊緣節點之間的所有邏輯連線,每個節點都需要建立到其他(N-1)個節點的LSP。所以,最後總共有N×(N-1)個LSP。在多個邊緣節點的大型骨幹網中,效率會明顯降低。
流量工程系統
流量工程系統
最佳化網路性能的過程被稱為流量工程(Traffic Engineering),它使用先進的路由選擇算法規定骨幹網內部的業務流幹線和規劃業務流,將業務流映射到物理拓撲網路中,從而充分提高網路的整體效率。流量工程可以平衡網路中不同鏈路、路由器和交換機之間的業務負載,有效地利用網路所提供的頻寬資源。
一、流量工程係數組成
流量工程系統如圖3所示,包括六個主要部分:拓撲與狀態發現、路由計算、流量需求估計、圖形用戶界面(GUI)、網路接口和數據知識庫。
數據知識庫存儲所有共享數據對象的永久信息,如網路拓撲、鏈路狀態、流量需求、路由、策略等,系統中其他模組可以通過資料庫存儲、訪問和交換信息。
流量工程系統需要確切地知道用戶的流量需求,在VPN服務中,流量需求可以在服務提供商和客戶之間的SLA(服務級別協定)中說明。在另一些情況下,需求估計基於流量測試。
流量工程系統根據流量需求建立最佳路由之後,通過Web接口或SNMP配置網路單元完成這些需求。
二、網路拓撲和鏈路狀態發現
流量工程系統必須時刻關注網路拓撲和鏈路狀態的變化: 在配置網路時可以獲得一些靜態信息,使用網路管理系統(如SNMP陷阱和輪詢系統)可以收集動態信息,如剩餘頻寬、鏈路利用率等。
擴展路由協定(如OSPF)可以周期性地廣播鏈路狀態信息。OSPF套用範圍很廣,並且已經為分配鏈路狀態信息和構造拓撲資料庫提供了必要的機制,所以,OSPF也被擴展到流量工程中用於拓撲和狀態發現。
OSPF方法要求所有節點盡力同鄰居建立並維持對等關係,一個節點的鄰居(即對等體)是跟它直接交換控制信息的節點,每個節點都記錄著本地鏈路狀態以及此狀態與其他節點或網路管理站之間的通信信息,流量工程系統可以根據OSPF鏈路狀態信息建立拓撲資料庫。
三、路由計算
路由計算引擎是流量工程系統的“大腦”。
從流量工程角度出發,路由選擇必須超越簡單的最短路徑方法,即需要根據流量需求、拓撲結構和鏈路狀態信息計算出最佳路由,解決資源最佳化、恢復以及搶占優先等問題。我們稱之為約束路由(Constraint-based Routing)。
約束路由有兩種實現方式:線上和離線。
離線方式根據當前信息對所有路由進行周期性計算,在維護期間完成路由更新。在離線方式中,所有路由在改變之後都要進行重新最佳化,所以,網路路由結果更佳。但是,對網路連線進行頻繁、大規模的重新路由會導致數據流激增,從運營角度來看並不理想。此外,由於路由計算是周期性進行的,所以當網路增加新的流量需求時,容易產生額外時延。
線上方式的路由計算以增量方式進行,即收到一條新請求後,路由計算模組只為新需求計算最佳路由,當前需求下的路由並不會被調整。線上方式的資源利用率沒有離線方式高,但現有業務流的重新路由率卻被降到最低。
線上和離線方式可以結合使用。例如,在網路繁忙時,新的路由需求可以採用增量方式建立,當網路不太繁忙時,再用離線方式對所有需求做全面的重新最佳化。
約束路由技術有兩個基本要素:路由最佳化和路由設定。路由最佳化在給定一組約束條件的情況下,根據流量需求選擇路由;確定路由之後,再在整個網路實現路由設定,以便於業務流沿著這些路由傳輸。
約束路由解決方案很多,有一些基於高等數學的方法,可對網路資源的總體效率進行最佳化,還有一些是在IP路由框架中使用啟發式的方法。
目前,網路變得越來越複雜,資源需求也在迅速增長,以流量工程為基礎的智慧型化路由技術將在管理網路資源、最佳化性能、提高總體效率、降低擁塞方面發揮越來越重要的作用。
但是,流量工程並不能包治百病,一個特定的網路選擇合適的流量工程技術時要考慮很多因素,如網路配置、業務流特徵以及需求分布等。