MPLS(多協(xié)議標(biāo)簽交換) 顧名思義,它不考慮協(xié)議(多協(xié)議),使用標(biāo)簽(標(biāo)簽交換)在網(wǎng)絡(luò)中移動數(shù)據(jù)包。多年來,MPLS 一直是網(wǎng)絡(luò)運營商確保實時應(yīng)用程序可靠連接的首選技術(shù)。
MPLS 通過將標(biāo)簽應(yīng)用于數(shù)據(jù)包的報頭來封裝傳入的數(shù)據(jù)包。MPLS 域中的每個路由器都會查看 MPLS 標(biāo)簽以了解如何處理每個數(shù)據(jù)包,但其不查看或關(guān)心數(shù)據(jù)包中的內(nèi)容,它只關(guān)心標(biāo)簽。當(dāng)數(shù)據(jù)包離開 MPLS 域時,標(biāo)簽將被移除,由標(biāo)準(zhǔn) IP 路由接管。
可以看出,MPLS技術(shù)的核心就是標(biāo)簽交換。本文我們將從標(biāo)簽入手,逐步了解什么是MPLS。
MPLS 為什么要使用標(biāo)簽?
MPLS 為什么要添加標(biāo)簽?什么是標(biāo)簽?參考MPLS-LDP標(biāo)簽分發(fā)控制模式、通告模式及保留模式。
我們先看看VLAN 標(biāo)簽是什么樣,大概就知道什么是 MPLS 標(biāo)簽了。標(biāo)簽本身基本上只是數(shù)字,如下圖所示,第 4 行寫著“Label:299776”。
在此數(shù)據(jù)包捕獲中,標(biāo)簽被插入到“第 2 層”以太網(wǎng)報頭和“第 3 層”IP 報頭之間。這就是為什么有人說 MPLS 工作在“第2層半”。
這些數(shù)字,也就是這些標(biāo)簽,只對接收數(shù)據(jù)包的路由器有意義。本質(zhì)上,標(biāo)簽就像一條指令,這條指令通常做兩件事:
它告訴接收路由器如何轉(zhuǎn)發(fā)數(shù)據(jù)包
或者,它告訴接收路由器該數(shù)據(jù)包是特定 VPN 的一部分
當(dāng)一個標(biāo)簽用于在特定方向轉(zhuǎn)發(fā)數(shù)據(jù)包時,我們稱之為傳輸標(biāo)簽。當(dāng)一個標(biāo)簽用于告訴路由器該數(shù)據(jù)包屬于一個特定的 VPN 時,它被稱為服務(wù)標(biāo)簽,有時也稱為VPN 標(biāo)簽。MPLS VPN 讓許多客戶都可以使用相同的私有 IP 范圍,因為接收路由器不會查看目標(biāo) IP 地址。相反,VPN 標(biāo)簽會告訴路由器數(shù)據(jù)包屬于哪個客戶。
路由器如何學(xué)習(xí)這些標(biāo)簽?
IP 是一種尋址方案,需要其他協(xié)議在各處實際通告 IP。我們可以以類似的方式考慮 MPLS:MPLS 是一種標(biāo)簽方案,需要其他協(xié)議在各處實際通告這些標(biāo)簽。
先說說如何通告MPLS傳輸標(biāo)簽。有四種常見的方法,這四種協(xié)議以完全不同的方式工作,并且有不同的用例。
LDP(Label Distribution Protocol)代表標(biāo)簽分發(fā)協(xié)議。這是一個非常基本的協(xié)議,并且易于配置。流量將始終遵循 OSPF/IS-IS 指定的最佳路徑。在 MPLS 網(wǎng)絡(luò)中,兩個標(biāo)簽交換路由器(LSR)必須用在它們之間或通過它們轉(zhuǎn)發(fā)流量的標(biāo)簽上達(dá)成一致。
RSVP是資源預(yù)留協(xié)議。RSVP 相比LDP 需要手動配置,但優(yōu)勢在于它提供了大量的流量工程功能,能夠按照路由協(xié)議的要求以不同的方式移動流量,例如繞過帶寬問題進(jìn)行路由,或明確避免網(wǎng)絡(luò)中的某些鏈路。
分段路由是一種在 OSPF 或 IS-IS 內(nèi)部發(fā)布標(biāo)簽的方法,這意味著不需要運行額外的協(xié)議來通告標(biāo)簽。它可以實時告訴路由器使用哪個標(biāo)簽到達(dá)哪個目的地。通過將決策置于中央控制器中,可以獲得真正的網(wǎng)絡(luò)全局視圖,甚至在 OSPF 區(qū)域或 IS-IS 級別,以及不同的自治系統(tǒng)之間。
BGP-Labelled Unicast是一個特殊的 BGP 地址族,往往只用于一些非常特地的、更高級的場景。
MPLS VPN 標(biāo)簽幾乎都是在 BGP 中通告的。畢竟,如果不能在兩個路由器之間傳輸數(shù)據(jù)包,就不能在它們之間運行 VPN。
路由器如何處理這些標(biāo)簽?
兩個路由器之間的對話可能是這樣的,路由器 B 對路由器 A 說“如果你想讓我將數(shù)據(jù)包轉(zhuǎn)發(fā)給路由器Z,包裹寄給我的時候貼上標(biāo)簽123456”。然后路由器 B 會對自己編程,如果數(shù)據(jù)包帶有標(biāo)簽 123456,則該數(shù)據(jù)包會始終從特定接口發(fā)送出去。
路由器 B 并不知道這個傳出接口是不是通往路由器 Z 的“最佳”路徑。當(dāng)路由器 B 將此數(shù)據(jù)包發(fā)送到路由器 C 時,路由器 C 也將根據(jù)標(biāo)簽知道如何處理該數(shù)據(jù)包,路由器 D 和路由器 E 等也會如此,一直到終點目的地。只要從一端到另一端有一個標(biāo)簽交換路徑,沿途的路由器就能夠成功地將數(shù)據(jù)包從 A 傳輸?shù)?Z 。
路由器 B 甚至可能在發(fā)送標(biāo)簽時將標(biāo)簽更改為其他內(nèi)容。在 LDP 和 RSVP 中,標(biāo)簽通常只對路由器本身有意義,沿途的每個路由器都可以自己決定它希望前一跳使用什么標(biāo)簽。當(dāng)標(biāo)簽沿途發(fā)生變化時,我們稱之為“交換”標(biāo)簽。例如,路由器 A 將標(biāo)簽為 123456 的數(shù)據(jù)包發(fā)送到路由器 B ,路由器 B 在將其發(fā)送到路由器 C 之前可以將其“交換”為標(biāo)簽 345678。
(相比之下,Segment Routing 中的某些標(biāo)簽是全局的,因此它不是MPLS 的通用規(guī)則。參考MPLS Segment Routing)
上面的例子要理解的關(guān)鍵是,當(dāng)路由器 B 收到數(shù)據(jù)包并將其轉(zhuǎn)發(fā)到路由器 C 時,路由器 B 根本沒有查看目標(biāo) IP。相反,是傳輸標(biāo)簽告訴路由器 B 如何處理數(shù)據(jù)包。
因為沒有查看底層目標(biāo)地址,所以協(xié)議可以是 IP、IPv6 或任何其他協(xié)議,所以說是多協(xié)議標(biāo)簽交換。
向數(shù)據(jù)包添加標(biāo)簽有何意義?
到目前為止所說的一切聽起來都非常像常規(guī) IP 路由。如果沒有 MPLS,路由器也會查看目標(biāo) IP 地址,然后將數(shù)據(jù)包發(fā)送到下一跳。那么MPLS 有什么意義呢?
如果將網(wǎng)絡(luò)設(shè)置為每個路由器都知道整個網(wǎng)絡(luò)中的每個 IP 地址,那么路由器 B 肯定可以從路由器 A 接收數(shù)據(jù)包,查看目標(biāo)地址,檢查自己的路由表,找到“最佳”路線,然后發(fā)送數(shù)據(jù)包。
但這里有一個問題:如果不想讓一切都發(fā)送到所謂的“最佳”路徑,會發(fā)生什么?
例如,如果所有內(nèi)容都沿著一條“最佳”路徑發(fā)送,則該鏈接可能會開始被大量使用,甚至可能達(dá)到極限。很可能會有其他根本沒有被使用的潛在路徑,最好將一些選擇性流量發(fā)送到次優(yōu)路徑,以充分利用網(wǎng)絡(luò)。
當(dāng)存在另一條不太好且?guī)捒捎玫穆窂綍r,該如何解決鏈路飽和的問題?
如果從路由協(xié)議的角度來看,有兩條或多條到達(dá)目的地的路徑同樣“好”,那么可以利用ECMP 或等價多路徑,對流量進(jìn)行負(fù)載平衡,并充分利用鏈接。
SD-WAN可以根據(jù)目的 IP 地址以外的質(zhì)量,有選擇地將流量路由到不同的鏈路,也許是基于應(yīng)用程序本身,也可能是源 IP 地址。這對分支機(jī)構(gòu)來說非常好,但對于每秒有很多千兆流量的服務(wù)提供商規(guī)模的網(wǎng)絡(luò),以及數(shù)以萬計的用戶前往數(shù)百萬目的地的網(wǎng)絡(luò)來說,很難真正的擴(kuò)展。
我們需要的是某種可擴(kuò)展的、功能豐富的協(xié)議,它允許以選擇的任何方式發(fā)送流量,而不總是遵循“最佳”路徑。
幾十年前,這個問題正是服務(wù)提供商和大型企業(yè)面臨的問題之一,而MPLS 就是解決答案。
標(biāo)簽交換路徑
基于標(biāo)簽轉(zhuǎn)發(fā)數(shù)據(jù)包的系統(tǒng)的優(yōu)點在于,中轉(zhuǎn)路由器不需要知道,甚至不需要關(guān)心數(shù)據(jù)包上的 IPv4 或 IPv6 地址。它們只關(guān)心數(shù)據(jù)包進(jìn)入了帶有標(biāo)簽 X 的接口,因此應(yīng)該從帶有標(biāo)簽 Y 的不同接口發(fā)送出去,以便路徑上的下一個路由器知道如何處理它。
我們稱這個端到端標(biāo)記路徑為LSP,或標(biāo)簽交換路徑,參考SR-MPLS:多協(xié)議標(biāo)簽交換的段路由。
從路由器 1 開始檢查 LSP ,一直到路由器 10。為了方便起見,我們假設(shè)它是通過RSVP創(chuàng)建的。給 RSVP LSP 一個名字和一個目的地,結(jié)果如下所示:
LSP 是單向的,如果要使流量在真實網(wǎng)絡(luò)中正常工作,需要在相反的方向上建立第二個 LSP。但為了簡單演示,我們只關(guān)注一個 LSP 。
如上圖所示:
路由器 1 和路由器 10 是PE 路由器,或Provider Edge。
路由器 2、3、4 和 5 都是中轉(zhuǎn)路由器,簡稱為P(Provider)路由器。
路由器 1 稱為首端或入口路由器,將 LSP 想象成流量進(jìn)入的隧道。
同樣,路由器 10 稱為尾端或出口路由器。
假設(shè)R1 和 R10 正在進(jìn)行BGP,R10 對 R1 說:“如果你想到達(dá) 69.69.69.0/24,請將流量發(fā)送給我。”之后,R10 會將通告其環(huán)回為該前綴的下一跳。LSP 進(jìn)入R10 的環(huán)回。
路由器 2、3、4 和 5 不需要運行 BGP,它們只查看數(shù)據(jù)包上的標(biāo)簽,不查看 IP 地址。然后計算出需要從哪個接口傳出,相應(yīng)地交換標(biāo)簽。
MPLS VPN
假設(shè)客戶需要為其各個辦公室購買 100 個 WAN 鏈接,但要求將其放在自己的專用網(wǎng)絡(luò)中,不要放在公共互聯(lián)網(wǎng)上。服務(wù)提供商該如何實現(xiàn)這一點?
可以通過在 WAN 鏈接的末端添加一些額外的配置。
服務(wù)提供商會在一個路由器內(nèi)部創(chuàng)建多個“虛擬”路由表,這些路由表相互獨立,互不通信??蛻粲凶约簩iT的路由表,稱為 VRF,代表Virtual Routing and Forward。
除了客戶和服務(wù)提供商之外,沒有人可以“看到”流量。客戶之間無法相互通信,因為他們在完全獨立的路由表中。
核心路由器不運行 BGP,它們不知道涉及的 IP,甚至不查看 IP 標(biāo)頭。它們只看標(biāo)簽,然后進(jìn)行相應(yīng)地轉(zhuǎn)發(fā)。MPLS VPN 的工作方式完全相同。VPN 只需要被邊緣路由器知道即可??梢匝刂鴺?biāo)簽交換路徑發(fā)送 VPN 流量,這意味著核心設(shè)備甚至不需要知道 VPN 的存在,它們只需要知道將流量發(fā)送到哪個遠(yuǎn)程 PE。
但這里有一個問題:在剛才看到的拓?fù)渲?,如?R1 發(fā)送一個數(shù)據(jù)包到私有 IP 地址 10.0.6.9,在數(shù)百個 VPN 客戶中,R10 如何知道這個前綴屬于哪一個?
這就是標(biāo)簽堆棧思想由來。我們可以在數(shù)據(jù)包內(nèi)添加第二個標(biāo)簽,告訴 R10 該數(shù)據(jù)包屬于哪個 VPN。數(shù)據(jù)包捕獲如下:
以太網(wǎng)報頭
外層傳輸標(biāo)簽<--逐跳更改
內(nèi)部 VPN 標(biāo)簽 <–僅對 R10 有意義
IP報頭
TCP/UDP 等報頭
有效載荷
沿途的每一跳只查看外部標(biāo)簽,然后當(dāng)數(shù)據(jù)包到達(dá) R10 時,該 PE 可以查看內(nèi)部 VPN 標(biāo)簽并確定它的真正目的地。
這個 MPLS 標(biāo)簽保留在服務(wù)提供商核心中,從 PE 到現(xiàn)場客戶路由器的實際 WAN 鏈路將是純 IP。只有在穿過服務(wù)提供商網(wǎng)絡(luò)時才需要標(biāo)簽:從服務(wù)提供商到客戶的流量沒有標(biāo)簽。
-
路由器
+關(guān)注
關(guān)注
22文章
3790瀏覽量
115601 -
MPLS
+關(guān)注
關(guān)注
0文章
136瀏覽量
24510 -
移動數(shù)據(jù)
+關(guān)注
關(guān)注
0文章
42瀏覽量
10771
原文標(biāo)題:到底什么是MPLS技術(shù)?
文章出處:【微信號:5G通信,微信公眾號:5G通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
MPLS 和 SD-WAN 的關(guān)系
MPLS與傳統(tǒng)路由的優(yōu)勢
MPLS 與 VPN 的區(qū)別
功率器件熱設(shè)計基礎(chǔ)知識
TWL6030氣體監(jiān)測基礎(chǔ)知識

Verilog HDL的基礎(chǔ)知識

負(fù)載開關(guān)基礎(chǔ)知識

全新的半導(dǎo)體基礎(chǔ)知識

評論