天天看點

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

MPLS其它相關知識:

MPLS相關配置及抓包分析

MPLS BGP 跨域(OptionA/B/C)

MPLS VPN Hub and Spoke實驗

文章目錄

  • MPLS簡介
    • 定義
  • MPLS基本結構
    • 網絡結構
    • 體系結構+工作過程
  • 工作過程
  • MPLS标簽
    • 轉發等價類:
    • 标簽:
    • 标簽空間:
  • LSP的建立
    • 靜态LSP的建立:
    • 動态LSP的建立:
  • MPLS轉發
    • MPLS基本轉發過程:
    • MPLS詳細轉發過程:
  • MPLS對TTL的處理:
    • MPLS對TTL的處理模式:

MPLS簡介

定義

多協定标簽交換MPLS(Multiprotocol Label Switching)是一種IP(Internet Protocol)骨幹網技術。MPLS在無連接配接的IP網絡上引入面向連接配接的标簽交換概念,将第三層路由技術和第二層交換技術相結合,充分發揮了IP路由的靈活性和二層交換的簡捷性。

MPLS起源于IPv4(Internet Protocol version 4),其核心技術可擴充到多種網絡協定,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)和CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支援多種網絡協定。

由此可見,MPLS并不是一種業務或者應用,它實際上是一種隧道技術。這種技術不僅支援多種高層協定與業務,而且在一定程度上可以保證資訊傳輸的安全性。

标簽交換:資料包在進入到的MPLS的域内後,将在第2層和3層中間壓入标簽号;使得域内的路由器在轉發該資料包時,基于2.5層的标簽号僅需要查詢本地的一張LFIB表(标簽轉發資訊資料庫)

最初在包交換僅支援原始交換時,标簽的意義在于更快的查詢;但随着包交換的加速,使用标簽交換失去了快速查表的優勢;

當下MPLS存在的意義:

1、解決BGP的路由黑洞 2、MPLS VPN 3、MPLS TE 流量工程

另外:随着包交換的加速,使得今天的MPLS技術也開始基于FIB表工作;來提高MPLS的工作效率;

MPLS基本結構

網絡結構

MPLS網絡的典型結構如下圖所示。MPLS基于标簽進行轉發,下圖中進行MPLS标簽交換和封包轉發的網絡裝置稱為标簽交換路由器LSR(Label Switching Router);由LSR構成的網絡區域稱為MPLS域(MPLS Domain)。位于MPLS域邊緣、連接配接其他網絡的LSR稱為邊緣路由器LER(Label Edge Router),區域内部的LSR稱為核心LSR(Core LSR)。

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

IP封包進入MPLS網絡時,MPLS入口的LER分析IP封包的内容并且為這些IP封包添加合适的标簽,所有MPLS網絡中的LSR根據标簽轉發資料。當該IP封包離開MPLS網絡時,标簽由出口LER彈出。

IP封包在MPLS網絡中經過的路徑稱為标簽交換路徑LSP(Label Switched Path)。LSP是一個單向路徑,與資料流的方向一緻。

如上圖,LSP的入口LER稱為入節點(Ingress);位于LSP中間的LSR稱為中間節點(Transit);LSP的出口LER稱為出節點(Egress)。一條LSP可以有0個、1個或多個中間節點,但有且隻有一個入節點和一個出節點。

根據LSP的方向,MPLS封包由Ingress發往Egress,則Ingress是Transit的上遊節點,Transit是Ingress的下遊節點。同理,Transit是Egress上遊節點,Egress是Transit的下遊節點。

體系結構+工作過程

MPLS的體系結構由控制平面(Control Plane)和轉發平面(Forwarding Plane)組成。

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:
  • 控制層面:路由協定工作,生成RIB,流量的方向即為控制流量;官方點就是負責産生和維護路由資訊以及标簽資訊
  • 路由資訊表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):簡稱标簽轉發表,由标簽分發協定在LSR上建立LFIB,負責帶MPLS标簽封包的轉發。

工作過程

控制層面:

1)在沒有MPLS時控制層面僅生成RIB(路由表)和FIB(轉發資訊資料庫);FIB是基于RIB生成;

2)MPLS協定會啟動TDP(cisco私有)或LDP(公有),直連裝置間将建立鄰居關系;

