MPLS 簡介

MPLS 全稱是 Multi-Protocol Label Switching —— 多協議標籤交換;MPLS 從中文名字中就可以看出兩個重點,分別是多協議和標籤交換。

多協議:MPLS 基於二層,在二層之上三層之下。同時該協議可以與其他上層協議互相配合。

標籤交換:MPLS 在三層之下意味著不需要數據進行三層轉發,同時 MPLS 會分配標籤,通過標籤來實現轉發平面的決策。

MPLS 產生背景

MPLS 早期是為了解決數據包轉發效率低下的問題而出現的。早期的路由器都是通過軟體的方式來進行報文轉發處理,並且硬體性能較差(現在的路由器會用CPU計算出一個不用遞歸下一跳的 FIB 表,然後用專門的硬體來根據 FIB 轉發數據)。而早期還有一種解決方案是 ATM 技術(此處不是指提款機(╯▔皿▔)╯),這種技術雖然轉發效率還不錯,但是技術比較複雜,部署難度和維護成本都很高。

於是 MPLS 在這種背景下橫空出世,MPLS 借鑒了 ATM 的標籤轉發和面向連接特點。憑著轉發效率的優勢 MPLS 很受客戶的歡迎。但是隨著晶元技術、硬體性能的提升,MPLS 的優勢漸漸褪去,轉發效率漸漸與 IP 轉發拉不開差距。現在,MPLS 已經被擴展到了新的應用領域,為網路提供其他的幫助,最常見的有 MPLS VPN 或 MPLS TE (流量工程)。

MPLS 網路結構

LSR (Label Switching Router)是標籤交換路由器,LSR 具有標籤分配和基於標籤轉發數據報文的能力。用戶的 IP 數據流進入 MPLS 域之後,報文會以標籤的方式經過每一台 LSR。為了轉發標籤的數據報文,每台 LSR 都會建立一張標籤轉發表,標籤轉發表就是通過標籤分發協議依據路由表產生和建立的。

LER (Label Edge ROuter)是標籤邊界路由器,LER 具有標籤分配能力。LER 有入站的 LER 和出站的 LER。入站 LER 負載對數據報文壓入標籤,然後轉發進入 MPLS 網路;出站的 LER 負責給離開 MPLS 網路的數據報文移除標籤,然後根據 IP 轉發表進行轉發。

LSP(Label Switching Path)是標籤轉發路徑。LSP 就是流量在進入 MPLS 後以及出 MPLS 之前所經過的隧道路徑,一條 LSP 的開端是入站 LER,結尾是出站 LER。這裡所說的 LSP 是一條單向的,也就是說數據回來的時候所走的 LSP 又是一條另外的 LSP。而 LSP 是支持嵌套的,即一個 LSP 可以建立在 另一條 LSP 的裡面。這種操作通常會在 ISP 運營商網路中使用,即數據報文中壓一層私網標籤,然後再壓一條公網標籤使其可以利用公網 MPLS 傳輸。LSP 有動態和靜態兩種建立方式,下文詳解。

FEC(Forwarding Equivalent Class)是轉發等價類,用來描述具有相同特徵的報文在轉發過程中被 LSR 以相同方式處理,也就是說一個 FEC 的數據報文走的是同一條 LSP。劃分 FEC 的方式又很多,比如去往相同目的前綴的報文就是一個 FEC ,還有五元組(原目IP、原目埠、協議)、VPN等。

MPLS 報文格式

MPLS 的報文格式很簡單,由 Label Value 、Exp 、 S 、 TTL 一共四個欄位組成,整個MPLS 欄位介於二層封裝和網路層封裝中間,一共 32 位。

Label Value 顧名思義用來表示標籤值,這個欄位由 20 位,意味著標籤值大小可表達範圍在 0 到 1048575 ,標籤值 0 到 15 是特殊用途的標籤,這裡不作詳細討論。

Exp 是一個 3 bit 的實驗欄位,在 MPLS 設計之初還沒有確定該欄位的作用,現在主要用來做 QoS。

S 位叫棧底位(BoS,Bootom of Stack)。只有在最靠近網路層封裝的 MPLS 欄位,S 位才會置為 1 ,其餘時候都是0。這種情況一般都是多個標籤嵌套,如前文 LSP 中的描述。而多層嵌套並不是 Label Value 欄位有多個,而是多個整體的 MPLS 欄位有多個,理論無限疊加。

TTL(Time to Live)該欄位與 IP 報頭中的 TTL作用、大小是一樣的,在 MPLS 網路中每進行一次標籤交換操作,最外層標籤中的 TTL 就減一,TTL 一旦減為 0,報文就因為防止環路的原因會被丟棄。IP 報文進入 MPLS 網路後,標籤的 TTL 值可以初始化為 255,也可以直接複製 IP 頭中的 TTL 值。

LSP 建立

LSP 可以靜態和動態建立。動態建立 LSP 是使用標籤分發協議(比如 LDP)建立,靜態就是手工配置,所以靜態 LSP 不需要使用任何標籤分發協議,沒有必要交互任何控制信息,資源開銷小。由於靜態 LSP 是由手工配置的,無法隨著網路拓撲變化而收斂,當網路出現故障後還需要管理員干預,管理相對比較麻煩。也許你會心想,既然顯得毫無用處,我為什麼還要寫這麼多來描述靜態的方式。這是因為靜態 LSP 可以避免像 LDP 故障導致 MPLS 業務流量丟失的情況,靜態可以保障 MPLS 中關鍵應用的數據業務連續性。

靜態 LSP:一條靜態 LSP 有三種角色,Ingress、Transit、Egress。Ingress 節點負責為接收到的 IP 報文壓入標籤並送入 LSP 隧道,Transit 節點負責以標籤交換的方式轉發報文,Egress節點負責一處報文中的標籤並將報文轉發至 IP 網路。手工配置的時候,前一節點出標籤的值等於下一個節點入標籤的值。

  • 在 Ingress 節點配置此 LSP 的目的地址、下一跳和出標籤的值。
  • 在 Transit 配置 LSP 的入介面、與上一節點出標籤相等的入標籤的值、對應的下一跳和出標籤的值。
  • 在 Egress 配置此 LSP 的入介面及與上一屆點出標籤相等的入標籤的值

從配置方法來說就可以看出,當為多條 LSP 以靜態的方式建立時,操作會相當的複雜和麻煩,所以靜態 LSP 配置只適合為關鍵業務提供保障。

當同一條 FEC 的 LSP 被靜態和動態的方式同時建立,這個時候會優先走動態,即使動態切換了線路,除非動態故障,否則只會按動態建立的 LSP 去轉發流量


LDP 的內容較多,留到下一章去寫;如果可能的話,下一章可能會把 MPLS VPN 和 三種跨域解決方案也寫上


推薦閱讀:
相关文章