MPLS與LDP從入門到了解


  多協議標簽交換(MPLS)是一種用於快速轉發數據包的技術,它的出現就是為了提高轉發效率。因為IP轉發大多靠軟件進行,在轉發的每一跳都要進行至少一次最長匹配查找,操作復雜導致轉發速度比較慢。有些廠商借鑒ATM的轉發方式來簡化IP轉發過程,由此產生了一種結合IP和ATM的優勢於一身的新技術MPLS。在當時的條件下這可以說是一個很大的創舉,其優勢也是顯而易見的,但后來IP轉發領域有很多新技術產生,如硬件轉發與網絡處理器的出現,導致MPLS的速度優勢體現不出來,純MPLS轉發在實際應用中幾乎沒有用武之地。

  雖然MPLS在實際轉發應用中較少用到,但是由於其靈活可擴展,因此出現了許多基於MPLS的新技術,比如BGP/MPLS VPN、流量工程等技術。當前,MPLS越來越受重視,成為當今網絡技術的熱點,還有一些新的應用需求也正在利用MPLS來實現。

1 MPLS基礎概念

  MPLS協議處於二層和三層之間,也就是MAC頭和IP報文之間,是一個2.5層的協議。MPLS協議格式如下圖所示:

(圖片來自於:MPLS及LDP協議基礎)

  • Label:標簽值,20bit,用於轉發數據。
  • Exp:流量等級,也成為TC,3bit。
  • S:標志位,表示棧底協議,1bit。
  • TTL:存活時間,8bit,與IP報文中的TTL值相似。

MPLS中的一些概念

  • FEC:轉發等價類,MPLS將具有相同特征值(目的地址相同或服務等級相同)的報文歸為一類。
  • 標簽:本地意義的標識符,用於唯一標識一個報文所屬的FEC,一個標簽代表一個FEC。
  • LSP:標簽轉換路徑,同一個FEC在MPLS網絡經過的路徑。
  • 標簽轉發表:與IP網絡中的FIB(轉發信息庫)類似,稱為LFIB,LFIB中的信息有InLabel(入標簽)、OutLabel(出標簽)、出接口、操作類型(Pop/Swap)、下一跳等。

 

  MPLS中有控制平面和轉發平面,控制平面負責標簽分配,EFC標簽映射、標簽轉發表建立、LSP建立等,相關的協議LDP、MP-BGP等;轉發平面根據LFIB進行報文的轉發。

  MPLS網絡的基本單元是LSR。LSP建立的過程就是標簽和FEC的綁定,在LSR上建立LFIB的過程。LSP分為靜態LSP和動態LSP,靜態LSP就是手動配置LSP的出入標簽、下一跳等,適合網絡拓撲簡單且穩定的小型網絡;動態建立LSP就是基於LDP或者MP-BGP等協議建立的LSP,建立過程是:下游LSR根據目的地址划分FEC,為特定FEC分配標簽,將FEC標簽的綁定關系告知上游LSR,上游LSR根據綁定關系建立LFIB,報文轉發路徑上所有LSR都為該FEC建立轉發表項后,就成功建立了轉發FEC的LSP。

  基於MPLS的L2VPN將用戶二層數據封裝成可以在MPLS網絡或IP網絡中傳輸的分組,通過IP路徑或MPLS隧道轉發封裝后的分組,從用戶角度來看,MPLS或IP網絡就是一個二層交換網絡。

  一個MPLS報文可以有多個Label,靠近二層頭的Label為棧頂Label,靠近IP報文的Label為棧底Label,LSR執行Label交換時總是基於棧頂Label。有多個Label時,每個Label都包括以上完整的32bit,並不是其它的Label只包括20bit的Label值,如下圖所示:

 

(圖片來自於:MPLS及LDP協議基礎)

2 MPLS轉發流程

  MPLS技術綜合了第二層交換和第三層路由的功能,將第二層的快速交換和第三層的路由有機地結合起來。MPLS網絡邊緣的LER主要完成以下工作:三層路由、分析IP包頭用於決定對應的FEC和標簽交換路徑(LSP),進而標記報文。而在MPLS網絡核心的LSR采用基於標簽的第二層交換,工作相對較簡單。從這里就可以看出MPLS的好處,雖然處在MPLS網絡邊緣的LER工作較復雜,但處在核心的LSR只需要像FR或ATM交換機那樣執行二層交換就可以了,根本不需要最長匹配和多次查找。