LDP-- 基于UDP和TCP的646端口工作;先使用udp發送多點傳播hello包發現鄰居,擷取鄰居ip位址,再和該直連鄰居建立TCP的會話;鄰居關系建立後;為了鄰居關系間的穩定,一般使用裝置的環回位址來建立tcp會話;建議設定環回位址為mpls協定的route-id,該id值将攜帶在多點傳播收發的hello封包中,之後自動進行tcp會話建立;

總結:MPLS協定需要在直連鄰居間使用router-id位址來進行TCP的會話;故前提條件為,route-id必須為裝置真實使用的ip位址,建議為環回位址—穩定; 多點傳播hello包在直連的實體接口上收發,來擷取對端的router-id,自然也要求router-id值間路由可達;

是以正常在建立LDP的鄰居關系間,路由協定已經收斂完成,RIB和FIB表已經生成;

3)MPLS在建立鄰居關系後,生成鄰居表;LDP協定再基于FIB表中學習到的路由條目生成标簽号;

cisco裝置預設基于FIB表中所有學習到的路由條目生成标簽号,華為裝置預設僅基于FIB表中32位掩碼的主機路由生成标簽号;原因在于正常32位主機路由為ospf學習的環回接口,正常工程中隻有BGP和MPLS VPN才會基于環回通訊,使用标簽轉發;其他普通流量還是基于特快包交換來進行;反觀cisco在啟動mpls以後,所有流量将基于标簽轉發,降低了轉發效率(前提為預設)

4)标簽号生成後,将存儲于本地的LIB表-标簽資訊資料庫;LIB表将在鄰居間共享;

LIB表中裝載本地及鄰居為每條路由分發的标簽号;

5)運作MPLS協定的裝置,将LIB和FIB進行結合,将标簽号和最佳路徑的關系映射生成LFIB表(标簽轉發資訊資料庫)

注:控制層面生成的表格

RIB—》FIB—》LIB—》LFIB 前兩張表為路由協定工作後生成,後兩張表為MPLS的LDP協定生成;

資料層面:

1)沒有MPLS協定,基于FIB表正常轉發即可

2)名詞:MPLS domain – MPLS的工作半徑

edge LSR(PE)即(LER) --邊界标簽交換路由器 工作mpls域的邊緣,連接配接域外裝置

LSR (P)即(core LSR) – 标簽交換路由器 整體工作MPLS域内

3)當流量進入到第一台pe裝置時, 在沒有特快交換之前,路由器基于目标IP位址查詢本地的RIB;

之後還要在LIB表中對應才能确定流量是否應該壓入标簽,需要兩張表的查詢;

在存在特快交換時,流量進入第一pe時,直接查詢FIB表,表中關聯标簽号,将直接确定是否壓入标簽;

流量再到P路由器,接收到流量中若存在标簽基于LFIB表轉發,若沒有标簽基于FIB表即可;

流量從最後一台邊界離開MPLS 域時将彈出标簽;

存在标簽号的流量,進入路由器時,入标簽表應該為本地路由器配置設定的編号,出标簽為本地的下遊(下一跳)裝置配置設定的标簽号; 上下遊的概念基于資料層面進行标定;

MPLS标簽

轉發等價類:

MPLS将具有相同特征的封包歸為一類,稱為轉發等價類FEC(Forwarding Equivalence Class)。屬于相同FEC的封包在轉發過程中被LSR以相同方式處理。

FEC可以根據源位址、目的位址、源端口、目的端口、VPN等要素進行劃分。例如,在傳統的采用最長比對算法的IP轉發中,到同一條路由的所有封包就是一個轉發等價類。

标簽:

标簽(Label)是一個短而定長的、隻具有本地意義的辨別符,用于唯一辨別一個分組所屬的FEC。在某些情況下,例如要進行負載分擔,對應一個FEC可能會有多個入标簽,但是一台裝置上,一個标簽隻能代表一個FEC。

MPLS封包與普通的IP封包相比增加了MPLS标簽資訊,MPLS标簽的長度為4個位元組。MPLS标簽封裝在鍊路層和網絡層之間,可以支援任意的鍊路層協定。MPLS标簽的封裝結構如下圖所示:

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

标簽被壓入在2層與3層之間,稱為2.5層 标簽的格式—32位,4個位元組

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:
MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

