【太閣課堂】什么是MPLS?深入了解這種網絡協(xié)議!
MPLS是一種在IP骨干網上利用標簽來指導數(shù)據報文高速轉發(fā)的協(xié)議,由IETF (Internet Engineering Task Force,因特網工程服務組)提出。相對于傳統(tǒng)的IP路由方式,MPLS提供了一種新的網絡交換方式,它將IP地址映射為簡短且長度固定、只具有本地意義的標簽,以標簽交換替代IP查表,從而顯著提升轉發(fā)效率。同時,MPLS的標簽機制可以在IP網絡中構筑一條邏輯上的隧道,而且MPLS兼容不同的網絡層和鏈路層協(xié)議,因此,MPLS可以很好的為各種L2VPN、L3VPN以及EVPN業(yè)務提供公網隧道服務。
為什么需要MPLS?
在20世紀90年代中期,隨著IP網絡的快速發(fā)展,Internet數(shù)據量急劇增長。由于當時的硬件技術存在限制,基于最長匹配算法的IP技術必須使用軟件方法查找路由,轉發(fā)性能低下,所以IP的轉發(fā)性能成為當時限制網絡發(fā)展的瓶頸。在這種背景下,IETF提出了MPLS協(xié)議。MPLS最初的目的就是為了提升IP網絡中路由設備的轉發(fā)速率。

與傳統(tǒng)的IP路由方式相比,MPLS通過以下兩種方式提升轉發(fā)速率:
將查找龐大的IP路由表轉化為簡潔的標簽交換,顯著減少指導報文轉發(fā)的時間。
當報文進入MPLS區(qū)域之后,只需在位于邊緣的入、出節(jié)點解析IP報文頭,封裝或解封裝標簽,而在中間的所有節(jié)點上都無需解析IP報文頭,只進行標簽交換,進一步節(jié)約了轉發(fā)報文的處理時間。
后來,隨著ASIC(Application Specific Integrated Circuit,專用集成電路)技術的迅速發(fā)展,IP路由表查找逐步改用硬件方法,處理速度大大提高,這使得MPLS在提高IP網絡轉發(fā)速率方面不再具備明顯的優(yōu)勢。
但是,MPLS的標簽轉發(fā)本質上是一種隧道技術,它還支持封裝多層標簽,并且MPLS天然兼容多種網絡層和鏈路層協(xié)議,因此,MPLS非常適合在各種VPN業(yè)務中充當公網隧道。此外,由于MPLS的報文轉發(fā)依靠一條固定的標簽交換路徑,所以MPLS是一種面向連接的轉發(fā)技術,這使得MPLS在流量工程(Traffic Engineering,TE)、QoS等領域也有著廣泛的應用。
MPLS有哪些特征?
MPLS的基本概念有哪些?
想了解MPLS是什么,首先要知道MPLS的基本概念,下面介紹幾個核心概念。
FEC
MPLS是一種分類轉發(fā)技術,它將具有相同轉發(fā)處理方式的數(shù)據分組歸為一類,稱為FEC(Forwarding Equivalence Class,轉發(fā)等價類)。MPLS對相同F(xiàn)EC的數(shù)據分組采取完全相同的處理方式。
FEC的劃分方式非常靈活,可以是源地址、目的地址、源端口、目的端口、協(xié)議種類、業(yè)務類型等要素的任意組合。例如,在采用最長匹配算法的IP路由轉發(fā)中,去往同一個目的地址的所有報文就是一個FEC。
MPLS標簽
MPLS標簽是一個簡短且長度固定的標識符,它只具有本地意義,用于唯一標識一個分組所屬的FEC。在某些情況下(例如,進行負載分擔)對應一個FEC可能會有多個MPLS標簽,但是在一臺設備上,一個MPLS標簽只能代表一個FEC。
MPLS標簽長度為4個字節(jié),封裝結構如下圖所示。
MPLS標簽共有4個域:
Label:20bit,標簽值域。
Exp:3bit,用于擴展?,F(xiàn)在通常用做CoS(Class of Service,服務分類)。
BoS:1bit,棧底標識。MPLS支持多層標簽,即標簽嵌套。BoS值為1時表明為最底層標簽。
TTL:8bit,和IP分組中的TTL(Time To Live)意義相同。
MPLS標簽封裝在鏈路層和網絡層之間,它在報文分組中的封裝位置如下圖所示。MPLS標簽能夠被任意的鏈路層協(xié)議所支持。

MPLS標簽棧(Label stack)也稱為MPLS多層標簽,是指MPLS標簽的排序集合,如下圖所示。靠近二層首部的標簽稱為棧頂標簽或外層標簽;靠近IP首部的標簽稱為棧底標簽,或內層標簽。MPLS標簽棧按后進先出(Last In First Out)方式組織標簽,從棧頂開始處理標簽。

