01-MPLS基礎配置
本章節下載: 01-MPLS基礎配置 (479.00 KB)
MPLS(Multiprotocol Label Switching,多協議標簽交換)是目前應用比較廣泛的一種骨幹網技術。MPLS在無連接的IP網絡上引入麵向連接的標簽交換概念,將第三層路由技術和第二層交換技術相結合,充分發揮了IP路由的靈活性和二層交換的簡潔性。
MPLS廣泛應用於大規模網絡中,它具有以下優點:
· 在MPLS網絡中,設備根據短而定長的標簽轉發報文,省去了查找IP路由表的繁瑣過程,為數據在骨幹網絡中的傳送提供了一種高速高效的方式。
· MPLS位於鏈路層和網絡層之間,它可以建立在各種鏈路層協議(如PPP、ATM、幀中繼、以太網等)之上,為各種網絡層(IPv4、IPv6、IPX等)提供麵向連接的服務。
· 支持多層標簽和麵向連接的特點,使得MPLS具有良好的擴展性,在MPLS網絡基礎上可以為客戶提供各種服務。目前,MPLS在VPN、流量工程、QoS等方麵得到廣泛應用。
FEC(Forwarding Equivalence Class,轉發等價類)是MPLS中的一個重要概念。MPLS將具有相同特征(目的地相同或具有相同服務等級等)的報文歸為一類,稱為FEC。屬於相同FEC的報文在MPLS網絡中將獲得完全相同的處理。
標簽是一個長度固定、隻具有本地意義的標識符,用於唯一標識一個報文所屬的FEC。一個標簽隻能代表一個FEC。
如圖1-1所示,標簽封裝在鏈路層幀頭和網絡層報文頭之間,長度為4個字節,由以下四個字段組成:
· Label:標簽值,長度為20bits,用來標識一個FEC。
· TC(Traffic Class,流量等級):3bits,用於QoS。該字段又稱為Exp字段。
· S:標簽棧底標識位,長度為1bit。MPLS支持多重標簽,即在鏈路層幀頭和網絡層報文頭之間可以封裝多個標簽,形成標簽棧。靠近鏈路層幀頭的最外層標簽為棧頂標簽;靠近網絡層報文頭的最內層標簽為棧底標簽。S位為1時表示為棧底標簽;S位為0時表示為非棧底標簽。
· TTL:8bits,和IP報文中的TTL意義相同,可以用來防止環路。
LSR(Label Switching Router,標簽交換路由器)是具有標簽分發能力和標簽交換能力的設備,是MPLS網絡中的基本元素。
屬於同一個FEC的報文在MPLS網絡中經過的路徑稱為LSP(Label Switched Path,標簽交換路徑)。
LSP是一條單向報文轉發路徑。在一條LSP上,沿數據傳送的方向,相鄰的LSR分別稱為上遊LSR和下遊LSR。如圖1-2所示,LSR B為LSR A的下遊LSR,相應的,LSR A為LSR B的上遊LSR。
與IP網絡中的FIB(Forwarding Information Base,轉發信息庫)類似,在MPLS網絡中,LSR接收到帶標簽的報文後,通過查找LFIB(Label Forwarding Information Base,標簽轉發信息庫)獲取對應的標簽操作類型、出標簽值、下一跳等,以確定如何轉發該報文。
MPLS節點由兩部分組成:
· 控製平麵(Control Plane):負責標簽的分配、FEC—標簽映射的交換、標簽轉發表的建立、標簽交換路徑的建立、拆除等工作;
· 轉發平麵(Forwarding Plane):依據標簽轉發表對收到的報文進行轉發。
如圖1-3所示,MPLS網絡的基本構成單元是LSR。MPLS網絡包括以下幾個組成部分:
· 入節點Ingress:報文的入口LSR,負責為進入MPLS網絡的報文添加標簽。
· 中間節點Transit:MPLS網絡內部的LSR,根據標簽沿著由一係列LSR構成的LSP將報文傳送給出口LSR。
· 出節點Egress:報文的出口LSR,負責剝離報文中的標簽,並轉發給目的網絡。
LSP的建立過程實際就是將FEC和標簽進行綁定,在LSR上建立標簽轉發表的過程。LSP既可以通過手工配置的方式靜態建立,也可以利用標簽分發協議動態建立。
建立靜態LSP需要用戶在報文轉發路徑中的各個LSR上手工配置為FEC分配的標簽。建立靜態LSP消耗的資源比較少,但靜態建立的LSP不能根據網絡拓撲變化動態調整。因此,靜態LSP適用於拓撲結構簡單並且穩定的小型網絡。
標簽分發協議是MPLS的信令協議,負責劃分FEC、通告FEC—標簽綁定、建立維護LSP等。標簽分發協議的種類較多,有專為標簽分發而製定的協議,如LDP(Label Distribution Protocol,標簽分發協議),也有擴展後支持標簽分發的協議,如MP-BGP、RSVP-TE。
為了區分,本文中“標簽分發協議”表示廣義上所有用於標簽分發的協議的總稱;“LDP”表示RFC 5036規定的標簽分發協議。
利用標簽分發協議動態建立LSP的過程如圖1-4所示。下遊LSR根據目的地址劃分FEC,為特定FEC分配標簽,並將FEC—標簽綁定關係通告給上遊LSR;上遊LSR根據該綁定關係建立標簽轉發表項。報文轉發路徑上的所有LSR都為該FEC建立對應的標簽轉發表項後,就成功地建立了用於轉發屬於該FEC報文的LSP。
圖1-4 動態LSP建立過程
圖1-5 MPLS轉發過程示意圖
如圖1-5所示,MPLS網絡中報文的基本轉發過程為:
(1) Ingress(Device B)接收到不帶標簽的報文,根據報文的目的IP地址查找FIB表獲取報文的出標簽(40)、下一跳LSR(Device C)和出接口(Interface B1),為報文添加標簽,並從相應的出接口將帶有標簽的報文轉發給下一跳LSR。
(2) Device C根據報文上的標簽(40)查找LFIB表獲取報文的標簽操作(交換標簽)、出標簽(50)、下一跳LSR(Device D)和出接口(Interface C1),用新的標簽(50)替換原有標簽後,從相應的出接口將帶有標簽的報文轉發給下一跳LSR。
(3) Egress(Device D)接收到標簽報文,根據報文上的標簽(50)查找LFIB表獲取報文的標簽操作(刪除標簽)、下一跳LSR(Device E)和出接口(Interface D1),刪除報文中的標簽,從相應的出接口將不帶標簽的報文轉發給下一跳LSR。如果LFIB表項中沒有記錄下一跳和出接口,則根據IP報文頭查FIB表轉發該報文。
MPLS網絡中,Egress節點接收到帶有標簽的報文後,查找標簽轉發表,彈出報文中的標簽後,再進行下一層的標簽轉發或IP轉發。Egress節點轉發報文之前要查找兩次轉發表:兩次標簽轉發表,或一次標簽轉發表一次路由轉發表。
為了減輕Egress節點的負擔,提高MPLS網絡對報文的處理能力,可以利用PHP(Penultimate Hop Popping,倒數第二跳彈出)功能,在倒數第二跳節點處將標簽彈出,Egress節點隻需查找一次轉發表。
MPLS通過分配空標簽實現倒數第二跳彈出。空標簽分為:
· 隱式空標簽:取值為3。當一個LSR發現下遊LSR通告的標簽為隱式空標簽時,它並不用這個值替代棧頂原來的標簽,而是直接彈出標簽,並將報文轉發給下遊LSR(即Egress)。Egress接收到報文後,直接進行下一層的轉發處理。
· 顯式空標簽:取值為0或2。0用於IPv4網絡;2用於IPv6網絡。在某些情況下,Egress需要根據標簽棧中的TC等信息決定QoS策略,此時利用顯式空標簽就可以在保留標簽棧信息的同時,簡化Egress節點的轉發處理。Egress為FEC分配顯式空標簽並通告給上遊LSR後,上遊LSR用這個值替代棧頂原來的標簽,並將報文轉發給下遊LSR(即Egress)。Egress收到標簽值為0或2的報文時,不會查找標簽轉發表,從標簽中獲取TC等信息後,直接彈出標簽棧,進行下一層的轉發處理。
與MPLS相關的協議規範有:
· RFC 3031:Multiprotocol Label Switching Architecture
· RFC 3032:MPLS Label Stack Encoding
· RFC 5462:Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field
MPLS配置任務如下:
(1) 使能MPLS功能
(2) (可選)配置MPLS MTU
(3) (可選)配置設備作為Egress節點時為倒數第二跳分配的標簽類型
(4) (可選)配置MPLS轉發水平分割
(5) (可選)配置MPLS的負載分擔方式
(6) (可選)配置TTL複製
開啟本功能後,Ingress節點會將原IP報文中的TTL值複製到MPLS標簽的TTL域,借助IP tracert等工具,可以了解報文在MPLS網絡中的轉發路徑。
(7) (可選)使能MPLS的TTL超時消息發送功能
(8) (可選)配置FTN轉發統計功能
(9) (可選)配置LSP的MPLS標簽轉發統計功能
(10) (可選)開啟MPLS模塊的告警功能
在使能MPLS功能之前,需要配置單播靜態路由或IGP協議,保證各LSR在網絡層互通。
(1) 進入係統視圖。
system-view
(2) 配置本節點的LSR ID。
mpls lsr-id lsr-id
缺省情況下,未配置LSR ID。
LSR ID采用點分十進製格式,與IP地址格式相同。
LSR ID在MPLS網絡內必須唯一,推薦使用Loopback接口的IP地址作為LSR ID。
(3) 進入需要轉發MPLS報文的接口視圖。
interface interface-type interface-number
(4) 使能接口的MPLS能力。
mpls enable
缺省情況下,接口的MPLS能力處於關閉狀態。
MPLS標簽棧位於鏈路層幀頭和網絡層報文頭之間。在MPLS轉發過程中,雖然網絡層報文長度小於接口的MTU,但是增加MPLS標簽後,報文長度可能超過鏈路層允許發送的範圍,從而導致報文無法正常轉發。
為此,設備上定義了MPLS MTU,MPLS轉發時將增加標簽後的報文長度與MPLS MTU比較。報文長度大於MPLS MTU時:
· 如果允許分片,則LSR移除報文的標簽棧,對IP報文進行分片(分片大小為MPLS MTU值減去標簽棧的長度),分片後將被移除的標簽棧添加到每個分片上,再進行轉發;
· 如果不允許分片,則直接轉發。
MPLS MTU會影響IP入MPLS時的流量轉發。
不建議將接口MPLS MTU值設置過小,否則容易導致因IP分片影響性能,嚴重時甚至出現丟包現象。
配置的MPLS MTU值不能大於接口MTU,否則有可能導致數據轉發失敗。
如果MPLS報文內封裝的是L2VPN報文或IPv6報文,則即使報文長度大於MPLS MTU,也會發送該報文,報文能否發送成功由接口的實際情況決定。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 配置接口的MPLS MTU。
mpls mtu size
缺省情況下,未配置接口的MPLS MTU值。此時如果配置了IP MTU,則根據IP MTU進行分片;如果未配置IP MTU,則根據接口的MTU值進行分片。分片的長度不包含MPLS標簽棧的長度,為分片添加MPLS標簽棧後MPLS報文的長度可能會大於接口MTU的值。
請根據實際情況選擇Egress節點為倒數第二跳分配的標簽類型:
· 如果倒數第二跳節點支持PHP(Penultimate Hop Popping,倒數第二跳彈出)功能,則建議采用隱式空標簽;
· 如果在簡化Egress節點轉發處理的同時,希望Egress節點能夠根據標簽中的TC等信息決定QoS策略,則建議采用顯式空標簽;
· 非空標簽隻使用在一些比較特殊的場景,比如Egress節點上部署了OAM,隻有根據標簽才能對應到OAM功能實體的情況,通常情況下不建議使用非空標簽。
對於LDP LSP,執行mpls label advertise命令修改Egress分配的標簽類型後,已經建立的LDP LSP會被拆除,並根據新的標簽類型重新建立。
對於BGP LSP,mpls label advertise命令隻對新建立的BGP LSP生效,執行本命令前已經建立的BGP LSP不受影響。若要使本命令對已經建立的BGP LSP生效,則需要從BGP路由表中刪除BGP LSP對應的路由,並重新引入該路由。
(1) 進入係統視圖。
system-view
(2) 配置設備作為Egress節點時為倒數第二跳分配的標簽類型。
mpls label advertise { explicit-null | implicit-null | non-null }
缺省情況下,Egress節點為倒數第二跳分配隱式空標簽(implicit-null)。
通過配置MPLS轉發的水平分割功能,可使從一個接口收到的MPLS報文不再從該接口向外發送,用於避免環路。
(1) 進入係統視圖。
system-view
(2) 開啟MPLS轉發的水平分割功能。
mpls forwarding split-horizon
缺省情況下,MPLS轉發的水平分割功能處於關閉狀態。
設備轉發MPLS報文時,可以根據設備轉發性能選擇適合的負載分擔方式,以提高轉發效率。
(1) 進入係統視圖。
system-view
(2) 配置MPLS的負載分擔方式。
mpls load-sharing mode { per-flow { label | ip } | per-packet }
本命令的缺省情況與設備的型號有關,請以設備的實際情況為準。
IP報文進入MPLS網絡和IP報文離開MPLS網絡時,TTL的處理方式分為以下幾種:
· 使能TTL複製功能:Ingress節點為IP報文壓入標簽時,將原IP報文中的TTL值複製到新增加的標簽的TTL域。LSR轉發標簽報文時,對標簽的TTL值做減一操作。LSR彈出報文的標簽時,將標簽的TTL值複製回IP報文。使用這種方式時,MPLS骨幹網中的節點對用戶網絡的報文可見。報文沿著LSP傳輸的過程中,TTL逐跳遞減,Tracert的結果將反映報文實際經過的路徑。
圖1-6 使能TTL複製功能時的處理過程
· 未使能TTL複製功能:Ingress節點為IP報文壓入標簽時,不會將原IP報文中的TTL值複製到新增加的標簽的TTL域,標簽的TTL取值為255。LSR轉發標簽報文時,對標簽的TTL值做減一操作。LSR彈出標簽時,不修改IP TTL的值。使用這種方式時,MPLS骨幹網中的節點對用戶網絡的報文不可見。Tracert的結果不包括MPLS骨幹網絡中的每一跳,從而隱藏MPLS骨幹網絡的結構。
圖1-7 未使能TTL複製功能時的處理過程
在MPLS網絡內部,MPLS報文多層標簽之間的TTL值總是互相複製。本功能隻決定是否將IP TTL複製到標簽的TTL域、是否將標簽的TTL複製到IP的TTL域。
建議在LSP經過的LSR上配置相同的TTL域處理方式。
如果配置mpls ttl propagate vpn命令使能對VPN報文的TTL複製功能,則建議在同一個VPN的所有PE上都使能此功能,以保證不同的PE上執行Tracert得到的結果一致。
(1) 進入係統視圖。
system-view
(2) 使能TTL複製功能。
mpls ttl propagate { public | vpn }
缺省情況下,對於通過公網進行轉發的報文,TTL複製功能處於開啟狀態;對於通過VPN進行轉發的報文,TTL複製功能處於關閉狀態。
使能MPLS的TTL超時消息發送功能後,當LSR收到TTL為1的MPLS報文時,LSR會生成ICMP的TTL超時消息。對於一層標簽的MPLS報文,LSR沿著本地IP路由返回ICMP TTL超時消息;對於多層標簽的MPLS報文,LSR沿著發送MPLS報文的LSP轉發ICMP TTL超時消息,由Egress節點將該消息返回給發送者。
(1) 進入係統視圖。
system-view
(2) 使能MPLS的TTL超時消息發送功能。
mpls ttl expiration enable
缺省情況下,MPLS的TTL超時消息發送功能處於開啟狀態。
FTN(FEC to NHLFE map,FEC到NHLFE表項的映射)表項是一類特殊的FIB表項,該類FIB表項中包含出標簽值信息。FTN轉發是指接收到不帶標簽的報文,該報文的目的IP地址匹配FTN表項,為報文添加FTN表項中的出標簽值後轉發該報文。本配置用來開啟FTN轉發的統計功能。開啟該功能後可通過MIB查看統計信息。
(1) 進入係統視圖。
system-view
(2) 進入RIB視圖。
rib
(3) 創建RIB IPv4地址族,並進入RIB IPv4地址族視圖。
address-family ipv4
缺省情況下,沒有創建RIB IPv4地址族。
(4) 開啟RIB的FTN表項維護功能。
ftn enable
缺省情況下,RIB的FTN表項維護功能處於關閉狀態。
(5) 使能指定目的網絡的FTN轉發統計功能。
mpls-forwarding statistics prefix-list prefix-list-name
缺省情況下,所有目的網絡的FTN轉發統計功能均處於關閉狀態。
LSP的MPLS標簽轉發是指接收到帶有標簽的報文後,根據報文中的入標簽轉發該報文。
本配置用來開啟指定LSP的MPLS標簽轉發統計功能和統計信息收集功能,以便用戶通過display mpls lsp verbose命令查看該LSP的MPLS標簽轉發統計信息。
· 對於RSVP-TE隧道,通過mpls statistics命令開啟MPLS標簽轉發統計功能後,會自動開啟標簽轉發統計信息的收集功能,統計信息收集的時間間隔為30秒。使用mpls statistics interval命令可以修改統計信息收集的時間間隔。
· 對於其他類型的LSP,通過mpls statistics命令開啟MPLS標簽轉發統計功能後,還必須執行mpls statistics interval命令開啟統計信息收集功能,並設置統計信息收集的時間間隔。
(1) 進入係統視圖。
system-view
(2) 使能指定LSP的MPLS標簽轉發統計功能。
mpls statistics { all | [ vpn-instance vpn-instance-name ] { ipv4 ipv4-address mask-length | ipv6 ipv6-address prefix-length } | static | te ingress-lsr-id tunnel-id }
缺省情況下,所有LSP的MPLS標簽轉發統計功能均處於關閉狀態。
(3) 使能MPLS標簽轉發統計信息的收集功能,並設置統計信息收集的時間間隔。
mpls statistics interval interval
缺省情況下,MPLS標簽轉發統計信息收集功能處於關閉狀態。
開啟MPLS模塊的告警功能後,該模塊會生成告警信息,用於報告該模塊的重要事件。生成的告警信息將發送到設備的SNMP模塊,通過設置SNMP中告警信息的發送參數,來決定告警信息輸出的相關屬性。
有關告警信息的詳細介紹,請參見“網絡管理和監控配置指導”中的“SNMP”。
(1) 進入係統視圖。
system-view
(2) 開啟MPLS模塊的告警功能。
snmp-agent trap enable mpls
缺省情況下,MPLS模塊的告警功能處於關閉狀態。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後MPLS的運行情況,用戶可以通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除MPLS統計信息。
表1-1 MPLS顯示和維護
操作 |
命令 |
顯示ILM表項信息 |
(獨立運行模式) display mpls forwarding ilm [ label ] [ slot slot-number ] (IRF模式) display mpls forwarding ilm [ label ] [ chassis chassis-number slot slot-number ] |
顯示NHLFE表項信息 |
(獨立運行模式) display mpls forwarding nhlfe [ nid ] [ slot slot-number ] (IRF模式) display mpls forwarding nhlfe [ nid ] [ chassis chassis-number slot slot-number ] |
顯示使能了MPLS能力接口的MPLS相關信息 |
display mpls interface [ interface-type interface-number ] |
顯示MPLS標簽的使用狀態 |
display mpls label { label-value1 [ to label-value2 ] | all } |
顯示LSP信息 |
display mpls lsp [ egress | in-label label-value | ingress | outgoing-interface interface-type interface-number | protocol { bgp | isis | ldp | local | ospf | rsvp-te [ p2mp ] | sr-te | static | static-cr } | transit ] [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | ipv6 [ ipv6-address prefix-length ] ] [ srv6-mpls-interworking ] [ verbose ] |
顯示LSP的統計信息 |
display mpls lsp statistics [ ipv6 ] |
顯示mLDP P2MP LSP信息 |
display mpls multicast-lsp protocol mldp p2mp [ root-ip ip-address { lsp-id lsp-id | opaque-value opaque-value } ] |
顯示P2MP LSP的統計信息 |
display mpls multicast-lsp statistics p2mp |
顯示MPLS的NIB(Nexthop Information Base,下一跳信息庫)信息 |
display mpls nib [ nib-id ] |
顯示MPLS NHLFE表項索引的使用狀態 |
display mpls nid [ nid-value1 [ to nid-value2 ] ] |
顯示MPLS彙總信息 |
display mpls summary |
清除指定LSP的MPLS轉發統計信息 |
reset mpls statistics { all | [ vpn-instance vpn-instance-name ] { ipv4 ipv4-address mask-length | ipv6 ipv6-address prefix-length } | static | te ingress-lsr-id tunnel-id } |
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!