天天看點

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

本節書摘來自異步社群《mpls在cisco ios上的配置》一書中的第1章,第1.9節,作者 【美】lancy lobo, ccie #4690 , umesh lakshman,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

mpls在cisco ios上的配置

當裝置互聯鍊路的封裝協定是atm時,用來傳輸資料的結構稱為信元(cell)。是以,atm裝置之間使用的mpls機制應用在信元時,稱為信元模式mpls。如前所述,路由模式的atm pvc也可以運作幀模式mpls,本節不做讨論。

在信元模式mpls網絡中,核心網的lsr是atm交換機,都基于atm信元頭的資訊轉發資料,這樣的lsr稱為atm lsr。atm交換機隻執行資料層的轉發功能,是以将atm交換機作為atm lsr時,必須增加控制層元件—lsc(label switch controller,标簽交換控制器)。lsc執行mpls的控制層功能,例如标簽配置設定和分發。某些型号的atm lsr本身具備了mpls控制層元件,是以不需要額外增加lsc。

如果atm交換機與lsc共同組成atm lsr,那麼atm交換機隻執行控制層的轉發功能1。是以,信元模式mpls的标簽必須能夠寫入atm信元頭,準确地說,是vpi/vci字段。同時,atm信元頭與ip封包頭之間還需要插入mpls标簽。這種機制使得資料層裝置可以正确轉發mpls資料包。而控制層的資料包,例如路由協定和分發标簽的協定所産生的資料包,則是由atm lsr的控制層元件産生,并通過atm lsr之間的控制vc(control virtual circuit)實作互通。

信元模式mpls的标簽結構與幀模式mpls的标簽結構一緻,如圖1-6所示。為了保證atm lsr可以根據标簽值轉發信元,atm信元頭的vpi/vci需承載标簽值。如圖1-17所示,atm lsr在atm信元頭和ip封包頭之間插入mpls标簽。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

圖1-18所示的信元模式mpls網絡由入向atm e-lsr、核心atm lsr和出向atm e-lsr組成。atm lsr之間的互聯接口稱作lc-atm接口(label switching controlled-atm interface,标簽交換控制的atm接口)。lc-atm接口可以轉發承載着客戶流量的信元,也可以轉發控制層的流量。預設配置下,轉發控制層流量的控制vc是vpi/vci 0/32。整合型的atm lsr(本身具備的mpls的控制層和資料層元件)與atm e-lsr交換控制層資訊,同時執行資料層的信元轉發操作。如果atm交換機和lsc組成atm lsr,那麼lsc與atm e-lsr交換控制層資訊,生成ip轉發表、标簽表和标簽轉發表;atm交換機可以根據lsc的标簽轉發表資訊執行信元轉發操作。

如圖1-18所示,相鄰atm lsr需要在控制層建立鄰居關系,用來交換igp路由資訊和mpls标簽資訊。為了在atm交換機之間正确轉發ip路由資訊,所有atm e-lsr和atm lsr都建立了帶内(in-band)的控制vc專門用來轉發控制資訊。預設配置下,控制vc使用vpi/vci 0/32,并且使用aal5協定(rfc2684)封裝ip資料包。控制vc可以通過指令修改vpi/vci,但是,為了確定atm lsr可以正确交換控制層資訊,所有atm lsr都必須配置相同的vpi/vci作為控制vc。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

在信元模式mpls網絡中,标簽取代了vpi/vci成為信元轉發的依據。atm lsr在atm信元頭和ip封包頭之間插入标簽或标簽棧,此标簽或标簽棧的頂層标簽值需要複制到vpi/vci中。這種機制允許atm交換機可以正确轉發atm信元,同時,直連的atm lsr之間在控制vc上交換控制層資料包。

圖1-19是信元模式mpls網絡,a1和a2是atm lsr,r1和r2是atm e-lsr,網絡172.16.10.0/24是r1的直連網絡。

信元模式mpls的标簽配置設定和分發操作,與幀模式mpls很相似。下遊atm e-lsr r1為網絡172.16.10.0配置設定本地标簽,并向上遊分發。a1和a2也執行此過程。信元模式mpls和幀模式mpls的主要差別,是信元模式mpls不執行次末跳彈出和将标簽值複制在vpi/vci中。另外,在信元模式mpls中,所有标簽都在特定接口下有效;而幀模式mpls的标簽可以在lsr的全局範圍内有效,也可以在特定接口下有效。

