MPLS
MPLS:多協議標籤交換,工做在數據鏈路層與網絡層之間,即2.5層,支持多種協議,基於標籤進行路由。傳統的包交換是基於IP地址進行數據轉發的。
MPLS的主要解決的問題:
1)BGP的路由黑洞(一層標籤,爲普通MPLS分組使用)
2)MPLS ×××(兩層標籤)
3)MPLS TE(流量工程)(三層標籤)
1、MPLS的基本概念網絡
一、轉發等價類
MPLS做爲一種分類轉發技術,將具備相同轉發處理方式的分組歸爲一類,稱爲FEC(Forwarding Equivalence Class,轉發等價類)。相同FEC的分組在MPLS網絡中將得到徹底相同的處理。目前設備只支持根據報文的網絡層目的地址劃分FEC,即到同一個目的地址的全部報文就是一個FEC。dom
二、標籤
標籤是一個固定長度爲4字節,僅具備本地意義的短標識符,用於惟一標示一個分組所屬的FEC。一個標籤只能表明一個FEC。標籤的封裝結構以下圖:
Label Exp S TTL
Label:標籤值字段,長度爲20位,用來表示一個FEC。
Exp:長度爲3位,協議中沒有明確規定,一般用做CoS。
S:長度爲1位,MPLS支持多種標籤。值爲1時,表示爲最底層標籤。
TTL:長度爲8位,和IP分組中的TTL意義相同,能夠用來防止環路。、ide
LFIB的每個條目中包括輸入標誌,輸出標誌,輸入接口和輸出端口的MAC地址,轉發表由輸入標誌對條項進行檢索檢查。學習
LIB與LFIB的區別
經過LIB,只保存有標籤信息,並無出接口和下一跳信息,而你的LFIB,必須有出接口和下一跳信息,不然,沒法實現轉發優化
2、IP轉發原理
利用路由協議(靜態\RIP\OSPF等)生成路由表,根據目的IP地址進行轉發,在IP報文
轉發的過程當中,目的IP地址保持不變。其中用到兩個表:
RIB(路由表):路由信息庫,經過各類路由協議獲取路由信息。
FIB(CEF表):轉發信息庫,根據RIB生成,用於指導IP報文的轉發。
路由器收到數據包,查看數據包的目的IP地址(IP頭部),查找CEF表,根據CEF錶轉發數據。ui
3、MPLS的工做原理
使用路由協議傳遞路由條目時,路由器上使用LDP/TDP爲FIB表中的每一條路由條目均分配一個標籤號,裝載於LIB表中,同時傳遞給鄰居,LIB表中還記錄鄰居傳遞到本地的標籤號,而後路由器基於本地的FIB表和LIB表生成LFIB表。在MPLS網絡中,路由器根據LFIB錶轉發分組。
轉發過程是:輸入端的標記邊緣路由器(LER)接收分組,並給分組貼上標籤,標籤交換路由器(LSR)對帶有標籤的分組進行交換,而後,輸出端的標籤邊緣路由器(LER)去掉標籤,並將分組傳送給終端用戶。blog
4、IP轉發與MPLS轉發的比較
IP包頭長度20字節,MPLS包頭長度是4字節,基於MPLS轉發的效率高於基於IP轉發。
IP網絡是逐跳轉發數據,收到數據包,查找路由表發給下一跳就能夠,而不關心下一跳路由器到底把數據包給誰。IP的逐跳轉發,在通過的每一跳處,必須進行路由表的最長匹配查找(可能屢次),速度緩慢。
MPLS 網絡中,預先分配標籤,生成LSP。 MPLS的標籤轉發,經過事先分配好的標籤,爲報文創建了一條標籤轉發通道(LSP),在通道通過的每一臺設備處,只須要進行快速的標籤交換便可(一次查找)。接口
4、MPLS轉發的四個動做:
1.數據包由IP域進入到MPLS 域,LER根據標籤轉發表壓入標籤(PUSH)。
2.在MPLS域轉發數據包時,LSR根據標籤轉發表替換標籤(SWAP)。
3.當數據包離開MPLS域時,LER是彈出標籤(POP)。PHP:倒數第二跳彈出。
4.在最後一跳將全部標籤移除(Untag)。ci
5、LSR如何判斷所收到的報文是MPLS標籤報文?
根據二層協議字段進行判斷承載的是不是MPLS報文:以太網:0x8847(單播)
和0x8848(組播);PPP:0x8281 MPLSCP,一種新的NCP協議。 路由
6、次末跳彈出機制(Penultimate Hop Poping)
在MPLS ×××應用中,末跳路由器(輸出端LER)在默認狀況下須要查看LFIB表後再查看FIB表,而後轉發數據(轉發給CE,即客戶端路由器),而PHP路由器在已知出接口、下一跳等信息時,即可以將頂層標籤彈出,而後將數據包轉發給末跳路由器(輸出端LER),致使末跳路由器轉發數據包時只需查看FIB表,節省了一次LFIB表的查詢。
爲了讓次末跳LSR執行次末跳彈出,其下游的末跳LSR須要向次末跳LSR分發implicit-null標籤,針對全部帶有imp-null的remote標籤的包,次末跳路由器就執行pop動做,將頂層標籤彈出。爲何要強調「頂層」呢?這是由於對於MPLS ×××環境來說,下面還有一層×××標籤,PHP彈出以後的數據包仍然不是本來的IP包,而是帶有×××標籤的標籤包。這樣egress PE收到這個標籤包以後,進行的不是IP的layer-3查找而仍然是標籤查找,只不過查找的是×××標籤所對應的VRF實例而已。查找完成以後就彈出×××標籤包並放入對應的VRF實例裏面發送給CE。
注意:PHP是MPLS的一種優化或補充,主要應用環境是MPLS ×××。要知道MPLS和MPLS ×××是兩個不一樣的概念,並且,普通的MPLS分組使用一層標籤,而MPLS ×××使用兩層標籤。對於普通MPLS分組,沒有PHP,標籤交換和數據轉發也能正常完成。
名詞解釋:MPLS domain:MPLS的工做範圍LSR(P路由器):標籤交換路由器LER(PE路由器):標籤邊界路由器CE(客戶端路由器):不工做於MPLS域