MPLS 原理及配置思路

摒棄了繁瑣的路由查找,改爲簡單快速的標籤交換

將具有全局意義的路由表改爲只有本地意義的標籤表


MPLS包頭:通常有32bit

20bit用作標籤

3個bit的exp,協議中沒有明確,通常用作COS

1個bit的S,用於標識是否是棧低,表明MPLS的標籤可以嵌套

8個bit的TTL


3bit的exp通常對應於ip協議的tos

S位置一:標識後面接的是IP頭部。



標籤label:

是一個比較短的,定長的只具有局部意義。

轉發等價類FEC:

是在轉發過程中以等價的方式處理的一組數據分組。處理動作相同的話就可以理解是相同FEC(一條路由對應一個FEC)

標籤交換通道LSP:

一個FEC的數據流,在不同的節點被賦予確定的標籤,數據轉發按照這些標籤進行。數據流所走的路徑就是LSP

MPLS的網絡的核心交換機LSR:

提供標籤交換和標籤分發功能

MPLS的網絡的邊界交換機LER:

在MPLS的網絡邊緣,進入到MPLS網絡的流量由LER分爲不同的FEC,併爲這些FEC請求相應的標籤。它提供流量分類和標籤的映射、標籤的移除功能




打標籤PUSH、彈出標籤POP

MPLS的標籤轉發,通過事先分配好的標籤,爲報文建立了一個標籤轉發通道LSP,在通道經過的每一臺設備處,只需要經過一次查找即可

FEC的精妙之處:

不同目的地址(屬於相同網段)的IP報文,在ingress處被劃分爲相同的FEC,具有相同的標籤,這樣在LSR處,只需根據標籤做快速的交換即可。cache功能開啓的話,標籤對應的是FEC,可能是網段,可以做到很少的條目匹配大量的報文

FEC的致命缺陷:

對於一條FEC來說,沿途所有的設備都必須具有相同的路由(前綴和掩碼必須完全相同)纔可以建成一條LSP。使用MPLS轉發的所有沿途設備上,對於要使用標籤轉發的路由,不能做聚合操作



靠近二層頭的label爲棧頂label,靠近ip報文的label爲棧低label,lsr執行label交換時總是基於棧頂label。




以太網中:0X8847(單播)和0X8848(組播)來標識承載的是MPLS報文。

PPP中:0X8281來標識承載的是MPLSCP





標籤生成器LDP(label distribution protocol)。跟RIP十分相似.BGP和RSVP也可以分發標籤

幾大要素:

1,報文(消息)

2,鄰居的自動發現和維護機制

3,一套算法,用來根據蒐集到的信息計算最終結果



LDP消息:

發現消息DISCOVERY:用於通告和維護網絡中LSR的存在

會話消息SESSION:用於建立、維護和結束LDP對等體之間的會話連接

通告消息ADVERTISEMENT:用於創建、改變和刪除特定FEC-標籤綁定

通知消息NOTIFICATION消息:用於提供消息通告和差錯通知




鄰居發現:互發hello報文(UDP:PORT646/IP:224.0.0.2)

建立TCP連接:由地址大的一方主動發起(TCP:PORT646)(transport address大)

會話初始化:由MASTER發出初始化消息,並攜帶協商參數

由SLAVE檢查參數能否接受,如果能則發送初始化消息,並攜帶協商參數。並隨後發送keepalive消息

master檢查參數能否接受,如果能則發送keepalive消息

相互收到keepalive消息,會話建立

期間收到任何差錯消息,均關閉會話,斷開TCP連接





LDP會話建立的狀態遷移圖:

NON EXISTENT:會話還沒建立狀態。相互發送hello消息,在此階段協商主動方和被動方。收到tcp連接建立成功事件的觸發後變爲initialized狀態

INITIALIZED:會話連接建立成功。主動方發送initialization報文,轉向opensent狀態,等待被動方的initialization消息

OPENSENT:主動方發送init消息,進入opensent狀態

OPENREC :接收到可接受的init消息後進入openrec狀態

OPERATIONAL:都接收到keepalive消息後進入operational狀態






標記分發方式:

