一、MPLS概述
MPLS的定義
MPLS(Multiprotocol Label Switching,多協(xié)議標(biāo)簽交換)起源于IPv4(Internet Protocol version 4,因特網(wǎng)協(xié)議版本4),最初是為了提高轉(zhuǎn)發(fā)速度而提出的,其核心技術(shù)可擴(kuò)展到多種網(wǎng)絡(luò)協(xié)議,包括IPv6(Internet Protocol version 6,因特網(wǎng)協(xié)議版本6)、IPX(Internet Packet Exchange,網(wǎng)際報(bào)文交換)和CLNP(Connectionless Network Protocol,無(wú)連接網(wǎng)絡(luò)協(xié)議)等。MPLS中的“M”指的就是支持多種網(wǎng)絡(luò)協(xié)議。
MPLS是一種IP(Internet Protocol)骨干網(wǎng)技術(shù)。MPLS在無(wú)連接的IP網(wǎng)絡(luò)上引入面向連接的標(biāo)簽交換概念,將第三層路由技術(shù)和第二層交換技術(shù)相結(jié)合,充分發(fā)揮了IP路由的靈活性和二層交換的簡(jiǎn)捷性。
它實(shí)際上是一種隧道技術(shù)。這種技術(shù)不僅支持多種高層協(xié)議與業(yè)務(wù),而且在一定程度上可以保證信息傳輸?shù)陌踩浴?/p>
當(dāng)下MPLS存在的意義
解決BGP的路由黑洞
MPLS VPN
MPLS TE 流量工程
二、MPLS相關(guān)概念
轉(zhuǎn)發(fā)等價(jià)類
MPLS作為一種分類轉(zhuǎn)發(fā)技術(shù),將具有相同轉(zhuǎn)發(fā)處理方式的分組歸為一類,稱為FEC(Forwarding Equivalence Class,轉(zhuǎn)發(fā)等價(jià)類)。相同F(xiàn)EC的分組在MPLS網(wǎng)絡(luò)中將獲得完全相同的處理。通常對(duì)一個(gè)FEC分配唯一的標(biāo)簽。
FEC的劃分方式非常靈活,可以是以源地址、目的地址、源端口、目的端口、協(xié)議類型或VPN等為劃分依據(jù)的任意組合。例如:
屬于某特定組的組播報(bào)文
目的IP地址匹配了某一個(gè)特定前綴的報(bào)文
根據(jù)DCSP字段,有相同QOS策略的報(bào)文
MPLS VPN中,屬于同一個(gè)VPN的報(bào)文
標(biāo)簽
標(biāo)簽是一個(gè)長(zhǎng)度固定,僅具有本地意義的短標(biāo)識(shí)符,用于唯一標(biāo)識(shí)一個(gè)分組所屬的FEC。
MPLS domain
LSR構(gòu)成的網(wǎng)絡(luò)區(qū)域稱為MPLS域(MPLS Domain) ,是MPLS的工作半徑。
標(biāo)簽交換路由器
LSR(Label Switching Router,標(biāo)簽交換路由器)是MPLS網(wǎng)絡(luò)中的基本元素,所有LSR都支持MPLS技術(shù)。
標(biāo)簽邊界路由器
LER(Label Edge Router,標(biāo)簽邊界路由器)可以轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)入MPLS域,也可以轉(zhuǎn)發(fā)IP包進(jìn)入或離開(kāi)MPLS域。
在MPLS域中LSR是轉(zhuǎn)發(fā)帶標(biāo)簽的數(shù)據(jù)包,LER可以轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)入MPLS域,也可以轉(zhuǎn)發(fā)IP包進(jìn)入或離開(kāi)MPLS域。
標(biāo)簽交換路徑
一個(gè)轉(zhuǎn)發(fā)等價(jià)類在MPLS網(wǎng)絡(luò)中經(jīng)過(guò)的路徑稱為L(zhǎng)SP(Label Switched Path,標(biāo)簽交換路徑)。在一條LSP上,沿?cái)?shù)據(jù)傳送的方向,相鄰的LSR分別稱為上游LSR和下游LSR。
LSP是一個(gè)單向路徑,與數(shù)據(jù)流方向一致。LSP的入口LER稱為入節(jié)點(diǎn)(Ingress);位于LSP中間的LSR稱為中間節(jié)點(diǎn)(Transit);LSP的出口LER稱為出節(jié)點(diǎn)(Egress)。
MPLS MTU
MPLS標(biāo)簽棧象“墊層”一樣,位于二層數(shù)據(jù)幀頭和數(shù)據(jù)之間。在MPLS轉(zhuǎn)發(fā)過(guò)程中,雖然網(wǎng)絡(luò)層報(bào)文長(zhǎng)度小于接口的MTU,但是增加MPLS標(biāo)簽后,報(bào)文長(zhǎng)度可能超過(guò)鏈路層允許發(fā)送的范圍,從而導(dǎo)致報(bào)文無(wú)法正常轉(zhuǎn)發(fā)。為此,設(shè)備上定義了MPLS MTU,MPLS轉(zhuǎn)發(fā)時(shí)將增加標(biāo)簽后的報(bào)文長(zhǎng)度與MPLS MTU比較。報(bào)文長(zhǎng)度大于MPLS MTU時(shí),如果允許分片,則將報(bào)文分片后再進(jìn)行轉(zhuǎn)發(fā);如果不允許分片,則直接丟棄。
三、MPLS結(jié)構(gòu)
控制平面:負(fù)責(zé)產(chǎn)生和維護(hù)路由信息以及標(biāo)簽信息。
IP路由協(xié)議:OSPF、ISIS等。
路由信息表RIB(Routing Information Base):由IP路由協(xié)議(IP Routing Protocol)生成,用于選擇路由。
標(biāo)簽分發(fā)協(xié)議LDP(Label Distribution Protocol):負(fù)責(zé)標(biāo)簽的分配、標(biāo)簽轉(zhuǎn)發(fā)信息表的建立、標(biāo)簽交換路徑的建立、拆除等工作。
標(biāo)簽信息表LIB(Label Information Base):由標(biāo)簽分發(fā)協(xié)議生成,用于管理標(biāo)簽信息。
轉(zhuǎn)發(fā)平面:即數(shù)據(jù)平面(Data Plane),負(fù)責(zé)普通IP報(bào)文的轉(zhuǎn)發(fā)以及帶MPLS標(biāo)簽報(bào)文的轉(zhuǎn)發(fā)。
-轉(zhuǎn)發(fā)信息表FIB(Forwarding Information Base):從RIB提取必要的路由信息生成,負(fù)責(zé)普通IP報(bào)文的轉(zhuǎn)發(fā)。
-標(biāo)簽轉(zhuǎn)發(fā)信息表LFIB(Label Forwarding Information Base):簡(jiǎn)稱標(biāo)簽轉(zhuǎn)發(fā)表,由標(biāo)簽分發(fā)協(xié)議在LSR上建立LFIB,負(fù)責(zé)帶MPLS標(biāo)簽報(bào)文的轉(zhuǎn)發(fā)。
四、MPLS標(biāo)簽報(bào)文格式
采用幀模式。在二層報(bào)頭和三層報(bào)頭之間插入MPLS報(bào)頭。可以插入一個(gè)或多個(gè),這種標(biāo)簽?zāi)J揭脖环Q為幀模式。
靠近二層報(bào)頭的叫外層或者高層;靠近三層的叫內(nèi)層或者低層標(biāo)簽。當(dāng)查看完二層報(bào)頭發(fā)現(xiàn)標(biāo)簽之后就不再關(guān)心三層報(bào)頭,直接進(jìn)行轉(zhuǎn)發(fā)。理論上,MPLS標(biāo)簽可以無(wú)限嵌套。目前MPLS標(biāo)簽嵌套主要應(yīng)用在MPLS VPN、TE FRR(Traffic Engineering Fast ReRoute)中。
怎么判斷一個(gè)數(shù)據(jù)包是通過(guò)MPLS還是IP轉(zhuǎn)發(fā)呢?
在二層頭部中有一個(gè)PID(協(xié)議號(hào)字段)
PID標(biāo)識(shí)二層頭部后面的報(bào)文類型,LSR判斷報(bào)文類型
Ethernet :
0x0800 IPv4
0x8847 MPLS單播報(bào)文
0x8848 MPLS多播報(bào)文
PPP :0x8021 IPv4
0x8281 MPLS單播報(bào)文
0x8283 MPLS多播報(bào)文
MPLS標(biāo)簽空間:
標(biāo)簽空間就是指標(biāo)簽的取值范圍。標(biāo)簽空間劃分如下:
0~15:特殊標(biāo)簽。
16~1023:靜態(tài)LSP和靜態(tài)CR-LSP(Constraint-based Routed Label Switched Path)共享的標(biāo)簽空間。
1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等動(dòng)態(tài)信令協(xié)議的標(biāo)簽空間。
PS:MPLS有一些特殊的固定標(biāo)簽值,在后面會(huì)細(xì)說(shuō),這里不方便理解。
標(biāo)簽操作類型(Label Operations)
Push:指當(dāng)IP報(bào)文進(jìn)入MPLS域時(shí),MPLS邊界設(shè)備在報(bào)文二層首部和IP首部之間插入一個(gè)新標(biāo)簽;或者M(jìn)PLS中間設(shè)備根據(jù)需要,在標(biāo)簽棧頂增加一個(gè)新的標(biāo)簽(即標(biāo)簽嵌套封裝)。
Swap: 當(dāng)報(bào)文在MPLS域內(nèi)轉(zhuǎn)發(fā)時(shí),根據(jù)標(biāo)簽轉(zhuǎn)發(fā)表,用下一跳分配的標(biāo)簽,替換MPLS報(bào)文的棧頂標(biāo)簽。
Pop: 當(dāng)報(bào)文離開(kāi)MPLS域時(shí),將MPLS報(bào)文的標(biāo)簽去掉。
五、LDP標(biāo)簽分發(fā)協(xié)議
LDP簡(jiǎn)述
LDP(Label Distribution Protocol,標(biāo)簽分發(fā)協(xié)議)是MPLS的控制協(xié)議,它相當(dāng)于傳統(tǒng)網(wǎng)絡(luò)中的信令協(xié)議,負(fù)責(zé)FEC的分類、標(biāo)簽的分配以及LSP之間LDP Session的建立并交換Lebel/FEC映射信息等一系列操作。
通過(guò)LDP,LSR可以把網(wǎng)絡(luò)層的路由信息直接映射到數(shù)據(jù)鏈路層的交換路徑上,進(jìn)而建立起LSP。LSP既可以建立在兩個(gè)相鄰的LSR之間,也可以建立在兩個(gè)非直連的LSR之間,從而在網(wǎng)絡(luò)中所有中間節(jié)點(diǎn)上都使用標(biāo)簽交換。
LDP對(duì)等體
LDP對(duì)等體(LDP Peer)是指相互之間存在LDP會(huì)話、使用LDP來(lái)交換標(biāo)簽/FEC映射關(guān)系的兩個(gè)LSR。LDP對(duì)等體通過(guò)它們之間的LDP會(huì)話獲得對(duì)方的標(biāo)簽映射消息。
LDP會(huì)話
LDP會(huì)話用于在LSR之間交換標(biāo)簽映射、釋放等消息。LDP會(huì)話可以分為兩種類型:
本地LDP會(huì)話(Local LDP Session):建立會(huì)話的兩個(gè)LSR之間是直連的;
遠(yuǎn)端LDP會(huì)話(Remote LDP Session):建立會(huì)話的兩個(gè)LSR之間是非直連的。
標(biāo)簽空間與LDP標(biāo)識(shí)符
LDP對(duì)等體之間分配標(biāo)簽的范圍稱為標(biāo)簽空間(Label space)。可以為L(zhǎng)SR的每個(gè)接口指定一個(gè)標(biāo)簽空間(per-interface label space),也可以整個(gè)LSR使用一個(gè)標(biāo)簽空間(per-platform label space)。
LDP標(biāo)識(shí)符(LDP Identifier)用于標(biāo)識(shí)特定LSR的標(biāo)簽空間,是一個(gè)六字節(jié)的數(shù)值,格式如下:
?
LSR ID | 標(biāo)簽空間序號(hào) |
---|---|
4Byte | 2Byte,標(biāo)簽空間序號(hào)取值為1時(shí)表示每個(gè)接口指定一個(gè)標(biāo)簽空間;取值為0時(shí)表示整個(gè)LSR使用一個(gè)標(biāo)簽空間 |
?
LDP消息類型:
發(fā)現(xiàn)(Discovery message):宣告和維護(hù)網(wǎng)絡(luò)中一個(gè)LSR的存在。
會(huì)話(Session message):建立、維護(hù)和終止LDP Peers之間的LDP Session。
通知(Advertisement message):生成、改變和刪除FEC的標(biāo)簽映射。
通告(Notification message):宣告告警和錯(cuò)誤信息。
為保證LDP消息的可靠發(fā)送,除了發(fā)現(xiàn)階段使用UDP傳輸外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP傳輸。
LDP消息的作用
? | 消息類型 | 作用 |
---|---|---|
Discovery Message | Hello | LDP發(fā)現(xiàn)機(jī)制中宜告本LSR并發(fā)現(xiàn)鄰居 |
Session Message | Initialization | 在LDP Session建立過(guò)程中協(xié)商參數(shù) |
Session Message | KeepAlive | 監(jiān)控LDP Session的TCP連接的完整性 |
Advertisement Message | Address | 宣告接口地址 |
Advertisement Message | Address Withdraw | 撤消接口地址 |
Advertisement Message | Label Mapping | 直告FEC/Label映射信息 |
Advertisement Message | Label Request | 請(qǐng)求FEC的標(biāo)簽映射 |
Advertisement Message | Label Abort Request | 終止未完成的abel Request Message |
Advertisement Message | Label Withdraw | 撤消FEC/LabeI映射 |
Advertisement Message | Label Release | 釋放標(biāo)簽 |
Notification Message | Notification | 通知LDP Peer錯(cuò)誤信息 |
?
LDP的鄰居發(fā)現(xiàn)機(jī)制
基本發(fā)現(xiàn)機(jī)制
基本發(fā)現(xiàn)機(jī)制用于發(fā)現(xiàn)本地的LDP對(duì)等體,即通過(guò)鏈路層直接相連的LSR,建立本地LDP會(huì)話。
LSR通過(guò)周期性**(5S)地發(fā)送Hello Message表明自己的存在。這個(gè)消息是封裝在UDP報(bào)文中的,源和目的端口號(hào)為646**。在LDP基本發(fā)現(xiàn)機(jī)制中,該消息的目的IP地址為組播I P地址224.0.0.2。
LDP鏈路Hello消息帶有接口的LDP標(biāo)識(shí)符及其他相關(guān)信息,如果LSR在某個(gè)接口收到了LDP鏈路Hello消息,則表明在該接口(鏈路層)存在LDP對(duì)等體。
擴(kuò)展發(fā)現(xiàn)機(jī)制
擴(kuò)展發(fā)現(xiàn)機(jī)制用于發(fā)現(xiàn)遠(yuǎn)端的LDP對(duì)等體,即不通過(guò)鏈路層直接相連的LSR,建立遠(yuǎn)端LDP會(huì)話。
這種方式下,LSR周期性以UDP報(bào)文形式向指定的IP地址發(fā)送LDP目標(biāo)Hello消息(LDP Targeted Hello)。
LDP目標(biāo)Hello消息帶有LSR的LDP標(biāo)識(shí)符及其他相關(guān)信息,如果LSR收到LDP目標(biāo)Hello消息,則表明在網(wǎng)絡(luò)層存在LDP對(duì)等體。
LDP Session的建立和維護(hù)
過(guò)程簡(jiǎn)述
發(fā)送Hello報(bào)文之后發(fā)現(xiàn)了鄰居,建立TCP連接(兩端都會(huì)發(fā)送TCP,transport ip地址大的主動(dòng)發(fā)起連接,目的端口是646,源端口任意)之后發(fā)送初始化消息(協(xié)商會(huì)話中涉及的各種參數(shù),如LDP版本、標(biāo)簽分發(fā)方式、定時(shí)器值、標(biāo)簽空間等),再發(fā)送keepalive消息這樣LDP會(huì)話就建立完成了,完成之后兩個(gè)LSR就成為了LDP Peers,并會(huì)交換Advertisement Message。
如果協(xié)商過(guò)程中發(fā)現(xiàn)某些參數(shù)不匹配,就會(huì)發(fā)送Notification錯(cuò)誤消息。
PS:Transport id默認(rèn)是和配置的lsr-id一致,因?yàn)橐盟鼇?lái)建立TCP連接,所以lsr-id一定要是可達(dá)的,如果不可達(dá)就要手動(dòng)配置transport id。
LDP狀態(tài)機(jī)
一開(kāi)始沒(méi)有建立LDP Session的時(shí)候是non existent狀態(tài),之后就進(jìn)入一個(gè)初始化狀態(tài)INITIALIZED,如果是TCP的主動(dòng)方(transport id大,處于active狀態(tài)的一方),會(huì)主動(dòng)發(fā)送初始化消息(在LDP Session建立過(guò)程中協(xié)商參數(shù)),然后自身狀態(tài)變成OPENSENT,在此狀態(tài)是在等待對(duì)方回復(fù)他初始化信息,被動(dòng)方接收到主動(dòng)方的初始化消息后,他會(huì)同時(shí)發(fā)送init和KeepAlive消息,然后將自身狀態(tài)變?yōu)镺PENREC并等待接收主動(dòng)方的KeepAlive,主動(dòng)方接收到被動(dòng)方的init和KeepAlive消息后,變?yōu)镺PENREC狀態(tài)同時(shí)發(fā)送KeepAlive消息,被動(dòng)方收到了主動(dòng)方的KeepAlive后,二者回變?yōu)镺PERATIONAL狀態(tài),這樣LDP Session就建立完成了并發(fā)送其他LDP消息。
會(huì)話撤銷(xiāo)
LDP通過(guò)檢測(cè)Hello消息來(lái)判斷鄰接關(guān)系;通過(guò)檢測(cè)Keepalive消息來(lái)判斷會(huì)話的完整性。
LDP在維持鄰接關(guān)系和LDP會(huì)話時(shí)使用不同的定時(shí)器:
Hello保持定時(shí)器:LDP對(duì)等體之間,通過(guò)周期性發(fā)送Hello消息表明自己希望繼續(xù)維持鄰接關(guān)系。如果Hello保持定時(shí)器超時(shí)仍沒(méi)有收到新的Hello消息,則刪除Hello鄰接關(guān)系。
Keepalive定時(shí)器:LDP對(duì)等體之間通過(guò)LDP會(huì)話連接上傳送的Keepalive消息來(lái)維持LDP會(huì)話。如果會(huì)話保持定時(shí)器超時(shí)仍沒(méi)有收到任何Keepalive消息,則關(guān)閉連接,結(jié)束LDP會(huì)話。
六、LSP的建立
LSP介紹
IP報(bào)文在MPLS網(wǎng)絡(luò)中經(jīng)過(guò)的路徑稱為標(biāo)簽交換路徑LSP (Label Switched Path),這條路徑是在轉(zhuǎn)發(fā)報(bào)文之前就已經(jīng).通過(guò)各種協(xié)議確定并建立的,報(bào)文會(huì)在特定的LSP上傳遞。
LSP是一個(gè)單向路徑,與數(shù)據(jù)流的方向一致。LSP的入口LER稱為入節(jié)點(diǎn)(Ingress) ;位于LSP中間的LSR稱為中間節(jié)點(diǎn)(Transit) ; LSP的出PLER稱為出節(jié)點(diǎn)(Egress) 。一條LSP可以有0個(gè)、1個(gè)或多個(gè)中間節(jié)點(diǎn),但有且只有一個(gè)入節(jié)點(diǎn)和一個(gè)出節(jié)點(diǎn)。
靜態(tài)LSP的建立
靜態(tài)LSP是用戶通過(guò)手工為各個(gè)轉(zhuǎn)發(fā)等價(jià)類分配標(biāo)簽而建立的。手工分配標(biāo)簽需要遵循的原則是:上游節(jié)點(diǎn)出標(biāo)簽的值就是下游節(jié)點(diǎn)入標(biāo)簽的值。
由于靜態(tài)LSP各節(jié)點(diǎn)上不能相互感知到整個(gè)LSP的情況,因此靜態(tài)LSP是一個(gè)本地的概念。
靜態(tài)LSP不使用標(biāo)簽發(fā)布協(xié)議,不需要交互控制報(bào)文,因此消耗資源比較小,適用于拓?fù)浣Y(jié)構(gòu)簡(jiǎn)單并且穩(wěn)定的小型網(wǎng)絡(luò)。但通過(guò)靜態(tài)方式分配標(biāo)簽建立的LSP不能根據(jù)網(wǎng)絡(luò)拓?fù)渥兓瘎?dòng)態(tài)調(diào)整,需要管理員干預(yù)。
動(dòng)態(tài)LSP的建立
動(dòng)態(tài)LSP通過(guò)標(biāo)簽發(fā)布協(xié)議動(dòng)態(tài)建立。標(biāo)簽發(fā)布協(xié)議是MPLS的控制協(xié)議(也可稱為信令協(xié)議),負(fù)責(zé)FEC的分類、標(biāo)簽的分發(fā)以及LSP的建立和維護(hù)等一系列操作。
LDP協(xié)議分配原則
①路由器LDP默認(rèn)會(huì)為/32主機(jī)路由分配標(biāo)簽。(前提是設(shè)備從/32路由的下一跳設(shè)備得到了標(biāo)簽)也可以為/24的網(wǎng)段去分
②如果通過(guò)多個(gè)鄰居收到一個(gè)FEC的標(biāo)簽,設(shè)備會(huì)使用本FEC(路由前綴)下一跳設(shè)備分配的標(biāo)簽
七、MPLS與路由協(xié)議
LDP通過(guò)逐跳方式建立LSP時(shí),利用沿途各LSR路由轉(zhuǎn)發(fā)表中的信息來(lái)確定下一跳,而路由轉(zhuǎn)發(fā)表中的信息一般是通過(guò)IGP、BGP等路由協(xié)議收集的。LDP并不直接和各種路由協(xié)議關(guān)聯(lián),只是間接使用路由信息。另一方面,通過(guò)對(duì)BGP、RSVP等已有協(xié)議進(jìn)行擴(kuò)展,也可以支持標(biāo)簽的分發(fā)。
在MPLS的應(yīng)用中,也可能需要對(duì)某些路由協(xié)議進(jìn)行擴(kuò)展。例如,基于MPLS的VPN應(yīng)用需要對(duì)BGP進(jìn)行擴(kuò)展,使BGP能夠傳播VPN(Virtual Private Network,虛擬專用網(wǎng))的路由信息;基于MPLS的TE(Traffic Engineering,流量工程)需要對(duì)OSPF或IS-IS協(xié)議進(jìn)行擴(kuò)展,以攜帶鏈路狀態(tài)信息。
八、MPLS數(shù)據(jù)轉(zhuǎn)發(fā)
轉(zhuǎn)發(fā)過(guò)程中涉及到的表項(xiàng)
①NHLFE
下一跳標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)NHLFE (Next Hop Label Forwarding Entry) 用于指導(dǎo)MPLS報(bào)文的轉(zhuǎn)發(fā)。NHLFE包括: Tunnel ID、出接口、下一跳、出標(biāo)簽、標(biāo)簽操作類型等信息。
②FTN
FEC到一組NHLFE的映射稱為FTN (FEC-to-NHLFE) 。
通過(guò)查看FIB表中Tunnel ID值不為0x0的表項(xiàng),能夠獲得FTN的詳細(xì)信息。FTN只在Ingress(入節(jié)點(diǎn))存在。
③ILM
入標(biāo)簽到一組下一跳標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的映射稱為入標(biāo)簽映射ILM (Incoming Label Map)。ILM包括: Tunnel ID、入標(biāo)簽、入接口、標(biāo)簽操作類型等信息。
ILM在Transit節(jié)點(diǎn)(并不是Ingress節(jié)點(diǎn))的作用是將標(biāo)簽和NHLFE綁定。通過(guò)標(biāo)簽索引LM表,就相當(dāng)于使用目的IP地址查詢FIB,能夠得到所有的標(biāo)簽轉(zhuǎn)發(fā)信息。
④Tunnel ID
為了給使用隧道的上層應(yīng)用(如VPN、路由管理)提供統(tǒng)一的接口,系統(tǒng)自動(dòng)為隧道分配了一個(gè)ID,也稱為T(mén)unnel ID。 該Tunnel ID的長(zhǎng)度為32比特,只是本地有效。
※當(dāng)IP報(bào)文進(jìn)入MPLS域時(shí),首先查看FIB表,檢查目的IP地址對(duì)應(yīng)的Tunnel ID值是否為0x0。
如果Tunnel ID值為0x0,則進(jìn)入正常的IP轉(zhuǎn)發(fā)流程。
如果Tunnel ID值不為0x0,則進(jìn)入MPLS轉(zhuǎn)發(fā)流程。
MPLS查表流程圖
在MPLS轉(zhuǎn)發(fā)過(guò)程中, FIB、ILM和NHLFE表項(xiàng)是通過(guò)Tunnel ID關(guān)聯(lián)的
ingress的處理
查看FIB表,根據(jù)目的IP地址找到對(duì)應(yīng)的Tunnel ID。
根據(jù)FIB表的Tunnel ID找到對(duì)應(yīng)的NHLFE表項(xiàng),將FIB表項(xiàng)和NHLFE表項(xiàng)關(guān)聯(lián)起來(lái)。
查看NHLFE表項(xiàng),可以得到出接口、下一跳、出標(biāo)簽和標(biāo)簽操作類型,標(biāo)簽操作類型為Push。
在IP報(bào)文中壓入出標(biāo)簽,并根據(jù)QoS策略處理EXP,同時(shí)處理TTL,然后將封裝好的MPL S報(bào)文發(fā)送給下一跳。
Transit的處理
根據(jù)MPLS的標(biāo)簽值查看對(duì)應(yīng)的ILM表,可以得到Tunnel ID。
根據(jù)ILM表的Tunnel ID找到對(duì)應(yīng)的NHLFE表項(xiàng)。
查看NHLFE表項(xiàng),可以得到出接口、下一跳、出標(biāo)簽和標(biāo)簽操作類型。
MPLS報(bào)文的處理方式根據(jù)不同的標(biāo)簽值而不同。.
如果標(biāo)簽值>=16,則用新標(biāo)簽替換MPLS報(bào)文中的舊標(biāo)簽,同時(shí)處理EXP和TTL,然后將替換完標(biāo)簽的MPLS報(bào)文發(fā)送給下一跳。
如果標(biāo)簽值為3,則直接彈出標(biāo)簽(次末跳彈出,這是針對(duì)FEC),同時(shí)處理EXP和TTL,然后進(jìn)行IP轉(zhuǎn)發(fā)或下一層標(biāo)簽轉(zhuǎn)發(fā)。
Egress的處理:通過(guò)查詢ILM表指導(dǎo)MPLS報(bào)文的轉(zhuǎn)發(fā)或查詢路由表指導(dǎo)IP報(bào)文轉(zhuǎn)發(fā)。
如果Egress收到IP報(bào)文,則查看路由表,進(jìn)行IP轉(zhuǎn)發(fā)。
如果Egress收到MPLS報(bào)文,則查看ILM表獲得標(biāo)簽操作類型,同時(shí)處理EXP和TTL。
如果標(biāo)簽中的棧底標(biāo)識(shí)S=1,表明該標(biāo)簽是棧底標(biāo)簽,直接進(jìn)行IP轉(zhuǎn)發(fā)。
如果標(biāo)簽中的棧底標(biāo)識(shí)S=0,表明還有下一層標(biāo)簽,繼續(xù)進(jìn)行下一層標(biāo)簽轉(zhuǎn)發(fā)。
PS:PHP次末跳彈出
為了減輕Egress節(jié)點(diǎn)的負(fù)擔(dān),提高M(jìn)PLS網(wǎng)絡(luò)對(duì)報(bào)文的處理能力,可以使最后一跳路由器只進(jìn)行一次IP查表,但是當(dāng)需要通過(guò)EXP位進(jìn)行QoS策略時(shí),次末跳彈出會(huì)讓QoS非常繁瑣,需要對(duì)兩個(gè)網(wǎng)段分別配置IP和MPLS的QoS。
固定標(biāo)簽值
標(biāo)簽值 | 名稱 | 詳細(xì)信息 |
---|---|---|
0 | IPV4 Explicit Null Lable IPV4顯式空標(biāo)簽 | 表示該標(biāo)簽必須被彈出(即標(biāo)簽被剝掉),且報(bào)文的轉(zhuǎn)發(fā)必須基于IPv4。如果出節(jié)點(diǎn)分配給倒數(shù)第二跳節(jié)點(diǎn)的標(biāo)簽值為0,則倒數(shù)第二跳LSR需要將值為0的標(biāo)簽正常壓入報(bào)文標(biāo)簽值頂部,轉(zhuǎn)發(fā)給最后一跳。最后一跳發(fā)現(xiàn)報(bào)文攜帶的標(biāo)簽值為0,則將標(biāo)簽彈出。 |
1 | Router Alert Label 路由器報(bào)警標(biāo)簽 | 只有出現(xiàn)在非棧底時(shí)才有效。類似于IP報(bào)文的“Router Alert Option”字段,節(jié)點(diǎn)收到Router Alert Label時(shí),需要將其送往本地軟件模塊進(jìn)一步處理。實(shí)際報(bào)文轉(zhuǎn)發(fā)由下一層標(biāo)簽決定。如果報(bào)文需要繼續(xù)轉(zhuǎn)發(fā),則節(jié)點(diǎn)需要將Router Alert Label壓回標(biāo)簽棧頂。 |
2 | IPv6 Explicit NULL Label IPV6顯式空標(biāo)簽 | 表示該標(biāo)簽必須被彈出,且報(bào)文的轉(zhuǎn)發(fā)必須基于IPv6。如果出節(jié)點(diǎn)分配給倒數(shù)第二跳節(jié)點(diǎn)的標(biāo)簽值為2,則倒數(shù)第二跳節(jié)點(diǎn)需要將值為2的標(biāo)簽正常壓入報(bào)文標(biāo)簽值頂部,轉(zhuǎn)發(fā)給最后一跳。最后一跳發(fā)現(xiàn)報(bào)文攜帶的標(biāo)簽值為2,則直接將標(biāo)簽彈出。 |
3 | lmplicit NULL Label 隱式空標(biāo)簽 | 倒數(shù)第二跳LSR進(jìn)行標(biāo)簽交換時(shí),如果發(fā)現(xiàn)交換后的標(biāo)簽值為3,則將標(biāo)簽彈出,并將報(bào)文發(fā)給最后一跳。最后一跳收到該報(bào)文直接進(jìn)行IP轉(zhuǎn)發(fā)或下一層標(biāo)簽轉(zhuǎn)發(fā)。 |
4~13、15 | 保留 | ? |
14 | OAM Router Alert Label | MPLS OAM(Operation Administration & Maintenance)通過(guò)發(fā)送OAM報(bào)文檢測(cè)和通告LSP故障。OAM報(bào)文使用MPLS承載。OAM報(bào)文對(duì)于Transit LSR和倒數(shù)第二跳LSR(penultimate LSR)是透明的。 |
16~1023 | ? | 靜態(tài)LSP使用 |
1024以上 | ? | LDP、RSVP-TE、 MP-BGP使用 |
九、MPLS環(huán)路檢測(cè)
MPLS對(duì)TTL的處理——Uniform(統(tǒng)一)模式
IP報(bào)文經(jīng)過(guò)MPLS網(wǎng)絡(luò)時(shí),在入節(jié)點(diǎn),IP TTL減1映射到MPLS TTL字段,此后報(bào)文在MPLS網(wǎng)絡(luò)中按照標(biāo)準(zhǔn)的TTL處理方式處理。在出節(jié)點(diǎn)將MPLS TTL減1后映射到IP TTL字段。如上圖所示。
MPLS對(duì)TTL的處理二——Pipe(管道)模式
在入節(jié)點(diǎn),IP TTL值減1,MPLS TTL字段為固定值,此后報(bào)文在MPLS網(wǎng)絡(luò)中按照標(biāo)準(zhǔn)的TTL處理方式處理。在出節(jié)點(diǎn)會(huì)將IP TTL字段的值減1。即IP分組經(jīng)過(guò)MPLS網(wǎng)絡(luò)時(shí),無(wú)論經(jīng)過(guò)多少跳,IP TTL只在入節(jié)點(diǎn)和出節(jié)點(diǎn)分別減1。如上圖所示。
MPLS域透明化,在IP上將其看為一跳。
TTL對(duì)ICMP響應(yīng)報(bào)文的影響
在MPLS網(wǎng)絡(luò)中,當(dāng)LSR收到TTL為1的含有標(biāo)簽的MPLS報(bào)文時(shí),LSR生成ICMP的TTL超時(shí)消息。
如果LSR上存在到達(dá)報(bào)文發(fā)送者的路由,則可以通過(guò)IP路由,直接向發(fā)送者回應(yīng)TTL超時(shí)消息。
如果LSR上不存在到達(dá)報(bào)文發(fā)送者的路由,則ICMP響應(yīng)報(bào)文將按照LSP繼續(xù)傳送,到達(dá)LSP出節(jié)點(diǎn)后,由Egress節(jié)點(diǎn)將該消息返回給發(fā)送者。
通常情況下,收到的MPLS報(bào)文只帶一層標(biāo)簽時(shí),LSR可以采用第一種方式回應(yīng)TTL超時(shí)消息;收到的MPLS報(bào)文包含多層標(biāo)簽時(shí),LSR采用第二種方式回應(yīng)TTL超時(shí)消息。
但是,在MPLS VPN中,ASBR(Autonomous System Boundary Router,自治系統(tǒng)邊界路由器)和HoVPN組網(wǎng)應(yīng)用中的SPE(Superstratum PE or Sevice Provider-end PE,上層PE或運(yùn)營(yíng)商側(cè)PE),接收到的承載VPN報(bào)文的MPLS報(bào)文可能只有一層標(biāo)簽,此時(shí),這些設(shè)備上并不存在到達(dá)報(bào)文發(fā)送者的路由,則采用第二種方法回應(yīng)TTL超時(shí)消息。
十、對(duì)MPLS LSP的檢測(cè)
在MPLS中,如果LSP轉(zhuǎn)發(fā)數(shù)據(jù)失敗,負(fù)責(zé)建立LSP的MPLS控制平面將無(wú)法檢測(cè)到這種錯(cuò)誤,這會(huì)給網(wǎng)絡(luò)維護(hù)帶來(lái)困難。
MPLS LSP Ping/Traceroute為用戶提供了發(fā)現(xiàn)LSP錯(cuò)誤、并及時(shí)定位失效節(jié)點(diǎn)的機(jī)制。類似于普通IP的Ping/Traceroute,MPLS LSP Ping/Traceroute使用MPLS Echo Request報(bào)文和MPLS Echo Reply報(bào)文檢測(cè)LSP的可用性。MPLS Echo Request中攜帶需要檢測(cè)的FEC信息,和其他屬于此FEC的報(bào)文一樣沿LSP發(fā)送,從而實(shí)現(xiàn)對(duì)LSP的檢測(cè)。
MPLS LSP Ping是用于對(duì)LSP的有效性、可達(dá)性進(jìn)行檢測(cè)的工具。采取方法是通過(guò)發(fā)送一個(gè)叫做MPLS Echo Request的報(bào)文,通過(guò)LSP的數(shù)據(jù)轉(zhuǎn)發(fā),到達(dá)出口后,在MPLS域的Egress,由Egress節(jié)點(diǎn)的控制平面確認(rèn)本LSR是否為該FEC的出口,返回一個(gè)叫做MPLS Echo Reply的報(bào)文,如果發(fā)送方收到該報(bào)文,則說(shuō)明這條LSP可以正確用于數(shù)據(jù)轉(zhuǎn)發(fā)。
MPLS LSP Traceroute是對(duì)LSP的錯(cuò)誤進(jìn)行定位的工具。采取方法是Echo Request數(shù)據(jù)包被發(fā)送到每一個(gè)中間LSR的控制平面,以確定本LSR是否是此路徑的中間節(jié)點(diǎn)。
十一、LDP的標(biāo)簽管理
LDP標(biāo)簽空間
①基于平臺(tái)的標(biāo)簽空間
不管是通過(guò)哪個(gè)接口,分發(fā)給哪個(gè)鄰居,一個(gè)FEC分發(fā)的標(biāo)簽是一樣的。
弊端:攻擊人可以根據(jù)要攻擊的FEC的標(biāo)簽值,發(fā)送一個(gè)不合法但標(biāo)簽值相同的數(shù)據(jù)。
不管用多少接口,都要為每個(gè)接口分配不同的標(biāo)簽值,標(biāo)簽數(shù)據(jù)庫(kù)會(huì)非常大,但是比較安全
LDP標(biāo)簽分發(fā)方式
DU(Downstream Unsolicited下游自主)
對(duì)于一個(gè)特定的FEC,LSR無(wú)需從上游獲得標(biāo)簽請(qǐng)求消息即進(jìn)行標(biāo)簽分配與分發(fā)。下游LSR在LDP會(huì)話建立成功后,主動(dòng)向其上游LSR發(fā)布標(biāo)簽映射消息。上游LSR保存標(biāo)簽映射信息,并根據(jù)路由表信息來(lái)處理收到的標(biāo)簽映射信息。
DoD(Downstream on Demand下游按需)
游LSR向下游LSR發(fā)送標(biāo)簽請(qǐng)求消息(Label Request Message),其中包含F(xiàn)EC的描述信息。下游LSR為此FEC分配標(biāo)簽,并將綁定的標(biāo)簽通過(guò)標(biāo)簽映射消息(Label Mapping Message)反饋給上游LSR。
具有標(biāo)簽分發(fā)鄰接關(guān)系的上游LSR和下游LSR之間必須使用相同的標(biāo)簽發(fā)布方式,否則LSP無(wú)法正常建立。
LDP標(biāo)簽控制方式
Independent獨(dú)立
采用Independent獨(dú)立控制方式時(shí),每個(gè)LSR隨時(shí)可以向鄰居發(fā)送標(biāo)簽幀映射。(不管有沒(méi)有收到它的下游返回的標(biāo)簽映射消息,都立即向其上游發(fā)送標(biāo)簽映射消息)
Ordered有序
當(dāng)標(biāo)簽控制方式時(shí)Ordered,只有當(dāng)LSR收到特定FEC下一跳發(fā)送的特定FEC標(biāo)簽映射消息或者LSR是LSP的出口節(jié)點(diǎn)時(shí),LSR才可以向上游發(fā)送標(biāo)簽映射消息。(只有收到它的下游返回的標(biāo)簽映射消息后,才向其上游發(fā)送標(biāo)簽映射消息)
LDP標(biāo)簽保持方式
Conservative保守
當(dāng)使用DU標(biāo)簽分發(fā)方式時(shí),LSR可能從多個(gè)LDP Peer收到到同一網(wǎng)段的標(biāo)簽映射消息,如果采用Conservative保持方式,則路由器只保留IP路由表中下一跳發(fā)來(lái)的標(biāo)簽,丟棄非下一跳發(fā)來(lái)的標(biāo)簽。
Liberal自由
如果采用Liberal保持方式,路由器會(huì)保留所有LDP Peer發(fā)來(lái)的標(biāo)簽,無(wú)論該LDP Peer是否為到達(dá)目的網(wǎng)段的下一跳。
使用自由標(biāo)簽保持方式,LSR能夠迅速適應(yīng)路由變化;而使用保守標(biāo)簽保持方式,LSR可以分配和保存較少的標(biāo)簽數(shù)量。
保守標(biāo)簽保持方式通常與DoD方式一起,用于對(duì)于標(biāo)簽空間有限的LSR。
十二、LDP 標(biāo)簽過(guò)濾
LDP協(xié)議在缺省的情況下,從下游鄰居接收到的所有FEC的標(biāo)簽映射(標(biāo)簽-FEC綁定)都將接受;并按照水平分割的原則向各個(gè)上游鄰居通告FEC的標(biāo)簽映射。
LDP標(biāo)簽過(guò)濾提供了兩種機(jī)制,可以有選擇的接受從指定LDP下游鄰居接收到的標(biāo)簽映射、也可以選擇性地向指定LDP上游鄰居通告指定地址前綴的標(biāo)簽映射。
標(biāo)簽接受控制
標(biāo)簽接受控制(Label Acceptance Control)或入站標(biāo)簽過(guò)濾(Inbound Filtering),選擇性地接受指定下游設(shè)備通告過(guò)來(lái)的、指定地址前綴的標(biāo)簽映射。
標(biāo)簽通告控制
標(biāo)簽通告控制(Label Advertisement Control)或出站標(biāo)簽過(guò)濾(Outbound Filtering),選擇性地向指定上游設(shè)備通告指定地址前綴的標(biāo)簽映射。
十三、MPLS與路由協(xié)議
LDP通過(guò)逐跳方式建立LSP時(shí),利用沿途各LSR路由轉(zhuǎn)發(fā)表中的信息來(lái)確定下一跳,而路由轉(zhuǎn)發(fā)表中的信息一般是通過(guò)IGP、BGP等路由協(xié)議收集的。LDP并不直接和各種路由協(xié)議關(guān)聯(lián),只是間接使用路由信息。另一方面,通過(guò)對(duì)BGP、RSVP等已有協(xié)議進(jìn)行擴(kuò)展,也可以支持標(biāo)簽的分發(fā)。
在MPLS的應(yīng)用中,也可能需要對(duì)某些路由協(xié)議進(jìn)行擴(kuò)展。例如,基于MPLS的VPN應(yīng)用需要對(duì)BGP進(jìn)行擴(kuò)展,使BGP能夠傳播VPN(Virtual Private Network,虛擬專用網(wǎng))的路由信息;基于MPLS的TE(Traffic Engineering,流量工程)需要對(duì)OSPF或IS-IS協(xié)議進(jìn)行擴(kuò)展,以攜帶鏈路狀態(tài)信息。
LDP IGP同步
LDP和IGP同步功能主要用來(lái)解決在LSP存在主備鏈路的組網(wǎng)中,主LSP發(fā)生故障,導(dǎo)致的流量丟失問(wèn)題。
具體情況如下:
當(dāng)主鏈路發(fā)生故障時(shí),IGP流量和LSP流量均切換到備份鏈路上。但當(dāng)主鏈路從故障中恢復(fù)時(shí),由于IGP比LDP收斂速度快,IGP會(huì) 先于LDP切換回主鏈路,因此造成LSP流量丟失。
當(dāng)主鏈路正常,但主鏈路節(jié)點(diǎn)間的LDP會(huì)話發(fā)生故障時(shí),LSP流量從主鏈路切換到備份鏈路,而IGP流量繼續(xù)從主鏈路轉(zhuǎn)發(fā),導(dǎo)致LSP流量丟失。
十四、MPLS常問(wèn)問(wèn)題
路由器是如何判斷一個(gè)數(shù)據(jù)包是IP包還是標(biāo)簽包。
答:在二屋協(xié)議號(hào)中,如果協(xié)議號(hào)為:0X0800就是IP包,如果是0X8847或0X8848就是MPLS包。
MPLS在OSI參考模型中是幾層?
答:MPLS介于二層與三層之間,插入了4個(gè)BYTE的長(zhǎng)度。
3 .分發(fā)標(biāo)簽的方式有哪些?
答:有下游請(qǐng)求(down-stream on demand,簡(jiǎn)稱DoD)和主動(dòng)分發(fā)(DU)兩種
4.有哪些獨(dú)立的標(biāo)簽分發(fā)協(xié)議?
答:協(xié)議就是TDP和LDP啊!
5 .談?wù)凾DP和LDP的區(qū)別
答:TDP是思科的私有協(xié)議,用TCP/UDP 711端口,LDP是業(yè)界標(biāo)準(zhǔn),用TCP/LDP 646端口
在ip路由表中,LDP為每一條前綴都會(huì)進(jìn)行一個(gè)本地綁定,這句話對(duì)嗎?如果不對(duì)請(qǐng)說(shuō)明原因。
答:不精確,LDP是不對(duì)BGP路由分標(biāo)簽的。
標(biāo)簽交換有哪幾種動(dòng)作。
答:壓標(biāo)簽、彈標(biāo)簽、交換標(biāo)簽
哪些標(biāo)簽是被用于保留的.
答:其中4至13、15是被保留的。
哪一個(gè)標(biāo)簽用于通知倒數(shù)第二跳LSR使用倒數(shù)第二跳標(biāo)簽移除(POP)機(jī)制?
答:就是標(biāo)簽3,又叫隱式空標(biāo)簽。
審核編輯:黃飛
評(píng)論
查看更多