在圖1-19中,假設所有atm lsr都使用vpi 1,r1、a1、a2和r2分别為網絡字首172.16.10.0/24配置設定了本地标簽l1、l2、l3和l4,那麼atm lsr的ip轉發表、标簽表和标簽轉發表的狀态如圖1-19所示。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

信元模式mpls的資料層轉發過程如下。

1.r2 接收去往172.16.10.0/24的ip資料包,壓出向标簽1/l3,轉發給下一跳a2。

2.a2 接收atm信元,查詢标簽轉發表,用出向标簽1/l2替代标簽1/l3,轉發給a1。

3.a1 接收atm信元,查詢标簽轉發表,用出向标簽1/l1替代标簽1/l2,轉發給r1。請讀者注意,a1是次末跳lsr,但是不執行次末跳彈出,這是信元模式mpls與幀模式mpls的重要差別。r1直接彈出标簽,将ip資料包轉發至目的網絡。

信元模式mpls的資料層轉發過程如圖1-20所示。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

在信元模式mpls中,atm信元頭沒有ttl,是以atm信元無法像幀模式mpls的ip資料包或mpls資料包那樣使用ttl來執行環路檢測。ldp的功能是标簽配置設定和分發,主要依靠3層路由協定實作防環功能。

在信元模式mpls中,ldp具有兩種環路檢測機制,如前所述,ldp發送tlv格式的消息,是以防環機制也是通過tlv實作的。例如,rfc 3035介紹了路徑矢量tlv,可以實作環路檢測功能。如圖1-21所示,ldp pdu由版本号、pdu長度、ldp辨別和ldp消息組成。其中,ldp消息可以包含多個tlv,每個tlv都包括u比特、f比特、類型、長度和值。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

u(unknown)比特置1時,lsr忽略u比特所在的tlv,并且繼續處理ldp消息中的其他tlv;如果置0,lsr忽略整個ldp消息,并向資料源發送錯誤通告消息。

f(forward)比特隻有在u比特置1時才有意義,當f比特也置1時,那麼lsp可以繼續轉發此ldp消息。

“類型”辨別了“值”的含義。在信元模式mpls中,ldp tlv隻有兩種類型,分别跳數(hop-count)和路徑矢量(path vector),都用于環路檢測。

長度辨別了值的長度,機關是位元組。

值是字元串,長度是位元組的整數倍。

在信元模式mpls的環路檢測機制中,第一種tlv是跳數tlv,與标簽一起被ldp分發到ldp對端lsr。跳數tlv的格式和分發過程如圖1-22所示。

圖1-22描述了跳數tlv的格式和操作過程。跳數tlv是可選的,在建立ldp會話的過程中,lsr可以協商是否需要使用跳數tlv。lsr可以通過跳數tlv計算出其到達目的網絡所經過的跳數。在圖1-22中,r1向a1分發本地标簽1/l1與172.16.10.0/24的映射,同時攜帶了跳數tlv=1;a1接收ldp消息以後,向a2分發本地标簽1/l2與172.16.10.0/24的映射,同時攜帶了跳數tlv=2;a2接收ldp消息以後,向r2分發本地标簽1/l3與172.16.10.0/24的映射,同時攜帶了跳數tlv=3。是以,r2得知去往172.16.10.0/24需要經過3跳。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

在信元模式mpls網絡中,ldp執行環路檢測所使用的第2種tlv是路徑矢量tlv。對于熟悉bgp的讀者來說,路徑矢量tlv與bgp的as path屬性有相似之處。在bgp中,as path屬性包括了bgp路由所經過的所有as号,是以可以實作bgp路由的環路檢測。路徑矢量tlv中包括了ldp請求消息或ldp更新消息所經過的逐跳lsr的ldp router-id。如果lsr接收到ldp請求消息或ldp更新消息,發現路徑矢量tlv中已經包括了自己的ldp router-id,那麼此lsr通過丢棄請求或更新消息的方式避免環路。路徑矢量tlv的格式和操作過程如圖1-23所示。

