技術背景
90年代初期,互聯網流量快速增長,而由于當時硬體技術的限制,路由器采用最長匹配演算法逐跳轉發資料包,成為網路資料轉發的瓶頸;于是快速路由技術成為當時研究的一個熱點;在各種方案中,IETF確定了MPLS協議作為標準的協議;MPLS采用短而定長的標簽進行資料轉發,大大提高了硬體限制下的轉發能力(當然現在硬體已經沒有限制,MPLS更多用于營運商做MPLS VPN,流量工程和服務質量);而且MPLS可以擴展到多種網路協議;
傳統IP轉發示意圖

提示:如上圖所示,用戶A想要和用戶B通信,首先資料包發送R1以后,路由器會根據資料包的目標ip地址進行路由查找,從而實作將資料包最終轉發到用戶B;這種ip轉發采用最長匹配原則,需要多次查表,演算法效率不高;況且當時路由器多采用CPU進行轉發處理,這意味著來一個資料包都會上交給cpu處理,很顯然這會額外帶來性能上的開銷;從而影響路由器性能;
ATM轉發示意圖

提示:如上圖所示,用戶A想要和用戶B通信,首先用戶A將資料包發送給R1,R1收到用戶資料包,通過查看資料包攜帶的標簽,從而在ATM轉發表里查找對應標簽表項,然后將對應資料包,從對應介面轉發出去并打上對應標簽;這種ATM轉發采用唯一匹配,一次查表,很顯然比上述的ip轉發效率要高;但是ATM控制指令復雜,成本高昂,難以普及;所以ATM技術沒能成功得到推廣;
ATM技術雖然沒能成功,但其中的心法口訣卻屬創新;首先ATM摒棄了繁瑣的路由查找,改為簡單快速的標簽交換;即通過標簽交換來實作資料包的轉發;其次ATM將具有全域意義的路由表改為只有本地意義的標簽表;
MPLS簡介
MPLS借鑒了ATM的思想,用標簽交換來實作快速路由;MPLS是Multi-Protocol Label Switching的首字母縮寫,翻譯成中文就是多協議標簽交換;該協議是一種根據標簽轉發的技術;可承載在各種鏈路層協議之上(如,ppp、ATM、幀中繼、以太網);同時它還能承載各種網路層報文,如ipv4、ipv6;采用無連接的控制平面,實作路由資訊的傳遞和標簽的分發,采用面向連接的資料平面,實作報文在建立的標簽轉發路徑上傳送;所以MPLS定義為2.5層,又稱2.5層技術;如下圖所示

提示:MPLS協議作業在二層之上三層之下的中間層,主要可以起到承上啟下的作用;即它能夠作業在很多二層協議之上,同時承載三層網路協議;
MPLS資料轉發程序

提示:如上圖所示,用戶A和用戶B通信,首先用戶A發送IP資料報文給用戶端的網關,用戶端網關收到資料報文以后,根據路由將對應資料包轉發給營運商的邊界網關,營運商的邊界路由器收到對應資料包會根據規則(lsp)給對應資料打上對應的標簽;隨后從對應的介面發送給下一個路由器;在營運商的內部路由器中傳輸用戶A的資料,路由器不再根據目標ip地址來查找路由表項進行資料轉發,而是根據資料包的標簽和LSP(標簽路徑)來進行轉發;最終資料包在來到營運商靠近B用戶側的邊界網關,此時邊界網關會根據標簽路徑表將對應資料中的標簽剝離,然后發送給用戶;從而實作用戶A和用戶B的資料通信;從上述程序來看,MPLS協議只關心對應資料包的標簽,根據標簽和結合標簽路徑表來轉發對應資料包;并不會關心對應目標ip地址是多少,是否有路由等;所以標簽的分發和lsp的建立就顯得尤為重要;
MPLS實際應用場景
隨著硬體技術的發展,ip轉發性能也大大提高,MPLS在這方面并未發揮優勢,但由于MPLS結合了IP網路強大的三層路由功能和二層網路高效的轉發機制,所以目前MPLS主要應用于VPN技術,TE(Traffic Engineering,流量工程)以及QOS(Quality of Service,服務質量);
MPLS VPN應用