前20位為标簽号,2^20個标簽号;其中1-15号保留,作為特殊編号;

第21-23位exp,3位8個數,為優先級,用于QOS政策使用;

第24位為棧底位,該位為1辨別該标簽為最後一層标簽;MPLS最大可以在一個資料包中封裝3次标簽;

标簽棧(Label Stack)

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

是名額簽的排序集合。靠近二層首部的标簽稱為棧頂MPLS标簽或外層MPLS标簽(Outer MPLS label);靠近IP首部的标簽稱為棧底MPLS标簽或内層MPLS标簽(Inner MPLS label)。理論上,MPLS标簽可以無限嵌套。目前MPLS标簽嵌套主要應用在MPLS VPN、TE FRR(Traffic Engineering Fast ReRoute)中。普通的MPLS 一層标簽 MPLS VPN 兩層 MPLS TE 3層

标簽棧按後進先出方式組織标簽,從棧頂開始處理标簽。

TTL 生存時間 在第一次壓入标簽時,将目前資料包中的3層TTL複制到标簽中;之後查詢一次标簽TTL減一,在最後一跳裝置彈出标簽時将2.5層的TTL複制到3層報頭中;

标簽空間:

标簽空間就是名額簽的取值範圍。标簽空間劃分如下:

  • 0~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)等動态信令協定的标簽空間。

特殊标簽表:

标簽值 含義 描述
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轉發或下一層标簽轉發。
4~13 保留 -
14 OAM Router Alert Label MPLS OAM(Operation Administration & Maintenance) 通過發送OAM封包檢測和通告LSP故障。OAM封包使用MPLS承載。OAM封包對于Transit LSR和倒數第二跳LSR(penultimate LSR)是透明的。
15 保留

LSP的建立

MPLS需要為封包事先配置設定好标簽,建立一條LSP,才能進行封包轉發。LSP分為靜态LSP和動态LSP兩種。

靜态LSP的建立:

靜态LSP是使用者通過手工為各個轉發等價類配置設定标簽而建立的。由于靜态LSP各節點上不能互相感覺到整個LSP的情況,是以靜态LSP是一個本地的概念。

靜态LSP不使用标簽釋出協定,不需要互動控制封包,是以消耗資源比較小,适用于拓撲結構簡單并且穩定的小型網絡。但通過靜态方式配置設定标簽建立的LSP不能根據網絡拓撲變化動态調整,需要管理者幹預。

配置靜态LSP時,管理者需要為各LSR手工配置設定标簽,需要遵循的原則是:前一節點出标簽的值等于下一個節點入标簽的值。

動态LSP的建立:

動态LSP的标簽釋出協定

動态LSP通過标簽釋出協定動态建立。标簽釋出協定是MPLS的控制協定(也可稱為信令協定),負責FEC的分類、标簽的分發以及LSP的建立和維護等一系列操作。

MPLS可以使用多種标簽釋出協定:

  • LDP

    LDP(Label Distribution Protocol)是專為标簽釋出而制定的協定。LDP根據IGP(Interior Gateway Protocol)、BGP(Border Gateway Protocol)路由資訊通過逐跳方式建立LSP。

  • RSVP-TE

    RSVP-TE(Resource Reservation Protocol Traffic Engineering)是對RSVP的擴充,用于建立基于限制的LSP。它擁有普通LDP LSP沒有的功能,如釋出帶寬預留請求、帶寬限制、鍊路顔色和顯式路徑等。

  • MP-BGP

    MP-BGP(Multiprotocol Border Gateway Protocol)是在BGP協定基礎上擴充的協定。MP-BGP支援為MPLS VPN業務中私網路由和跨域VPN的标簽路由配置設定标簽。

動态LSP的基本建立過程

标簽由下遊LSR配置設定,按從下遊到上遊的方向分發。如下圖,由下遊LSR在IP路由表的基礎上進行FEC的劃分,并根據FEC配置設定标簽,通告給上遊的LSR,以便建立标簽轉發表和LSP。

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

MPLS轉發

MPLS基本轉發過程:

基本概念

在MPLS基本轉發過程中涉及的相關概念如下:

标簽操作類型包括标簽壓入(Push)、标簽交換(Swap)和标簽彈出(Pop),它們是标簽轉發的基本動作。

  • Push:當IP封包進入MPLS域時,MPLS邊界裝置在封包二層首部和IP首部之間插入一個新标簽;或者MPLS中間裝置根據需要,在标簽棧頂增加一個新的标簽(即标簽嵌套封裝)。
  • Swap:當封包在MPLS域内轉發時,根據标簽轉發表,用下一跳配置設定的标簽,替換MPLS封包的棧頂标簽。
  • Pop:當封包離開MPLS域時,将MPLS封包的标簽剝掉。

    在最後一跳節點,标簽已經沒有使用價值。這種情況下,可以利用倒數第二跳彈出特性PHP(Penultimate Hop Popping),在倒數第二跳節點處将标簽彈出,減少最後一跳的負擔。最後一跳節點直接進行IP轉發或者下一層标簽轉發。

  • MPLS的次末跳 – 倒數第二跳 預設執行邊界LSR将本地的直連網段傳遞給MPLS域内鄰居後,LDP配置設定标簽号為3,告知倒數第二跳裝置它的身份;導緻倒數第二跳裝置在查詢LFIB表後,已知轉發路徑的前提下提前彈出标簽,使得最後一跳路由器均隻需要查詢FIB表;

    否則最後一跳路由器在查詢LFIB表後,彈出标簽還需要查詢FIB;

  • 預設情況下,裝置支援PHP特性,支援PHP的Egress節點配置設定給倒數第二跳節點的标簽值為3。

基本轉發過程:

以支援PHP的LSP為例,說明MPLS基本轉發過程。

如上圖所示,MPLS标簽已分發完成,建立了一條LSP,其目的位址為4.4.4.2/32。則MPLS基本轉發過程如下:

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:
  1. Ingress節點收到目的位址為4.4.4.2的IP封包,壓入标簽Z并轉發。
  2. Transit節點收到該标簽封包,進行标簽交換,将标簽Z換成标簽Y。
  3. 倒數第二跳Transit節點收到帶标簽Y的封包。因為Egress分給它的标簽值為3,是以進行PHP操作,彈出标簽Y并轉發封包。從倒數第二跳轉發給Egress的封包以IP封包形式傳輸。
  4. Egress節點收到該IP封包,将其轉發給目的地4.4.4.2/32。

MPLS詳細轉發過程:

基本概念:

在MPLS詳細轉發過程中涉及的相關概念如下:

  • Tunnel ID

    為了給使用隧道的上層應用(如VPN、路由管理)提供統一的接口,系統自動為隧道配置設定了一個ID,也稱為Tunnel ID。該Tunnel ID的長度為32比特,隻是本地有效。

  • NHLFE

    下一跳标簽轉發表項NHLFE(Next Hop Label Forwarding Entry)用于指導MPLS封包的轉發。

    NHLFE包括:Tunnel ID、出接口、下一跳、出标簽、标簽操作類型等資訊。

    FEC到一組NHLFE的映射稱為FTN(FEC-to-NHLFE)。通過檢視FIB表中Tunnel

    ID值不為0x0的表項,能夠獲得FTN的詳細資訊。FTN隻在Ingress存在。

  • ILM

    入标簽到一組下一跳标簽轉發表項的映射稱為入标簽映射ILM(Incoming Label Map)。

    ILM包括:Tunnel ID、入标簽、入接口、标簽操作類型等資訊。

    ILM在Transit節點的作用是将标簽和NHLFE綁定。通過标簽索引ILM表,就相當于使用目的IP位址查詢FIB,能夠得到所有的标簽轉發資訊。

詳細轉發過程:

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

MPLS的詳細轉發過程如上圖所示:

當IP封包進入MPLS域時,首先檢視FIB表,檢查目的IP位址對應的Tunnel ID值是否為0x0。

  • 如果Tunnel ID值為0x0,則進入正常的IP轉發流程。
  • 如果Tunnel ID值不為0x0,則進入MPLS轉發流程。

在MPLS轉發過程中,FIB、ILM和NHLFE表項是通過Tunnel ID關聯的。