在圖1-23中,r1、a1、a2、r2和a3的ldp router-id分别是1、2、3、4和5。r1将其ldp router-id 1放入路徑矢量tlv,随同标簽1/l1通過ldp分發給上遊的atm lsr a1。a1将其ldp router-id 2字尾到路徑矢量tlv中,随同标簽1/l2通過ldp分發給上遊的atm lsr a2(為簡化路徑矢量tlv的描述,圖1-23暫不考慮a1向a3的ldp分發)。a2将其ldp router-id 3字尾到路徑矢量tlv中,随同标簽1/l3通過ldp分發給上遊的atm lsr r2。假設a3從a2接收路徑矢量tlv,将其ldp router-id 5字尾到路徑矢量tlv中,通過ldp分發給a1。此時,a1發現路勁标簽tlv中已經包含了ldp router-id 2,是以a1拒絕接收此ldp分發。在信元模式mpls中,雖然沒有ttl機制來防止環路,但是跳數tlv可以設定最大跳數,而路徑tlv可以防止産生環路。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

在信元模式mpls網絡中,如果lsr接收了多個上遊lsr對于同一個網絡字首的标簽請求,那麼,此 lsr 為每個上遊 lsr 都生成映射此網絡字首的本地标簽。是以,當atm e-lsr的數量很多時,與其直連的核心atm lsr需要維護的标簽數量會迅速增加。相應的優化技術是atm lsr生成全局範圍有效的本地标簽,即為每個上遊lsr分發相同的标簽。

在信元模式mpls網絡中,lsr減少标簽數量的最常用技術是虛電路整合(vc-merge)。在虛電路整合中,一個lsr為每個網絡字首配置設定一個标簽,其上遊lsr經過此lsr向目的網絡發送資料包時,都使用相同的出向标簽。圖1-24是在圖1-19的網絡中增加新的atm e-lsr r3,直連到atm lsr a2。當禁用虛電路整合時,針對網絡字首172.16.1.0/24,a2分别為上遊lsr r2和r3配置設定本地标簽1/l3和1/l5。經過ldp分發過程以後,r2和r3分别以1/l3和1/l5作為網絡字首172.16.1.0/24的出向标簽。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

但是,信元模式mpls網絡開啟了虛電路整合以後,r2和r3都使用1/l3作為網絡字首172.16.1.0/24的出向标簽,是以虛電路整合可以減少atm lsr需要維護的标簽數量。

atm lsr開啟了虛電路整合以後,雖然可以減少atm lsr需要維護的标簽數量,但是也引入新問題—信元交織(cell interleave)。atm lsr開啟了虛電路整合以後,所有上遊lsr都使用相同的出向标簽向目的網絡發送資料包。如果多個上遊lsr同時向相同的目的網絡發送atm信元,那麼atm lsr無法識别這些atm信元來自哪個上遊lsr,因為這些atm信元的vpi/vci相同(标簽相同)。來自不同上遊lsr且具有相同vpi/vci的atm信元混合在一起,使得對端路由器無法将atm信元承載的資料還原為ip資料包,稱為“信元交織”。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

圖1-26所示的信元模式mpls網絡禁用了虛電路整合,atm lsr a2直連着atm e-lsr r2和r3。a2為網絡字首172.16.1.0/24配置設定兩個本地标簽1/l3和1/l5。a2為了确定本地标簽1/l3和1/l5所對應的出向标簽,需要向a1發送标簽請求。a2接收a1的标簽1/l2以後,将本地标簽1/l3和1/l5的出向标簽都設定為1/l2。但是,a2無法向a1傳遞資料源的資訊。是以,如果a1接收了vpi/vci 1/l2的atm信元,那麼a1無法判斷該atm承載的資料來自r2或r3。

在某些情況下,atm lsr之間隻傳遞來自于某個資料源的atm信元,而将來自于另一個資料源的atm信元緩存起來。在被傳遞的atm信元中,最後一個atm信元的“幀結尾”比特位置1,即這些被傳遞的atm信元可以還原為完整的ip資料包。然後,atm lsr将緩存中的可以還原為完整ip資料包的atm信元轉發出去,這樣就可以為另一個資料源提供資料轉發服務。是以,這樣解決方案可以繼承虛電路整合的優勢,但是當多個資料源同時向相同的網絡發送資料時,atm lsr的緩存機制會引入轉發延遲。

如果atm lsr沒有緩存atm信元的能力,那麼atm lsr需要禁用虛電路整合以避免信元交織及相關問題。

《MPLS在Cisco IOS上的配置》一1.9 信元模式MPLS

1 atm交換機隻能根據atm信元頭的資訊轉發資料包,無法解析atm負荷中的資訊。—譯者注