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