MPLS-多協議標籤交換

MPLS:多協議標籤交換—ISP使用

數據交換方式

包交換:依賴報文中的IP地址進行數據轉發。原始的包交換需要路由器基於路由表和ARP表來轉發數據。
快速交換:一次路由,多次交換。
CEF:無需路由,直接交換。
標籤交換:基於2.5層的標籤號進行數據轉發;
MPLS—多協議—無論網絡層運行何種協議,2.5均可運行標籤交換;

mpls當下的主要應用

1)解決BGP的路由黑洞問題
2)MPLS VPN
3)MPLS TE(流量工程)

使用MPLS的前提是設備基於CEF工作

1)啓動CEF後,表格可以被ASIC(硬件芯片)直接調用;
2)CEF解決了遞歸的問題,便於MPLS生成標籤轉發表;
3)CEF工作後生成FIB表,只有FIB表可以存儲標籤表;

控制層面:

交互路由信息(路由協議收斂),進行標籤號的分發;通過IGP或EGP交互路由條目,生成路由表,然後CEF基於路由表生成FIB表;MPLS使用TDP/LDP基於FIB表中的每一條信息(本地所有的路由條目)生成一個標籤號,然後告知所有鄰居;
該工作完成後路由器上生成:
0)路由表
1)FIB表—轉發信息數據庫(CEF基於路由表生成)
2)LIB表—標籤信息數據庫(本地和鄰居關於所有學習到的路由條目生成的標籤號)
3)LFIB表–標籤轉發信息數據庫----將FIB表和LIB進行結合

數據層面:

根據路由錶轉發用戶數據報文,基於標籤號進行數據轉發,壓入標籤、彈出標籤;普通的數據包將基於FIB錶轉發;若數據包中存在標籤號基於LFIB進行轉發;標籤的壓入和彈出也是在數據層面完成的;

MPLS的數據包格式

MPLS的數據包
前20位爲標籤號:存在2^20個號碼,其中0-15號保留;
21-23位爲8個優先級,用於QOS;
第24位爲棧底位—爲1標示本信息爲最後一層標籤信息;最多可以存在3層標籤;
一層標籤爲普通MPLS,主要用於解決BGP的路由黑洞;
二層標籤爲MPLS VPN使用;
三層標籤爲MPLS TE使用;
25-32位TTL----當標籤號被壓入時,將複製3層報頭的TTL值,然後每經過一個路由器減1,當標籤號彈出時,複製回IP報頭中;

MPLS的工作過程:

當控制層面使用路由協議傳遞路由條目後,路由器上使用TDP/LDP爲本地FIB表中每一條存在的路由條目均分配一個標籤號,裝載於LIB表中,同時傳遞給鄰居,LIB中還記錄鄰居傳遞到本地標籤號;之後路由器基於本地的FIB和LIB表生成LFIB—標籤轉發表—標籤號的最佳路徑對應;
數據層面工作時,第一跳路由器負責標籤的壓入,中間路由器基於標籤號轉發流量,進行標籤號的替換,最後一跳路由器負責標籤的彈出;
注:入標籤號爲本地分配的標號,出標籤爲下一跳(下游)分配的標籤號;存在上下游路由器概念,基於數據層面定義;

MPLS的優化:

PHP次末跳 -----倒數第二跳;默認執行
最後一跳路由器在默認情況下需要查看LFIB表後再查看FIB表,然後轉發數據;PHP可以使倒數第二跳在已知出接口、下一跳等信息時便將標籤號彈出,然後基於出接口轉發流量;導致最後一跳路由器僅查看FIB表;
最後一跳路由器,將本地直連路由傳遞給鄰居時使用標號3來告知對方爲倒數第二跳;
非直連路由正常分配標籤號;針對域外的非直連路由,域內的最後一跳路由器需要查詢兩張表;建議PE路由直接連接用戶,不再連接其他路由器;
注:pop 標示僅彈出最上層標籤—僅僅只是倒數第二跳; untagged 彈出所有標籤—意味了離開MPLS domain;

配置:

1、單播路由協議 --路由表
2、CEF —FIB
3、(可選,建議配置)–修改MTU值; 鏈路兩端一致;
普通MPLS–1504 MPLS VPN–1508 MPLS TE-1512

r1(config)#interface s1/1
r1(config-if)#mtu ?
  <64-17940>  MTU size in bytes  修改接口MTU值

4、開啓MPLS ----在標籤號所有需要經過的接口上配置

r1(config)#interface s1/1
r1(config-if)#mpls ip  開啓某個接口的MPLS協議

MPLS協議在工作時,存在兩種封裝:
封裝
Cisco ios 版本12.4(3)以下設備默認使用TDP,以上使用LDP;

r1(config)#mpls label protocol ?  修改封裝協議
  ldp  Use LDP
  tdp  Use TDP (default)

協議開啓後,鄰居間使用hello包建立鄰居關係,生成鄰居表:
r2#show mpls ldp neighbor 存在RID,RID的選舉規則同OSPF一致
注:RID同時作爲了建立TCP會話的源目ip地址;若存在環回,那麼默認使用環回作爲RID,此時就必須將環回宣告到路由協議中–必須可達;

r1(config)#mpls ldp router-id serial 1/1 ?  修改RID爲S1/1口的地址
  force  Forcibly change the LDP router id   立即生效
  <cr>                                 重啓設備後生效

當鄰居關係建立後,鄰居間會將基於FIB表生成的標籤號傳遞給鄰居,保存於LIB表中:

r1#show ip cef detail  查看FIB表
r1#show mpls ldp bindings 查看LIB表

之後將LIB表和FIB表進行結合,生成LFIB表,基於該表格進行標籤流量轉發;

r2#show mpls forwarding-table 

使用普通的MPLS來解決BGP的路由黑洞問題:

MPLS將爲FIB表中的路由條目分配標籤號;但通過BGP學習的條目不分配;而是在訪問BGP目標時,壓入到達下一跳地址的標籤號,來通過中間未運行BGP協議的網絡到達下一跳處;

發佈了22 篇原創文章 · 獲贊 61 · 訪問量 6725
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章