摒棄了繁瑣的路由查找,改爲簡單快速的標籤交換
將具有全局意義的路由表改爲只有本地意義的標籤表
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時間