MPLS(多協(xié)議標簽交換)技術原理的基本實現(xiàn)
![]() |
首先,我們需要5臺路由器(4臺也可以),因為MPLS是主要運用于大型的網(wǎng)絡之中的一種快速轉(zhuǎn)發(fā)協(xié)議,例ISP的網(wǎng)絡基本采用MPLS來提高數(shù)據(jù)包的轉(zhuǎn)發(fā)速度。
分別編號R1-R5,接口地址見topology,全網(wǎng)起OSPF協(xié)議,AREA 0,目的是達到全網(wǎng)互通,以便于LABEL信息的傳遞。
MPLS在網(wǎng)絡中的實現(xiàn)很簡單(因為是簡單的配置嘛):
1、 把屬于MPLS網(wǎng)絡的接口劃入MPLS網(wǎng)絡
2、 啟用MPLS
下面簡單說一下具體配置,首先,進入R1的s1/3端口,做如下命令:
R1(config)#int s1/2 R1(config-if)#mpls ip 把接口劃入MPLS網(wǎng)絡 R1(config-if)#exi |
至于R2-R4的S1/2 ,S1/3,以及R5的s1/3在這里不一一贅述,原理和上面的一樣。
這時,我們會看到如下提示:
*Mar 1 00:13:37.163: %LDP-5-NBRCHG: LDP Neighbor 23.0.0.1:0 (1) is UP |
說明MPLS鄰居建立成功,可以相互發(fā)送LABEL信息。
我們查看一下目前路由器的LABEL 轉(zhuǎn)發(fā)表,也就是和每條路由一一對應的標簽編號。
R1#sh mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 16 34.0.0.0/24 0 Se1/2 point2point 17 Pop tag 23.0.0.0/24 0 Se1/2 point2point 18 18 192.168.1.1/32 0 Se1/2 point2point 19 19 45.0.0.0/24 0 Se1/2 point2point R1# |
我們可以看到,LOCAL列,表示這條路由條目在本路由器的label編號,也是它通告給鄰居LSR的編號。
OUTGOING列,表示送往鄰居LSR時應該打上的標簽編號,也就是說,在把包交給鄰居LSR之前,已經(jīng)打上的TAG其實是對方LSR 轉(zhuǎn)發(fā)表里關于這條路由的TAG編號。Pop tag表示拆除TAG,因為目的網(wǎng)絡是下一條的直連網(wǎng)絡,所以不用TAG繼續(xù)進行轉(zhuǎn)發(fā)。
我們注意到, bytes tag switched這一列全部為0,這是因為我們還沒有進行任何的數(shù)據(jù)包交換。
下面做如下操作:
R1#p 192.168.1.1 sou R1#ping 192.168.1.1 source 10.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 104/198/304 ms R1#sh mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 16 34.0.0.0/24 0 Se1/2 point2point 17 Pop tag 23.0.0.0/24 0 Se1/2 point2point 18 18 192.168.1.1/32 0 Se1/2 point2point 19 19 45.0.0.0/24 0 Se1/2 point2point |
我們發(fā)現(xiàn),PING過以后R1上依然沒有交換標簽的BYTE流量,這是因為MPLS是不會對自己的直連網(wǎng)絡打上TAG標簽的,粗淺的理解就是直連網(wǎng)絡直接轉(zhuǎn)發(fā)就可以了,打上TAG不是更麻煩了嗎?嘿嘿。
好,我們看R2-R4的轉(zhuǎn)發(fā)表:
R2#sh mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 34.0.0.0/24 0 Se1/2 point2point 17 Untagged 10.1.1.1/32 520 Se1/3 point2point 18 18 192.168.1.1/32 540 Se1/2 point2point 19 19 45.0.0.0/24 0 Se1/2 point2point |
注意中間兩行的標簽字節(jié)交換數(shù)量已經(jīng)出現(xiàn)變化,說明在R2上進行了標簽交換。
此現(xiàn)象在R3,R4上基本相同,說明在R3,R4上同樣進行著標簽的交換。
再看R4,R5的情況:
R4#sh mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 23.0.0.0/24 0 Se1/3 point2point 17 16 10.1.1.1/32 540 Se1/3 point2point 18 17 12.0.0.0/24 0 Se1/3 point2point 19 Untagged 192.168.1.1/32 520 Se1/2 point2point R5#sh mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 34.0.0.0/24 0 Se1/3 point2point 17 16 23.0.0.0/24 0 Se1/3 point2point 18 17 10.1.1.1/32 0 Se1/3 point2point 19 18 12.0.0.0/24 0 Se1/3 point2point |
沒有TAG交換!因為目標網(wǎng)絡是自己的直連,所以在R4路由器把包交給R5之前,已經(jīng)拆除TAG(看看R4的信息就可發(fā)現(xiàn),在R4中去往192.168網(wǎng)段的outgoing 是untagged,就是去往這個網(wǎng)絡不應該帶有標簽的意思),在R4交給R5以后,IP包直接進行路由轉(zhuǎn)發(fā),而不是繼續(xù)經(jīng)由MPLS進行TAG交換。
以上只是簡單的說了說MPLS的標簽交換過程,下面我總結(jié)一下流程:
首先,PING包源:10.1.1.1 目的:192.168.1.1
進入RI以后,查找forwarding-table,發(fā)現(xiàn)去往R2,出接口時,打上R2可以正確判斷的18號標簽----------包進入R2后,查找forwarding-table,發(fā)現(xiàn)包應該交給R3,也應該打上R3識別的19號標簽(即outgoing 對應的出標簽)-----------接著,給了R3,R3照舊給了R4,此時R4查詢forwarding-table,發(fā)現(xiàn)outgoing對應的是Untagged,即轉(zhuǎn)發(fā)到192.168.1.0 這個網(wǎng)絡的數(shù)據(jù)包此時不應該繼續(xù)打上TAG,而是以正常的IP數(shù)據(jù)包格式進行路由轉(zhuǎn)發(fā)。Then,數(shù)據(jù)包到達R5,路由成功。
【編輯推薦】