RSVP-TE技術
為了解決LDP不支持流量工程的問題,MPLS中引入了RSVP-TE控制面。
傳統路由是依據目的IP進行查找轉發,且只關心下一跳怎么走,而並不關心流量的完整路徑。而RSVP-TE引入了源路由的概念:當流量進入RSVP網絡后,在源節點就會計算出完整的每一跳路徑(顯式路徑)。
如同導航軟件在計算行駛路線前需要收集道路信息並知曉當前路況,計算源路由的先決條件則是需要收集全網拓撲信息及鏈路狀態信息。RSVP-TE通過擴展IGP協議收集了這些信息(IS-IS擴展了TLV字段,OSPF則是用特定的LSA)。
知曉路況信息是第一步,具體選擇走哪條線路,還要取決於選路算法。一如導航軟件根據我們的要求(時間優先,距離優先,不走高速等)選擇最優路線,RSVP-TE流量調度也可以依據業務的要求:如延時低於50ms、帶寬大於10G等規划出最優的轉發路徑。
1.RSVP-TE優勢
相比於傳統的路由協議基於目的IP的簡單轉發,RSVP-TE最大的優勢在於收集了整網拓撲和鏈路狀態信息,因此可以根據業務的需要靈活地選擇流量的轉發路徑(為流量指定一條顯式路徑)。
2.RSVP-TE劣勢
RSVP-TE聽上去是一個完美的流量調度解決方案,應該大受歡迎。然而現實很骨感:部署RSVP-TE的案例並不多,並且在為數不多的RSVP-TE案例中,大部分也只用到了RSVP-TE的快速重路由功能,而非流量調度功能。究其原因,無外乎以下三點:
• 過於復雜:RSVP信令非常復雜,每個節點都需要維護一個龐大的鏈路信息數據庫;
• 擴展性受限:為了准確預留帶寬,RSVP-TE要求所有IP流量都需要通過隧道轉發,節點之間建立Full-mesh隧道導致擴展性差,大規模部署幾無可能;
• 不支持ECMP(Equal-Cost Multipath Routing,等價多路徑):現代IP網絡中,ECMP是一個最基礎的需求。而從源路由的機制我們可以看到,RSVP-TE只會選擇一條最優路徑進行轉發。如果想要實現流量分擔,還需要在相同的源和目的之間預先建立多條隧道。
SRTE(segment routing traffic-eng)在運營商和超大型網絡中應用越來越熱門,大家都說對比RSVP-TE,SRTE有很多優勢。
先說RSVP-TE,RSVP-TE在進行路徑計算和路徑選擇的時候,可以使用explicit-path(顯示路徑)或dynamic(動態計算),其中dynamic使用的是CSPF算法(基於約束的SPF算法),現在在SRTE的膠片中稱為Circuit optimization (電路優化)的算法,如下圖:
l 這個說法學過RSVP-TE的同學很容易理解,這個主要是RSVP這個協議的特性,在路徑建立的時候,需要逐跳發送RSVP的PATH/RESV消息,所以稱其為circuit-based的算法,這個實際上跟Frame-relay(幀中繼)和ATM(異步傳輸模式)的PVC(永久虛電路)很像,PVC需要手工逐跳建立。
l 這種算法基於約束條件(帶寬、親和屬性和TE-cost值等),這個在SRTE中稱為優化(optimization),實際上就是因為這些約束條件,不選擇IGP計算出來的路徑。
l 計算出來的結果是non-ECMP的path,這個指的是單條RSVP-TE的tunnel同一時間,只能使用一條路徑,所以RSVP-TE的算法本身不支持ECMP(等價多路徑),如果要讓RSVP-TE支持ECMP功能,需要從頭端建立到達尾端的多條隧道。
l 另外說計算出來的路徑SID-List很大(在RSVP-TE里面,計算出來的路徑稱為ERO(顯示路由)),這個主要原因是RSVP這個協議是逐跳的
好,我們下面來看看SRTE的算法,SRTE在選擇路徑的時候,也是可以使用explicit-path和dynamic計算(當然還有集中式計算PCE等),它用的算法稱為SR optimization(中文經常聽到稱為SR原生的優化算法),如下圖:
l 它的特點是No more circuit!意思是不需要像RSVP-TE一樣逐跳建立隧道,他的路徑是在頭端發送數據包的時候,壓入SID-LIST的標簽(數據平面攜帶路徑),所以不需要像RSVP-TE那樣需要周期性的維護狀態(因為RSVP是soft-state的協議)。但是SRTE壓標簽的時候,可能會壓太多層標簽,所以可能需要進行分段。
l 算法本身支持ECMP,看上圖上,可以看到SRTE在計算的時候,從節點1去往節點3有3條等價路徑,那么在Candidate-Path(候選路徑)的計算中,這三條路都會被選擇(當然實際實驗時稍有偏差,但可以出結果)。這個跟RSVP-TE不一樣,RSVP-TE要做ECMP的時候,需要做多條隧道,更麻煩一些。
l 在生成路徑的時候,Small SID-List。從上圖中可以看到,最后在頭端生成的路徑是<7,3>,壓標簽的時候,只會壓入節點7和節點3的標簽,這樣做的好處是1.支持ECMP,2.壓標簽的時候標簽盡可能少,在轉發的時候能符合鏈路的MTU需求。
總的來說,RSVP-TE和SRTE算法的基本區別在這里,另外SRTE有更多的約束條件,Cost值的類型可以設置,功能要比RSVP-TE要多。
路徑計算組件
IS-IS和OSPF通過SPF計算出到達網絡各個節點的最短路徑。MPLS TE則是使用CSPF算法計算出到達某個節點的最優路徑。CSPF(Constrained Shortest Path First)是帶有約束條件的SPF算法,從SPF算法衍生來的。
LSP 建立
LSP 可以靜態和動態建立。動態建立 LSP 是使用標簽分發協議(比如 LDP)建立,靜態就是手工配置,所以靜態 LSP 不需要使用任何標簽分發協議,沒有必要交互任何控制信息,資源開銷小。由於靜態 LSP 是由手工配置的,無法隨着網絡拓撲變化而收斂,當網絡出現故障后還需要管理員干預,管理相對比較麻煩。也許你會心想,既然顯得毫無用處,我為什么還要寫這么多來描述靜態的方式。這是因為靜態 LSP 可以避免像 LDP 故障導致 MPLS 業務流量丟失的情況,靜態可以保障 MPLS 中關鍵應用的數據業務連續性。
公網隧道可以是LSP隧道、MPLS TE隧道和GRE隧道。當公網隧道為LSP隧道或MPLS TE隧道時,公網標簽為MPLS LSP標簽(MPLS TE隧道的CR-LSP也是采用LSP標簽);當公網隧道為GRE隧道時,公網標簽為GRE封裝。
MPLS TE的四個構件
1.報文轉發組件
MPLS TE報文轉發組件是基於標簽的,通過標簽沿着某條預先建立好的LSP進行報文轉發。由於LSP隧道的路徑可以指定,因而可以避免IGP的弊端。
2.信息發布組件
除了網絡的拓撲信息外,流量工程還需要知道網絡的負載信息。為此,引入信息發布組件,通過對現有的IGP進行擴展,比如在IS-IS協議中引入新的TLV,或者在OSPF中引入新的LSA,來發布鏈路狀態信息,包括最大鏈路帶寬、最大可預留帶寬、當前預留帶寬、鏈路顏色等。
通過IGP擴展,在每個路由器上,維護網絡的鏈路屬性和拓撲屬性,形成流量工程數據庫TED,利用TED,可以計算出滿足各種約束的路徑。
3.路徑選擇組件
MPLS TE技術通過顯式路由來指定數據轉發的路徑,即在每個入口路由器上指定LSP隧道經過的路徑,這種顯式路由可以是嚴格的,也可以是松散的。可以指定必須經過某個路由器,或者不經過某個路由器,可以逐跳指定,也可以指定部分跳。此外,還可以指定帶寬等約束條件。
路徑選擇組件通過CSPF算法,利用TED中的數據來計算滿足指定約束的路徑。CSPF算法是最短路徑優先算法的變種,它首先在當前拓撲結構中刪除不滿足條件的節點和鏈路,然后再通過SPF算法來計算。
4.信令組件
信令組件用來預留資源,建立LSP。LSP隧道的建立可以通過CR-LDP,或RSVP-TE協議完成。這兩種信令都可以支持LSP的建立、顯式路由、資源信息攜帶等功能。以RSVP-TE為例,為了能夠建立LSP隧道,對RSVP協議進行擴展,在RSVP PATH消息中引入LabelRequest對象,支持發起標簽請求;在RSVPRESV消息中引入Label對象支持標簽分配,這樣就可以建立LSP隧道了。為了支持顯式路由,在RSVP RESV消息中引入ExplicitRoute對象。