標簽操作
MPLS標簽的基本操作包括標簽壓入(Push)、標簽交換(Swap)和標簽彈出(Pop),它們是標簽轉發(fā)的基本動作,是標簽轉發(fā)信息表的組成部分。

MPLS標簽的基本操作詳解如下:
Push:指當IP報文進入MPLS域時,MPLS邊界設備在報文二層首部和IP首部之間插入一個新標簽;或者MPLS中間設備根據需要,在標簽棧頂增加一個新的標簽(即標簽嵌套封裝)。
Swap:當報文在MPLS域內轉發(fā)時,根據標簽轉發(fā)表,用下一跳分配的標簽,替換MPLS報文的棧頂標簽。
Pop:當報文離開MPLS域時,將MPLS報文的標簽去掉;或者MPLS倒數(shù)第二跳的節(jié)點處去掉棧頂標簽,減少標簽棧中的標簽數(shù)目。
在最后一跳的節(jié)點上,MPLS標簽實際已沒有使用價值。這種情況下,可以利用PHP(Penultimate Hop Popping,倒數(shù)第二跳彈出)特性,在倒數(shù)第二跳的節(jié)點上就將標簽彈出,這樣最后一跳的節(jié)點可直接進行IP轉發(fā)或者下一層標簽轉發(fā),從而減少最后一跳的處理負擔。
PHP特性是通過分配特殊的標簽值3來實現(xiàn)的。標簽值3表示隱式空標簽(implicit-null),這個值不會出現(xiàn)在標簽棧中。當?shù)箶?shù)第二跳節(jié)點發(fā)現(xiàn)自己被分配了標簽值3時,它并不用這個值替代棧頂原來的標簽,而是直接執(zhí)行Pop操作,使最后一跳節(jié)點直接進行IP轉發(fā)或下一層標簽轉發(fā)。
LSP
LSP(Label Switched Path,標簽交換路徑)是指屬于同一FEC的報文(即封裝了MPLS標簽的報文)在MPLS域內轉發(fā)所經過的路徑,如下圖所示。

LSP是一條從入口到出口的單向通道,包含以下角色:
LSP的起始節(jié)點稱為入節(jié)點(Ingress),一條LSP只能有一個Ingress。Ingress的主要功能是給IP報文壓入一個新的MPLS標簽,將其封裝成MPLS報文。
位于LSP中間的節(jié)點稱為中間節(jié)點(Transit),一條LSP可能有0個或多個Transit。Transit的主要功能是查找標簽轉發(fā)信息表,通過標簽交換完成MPLS報文的轉發(fā)。
LSP的末尾節(jié)點稱為出節(jié)點(Egress),一條LSP只能有一個Egress。Egress的主要功能是彈出標簽,恢復成原來的報文進行相應的轉發(fā)。
MPLS網絡是什么樣的?
MPLS網絡的典型結構如下圖所示。

MPLS網絡主要包含以下要素:
支持MPLS功能的網絡設備稱為LSR(Label Switching Router,標簽交換路由器),它是MPLS網絡的基本組成單元。由一系列連續(xù)的LSR構成的網絡區(qū)域稱為MPLS域。
MPLS域內部的LSR稱為Core LSR,如果一個LSR的相鄰節(jié)點都運行MPLS,則該LSR就是Core LSR。
位于MPLS域邊緣、連接其它網絡的LSR稱為LER(Label Edge Router,標簽邊緣路由器),如果一個LSR有一個或多個不運行MPLS的相鄰節(jié)點,那么該LSR就是LER。
在MPLS網絡中,任何兩個LER之間都可以建立LSP,用來轉發(fā)進入MPLS域的報文,中間可途徑若干個Core LSR。因此,一條LSP的Ingress和Egress都是LER,而Transit是Core LSR。
MPLS有什么價值?
MPLS在當前的IP網絡中得到了廣泛的應用,其主要價值體現(xiàn)在以下幾方面:
MPLS完全兼容IP網絡,相當于在IP網絡的基礎上進行改進,建設成本低,易于推廣。
MPLS的控制平面和轉發(fā)平面是分開的,在控制平面依靠IP路由來建立LSP,MPLS可以借用IP路由的各種靈活性、可靠性機制;在轉發(fā)平面通過LSP來傳輸報文,是面向連接的,MPLS可以有效的實施流量工程和QoS。
MPLS是一種與鏈路層協(xié)議無關的技術,它同時支持幀中繼、ATM、PPP和SDH等協(xié)議,保證了多種網絡的互通,兼容性非常好。
MPLS網絡支持層次化的拓撲結構,適合在IP骨干網中部署。
MPLS標簽棧在理論上可支持標簽的無限嵌套,正好契合了VPN業(yè)務對公、私網標簽多層封裝的要求,因此MPLS為VPN業(yè)務的蓬勃發(fā)展提供了強有力的支持。
MPLS是如何工作的?
簡單來說,MPLS的工作就是將進入MPLS域的報文正確地轉發(fā)到目的地。MPLS的工作可以概括為兩個過程:建立LSP、報文通過LSP轉發(fā)。
MPLS是如何建立LSP的?
MPLS是一種依靠標簽交換來指導轉發(fā)的技術,因此,LSP的建立過程實際上就是沿途LSR為特定FEC確定標簽的過程。
MPLS標簽由下游分配,按照從下游到上游的方向進行分發(fā)。如下圖所示,下游LSR根據IP路由的目的地址進行FEC劃分,并將標簽分配給對應指定目的地址的FEC,再將標簽發(fā)送給上游LSR,觸發(fā)上游LSR建立標簽轉發(fā)信息表,最終使一系列LSR形成一條LSP。