典型的MPLS轉發過程如下:

  • Step 1: 所有LSR啟用傳統路由協議(OSPF、IS-IS等),在LSR中建立IP路由表
  • Step 2: 由LDP結合IP路由表來建立LSP
  • Step 3: Ingress LER接收IP包,分析IP包頭並對應到FEC,然后給IP包加上標記,根據標簽轉發表中的LSP將已標記的報文送到相應的出接口。
  • Step 4:LSR收到帶有標記的報文,將只分析標記頭,不關注標記頭之上的部分,根據Label頭查找LSP,替換Label,送到相應的出接口
  • ……………..(中途轉發過程與Step 4類似)
  • Step n-1:倒數第二跳LSR收到帶有標記的報文,查找標記轉發表,發現對應的出口標簽為隱式空標簽或顯式空標簽,彈出標簽,發送IP報文到最后一跳LSR
  • Step n:在最后一跳Egress LER上執行三層路由功能,根據報文的目的IP地址轉發

 

3 LDP協議基礎

  LDP協議在[RFC 3036]中詳細定義,LDP的協議報文除Hello報文基於UDP外,其它報文都是在TCP之上,端口號為646。當發生傳輸丟包時,能夠利用TCP協議提供錯誤指示,實現快速響應和恢復。與BGP相似,這種基於TCP的可靠連接使得協議狀態機較為簡單。

LDP報文格式

LDP PDU 頭部

版本號:16bit,目前LDP只有一個版本,版本號始終為1;

PDU長度:為16bit,值為LDP PDU頭部以后的數據部分的長度,不包括LDP PDU頭部;

LDP Id:長度為48bit,前32bit為LSR-ID,后16bit為標記空間標志,全局空間為“0”,局部接口空間為“1”。如:收到的LDP PDU中的LDP-ID為192.168.1.2:0,表示對方的LSR-ID為192.168.1.2,標簽空間為全局空間。

LDP 消息格式

U:這一位總是為“0”,代表可識別的消息,為“1”代表不可識別的消息;

類型域:協議根據這個域識別不同的消息;

長度域:指示出長度域之后的數據部分的長度;

消息ID:用來唯一地標識這個消息,如果消息為Notification,則ID與導致產生Notification的消息ID相關聯。

 

LDP消息種類

  按照功能來划分,LDP消息可分為4種類型消息:

  • 鄰居發現消息:在啟用LDP協議的接口上周期性發送該消息
    • Hello消息
  • 會話建立和維護消息:用來建立和維護LDP會話
    • Initialization消息
    • KeepAlive消息
  • 標簽分發消息:用來請求、通告及撤銷標簽綁定
    • Address message
    • Address Withdraw message
    • Label request message
    • Label mapping message
    • Label withdraw message
    • Label release message
    • Label abort request message
  • 錯誤通知消息:用來提示LDP對等體在會話過程中的重要事件
    • Notification消息

LDP相關概念

標簽空間

  可分為全局標簽空間和接口標簽空間,全局標簽空間表示LSR為特定目的地的FEC產生唯一的Label,接口標簽空間表示LSR在每個接口上為特定目的地的FEC產生唯一的Label。在幀模式的鏈路上為全局標簽空間,在信元模式的鏈路上為接口標簽空間。LDP報文中的LDP-ID域中指示出標簽空間值。

上游LSR和下游LSR

  對於某FEC(圖示中的IPv4前綴)來說,C是B的下游路由器,A是B的上游路由器

倒數第二條彈出

  在實際應用當中(如MPLS VPN),對於Egress LSR在彈出最外層Label后還需要進行其它較復雜的三層工作。而事實上最外層標簽的作用在MPLS VPN的應用中只是為了將報文送到Egress LSR。因此,在倒數第二跳LSR已知報文下一跳的情況下,可以將最外層的標簽彈出后轉發到最后一跳LER,而不必進行標簽替換。這樣使得最后一跳LSR的工作相對簡單了一些。因此在 [RFC 3032] 中規定,最后一跳LSR發給倒數第二跳LSR的標簽為隱式空標簽“3”。據此,收到標簽“3”的上游LSR就知道自己是該FEC的倒數第二跳,就知道自己在用該LSP轉發Label報文時,應執行倒數第二跳彈出。

 

(倒數第二跳彈出)

 

標簽分發方式