Ingress的處理:通過查詢FIB表和NHLFE表指導封包的轉發。

  1. 檢視FIB表,根據目的IP位址找到對應的Tunnel ID。
  2. 根據FIB表的Tunnel ID找到對應的NHLFE表項,将FIB表項和NHLFE表項關聯起來。
  3. 檢視NHLFE表項,可以得到出接口、下一跳、出标簽和标簽操作類型。
  4. 在IP封包中壓入出标簽,同時處理TTL,然後将封裝好的MPLS封包發送給下一跳。

Transit的處理:通過查詢ILM表和NHLFE表指導MPLS封包的轉發。

  1. 根據MPLS的标簽值檢視對應的ILM表,可以得到Tunnel ID。
  2. 根據ILM表的Tunnel ID找到對應的NHLFE表項。
  3. 檢視NHLFE表項,可以得到出接口、下一跳、出标簽和标簽操作類型。
  4. MPLS封包的處理方式根據不同的标簽值而不同。
  5. 如果标簽值>=16,則用新标簽替換MPLS封包中的舊标簽,同時處理TTL,然後将替換完标簽的MPLS封包發送給下一跳。
  6. 如果标簽值為3,則直接彈出标簽,同時處理TTL,然後進行IP轉發或下一層标簽轉發。

Egress的處理:通過查詢ILM表指導MPLS封包的轉發或查詢路由表指導IP封包轉發。

  • 如果Egress收到IP封包,則檢視路由表,進行IP轉發。
  • 如果Egress收到MPLS封包,則檢視ILM表獲得标簽操作類型,同時處理TTL。
  • 如果标簽中的棧底辨別S=1,表明該标簽是棧底标簽,直接進行IP轉發。
  • 如果标簽中的棧底辨別S=0,表明還有下一層标簽,繼續進行下一層标簽轉發。

MPLS對TTL的處理:

MPLS對TTL的處理包括MPLS對TTL的處理模式和ICMP響應封包這兩個方面。

MPLS對TTL的處理模式:

MPLS标簽中包含一個8比特的TTL字段,其含義與IP頭中的TTL域相同。MPLS對TTL的處理除了用于防止産生路由環路外,也用于實作Traceroute功能。

RFC3443中定義了兩種MPLS對TTL的處理模式:Uniform和Pipe。預設情況下,MPLS對TTL的處理模式為Uniform。

Uniform模式

IP封包經過MPLS網絡時,在入節點,IP TTL減1映射到MPLS TTL字段,此後封包在MPLS網絡中按照标準的TTL處理方式處理。在出節點将MPLS TTL減1後映射到IP TTL字段。如下圖所示:

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

Pipe模式

在入節點,IP TTL值減1,MPLS TTL字段為固定值,此後封包在MPLS網絡中按照标準的TTL處理方式處理。在出節點會将IP TTL字段的值減1。即IP分組經過MPLS網絡時,無論經過多少跳,IP TTL隻在入節點和出節點分别減1。如下圖所示:

MPLS基礎知識MPLS簡介MPLS基本結構工作過程MPLS标簽LSP的建立MPLS轉發MPLS對TTL的處理:

在MPLS VPN應用中,出于網絡安全的考慮,需要隐藏MPLS骨幹網絡的結構,這種情況下,對于私網封包,Ingress上使用Pipe模式。

ICMP響應封包:

在MPLS網絡中,當LSR收到TTL為1的含有标簽的MPLS封包時,LSR生成ICMP的TTL逾時消息。

  • 如果LSR上存在到達封包發送者的路由,則可以通過IP路由,直接向發送者回應TTL逾時消息。
  • 如果LSR上不存在到達封包發送者的路由,則ICMP響應封包将按照LSP繼續傳送,到達LSP出節點後,由Egress節點将該消息傳回給發送者。

通常情況下,收到的MPLS封包隻帶一層标簽時,LSR可以采用第一種方式回應TTL逾時消息;收到的MPLS封包包含多層标簽時,LSR采用第二種方式回應TTL逾時消息。

但是,在MPLS VPN中,ASBR(Autonomous System Boundary Router,自治系統邊界路由器)和HoVPN組網應用中的SPE(Superstratum PE or Sevice Provider-end PE,上層PE或營運商側PE),接收到的承載VPN封包的MPLS封包可能隻有一層标簽,此時,這些裝置上并不存在到達封包發送者的路由,則采用第二種方法回應TTL逾時消息。

參考文檔:華為産品文檔

繼續閱讀