提示:基于MPLS的VPN通過LSP將私有網路的不同分支連接起來,形成一個統一的網路,用戶設備無需為VPN配置GRE、L2TP等隧道;網路延時也會被降至最低;
MPLS TE應用

提示:所謂流量工程是通過動態監控網路的流量和網路單元的負載,實時調整流量管理引數、路由引數和資源約束引數等;使網路運行狀態遷移到理想狀態,優化網路資源的使用,避免負載不均衡導致的擁塞;
MPLS報文結構

提示:Label欄位主要用于報文轉發,占20bits;exp(experimental Use)欄位主要用于承載IP報文中的優先級,占3位二進制,即有8個優先級別,0-7;S欄位表示堆疊底標志,占1位,即表明是否是最后一個標簽(MPLS標簽可以多層嵌套),如果是最后一個標簽,對應s欄位會置為1,否則為0;TTL欄位類似ip頭部的TTL欄位,用來防止報文環路,占8位二進制;
MPLS標簽
MPLS標簽有較短,定長,自由本地意義的特點,主要用于唯一標識去往同一目的地址的報文分組,標簽控制元件如下;
所謂標簽空間就是指標簽的取值范圍,不同取值范圍,對應作用不同;
0-15是特殊保留標簽
0:IPv4 Explicit NULL Label(顯示空標簽),表示該標簽必須被彈出(即標簽被剝掉),且報文的轉發必須基于IPv4,如果出節點分配給倒數第二跳節點的標簽值為0,則倒數第二跳LSR需要將值為0的標簽正常壓入報文標簽值頂部,轉發給最后一跳,最后一跳發現報文攜帶的標簽值為0,則將標簽彈出;
1:Router Alert Label 路由告警標簽,只有出現在非堆疊底時才有效,類似于IP報文的“Router Alert Option”欄位,節點收到Router Alert Label時,需要將其送往本地軟體模塊進一步處理,實際報文轉發由下一層標簽決定,如果報文需要繼續轉發,則節點需要將Router Alert Label壓回標簽堆疊頂;
2:IPv6 Explicit NULL Label,表示該標簽必須被彈出,且報文的轉發必須基于IPv6,如果出節點分配給倒數第二跳節點的標簽值為2,則倒數第二跳節點需要將值為2的標簽正常壓入報文標簽值頂部,轉發給最后一跳,最后一跳發現報文攜帶的標簽值為2,則直接將標簽彈出,
3:Implicit NULL Label(隱式空標簽),倒數第二跳LSR進行標簽交換時,如果發現交換后的標簽值為3,則將標簽彈出,并將報文發給最后一跳,最后一跳收到該報文直接進行IP轉發或下一層標簽轉發;
14:OAM Router Alert Label,MPLS OAM(Operation Administration & Maintenance)通過發送OAM報文檢測和通告LSP故障,OAM報文使用MPLS承載,OAM報文對于Transit LSR和倒數第二跳LSR(penultimate LSR)是透明的;
4-13、15:保留;
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標簽多層嵌套

提示:對于一個LSR(標簽路由器)來說,只處理第一個(最頂層)標簽;多層標簽主要應用于MPLS VPN、MPLS TE;

提示:MPLS在二層以太網網路協議號中使用8847或8848,IP協議號為0800;
MPLS標簽轉發行為

提示:報文進入MPLS網路,Ingress LSR設備(LSR1)發現報文的目標ip地址與其關聯的標簽轉發表項,遂進行標簽壓入(push)操作,即打標簽;報文在MPLS網路中間進行轉發時,在LSR2上進行標簽交換(SWAP),設備只需要查詢標簽轉發表項即可完成報文轉發;報文在轉出MPLS網路時,LSR3發現自己為該LSP的最下游設備,完成彈出標簽(POP)操作,即剝離標簽,還原為最初資料包的結構;隨后通過ip路由轉發資料包到達用戶主機,完成資料通信;簡單講就是靠近發送端用戶的MPLS路由器為ingress,做標簽壓入操作,中間路由器做標簽交換操作,靠近接收端的MPLS路由器做標簽剝離操作;通過上述的壓入,交換,彈出標簽的操作來達到資料包的轉發;
LSP的建立

提示:LSP是Label Switched Path的縮寫,標簽交換路徑;即MPLS標簽路徑;作用類似ip路由表;LSP的建立有兩種方式,一種是靜態LSP,即通過手動方式為各個FEC分配標簽建立轉發隧道,類似靜態路由;一種是動態LSP,即通過標簽發布協議動態建立轉發隧道;動態標簽發布協議類似動態路由協議;

提示:標簽分配的方向和資料流的方向相反;
靜態LSP

提示:所謂靜態LSP是指不使用標簽發布協議,不需要互動控制報文,資源消耗較小;通過靜態方式建立的LSP不能根據網路拓撲變化動態調整,需要管理員手動調整;這種方式適用于拓撲結構簡單且穩定的小型網路;配置靜態LSP原則是上游節點出標簽等于下游節點入標簽;配置之前應提前規劃好,避免出錯;
動態LSP

提示:動態LSP是指通過標簽發布協議(LDP、MP-BGP、RSVP-TE)動態建立,類似動態路由協議;管理員只需要配置好標簽發布協議即可實作對FEC的分類、標簽的分配以及LSP的建立和維護;這種方式組網配置簡單,易于管理和維護,能夠根據網路拓撲變化而即時做出對應的調整;標簽由下游LSR分配,按從下游到上游的方向分發;
MPLS轉發程序


提示:Tunnel ID是為了給使用隧道的上層協議(如VPN、路由管理)提供統一的介面;系統自動為隧道分配一個ID,也稱為Tunnel ID;該Tunnel ID的長度為32位元,只是本地有效;NHLFE是下一跳標簽轉發表項;主要用于指導MPLS報文的轉發;該表項包括Tunnel ID、出介面、下一跳、出標簽、標簽操作型別等資訊;FEC到一組NHLFE的映射成為FTN(FEC-To-NHLFE);FIB表中的Tunnel ID值不為0x0的表項,能夠獲取FTN的詳細資訊;FTN只在ingress存在;ILM,Incoming Label Map,入標簽映射;入標簽到一組下一跳標簽轉發表項的映射;包括Tunnel ID、入標簽、入介面、標簽操作型別等資訊;ILM在Transit節點的作用是將標簽和NHLFE做系結;通過標簽索引ILM表,就相當于使用目標ip地址查詢FIB,能夠得到所有的標簽轉發資訊;MPLS轉發就是通過上述三張表項進行資料轉發;
MPLS環路檢測機制
MPLS環路檢測可以通過IGP環路檢測機制,如RIP,OSPF等各自的防環機制;除此之外也可以通過TTL環路檢測,其中幀模式的MPLS中使用TTL,信元模式的MPLS中沒有TTL,使用LDP環路檢測機制;而LDP環路檢測機制中有兩種方式,一種是距離向量法,一種最大跳數法;
MPLS對TTL的處理模式
Uniform模式

提示:這種模式MPLS TTL和IP TTL相互同步,中間節點只處理MPLS TTL;這種模式不能隱藏MPLS網路真實網路節點數量;
Pipe模式

提示:這種模式MPLS TTL設定為固定值,IP TTL只在入和出節點分別減1;這種模式可以有效隱藏MPLS網路真實節點數量;
TTL環路檢測

提示:TTL環路檢測和IP環路檢測一樣,只要TTL值為0以后,對應資料包就被丟棄,從而有效阻斷環路繼續發生;
LDP環路檢測
距離向量法

提示:距離向量法,類似RIP里的水平分割,LSR發送標簽請求時,添加自己的LSR ID,如果收到的LSR發現了自己的LSR ID,對應資料包就直接丟棄;
最大跳數法

提示:最大跳數法是LSR發送標簽請求時,更新Hop Conut ,如果到達預定的最大值,對應資料包被丟棄;類似TTL,不同于TTL的是TTL是每經過一個路由器就減1,直到TTL值為0時對應資料包才被丟棄;而Hop Count是每經過一個路由器就加1,直到到達預定的最大值,對應資料包才會被丟棄;
作者:Linux-1874 出處:https://www.cnblogs.com/qiuhom-1874/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538542.html
標籤:其他
上一篇:聯想電腦管家