1 DU(Downstream Unsolicited)

  下游LSR如果工作在DU方式(下游主動分發)下將根據某一觸發策略向上游LDP鄰居主動分發標簽。下圖中LSR-C標簽分發觸發策略是為直連32位掩碼的路由分配標簽,因此LSR-C通過Label mapping message向上游LDP鄰居主動通告自己的直連路由172.16.1.1/32的標簽,Comware系統缺省工作在DU方式。

2 DOD(Downstream On Demand)

  下游LSR如果工作在DOD方式(下游按需分發)下,只有在接收到上游LDP鄰居的Label request message后才回應Label mapping message分發標簽(針對標記請求消息所指定的FEC)。下圖中LSR-C工作在DOD模式下,LSR-A的觸發策略生效(LSR-A轉發到172.16.1.0/24的報文流量達到設定閥值)后將向172.16.1.0/24的下游發送標記請求消息Label request message(請求172.16.1.0/24的標簽)。最終LSR-C收到請求,發送Label mapping message響應。

標簽控制協議

1 獨立控制方式

  LSR如果工作在獨立控制方式下,如果標簽分發方式是DU,即使在沒有獲得下游標簽的情況下也會直接向上游分發標簽。在標簽控制的方式上顯得很“獨立”,不依賴下游LSR;如果標簽分發方式是DOD,發送標簽請求的LSR的直連上游LSR會直接回應標簽,而不必等待來自最終下游的標簽。

  在上圖中,在LSR-B上采用獨立控制方式。LSR-B路由表中有172.16.1.0/24的路由,但沒有收到下游來的標簽綁定。由於LSR-B工作於獨立控制方式,所以對路由表中的所有路由都向上游發送標簽。繼而,無論LSR-A工作在獨立模式還是有序模式,將向上游繼續發送標簽。這時,如果有目的IP為172.16.1.0/24的報文進入LSR-A,它將采用MPLS轉發。但數據到LSR-B后,由於沒有關聯172.16.1.0/24的LSP,所以采用傳統IP轉發。

2 有序控制方式(Odered)

  LSR如果工作在有序控制方式下,如果標簽分發模式為DU,則只有收到下游LSR分發的標簽時才會向自己的上游LSR通告標簽,如果沒有收到下游的標簽映射則不向上游LSR通告。Comware系統缺省工作在有序方式。

  在上圖中,LSR-B路由表中有172.16.1.0/24的路由,但由於LSR-B沒有收到下游的標簽且工作在有序模式,因而不向上游通告關於172.16.1.0/24的Label。如果LSR-A收到目的IP為172.16.1.0/24的報文將采用傳統IP轉發。可以看出,在有序控制方式下,是否向上游LSR分發標簽取決於自己是否收到下游LSR的標簽。

 

標簽保留方式

1 自由保留方式

  收到無效的Label通告后(沒有對應的IP路由或路由通告與Label通告的下一跳不一致),雖然不生成LSP,但在標簽綁定表里存儲,並且LSR向上游通告其它FEC的Label綁定時也不占用這些標簽,這種方式的優點是LSR應對網絡拓撲變化的響應較快,缺點是浪費標簽,所有不能生成LSP的Label通告都需要保留。

  在上圖中LSR-A工作於自由保留方式,對於FEC為172.16.1.0/24將生成下一跳為LSR-B的LSP,LSR-C發來的Label通告將保留。如LSR-A和LSR-B之間的直連鏈路down掉,對於FEC:172.16.1.0/24的將很快生成下一跳為LSR-C的LSP。

 

2 保守保留方式

  工作於保守保留模式的LSR收到無效的Label通告后將不存放到標簽綁定表里,在向上游通告Label時可以自由使用這些標簽。保守保留模式的缺點是對拓撲變化的響應較慢,優點是節省標簽。

 

  在上圖中,LSR-A工作於保守保留模式,對於FEC為172.16.1.0/24將生成下一跳為LSR-B的LSP,LSR-C發來的Label通告將不保留。如LSR-A和LSR-B之間的直連鏈路down掉,對於FEC:172.16.1.0/24將不能很快生成下一跳為LSR-C的LSP。

 

PS:最近杭州華三comware部門在大量招人,有意向者可發簡歷到luo.xiangnan@h3c.com,LZ不是HR,LZ可以幫內推,謝謝~

 

參考:

  1、MPLS及LDP協議基礎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM