天天看點

MPLS LDP标簽控制--進階feature&&标簽的故障排查

MPLS LDP标簽控制.

1, mpls ldp advertise-labels [for prefix-access-list [to peer-access-list]]

标簽過濾, 1, 給予 2, 接收

預設情況下,本地路由器會為IGP路由表所有字首配置設定标簽,并且分發到所有LDP鄰居去.

該指令是通過指令人為的選擇标簽到一些LDP鄰居或者TDP鄰居去.

意思就是,發多少,發不發,發給誰。都是該指令控制.

2, mpls ldp neighbor x.x.x.x labels accept ACL_number

這個指令就是,我接收哪個鄰居發送給我的ACL能比對的字首的标簽.

其他都标簽都進行過濾.

控制分發:給予:

僅僅支援基礎ACL的方案,不支援字首清單.

<a href="http://s3.51cto.com/wyfs02/M00/74/6C/wKioL1YdA7SRCYc2AAC-gejnVg4374.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/74/6C/wKioL1YdA7WioHLsAAEVBGZy2RM493.jpg" target="_blank"></a>

首先全局需要打上:no mpls ldp advertise-labels.就是不分發标簽.

<a href="http://s3.51cto.com/wyfs02/M01/74/6C/wKioL1YdA7bxka70AADtYlVDT7g126.jpg" target="_blank"></a>

是以上面指令的意思是:

本台裝置,隻為所有的LDP鄰居分發192.168.254.0/24的IGP路由配置設定的标簽.

其他的IGP路由字首沒有标簽,直接在直連裝置上面除了192.168.254.0/24有上端配置設定的标簽,其他的都是No Labels.

試驗:配置設定标簽控制----發标簽控制

<a href="http://s3.51cto.com/wyfs02/M01/74/6C/wKioL1YdA7eA8q37AAB0iVpvcJU312.jpg" target="_blank"></a>

R3發送了三條IGP路由字首的标簽給R2.

如圖:

<a href="http://s3.51cto.com/wyfs02/M00/74/70/wKiom1YdA5nSj_fGAAHXksAOwoM924.jpg" target="_blank"></a>

現在要做的就是隻讓R3通告55.1.1.1/32的标簽給R2.其他的标簽都給過濾掉.

最終在R2上面對于55.1.1.1/32有标簽,但是其他兩個路由字首33.1.1.1/32和35.1.1.0/24是No Label的狀态.

ACL解決方案:

R3:

mpls label range 300 399

mpls label protocol ldp

no mpls ldp advertise-labels

mpls ldp advertise-labels for 2 to 1

!

interface Loopback0

ip address 33.1.1.1 255.255.255.255

interface Ethernet0/0

ip address 35.1.1.3 255.255.255.0

mpls ip

router ospf 1

router-id 33.1.1.1

network 23.1.1.3 0.0.0.0 area 1

network 33.1.1.1 0.0.0.0 area 1

network 35.1.1.3 0.0.0.0 area 1

mpls ldp router-id Loopback0 force

access-list 1 permit 22.1.1.1---R2的LDP的router-id.

access-list 2 permit 55.1.1.1---允許放行的字首的标簽

上面的配置,22.1.1.1是R2的ldp router-id.

意思是說,R3将通告55.1.1.1的路由字首配置設定的标簽給R2,22.1.1.1

該方案是用的ACL方案.

下面是當R2清一下ldp鄰居以後的結果:

<a href="http://s3.51cto.com/wyfs02/M00/74/70/wKiom1YdA5vwefXRAAGfFlL9QfU353.jpg" target="_blank"></a>

對于33.1.1.1/32和35.1.1.0/24都沒有配置設定标簽。而對55.1.1.1/32是配置設定了标簽的。

實際上是在R3上面做了一個标簽過濾.并不能說R3沒有對33.1.1.1/32和35.1.1.0/24配置設定标簽,而是說沒有江該标簽分發給R2而已:

下面是R3的标簽綁定表:

<a href="http://s3.51cto.com/wyfs02/M00/74/6C/wKioL1YdA7vRY81aAAHdWhu_NlQ218.jpg" target="_blank"></a>

這裡可以看到,R3是對33.1.1.1還有35.1.1.1都配置設定了标簽的。

隻是沒有發送給R2而已.

可以在同一個路由器上面做很多

mpls ldp advertise 的政策:

<a href="http://s3.51cto.com/wyfs02/M02/74/70/wKiom1YdA52gTvLLAABu8ye-bx4201.jpg" target="_blank"></a>

剛才隻是一個極端的例子,之是以說極端,是因為R3是達到隻發送某些标簽給R2了,可是現在R5就慘了,因為R3的配置,隻有對于R2分發某些标簽,導緻了R5什麼标簽都沒有從R3收到:

<a href="http://s3.51cto.com/wyfs02/M01/74/6C/wKioL1YdA73glQxZAAKoEbZywpE461.jpg" target="_blank"></a>

要解決這個問題,繼續在R3上面進行其他鄰居的标簽放行:

R3的配置:

no mpls ldp advertise-labels-----預設不分發任何标簽.

mpls ldp advertise-labels for 2 to 1 ----将35.1.1.0/24和55.1.1.1/32的字首分發的标簽通告給22.1.1.1(R2)

mpls ldp advertise-labels for 4 to 55----将所有的字首标簽通告給55.1.1.1(R5)

access-list 1 permit 22.1.1.1

access-list 2 permit 35.1.1.0

access-list 2 permit 55.1.1.1

access-list 4 permit any

access-list 55 permit 55.1.1.1

最後,在R2上面,我們可以看到,隻有35.1.1.0和55.1.1.1從R3得到了标簽,而33.1.1.1沒有标簽,是No Label:

下面是R2的标簽表:

<a href="http://s3.51cto.com/wyfs02/M02/74/6C/wKioL1YdA7_jbCEzAAGMoGqhJss707.jpg" target="_blank"></a>

而R5,所有的标簽都從R3配置設定了過來:

<a href="http://s3.51cto.com/wyfs02/M01/74/6C/wKioL1YdA8CQqTiVAAKXEWZo3Q0813.jpg" target="_blank"></a>

控制分發:标簽接收

<a href="http://s3.51cto.com/wyfs02/M00/74/70/wKiom1YdA6LTXEkUAABFszZZdHw803.jpg" target="_blank"></a>

現在在R5上面做标簽接收的過濾.

在正常情況下,R5上面的标簽轉發表是:

<a href="http://s3.51cto.com/wyfs02/M02/74/6C/wKioL1YdA8LyyKwNAAKQxL6Esao797.jpg" target="_blank"></a>

R5上面做相關接收标簽的政策:

mpls label range 500 599

mpls ldp neighbor 33.1.1.1 labels accept 2

access-list 2 permit 12.1.1.0

access-list 2 permit 22.1.1.1

上面R5的配置,意思是說。我R5本地,隻接收鄰居33.1.1.1對于IGP字首12.1.1.0/24和22.1.1.1/32配置設定的标簽.

<a href="http://s3.51cto.com/wyfs02/M02/74/70/wKiom1YdA6Xh7zXLAAJ5fSyEfYY597.jpg" target="_blank"></a>

這裡可以看到,因為在R5上做了隻接收R3通告的12.1.1.0和22.1.1.1的标簽.是以隻有這兩個字首有标簽。其他的outgoing label全部都是no Label的。

MPLS label Troubleshooting:

就标簽來說,沒有什麼多說的,因為标簽是系統配置設定的,我們很難對每一個标簽去注意控制。

但是,如果路由器無論如何也收不到鄰居配置設定過來的标簽,那麼下面幾點是一定要注意的:

1, no ip cef

//這個是MPLS的基礎,如果沒有CEF,任何标簽都不會收到. 首先, cisco的轉發基礎,cef是核心,cef是核心路由表提取出來的一個集合表,而MPLS的LDP标簽是基于CEF表字首來分發标簽的,是以沒有CEF,LDP也不會基于路由表來分發标簽,最終什麼标簽都沒有.

下面是一個路由器沒有開啟cef的MPLS forwarding table:

<a href="http://s3.51cto.com/wyfs02/M02/74/6C/wKioL1YdA8ayIRhtAAVeS7aBa40639.jpg" target="_blank"></a>

2, no mpls ip

cisco系統,全局的mpls ip預設是打開的,可以手工關閉.

一旦關閉,現象就是,show mpls forwarding-table是空表項,什麼都沒有.

而show mpls ldp binding标簽庫,也是空的。系統會提示:LIB not enable.

label information base not eanble. 就是全局的mpls ip被幹了,一定要注意差別.

如果no ip cef,那麼所有的标簽都是No Label.如果幹掉了mpls ip,标簽表都不複存在了.

<a href="http://s3.51cto.com/wyfs02/M00/74/6C/wKioL1YdA8nRd95cAAdPCTQSyOk225.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/74/6C/wKioL1YdA8qCSNOYAABT7fTOSxg700.jpg" target="_blank"></a>

3,LDP鄰居關系起不來.

這個時候就要檢查transport-IP是否IGP能互相可達.

預設的情況,LDP的router-id就等于Transport-IP.

在LDP建立鄰居的時候,兩邊路由器都在發送224.0.0.2的多點傳播封包.

router-id是用于選舉誰是LDP的鄰居建立的發起方.

Transport-IP是用于建立TCP646鄰居用的。

總結:在裝置兩端用擴充ping對方的router-id.通,再說端口是否被封,斷,查IGP路由表.

troubleshooting的時候,比如:

R1--12.1.1.x--R2

R1的loop0:11.1.1.1/32, R2的loop0:22.1.1.1/32.

R1和R2上面,IGP都是宣告loop0和12.1.1.x的網段。

這個時候,在R1上面,再建一個loopback1:11.11.11.11/32,然後全局打上:mpls ldp router-id loop1 force,加了force參數,鄰居會down掉,但是之後在也建立不起來了,因為R1沒有network loop1的網段進行宣告.R2和R1的loop1 IGP不可達.

4, 标簽控制[分發/接收]

分發過濾:mpls ldp advertise-labels [for prefix-access-list [to peer-access-list]]

接收過濾:mpls ldp neighbor x.x.x.x labels accept ACL_number

5, 标簽的分發協定不比對.TDP&amp;LDP

<a href="http://s3.51cto.com/wyfs02/M02/74/70/wKiom1YdA6zTWnw2AABzxqZmJnU200.jpg" target="_blank"></a>

NOTES:全局和接口均可修改标簽協定.

在一台裝置上面用預設的mpls label protocol ldp.另外一個裝置上面是用cisco私有的TDP協定。

兩個協定是不相容的.鄰居無法建立.

6,标簽的範圍過小.

在做實驗的時候,經常是R1就打上mpls label range 100 199.

因為用于試驗,100個标簽差不多夠用,主要用于觀察現象。

而在現網環境中,或者troubleshooting的時候,如果在一個路由器上面吧這個範圍修改的很小:

R1(config)#mpls label range 100 101

那麼帶來的問題就是下遊的路由器隻能接收到1個字首帶标簽,其他全部都是No Label.

例如:R1---R2直連.在R2上面做這個範圍限制:

<a href="http://s3.51cto.com/wyfs02/M02/74/70/wKiom1YdA62S417ZAAA-pBJWwHM095.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/74/70/wKiom1YdA62zLGH2AABIisAf3zI503.jpg" target="_blank"></a>

在R2上面做了一個限制,可用标簽範圍隻有2個.

那麼R1上面的結果是一堆從R2始發的路由字首沒有标簽.

這也是為什麼現網不建議手工配置标簽的範圍.因為随着業務的增加,路由字首一定會增加的,如果前期進行限制,後期故障排查很容易出錯。特别是核心裝置,show run都是好幾屏或者是十多屏.

本文轉自 hny2000 51CTO部落格,原文連結:http://blog.51cto.com/361531/1702653

繼續閱讀