MPLS(Multiprotocol Label Switching)多協(xié)議標簽轉(zhuǎn)發(fā)復(fù)習(xí)總結(jié)首先我們要先知道MPLS是為何出現(xiàn)的?MPLS是基于傳統(tǒng)IP網(wǎng)絡(luò)(RIP,OSPF等)的缺陷由IETF確定的 順便先復(fù)習(xí)一下路由器查路由表 轉(zhuǎn)發(fā)的過程:  傳統(tǒng)的IP轉(zhuǎn)發(fā)中,物理層從交換機的一個端口收到一個報文,上送到數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層去掉鏈路層封裝,根據(jù)報文的協(xié)議域上送給相應(yīng)的網(wǎng)絡(luò)層。網(wǎng)絡(luò)層首先看報文是否是送給本機的,若是,去掉網(wǎng)絡(luò)層封裝,上送給它的上層協(xié)議。若不是,則根據(jù)報文的目的地址查找路由表,若找到路由,將報文送給相應(yīng)端口的數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層封裝后,發(fā)送報文。若找不到路由,將報文丟棄。傳統(tǒng)的IP轉(zhuǎn)發(fā)采用的是逐跳轉(zhuǎn)發(fā),數(shù)據(jù)報文經(jīng)過每一臺交換機,都要執(zhí)行上述過程(如圖中SWA收到目的地址為10.2.0.1的數(shù)據(jù)包,SWA會依次查找路由表,根據(jù)匹配的路由表項的進行轉(zhuǎn)發(fā),SWB、SWC、SWD都會進行類似的處理),所以速度緩慢。并且所有的交換機需要知道全網(wǎng)的路由或者默認路由。另外,由于傳統(tǒng)IP轉(zhuǎn)發(fā)是面向無連接的,所以無法提供好的Qos保證。  傳統(tǒng)IP網(wǎng)絡(luò)基于IGP Metric計算最優(yōu)路徑,這是遠遠不夠的,往往在現(xiàn)實網(wǎng)絡(luò)中還需考慮帶寬、鏈路屬性等其他因素;基于IP的流量工程是基于IGP面向目的地址的轉(zhuǎn)發(fā),是hop-by-hop(逐跳)的轉(zhuǎn)發(fā),無法實現(xiàn)根據(jù)來源來控制流量轉(zhuǎn)發(fā);另外基于IP的流量工程是面向無連接的,不能實現(xiàn)顯式路徑(Explicit Routing)。 上圖中,SWB和SWD之間存在兩條路徑。傳統(tǒng)的IP轉(zhuǎn)發(fā)中IGP根據(jù)Metric選擇最優(yōu)的路由SWB-SWC-SWD轉(zhuǎn)發(fā)所有從Network A和Network B到Network C的IP報文,而SWB-SWG-SWH-SWD鏈路則閑置,當網(wǎng)絡(luò)中流量過大,有可能導(dǎo)致最優(yōu)路徑擁塞,但次優(yōu)路徑卻空載沒有被充分利用。
MPLS的出現(xiàn)我們老師當時是這么講的: 從A到走到B有三種方法: 1.廣播(如以太網(wǎng)):直接把數(shù)據(jù)發(fā)給每一個地方 2.逐跳尋徑:走到一個地方,問一下路接下來該怎么走(也就是上面說的根據(jù)路由協(xié)議,查路由表) 3.源路由:提前規(guī)劃好路線,到哪里怎么走,不常用。 而MPLS是第四種走法: 跟在“向?qū)А焙竺孀?,向?qū)г谧哌^的路上做好標記,你只要沿著標記的指示走就可以了。這也就是“標簽交換” MPLS結(jié)合了三層路由技術(shù)與二層交換技術(shù),所以可以把它看成“2.5層”的 其中的MP多協(xié)議指的是支持多種網(wǎng)絡(luò)協(xié)議,如ipv4,ipv6,CLNP,IPX等 MPLS是一種標簽轉(zhuǎn)發(fā)技術(shù),它采用無連接的控制平面和面向連接的數(shù)據(jù)平面(具體的MPLS架構(gòu)下面還有介紹),無連接的控制平面實現(xiàn)路由信息的傳遞和標簽的分發(fā),面向連接的數(shù)據(jù)平面實現(xiàn)報文在建立的標簽轉(zhuǎn)發(fā)路徑上傳送。MPLS域內(nèi),交換機不需要查看每個報文的目的IP地址,只需要根據(jù)封裝在IP頭外面的標簽進行轉(zhuǎn)發(fā)即可,這樣可以大大提高效率 MPLS轉(zhuǎn)發(fā)與IP逐跳轉(zhuǎn)發(fā)的關(guān)系MPLS是IP的承載層:MPLS轉(zhuǎn)發(fā)與IP轉(zhuǎn)發(fā)不沖突,它們的關(guān)系是如果能夠使用MPLS轉(zhuǎn)發(fā),那么IP包會先封裝成MPLS數(shù)據(jù)幀來轉(zhuǎn)發(fā)。如果不能MPLS轉(zhuǎn)發(fā),就還是原來的ip逐跳轉(zhuǎn)發(fā)。 (也就是盡量優(yōu)先MPLS,因為它會更快)  看上面的圖,我們需要理解:整個MPLS域(可以進行MPLS轉(zhuǎn)發(fā)的區(qū)域)是嵌在IP域上的,也就是MPLS域外部是IP域,它本身也運行IP域。 MPLS中一些基本概念,名詞標簽(Label):是一個定長的,比較短的,只具有本地意義的標識。 FEC(轉(zhuǎn)發(fā)等價類):一組或一類數(shù)據(jù),這組數(shù)據(jù)分配的標簽相同 LSP(標簽交換通道):一個FEC的數(shù)據(jù)流,在不同的節(jié)點被賦予確定的標簽,數(shù)據(jù)轉(zhuǎn)發(fā)按照 這些標簽進行。數(shù)據(jù)流所走的路徑就是LSP。 LSR(Label Switching Router): LSR是MPLS的網(wǎng)絡(luò)的核心交換機,它提供標簽交 換和標簽分發(fā)功能。 LER(Label Switching Edge Router):在MPLS的網(wǎng)絡(luò)邊緣,進入到MPLS網(wǎng)絡(luò)的流量由LER分為不同的FEC,并為這些FEC請求相應(yīng)的標簽。它提供流量分類和標簽的映射、標簽的移除功能。  看這個圖我們來理解LER,LSR,LSP: 從IP域進入MPLS域的時候,LER(標記邊緣路由器)要做一個壓入(push),出MPLS域的時候做一個彈出(pop),而LSR(標記交換路由器)負責轉(zhuǎn)發(fā)。所以LER實際工作量比LSR大很多。LSP(標記交換路徑)就是從進入到離開 走的路徑。這條路徑是在轉(zhuǎn)發(fā)報文之前就已經(jīng)通過各種協(xié)議確定并建立的,報文會在特定的LSP上傳遞。(也可以把LSP看成一個隧道)
標簽報文格式:  MPLS Header長度為32bits,包括長度為20bits的標簽(Label),該標簽用于報文轉(zhuǎn)發(fā);長度為3bits的EXP通常用來承載IP報文中的優(yōu)先級;長度為1bit的棧底標志S用來表明是否是最后一個標簽(MPLS標簽可以多層嵌套);長度為8bits的TTL,作用類似IP頭部的TTL,用來防止報文環(huán)路等。 事實上MPLS封裝有兩種方式,上面說的是幀模式,Ethernet和PPP都是幀模式封裝;還有一個信元封裝模式(ATM采用)。 MPLS的 LSP 與標簽轉(zhuǎn)發(fā)表 
MPLS轉(zhuǎn)發(fā)過程 1.Push:首先從IP數(shù)據(jù)包從ip域進入MPLS域,入口LER做 push 操作,分析轉(zhuǎn)發(fā)等價類,為數(shù)據(jù)包“打上標簽”,綁定LSP通道;圖中A的標簽轉(zhuǎn)發(fā)表內(nèi)容大概如下:  2.Swap:B,C兩個LSR根據(jù)標簽轉(zhuǎn)發(fā)表,用下一跳分配的標簽,替換MPLS報文的標簽并轉(zhuǎn)發(fā)  3.Pop:轉(zhuǎn)發(fā)到出口LER D時,進行pop彈出操作,去掉標簽  MPLS轉(zhuǎn)發(fā)的過程到這里結(jié)束。
PHP(倒數(shù)第二跳彈出。Penultimate Hop Popping ,和web開發(fā)的php可沒關(guān)系):上面的過程我們可以發(fā)現(xiàn),C在發(fā)給D時,其實帶標簽的數(shù)據(jù)已經(jīng)沒有意義,因為下一跳就要彈出標簽了,所以完全可以在C就把標簽彈出,然后以ip報文形式轉(zhuǎn)發(fā)給D。 這樣可以大大降低最后的出口LER的工作量,是現(xiàn)在MPLS普遍采用的方法。 默認情況下,設(shè)備支持PHP特性,支持PHP的Egress節(jié)點即出口LER 分配給倒數(shù)第二跳節(jié)點的標簽值為3。 MPLS標簽轉(zhuǎn)發(fā)表與LDP先來看一個標簽轉(zhuǎn)發(fā)表例子  我們知道, 交換機中的MAC地址表是通過逆向?qū)W習(xí)法產(chǎn)生的; 路由器中的路由表是通過路由協(xié)議學(xué)習(xí)或自己配置靜態(tài)路由產(chǎn)生的。 那么MPLS中標簽轉(zhuǎn)發(fā)表是怎么產(chǎn)生的呢? 答案是也會有一個類似的路由器學(xué)習(xí)的協(xié)議,這個協(xié)議叫做LDP(Label Distribution Protocol 標簽分發(fā)協(xié)議),這個也是MPLS技術(shù)的核心協(xié)議之一。LDP來完成標簽的分配控制和保持 從整個MPLS架構(gòu)看這個協(xié)議的位置:  以上是MPLS架構(gòu)圖 MPLS包括兩個平面:控制平面和數(shù)據(jù)平面。 控制平面負責產(chǎn)生和維護路由信息以及標簽信息。數(shù)據(jù)平面負責普通IP報文的轉(zhuǎn)發(fā)以及帶MPLS標簽報文的轉(zhuǎn)發(fā)。 控制平面中路由協(xié)議模塊(Routing Protocol)用來傳遞路由信息,生成路由信息表;標簽分發(fā)協(xié)議模塊(Label Distribution Protocol)用來完成標簽信息的交換,建立標簽轉(zhuǎn)發(fā)路徑。 數(shù)據(jù)平面包括IP轉(zhuǎn)發(fā)表和標簽轉(zhuǎn)發(fā)表,當收到普通IP報文時(Incoming IP Packets),如果是普通IP轉(zhuǎn)發(fā),則查找IP路由表轉(zhuǎn)發(fā),如果需要標簽轉(zhuǎn)發(fā),則按照標簽轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā);當收到帶有標簽的報文時(Incoming Labeled Packets)時,如果需要按照標簽轉(zhuǎn)發(fā),根據(jù)標簽轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā),如果需要轉(zhuǎn)發(fā)到IP網(wǎng)絡(luò),則去掉標簽后根據(jù)IP轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)。 LDP的標簽管理與保留方式主要內(nèi)容有下面三部分 1. 標簽分配模式 DoD:下游按需標記分發(fā) DU:下游自主標記分發(fā)
2. 標簽控制模式 3. 標簽保持模式 最常用的組合是 下游自主(DU) + 有序 + 自由 下面來具體介紹什么意思  這里先要理解上游,下游的概念,MPLS入口出為最上游;出口處為最下游。標簽的產(chǎn)生可以理解為是下游為上游產(chǎn)生的,下游產(chǎn)生的IN標簽作為上游的OUT標簽(比如圖中R3左邊要接收的IN標簽為100,那么R2向右的OUT標簽就要是100,因為R3只要為100的標簽) 然后具體介紹上面的三個部分: Ⅰ.標簽的控制模式(即標簽是怎么產(chǎn)生的): 有序(常用):只有最下游路由器才能產(chǎn)生標簽,最下游的上游收到最下游的標簽映射消息后,然后才能再往自己的上游發(fā)送標簽映射關(guān)系。 獨立:中間的路由器也可以直接產(chǎn)生標簽 Ⅱ.標簽的分發(fā)模式: 下游按需 :需要的時候上游再向下游詢問標簽信息; 下游自主:不管有沒有問,下游路由器都自主的向上游發(fā)送標簽映射信息(主動向上匯報) Ⅲ.標簽的保留模式:如果有兩條路徑,也就會有兩個標簽,那么路由器保留哪個。 保守:只保留路由表中的”最佳路徑“,跳數(shù)比較少的; 自由:保留所有的標簽,雖然占用了更多的標簽空間,但是收斂會快 以上介紹了MPLS的基礎(chǔ)知識,概念 實際上在運營商網(wǎng)絡(luò)。大型的互聯(lián)網(wǎng)公司與BGP結(jié)合,做VPN是比較多的; 常見應(yīng)用包括MPLS VPN,MPLS QoS,MPLS TE,這方面知識以后再總結(jié)
|