1. 程式人生 > 實用技巧 >MPLS協議

MPLS協議

MPLS物種起源/報文格式

IP的危機

在90年代中期,當時路由器技術的發展遠遠滯後於網路的發展速度與規模,主要表現在轉發效率低下、無法提供QOS保證。原因是:當時路由查詢演算法使用最長匹配原則,必須使用軟體查詢;而IP的本質就是“只關心過程,不注重結果”的“盡力而為”。當時江湖上流行一種論調:過於簡單的IP技術無法承載網路的未來,基於IP技術的因特網必將在幾年之後崩潰。

ATM的野心

此時ATM跳了出來,欲收編所有幫派,一統武林。不幸的是:信奉唯美主義的ATM走向了另一個極端,過於複雜的心法與招式導致沒有任何廠商能夠完全修練成功,而且無法與IP很好的融合。在與IP的大決戰中最終落敗,ATM只能寄人籬下,淪落到作為IP鏈路層的地步。

ATM技術雖然沒有成功,但其中的幾點心法口訣,卻屬創新

屏棄了繁瑣的路由查詢,改為簡單快速的標籤交換
將具有全域性意義的路由表改為只有本地意義的標籤表
這些都可以大大提高一臺路由器的轉發功力。
MPLS的創始人“label大師”充分吸取了ATM的精華,但也同時認識到IP為江湖第一大幫派,無法取而代之。遂主動與之修好,甘當IP的承載層,但為了與一般的鏈路層小幫有所區別,將自己定位在第2. 5層的位置。“label大師”本屬於八面玲瓏之人,為了不得罪其他幫派,宣稱本幫是“multiprotocol”,來者不拒,也可以承載其他幫派的報文。在經過一年多的招兵、上下打點之後,於1997年的武林大會上,正式宣佈本幫成立,並命名為MPLS(MultiProtocol label Switch) MPLS可以擴充套件到多種網路協議(如IPv6,IPX等)

MPLS在TCP/IP模型裡面的位置

MPLS包頭結構

通常,MPLS包頭有32Bit,其中有:
20Bit用作標籤(Label)在本地有意義
3個Bit的EXP, 協議中沒有明確,通常用作COS QOS打標用的
1個Bit的S,用於標識是否是棧底,表明MPLS的標籤可以巢狀,S值為1時表明為最底層標籤
8個Bit的TTL

二層首部的標籤稱為棧頂MPLS標籤或外層MPLS標籤
靠近IP首部的標籤稱為棧底MPLS標籤或內層MPLS標籤
理論上,標記棧可以無限巢狀,從而提供無限的業務支援能力。這是MPLS技術最大的魅力所在。

標籤空間

0~15:特殊標籤。如標籤3,稱為隱式空標籤,用於倒數第二跳彈出;
16~1023:靜態LSP和靜態CR-LSP(Constraint-based Routed Label Switched Path,基於約束的標籤交換路徑)共享的標籤空間;

1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering,資源預留協議流量工程)、MP-BGP(MultiProtocol Border Gateway Protocol,多協議邊界閘道器協議)等動態信令協議的標籤空間。

抓包現象

MPLS術語

LSP

LSP(Label Switched Path):標籤交換路徑,報文在MPLS網路中經過的路徑,資料流所走的路徑就是LSP。

LSR

LSR:
Label Switching Router,用於標籤的交換
LER:
Label Switching Edge Router,在MPLS的網路邊緣,在MPLS網路中,用於標籤的壓入或彈出

Ingress、Transit、 Egress

LSP的入口LER被稱為入節點(Ingress)
位於LSP中間的LSR被稱為中間節點(Transit)
LSP的出口LER被稱為出節點(Egress)
一條LSP可以有0個、1個或多箇中間節點,但有且只有一個入節點和一個出節點

MPLS北斗陣法圖

該陣法分為內外兩層,外層由功力高強的弟子擔綱(至少是個堂主(LER),在IP報文衝陣時負責接收IP報文,查詢標籤轉發表,給IP報文打標籤操作(PUSH)在IP報文出陣時對標籤報文進行彈出操作(POP),按IP路由進行轉發。
內層由功力較低的入門弟子組成,負責對標籤報文進行快速的標籤交換操作(SWAP)

上游、下游

下游給上游分發標籤

FEC

Forwarding Equivalence Class,FEC(轉發等價類),是在轉發過程中以等價的方式處理的一組資料分組, MPLS創始人在祕笈本來規定:可以通過地址、隧道、COS等來標識建立FEC,只可惜後輩弟子大多資質愚鈍,不能理解其中的精妙之處,所以我們現在看到的MPLS中只是一條路由對應一個FEC。通常在一臺裝置上,對一個FEC分配相同的標籤。

LSP的建立方式

建立LSP的方式有兩種:
靜態LSP:使用者通過手工方式為各個轉發等價類分配標籤建立轉發隧道;
動態LSP:通過標籤釋出協議動態建立轉發隧道

in標籤是我分給別人的
Out標籤是別人分給我的

實驗模擬

實驗檢視5.5.5.5分配標籤的過程

MPLS網路模型

控制平面:負責產生和維護路由資訊以及標籤資訊。
路由資訊表RIB(Routing Information Base):由IP路由協議(IP Routing Protocol)生成,用於選擇路由。
標籤分發協議LDP(Label Distribution Protocol):負責標籤的分配、標籤轉發資訊表的建立、標籤交換路徑的建立、拆除等工作。
標籤資訊表LIB(Label Information Base):由標籤分發協議生成,用於管理標籤資訊。

轉發平面:即資料平面(Data Plane),負責普通IP報文的轉發以及帶MPLS標籤報文的轉發。
轉發資訊表FIB(Forwarding Information Base):從RIB提取必要的路由資訊生成,負責普通IP報文的轉發。
標籤轉發資訊表LFIB(Label Forwarding Information Base):簡稱標籤轉發表,由標籤分發協議建立LFIB,負責帶MPLS標籤報文的轉發。

MPLS路由器上,報文的轉發過程:
當收到普通IP報文時,查詢FIB表,如果Tunnel ID為0x0,則進行普通IP轉發;如果查詢FIB表,Tunnel ID為非0x0,則進行MPLS轉發。

路由資訊表RIB

轉發資訊表FIB

標籤資訊表LIB

標籤轉發資訊表LFIB

Tunnel ID為非0x0

MPLS基礎配置

配置LSR ID

LSR ID用來在網路中唯一標識一個LSR。LSR沒有預設的LSR ID,必須手工配置。為了
提高網路的可靠性,推薦使用LSR某個Loopback介面的地址作為LSR ID

執行命令mpls lsr-id lsr-id,配置本節點的LSR ID

如果要修改已經配置的LSR ID,必須先在系統檢視下執行undo mpls命令
執行undo mpls命令會刪除所有MPLS配置,導致MPLS業務中斷。因此,請配置前對
網路中每個LSR的LSR ID進行統一規劃,避免出現修改LSR ID的情況

使能MPLS

執行命令system-view,進入系統檢視。 
執行命令mpls,使能本節點的MPLS,並進入MPLS檢視。 

預設情況下,節點的MPLS能力處於未使能狀態。

執行命令interface interface-type interface-number,配置需要轉發MPLS報文的介面。
執行命令mpls,使能介面的MPLS。 

預設情況下,介面的MPLS能力處於未使能狀態。