MPLS , LDP
MPLS:多協議標籤交換。
中間路由器不在需要完整的路由表可以利用MPLS標籤的方式轉發數據
◆應用領域:
***
TE 流量工程
QOS
AToM
BGP
◆ FEC 轉發等價類
MPLS 是具有分類轉發特點的技術
將具有相同轉發處理方式如
相同的目的地
相同的轉發路徑
相同的服務等級
MPLS可以爲各種FEC形成標籤如
layer 3 ***
layer 2 circuit
相同的QoS級別
同一條IGP路由
◆ MPLS的兩個層面。本身是數據層面的轉發方式
◎ control plane
利用LDP, BGP, RSVP分配標籤
◎ date plane基於標籤轉發報文
◆ 從 IP 域進入 MPLS 域 ---查FIB表
從 MPLS 域進入----------查LFIB表
從MPLS域進入IP域------pop(次末節彈出)
LIB表所有方向過來的標籤表。
FLIB表真正用到的標籤表
◆ MPLS封裝
◎ MPLS標籤報文格式
- 在2層報頭和3層報頭之間插入MPLS報頭可以插入多個MPLS頭部
- 這種標籤模式也被稱爲幀模式
二層報頭 | MPLS報頭1 | MPLS報頭2 | MPLS報頭3 | IP報頭 | 數據 |
最靠近2層的爲頂部
最靠近3層的爲底部
轉發過程用頂部標籤轉發
通過MPLS報頭字段表示自己是在頂部還是底部
◎ MPLS標籤格式4byte 32bits
label 20bits | EXP 3bit | S 1bit | TTL 8bits |
※ label0-15保留3隱士空標籤
※ EXP:用於MPLS轉發做QoS
※ S 站底位用於標示當前是否最靠近3層報頭
※ TTLMPLS報文每次轉發減1. 與IP的TTL左右一樣
◎ LSR(標籤轉發路由器)如何判斷收到的報文是MPLS標籤報文
根據2層協議字段判斷
- 以太網上承載MPLS0x8847
- PPP上承載MPLS : 0x8281
※ 以太網上承載 IP 0x0800
※ 以太網上承載 ARP: 0x0806
※ 以太網上承載 ipv6: 0x86dd
※ 以太網上承載 802.1q : 0x8100
◎ 信源模式cell mode (已經淘汰的技術)
ATM 信元頭中使用VPI/VCI 作爲標籤而不在單獨插入一個新的MPLS標籤頭
ATM Header | payload |
VPI/VCI
◆ MPLS 轉發時的相關概念
- 轉發原理
- R1-R4根據LDP生成標籤轉發表項
* 路由與標籤之間要存在映射關係FEC基於相同的IGP路由【BGP不被分標籤】的轉發等價類
* 需要與IGP 協議的路由表配合
- 標籤分配過程
1LSR會爲每一個路由分配標籤不只是自己本地直連的路由形成LFIB表
2例如上圖PCB的路由R4與其直連所以分配一個隱士空POP標籤
3R4通過IGPospf傳給R3,R3爲此路由分配一個標籤本地分配的標籤是給鄰居用的。以此類推R1 R2也會爲PCB分配標籤同時傳給鄰居R1 R3都會收到R2的標籤但是R3不要
- 數據轉發過程
1數據從A到B從IP域進入MPLS域查FIB表
幾個關鍵概念
1出入標籤數據轉發的方向定義出入。針對某個LSR入標籤是自己分給上 遊鄰居的出標籤是下游鄰居分給自己的
2LSR 標籤交換路由器
3上下游數據傳輸的方向
2數據到R1,打上202的出標籤R2給R1的傳給R2.
3R2收到R1的數據從MPLS域過來的所以查LFIB表看到入標籤是自己的就收下同時 交換302的出標籤傳給R3
4R3收到302的入標籤打上R4給的POP標籤彈出。把IP路由傳給R4
5R4收到一條IP路由查FIB表傳給PCB
◎ 使用MPLS使得MTU變大
MTU2層以上的數據就是MTU。
PC發出來的IP包
以太網 | IP |
LSR發出來的
以太網 | MPLS 4Byte | IP 最大1500Byte |
所以一層MPLS的MTU最大就是15042層MPLS的MTU最大就是15083層最大是1512
默認最大MTU是1500,如果是IP的話可以切片。如果不是IP不能切片就會丟棄。
也可以手動修改MTU避免切片
###############################################################
LDP協議基本原理
LDP簡介
- label distribution proocal :標籤分發協議
- 在RFC 3036 中定義
- LDP 建立鄰居階段1發現鄰居階段2回話建立階段
- LDP協議報文除了hello報文基於UDP外其他報文都是在TCP之上。端口號646
tcp,3層源目IP都是單播。
◆ LDP鄰居發現
◎ 發現鄰居階段使用UDP報文
src:本地接口IP | dst:224.0.0.2 所有路由器監聽的組播地址 | UDP | src port 646 | dst port 646 | LDPhello |
HELLO包中的關鍵字段 LSR-id。只能指定某個接口鄰居互相知道對端LSR-id.
trans address (使用與LSR-ID相同)建立tcp連接的地址由於互相知道地址所以可以自動建立TCP連接
◎ LDP協議鄰居建立過程
- 鄰居發現階段使用UDP報文自動發現對方並確定TCP連接的IP地址
- 鄰居建立階段由trans address大的一方主動發起TCP連接。所以LSR-ID地址一定要路由可達
★ show mpls ldp discovery // 查看LSR ID
可以手動修改trans address接口下.一定要手動配置
★ ldp discovery transport-address interface
R1 -------------------------------------------------------- ------------------R2
1.1.1.1 <-----initialization messade初始化---------- 2.2.2.2
----初始化的 keep alive ------------------->
< ---------------- keep alive ---------------------
< ---本地IP和 label mapping message---
---- 本地IP和 label mapping message-->
< ---------------- keep alive ---------------------
---------------- keep alive ------------------------>
保活過程除了使用keep alive外還使用hello報文跟蹤鏈路保活。·
★ show mpls ldp neighbor //查看TCP回話建立情況 一定是transADD大的主動發起TCP
◆ LDP 配置
全局配置
ip cef
mpls label protocal ldp
mpls ip //用於路由器具備MPLS能力
mpls ldp route-id
mpls label range xxx //使用用觀察標籤
j接口配置
mpls ip
★ show mpls ldp discovery //查看發現的LDP鄰居不一定建立了TCP連接
★ show mpls ldp neighbor //查看建立了TCP連接的LDP鄰居
★ show mpls ldp binding // 查看LIB表收到的所有標籤
★ show mpls fowarding-table // 查看LFIB表
★ show ip cef 12.1.1.1 //查看具體路由的FIB表。從IP域進入MPLS域
★ show mpls forwarding-table detial //注意其中一串數字是2層封裝
2層格式
目標MAC | 源MAC | type |
◎ LDP 部署建議
- 首先部署IGP協議
- 必須保證LDP的router ID 路由可達
◆ LDP 必須與IGP路由協議配置使用
- 在幀模式下我每一個路由分配一個標籤並通告給LDP鄰居
- 爲本地直連路由分配 POP 標籤
◆ 標籤映射格式
FEC TLV 轉發等價類
label TLV 標籤表 。3POP 隱士空標籤次末跳彈出
◆ 次末跳彈出提高轉發效率避免末節LSR查2次表
最末節LSR 會爲本地的直連末節路由分配一個POP標籤即次末節的出標籤。
下圖R1會爲PCA的路由分配POP標籤作爲R2的出標籤
POP 標籤僅彈出頂層最靠近2層的標籤頭經過該動作後報文可以是IP報文也可以是MPLS標 簽報文
untag: 會將所有標籤頭都移除變成一個純IP報文發出去。
###############################################################
MPLS標籤處理方式
- 分配模式 label allocation
- 分發模式 label distribution
- 保留模式 label retention
- 標籤空間 label space
◆ 分配模式2種
1獨立分配模式 independent control (LDP)
只要本地通過IGP學習到路由前綴就會爲這條路由前綴分配標籤爲直連分配POP
2有序分配模式 Odered control
通過IGP學習的路由在收到下一跳路由器分配的標籤後纔會爲該前綴分配標籤
◆ 分發模式2種
1主動模式:downstream unsolicited (LDP)
主動將所有的標籤映射消息通告給所有LDP鄰居
2, 下游按需模式 downstream on demand
只有鄰居向本地請求某條前綴的標籤映射消息時本地纔會通告標籤映射消息給鄰居
◆ 保留模式2種
1自由模式liberal retention (LDP)
將從鄰居接收的所有標籤映射消息都保存在數據庫中
2, 保守模式conservation retention
本地僅保存最優路由下一跳鄰居通告的該路由前綴的標籤映射消息
◆ 標籤空間
本地所通告出去的標籤是對局部接口有意義還是對全局有意義
1基於平臺;per-platform (ldp)
本地通告出去的標籤映射消息對全局有意義從不同接口通告出去的同一FEC所對應的標籤相同
sho mpls ldp discovery //中的 0 表示基於平臺
2, 基於接口 per-interface (ATM)
從不同接口通告出去的同一FEC所對應的標籤不同
◆ LDP 協議的標籤行爲
分配模式獨立分配
分發模式下游主動分發
保留模式自由模式
標籤空間基於平臺
◆TE 分配方式
分配有序控制模式
發發下游按需模式
保留保守模式
標籤空間 基於接口
◆ MPLS 轉發與LDP 標籤數據庫的關係
LDP 標籤數據庫包含所有鄰居所通告的標籤映射消息
LSR 只會選擇最優路由嚇一跳路由器所通告的標籤映射消息進入MPLS轉發表
###############################################################
MPLS 轉發與BGP的交互(解決路由黑洞)
◆ MPLS 不會爲BGP的路由分配標籤
回顧路由黑洞的產生原因IBGP中中間的路由器沒有到達目標網絡的路由。
可以通過RR或聯邦解決
◆ MPLS不給BGP路由打標籤那BGP路由如何傳遞
遞歸
BGP路由的下一跳是一個IGP路由MPLS會給IGP路由打標籤
◆ LSP 標籤交換路徑爲一條IGP路由轉發所使用的標籤轉發通道
◆實驗1:用loopback口建IBGP鄰居
1R1-R6運行ospf並啓用LDP
2, R5和R6使用loopback口建立ibgp鄰居
3R5另起loopback1 55.1.1.1宣告進BGP (等60秒才能最優)
R6另起loopback1 66.1.1.1宣告進BGP
4觀察
R5 可以ping通 R6
R1 R2 R3 沒有lo1 的路由
lo1 是BGP路由 沒有打標籤通過遞歸通信
sho ip ro bgp 查看LO1的嚇一跳是lo0而lo0運行在IGP中。LDP會爲lo0打標籤
R5 R6lo0的LSP。
trace 66.1.1.1 看到的標籤 是爲lo066.1.1.1的嚇一跳IGP路由分的標籤
sho mpls forwarding 看標籤路由映射表
◆ 實驗2 上圖使用F口建立BGP
實驗結果就不能通信。
原因
R5 R6使用F口建立BGP鄰居。R2就是次末節LSR就會彈出標籤到達R3就是目的去66.1.1.1 的IP 路由。但是R3沒有該路由。
R5: show ip bgp //下一跳是36.1.1.6
即通信要考36.1.1.6的LSP。
sho mpls forward //R2次末彈出
R3sho ip ro bgp // R3沒有啓用BGP。
所以不通
###############################################################
不連續的 LSP
◆IP彙總對LSP的影響
◆ OSPF的24位掩碼迴環口對LSP 的影響
沒有路由所以會分配一個no label。彈出所有標籤
###############################################################
環路檢測
LDP 的環路檢測機制依賴IGP協議
如果產生一個環路(如錯誤配置靜態路由),標籤頭的TTL字段防止報文無限制循環
TTL功能與IP頭中的TTL功能一致
默認情況下TTL將會從IP 頭中複製
◆進制TTL值的複製
TTL複製功能可以禁用。命令 no mpls ip propagate-ttl
IP TTL 值將不會被複制到MPLS,MPLS的TTL值也不會被複制到IP
此時,LSP的入口處,MPLS的TTL值是 255
整個MPLS域的 trace route 不顯示任何核心路由器,禁用TTL的複製可以隱藏MPLS域的核心路由器
◆MPLS轉發特性 1
數據在傳遞過程中,如果出現差錯(中間路由器沒有到目的網絡的路由),會將這個差錯報文打 上標籤傳到LSP出口,然後再傳回目的
###############################################################
加快LDP 冗餘鏈路收斂
冗餘鏈路,在鏈路失效的情況下,MPLS 的收斂不會影響整體的收斂時間。
因爲,在基於自由保留的分配機制下,只要IGP收斂後,LIB表根據路由表匹配就可以生成新的LFIB 表。
但是,在原鏈路重新UP 後,路由表又變成原來的路由,但是LDP還沒有同步(有路由,但是no label), 這種情況,對於BGP網絡(依賴標籤通信的網絡)就會丟包。
解決方法:思路:讓LDP先同步,有LIB表後,再同步IP路由
方法一:
會話保護。可以避免重建LDP會話,可以對會話進行保護,只要路由可達,LDP session就 得到保護。(有路由,標籤就不會從LIB表中消失)
在LDP鄰居兩端啓用target session 。實現跨越多跳來維持session。
配置方法:
1,在所有支持session 保護的路由器上配置
★全局 mpls ldp session protection
2, 在不支持session保護的路由器上配置:
★發送端 mpls ldp nei x.x.x.x targeted ldp
★接收端 mpls ldp discovery tageted-hello accept
show mpls ldp discovery //target hello
show mpls ldp nei //target hello
方法二:LDP與IGP同步(目前只OSPF支持)
思路,OSPF鏈路恢復,要等LDP鄰居建立後纔回復ospf鄰居關係
平臺區分:
7200平臺. 備份鏈路UP後,把被保護的主鏈路的cost置爲最大(65535),等LDP標籤 同步後再把cost值置爲正常值
37系列平臺,在等LDP同步後,才發ospf hello纔可以建立鄰居。需要配合配置hold時 間,防止在單一鏈路,其他的接口配置了冗餘,而單連璐LDP一直不同步,恢復 ospf 鄰居
配置:
ospf進程下。mpls ldp sync
show mpls igp sync // 查看同步,注意所有接口參與ospf的接口都被開啓了同步
###############################################################
◆ LDP timer
◆ MD5認證
全局 mpls ldp neighbor x.x.x.x password test
clear mpls ldp neighbor * //清鄰居關係
◆ MPSL 自動配置
ospf進程下 mpls ldp autoconfig area X //運行在相應AREA 的接口自動運行LDP
在不需要運行LDP的接口下,可以no掉。 no mpls ldp igp autoconfig
show mpls interface detail
show mpls interface all //查看使能MPLS的接口
◆ 控制標籤的分發
默認 自由分配
主動分發
自由保留
1,no mpls ldp advertise-labels //關閉標籤分發能力
2,mpls ldp advertise-labels for 90 to 91 // for:爲哪些路由分標籤。to: 爲哪個路由器分
access-list 90 permit 2.1.1.1
access-list 90 permti 3.1.1.1
access-list 91 permit 1.1.1.1
// 只給R1 分路由2.1.1.1和3.1.1.1的標籤
3, mpls ldp neighbor x.x.x.x labels accept acl_mumber // 控制接收哪些標籤
###############################################################
◆ MPLS 排錯
show run | in mpls // 排錯用,因mpls配置都是以mpls開頭的
※ 默認配置:no 掉默認
ip cef // sho ip cef查看
mpls ip // sho run | in mpls 可以看到
※ LDP 鄰居不能建立
1, transs add不可達,loop back更大的地址沒有路由
sho mpls ldp discovery // LDP id NO ROUTE
把LDP id 的環回口地址宣告進IGP路由 就可以解決
或者 mpls ldp router-id lo0 force // 強制LDP ID是lo0 。force:搶佔
2,更改了默認協議 LDP --> TDP
sho run | in mpls //可以看到
mpls label protocol ldp // 修改協議爲LDP
※ 標籤控制手段導致收不到標籤
※ 控制了標籤範圍 ,使得沒有足夠標籤爲路由分配
mpls ldbel range 100 101 // 只配置了2個標籤 。sho run | in mpls 可以看到