本文編譯自networkfuntimes,作者Juniper Network網絡工程師Chris。
編者按:盡管 MPLS 技術已經相當成熟,有關它的文章數不勝枚舉,涵蓋了從基本原理到 SR-MPLS 等方方面面。然而,令人意外的是,實際上大多數網絡工程師并沒有真正理解 MPLS。Juniper Network網絡工程師Chris通過他的個人經歷對此進行了闡述。
失敗的 MPLS 面試
大約13年前,我在一家ISP公司從事二線支持工作。每天,我都在處理被稱作“MPLS電路”的客戶問題。當時,我并不明白這究竟意味著什么,但我清楚自己每天都在解決這些問題。于是,我決定參加一次與MPLS相關的工作面試。
我至今仍記得我的第一次面試。第一個問題是:“如何使用MPLS構建BGP-free core”。
我一頭霧水。
我對面試官的問題毫無頭緒,接下來又被問及流量工程和RSVP等問題……整個面試過程讓我感到十分困惑。原來我對“MPLS”的理解完全錯了。
那次面試讓我認識到,當人們談論“購買MPLS電路”時,實際上是在使用MPLS這個術語來特指MPLS的一個具體用例,而非更廣泛的技術概念。
根據我多年來的經驗,你現在也很有可能正在犯這個錯誤。
認知錯誤
MPLS在實質上是支撐幾乎所有互聯網服務提供商的技術。它并非一種會很快被取代的技術,事實上,它每年都在不斷改進。
然而,每當提到MPLS時,總會有人聲稱“SD-WAN將取代MPLS”。但事實上,他們所指并非真正的MPLS,而是MPLS VPN,尤其是第三層MPLS VPN。接下來,我們將詳細探討這一誤解的含義,以及兩者之間的區別。
正是因為這種誤解,很多人不再深入學習MPLS。他們聽說這是一種即將被“SD-WAN取代”的技術,于是錯失了MPLS背后實際、更廣泛含義的技術。
那么,MPLS 究竟是什么?
這個問題的答案很長。
MPLS 是一種服務提供商用來管理網絡流量的技術。
通常,路由器會根據目標 IP 地址來轉發數據包。然而,在大型網絡中,特別是互聯網服務提供商的網絡中,這種簡單的方式就不夠用了。
首先,這些網絡需要處理大量的路由信息,每個路由器都必須知道整個互聯網的路由信息,以便能夠正確地轉發數據包。此外,服務提供商可能希望為不同的流量指定不同的路徑,而不是總是選擇最短路徑。
為了實現這一點,我們可以在網絡的兩端設置兩臺路由器,并通過一個隧道來傳輸數據。這個隧道可以沿著我們指定的路徑,或者根據路由器的約束條件計算出的路徑傳輸數據包。
隧道傳輸數據包的一種方式是在數據包上添加一個標簽,該標簽告訴下一個路由器該數據包應該如何轉發。這種標簽的好處是接收路由器不需要查看目標 IP 地址,只需要根據標簽來進行轉發。
例如,下圖中有十個路由器,R1 和 R5 之間有兩條隧道。藍色隧道采用最短路徑,可以專用于最重要的流量。紅色隧道采用較長的路徑,可以用于不妨礙最重要流量的best-effort流量。
MPLS(多協議標簽交換)就是通過標簽交換來實現這一點的技術。
它允許在數據包上添加標簽,并根據這些標簽來轉發數據包,而不是根據目標 IP 地址。這樣一來,我們就可以在大型網絡中更有效地管理流量,并為不同的流量分配不同的路徑。
看到這里有人想問,為什么需要隧道?
原因有很多,以下是 MPLS 隧道的一些潛在用例:
1. BGP-free core:在核心路由器上運行時,不需要存儲完整的互聯網路由表,只需根據標簽來轉發數據包。
2. 優先級隧道:創建采用最佳路徑的高優先級隧道,以及采用較長路徑到達目的地的低優先級隧道,通過將流量映射到這些隧道,可以將高優先級和低優先級的流量分開。
3. 動態路徑調整:可以在檢測到網絡擁塞問題時動態更改路徑。
4. 資源優化:自動將低優先級隧道移動到不同的路徑,以確保重要隧道能夠訪問最佳資源。
5. IPv4 到 IPv6 隧道:在 IPv4 核心上傳輸 IPv6 流量。
6. 多播隧道:在核心中運行多播隧道,如為客戶提供 IPTV。
7. VPN 隧道:通過核心網對客戶的三層或二層 VPN 流量進行隧道傳輸。
8. 連接服務提供商站點:大型服務提供商可以將較小服務提供商的兩個站點連接在一起,使兩個站點看起來像是合二為一,而較大的服務提供商則充當這些站點之間的隱形隧道。
這些只是 MPLS 在現代服務提供商網絡中的一小部分基本用例。
標簽交換路徑
在前面的討論中,我們提到了許多關于“隧道”的內容,實際上,“隧道”的另一個名稱就是“標簽交換路徑”,而創建隧道的協議有很多種。
其中之一是LDP標簽分發協議(Label Distribution Protocol)。LDP可以創建遵循最佳路徑度量的隧道,同時也可以執行IPv6隧道、客戶VPN隧道以及無BGP核心等操作。
此外,還有RSVP源預留協議(Resource Reservation Protocol),它以其流量工程功能而聞名。
另一種較新的方法是分段路由(Segment Routing),特別是SR-MPLS,它也提供了上述許多功能。
MPLS允許在數據包上添加標簽,然后根據這些標簽來轉發數據包。MPLS與BGP的結合可以為整個互聯網賦能,因此MPLS將在很長一段時間內繼續存在。
“網絡總是在變化,沒有人知道未來會發生什么,但如果一個18歲的年輕人今天開始在服務提供商行業工作,并在退休后仍然使用MPLS,那一點也不令人驚訝。這正顯示了MPLS對現代互聯網的重要性!”
人們認為 MPLS 意味著什么?
MPLS的一個用例是通過核心網隧道傳輸客戶VPN流量。
想象一下,一個客戶在全國各地有數十個站點。每個站點都有至少一個私有IP地址范圍的LAN,并且需要連接到其他站點的各個LAN。這種連接可以是全網狀的,每個站點都可以訪問其他所有站點,也可以只是在幾個選定的站點之間,或者只是從總部中心向外擴展。
由于運行 MPLS 的服務提供商只查看數據包上的標簽,而不是 IP 本身,這使得服務提供商能夠使用 MPLS 為此類客戶提供 VPN 服務。客戶流量可以使用唯一的 MPLS VPN 標簽進行標記,然后通過標簽交換路徑進行隧道傳輸。隧道另一端的接收服務提供商路由器將該 VPN 標簽映射到特定客戶,從而使該客戶的流量在邏輯上與任何其他客戶(甚至是使用完全相同的私有 IP 的客戶)分開。
一般來說,MPLS VPN 有兩種“類型”。
一種是“三層VPN”(有時稱為L3VPN、IPVPN或VPNv4),服務提供商了解每個站點的LAN范圍,并在自己的網絡中發布它們,將它們標記為屬于特定客戶VPN。不論是用BGP、OSPF,或者可能只用靜態路由,服務提供商的邊緣路由器都有一個用于該客戶VPN的三層路由表。
另一種是“二層VPN”,服務提供商不學習第三層IP范圍,而是執行以下兩項操作之一:
1)可以充當將兩個站點連接在一起的虛擬線路,以便從一端進入的幀通過隧道傳輸到另一端。服務提供商不需要在這里學習MAC地址,因為從一端進入的所有流量都會在另一端發出。
2)充當虛擬交換機,服務提供商實際上可以在其中學習MAC地址。對于托管WAN電路的現場客戶設備而言,它可以直接獲知其他站點設備的MAC地址。但實際上,就像物理交換機一樣,服務提供商正在無形地檢查流量,了解所有MAC地址的位置,并相應地轉發和洪泛流量。VPLS(虛擬專用LAN服務)和EVPN(以太網VPN)是實現這一目的的兩種不同方式。
“MPLS 電路”
不知道從什么時候開始,MPLS電路(MPLS circuits)這個詞被用來代指MPLS VPN。
有趣的是,通過這些所謂的MPLS電路傳輸的數據包實際上并不攜帶任何MPLS標簽!標簽只出現在網絡的服務提供商部分。客戶現場路由器根本不支持MPLS。相反,WAN電路的服務提供商端的接口將從公共互聯網中取出,并放置到客戶的私有路由實例中。然后,服務提供商使用MPLS在其網絡中傳輸VPN流量。
因此,嚴格來說,MPLS電路并不涉及任何MPLS技術。
這種誤用的結果是,許多網絡工程師錯誤地認為“MPLS”這個術語只有MPLS VPN 和 L3VPN一個含義。他們也不了解標簽、標簽交換路徑、LDP 或 RSVP等相關概念。
“SD-WAN 是 MPLS 殺手?”
自2010年代以來,關于“SD-WAN是MPLS的殺手”的言論層出不窮。
很多人只熟悉MPLS L3VPN,就宣稱MPLS即將退出歷史舞臺,因為他們沒有意識到MPLS一詞還有另一個更廣泛的含義。
我已經記不清我寫過多少篇關于MPLS流量工程或BGP-free core的文章,但還是有很多人評論“我不認為MPLS有未來”或“我認為SD-WAN將取代MPLS”。
然而,MPLS不會很快消失。
就其價值而言,我不認為SD-WAN會“殺死”MPLS VPN。SD-WAN和MPLS VPN都有各自的用例,各有優缺點。只能說隨著時間的推移,一種解決方案可能會比另一種更受歡迎。
審核編輯 :黃飛
評論
查看更多