LSP按建立方式可以分為靜態(tài)LSP和動態(tài)LSP兩種:
靜態(tài)LSP是管理員通過手工為各個FEC分配標簽而建立的LSP。手工分配標簽需要遵循的原則是:上游LSR出方向的標簽的值等于下游LSR入方向的標簽值。
動態(tài)LSP是各LSR通過標簽發(fā)布協(xié)議動態(tài)的生成和發(fā)布標簽而建立的LSP,下游LSR向上游LSR發(fā)送標簽時需要依賴IP路由。MPLS支持多種標簽發(fā)布協(xié)議,例如:LDP(Label Distribution Protocol)、RSVP-TE(Resource Reservation Protocol Traffic Engineering)和MP-BGP(Multiprotocol Border Gateway Protocol)。
報文是如何通過LSP轉發(fā)的?
以支持PHP特性的LSP為例,MPLS報文在該LSP中的基本轉發(fā)過程描述如下:
Ingress收到目的地址為192.168.1.1/24的IP報文,壓入標簽Y(Push),封裝為MPLS報文并繼續(xù)轉發(fā)。
Transit收到該MPLS報文,進行標簽交換(Swap),將標簽Y換成標簽X。
倒數(shù)第二跳的Transit收到該MPLS報文,因為Egress分給它的標簽值為3,所以進行PHP操作,彈出標簽X并繼續(xù)將IP報文轉發(fā)給Egress。
Egress節(jié)點收到該IP報文,將其轉發(fā)給目的地192.168.1.1/24。

什么是MPLS VPN?
MPLS VPN是指利用MPLS在IP骨干網絡上構建VPN的技術。VPN的實質就是在公網上像私有專用網一樣傳輸業(yè)務數(shù)據,這就需要在公網上建立一條隧道,讓數(shù)據報文通過隧道直達目的地,從而達到私有專用網絡的效果。概括地講,MPLS VPN就是采用MPLS建立的LSP作為公網隧道來傳輸私網業(yè)務數(shù)據的。
MPLS VPN的基本模型主要由以下三種角色構成:
CE(Customer Edge):用戶網絡邊緣設備,有接口直接與服務提供商SP(Service Provider)網絡相連,用戶的VPN站點(Site)通過CE連接到SP網絡。CE可以是網絡設備,也可以是一臺主機。通常情況下,CE“感知”不到VPN的存在,也不需要支持MPLS。
PE(Provider Edge):是服務提供商網絡的邊緣設備,與CE直接相連。在MPLS網絡中,PE設備作為LSR,對MPLS和VPN的所有處理都發(fā)生在PE上,對PE性能要求較高。
P(Provider):服務提供商網絡中的骨干設備,不與CE直接相連。在MPLS網絡中,P設備作為LSR,只需要處理MPLS,不維護VPN信息。

MPLS VPN充分利用了MPLS的技術優(yōu)勢,是目前應用最廣泛的VPN技術。從用戶角度來看,MPLS VPN具有如下價值:
一個MPLS標簽對應一個指定業(yè)務的數(shù)據流(特定FEC),非常有利于不同用戶業(yè)務的隔離。MPLS可以提供流量工程和QoS能力,用戶可以借助MPLS最大限度地優(yōu)化VPN網絡的資源配置。MPLS VPN還能提供靈活的策略控制,滿足不同用戶的特殊要求,快速實現(xiàn)增值服務。(文章來自網絡技術干貨圈)。