DOD:下游按需標記分發

DU:下游自主標記分發

標記控制方式:

有序方式標記控制

獨立方式標記控制

標籤保留方式:

保守方式

自由方式


上游和下游:在一條LSP上,沿數據包傳送的方向,相鄰的LSR分別叫上游LSR和下游LSR。下游是路由的始發者(宣告者)



DU方式:

下游主動向上游發出標記映射消息。標籤分配方式中同樣存在水平分割。

標籤是設備隨機自動生成的,16以下爲系統保留

DOD方式的使用較少:

上游向下遊發標籤映射請求消息,下游收到消息後,根據請求的FEC,從標籤資源池裏面分配標籤資源



自由方式:

保留來自鄰居的所有發送來的標籤

優點:當IP路由收斂、下一跳改變時減少了lsp收斂時間

缺點:需要更多的內存和標籤空間


保守方式:

只保留來自下一跳鄰居的標籤,丟棄所有非下一跳鄰居發來的標籤

優點:節省內存和標籤空間

缺點:當IP路由收斂、下一跳改變時lsp收斂慢

自由方式使用的更多



有序方式:除非LSR是路由的始發節點,否則LSR必須等收到下一跳的標記映射才能向上遊發出標記映射


獨立方式:LSR可以向上遊發出標記映射,而不必等待來自LSR下一跳的標記映射消息

比較流行的是有序方式





DU+自由+有序方式:

1,發現自己有直連接口路由時會發送標籤

2,收到下游到某條路由的標籤並且該路由生效(也就是說,在本地已經存在該條路由,並且路由的下一跳和標籤的下一跳相同)時會發送標籤

3,標籤表中會存在大量的非選中的標籤

只會對運行MPLS的設備的直連路由生成標籤,對於其他設備(IP域)始發的路由則不會生成標籤。




幀模式:獨立控制+自主分發DOD+自由保留


信元模式:有序控制+按需分發DU+保守保留





標籤拆除方式:

標籤釋放:

上游主動發送標籤釋放消息通知下游釋放某一個標籤,以後不再使用該標籤發送數據,標籤釋放消息不需要確認消息


標籤撤銷:

下游向上遊發送標籤撤退消息通知上游停止使用某個標籤時,需要上游路由器發送標籤釋放消息確認




標籤轉發表中的IN和OUT,是相對於標籤轉發而言,不是相對於標籤分配的IN和OUT

心法口訣:入標籤是我分給別人的,出標籤是別人發給我的

我分配的標籤是給別人用的,我不會添加到報文中

in標籤不可以重複,out標籤可以重複


全局標籤空間:

所有的入標籤一定不同

對於相同的路由(下一跳相同),出標籤一定相同

對於不同的路由(下一跳相同),出標籤一定不同

對於不同的路由(下一跳也不同),出標籤可能相同

對於同一條路由,入標籤和出標籤可能相同

接口標籤空間:



倒數第二跳彈出PHP:

在倒數第一跳爲其分配標籤時做一下特殊說明即可(分配一個特殊的標籤3)

當egress lsr接收到倒數第二跳發來的MPLS標籤時,直接進行IP路由轉發。倒數第二跳彈出所有標籤


顯示空0標籤:用於QOS

路由器報警1標籤:軟件轉發



路由環路的預防:

LSP的建立是依賴於IP路由的。環路的預防是交給IP來做。

標籤只會由下游設備發送給上游設備

路由環路的檢測:

每經過一次MPLS轉發,TTL減一


在標籤轉發過程中,MPLS報文頭中的TTL減一,IP報文中的TTL就不會減一了。因爲在轉發過程中,不會涉及到三層解封裝了




TDP:TAG DISTRIBUTION PROTOCOL。Cisco專有標準

發現鄰居:源目端口號都爲UDP:711

建立鄰居:目標端口爲TCP:711,源端口隨機

後面都是TCP。

LDP和TDP一樣,知識端口換成646即可



MPLS必須先啓用CEF,因爲只有在cef的fib表中才能插入標籤




用戶的邊界網關通常標註爲CE

SP的邊界網關通常標註爲PE,內部的路由器標註爲P



邊界路由器對每一個ICG路由條目都會分配一個標籤,但對BGP路由條目不會這樣。對BGP條目統一用其更新源的標籤



LIB:路由條目和所分配標籤的對應表

FLIB:每一個標籤和下一跳以及下一個標籤的對應表,是標籤的轉換表 show mpls ip binding

LFIB:標籤的轉換表 show mpls forwarding-table

路由器會把別人給的標籤也放入LIB表









LDP PDU頭部:

版本號:16bit,目前版本號始終爲1

PDU長度:16bit,值爲LDP PDU頭部以後的數據部分的長度,不包括LDP PDU頭部

LDP ID:48bit,前32bit爲LSR-ID,後16bit爲標記空間標誌,全局空間爲0,局部接口空間爲1


LDP消息格式:

U:這一位總是爲0,代表可識別的消息。爲1代表不可識別的消息

類型域:協議根據這個域識別不同的消息

長度域:指示出長度域之後的數據部分的長度

消息ID:用來唯一的標識這個消息。


消息種類:

鄰居發現消息:在啓用LDP協議的接口上週期性發送該消息

hello消息

會話建立和維護消息:用來建立和維護LDP會話

initialization消息

keepalive消息

標籤分發消息:用來請求、通告及撤銷標籤綁定

address message

address withdraw message

label request message

label mapping message 分發標籤

label withdraw message

label release message

label abort request message

錯誤通知消息:用來提示LDP對等體在會話過程中的重要事件

notification消息


建立鄰居:hello時間和保持時間分別是5秒和15秒,hello包不能跨網段

LDP會話:hello和保持時間分別是60秒和180秒

修改發現鄰居hello時間:mpls ldp discovery hello interval 3

修改會話hold時間:mpls ldp hold time 150



數據流向下遊,向上遊分發label







MPLS PING/TRACEROUTE使用IPV4/IPV6的UDP協議來實現。LSP PING/TRACEROUTE的基本思路是使用特定FEC轉發類的分組來驗證對應該FEC的LSP的完整性

echo request的udp端口爲3503





路由條目標籤的限制:

可以收到6.6.6.6的標籤

access-list 6 permit 6.6.6.6

mpls ldp neighbor 12.12.12.2 labels accept 6


控制具體的路由器發送標籤限制:

控制R3只把6.6.6.6標籤發給R2

access-list 2 permit 2.2.2.2(此地址必須爲對方的RID)

access-list 6 permit 6.6.6.6(此爲具體的路由條目)

no mpls ldp advertise-labels

mpls ldp advertise-labels for 6 to 2


LDP的認證:

mpls ldp neighbor 12.12.12.2 password 0 cisco





LDP直連鄰居,那麼這個會話就叫做LDP sessions

LDP遠程鄰居,那麼這個會話就叫做targeted session,hello包稱爲LDP Targeted hello

一般在備用鏈路上配置遠程會話,以防止主鏈路斷了導致會話失敗


LDP會話保護:兩臺直連LSR之間的雙聯路備份

mpls ldp session protection 兩邊都要做,或者使用下面命令

mpls ldp neighbor 1.1.1.1 targeted ldp 不指定ldp,默認爲tdp


也可以通過acl指定鄰居和時間:

access 1 per 1.1.1.1

mpls ldp session protection for 1 duration 90s


手工配置遠程會話:

1,mpls ldp neighbor 2.2.2.2 targeted ldp



ICG和LDP同步:只有當IGP和LDP都認爲某條鏈路UP後,纔可以轉發流量。在某些情況下,當LDP鄰居還沒有建立或者鄰居丟失而沒有爲路由發送標籤時,如果這時IGP鄰居已經建立並學到路由條目後,就會開始IP交換,那麼後來當LDP正常以後,可能會出現丟包的情況

目前只能和OSPF同步,並且只有在接口下配置mpls ip時纔可以使用。ospf等待ldp鄰居建立的最大時間爲holddown


router ospf 12

mpls ldp sync 開啓同步


mpls ldp igp sync holddown 1000 設置holddown時間
























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章