MPLS(多協議標簽交換)技術原理的基本實現
![]() |
首先,我們需要5臺路由器(4臺也可以),因為MPLS是主要運用于大型的網絡之中的一種快速轉發協議,例ISP的網絡基本采用MPLS來提高數據包的轉發速度。
分別編號R1-R5,接口地址見topology,全網起OSPF協議,AREA 0,目的是達到全網互通,以便于LABEL信息的傳遞。
MPLS在網絡中的實現很簡單(因為是簡單的配置嘛):
1、 把屬于MPLS網絡的接口劃入MPLS網絡
2、 啟用MPLS
下面簡單說一下具體配置,首先,進入R1的s1/3端口,做如下命令:
R1(config)#int s1/2 R1(config-if)#mpls ip 把接口劃入MPLS網絡 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鄰居建立成功,可以相互發送LABEL信息。
我們查看一下目前路由器的LABEL 轉發表,也就是和每條路由一一對應的標簽編號。
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之前,已經打上的TAG其實是對方LSR 轉發表里關于這條路由的TAG編號。Pop tag表示拆除TAG,因為目的網絡是下一條的直連網絡,所以不用TAG繼續進行轉發。
我們注意到, bytes tag switched這一列全部為0,這是因為我們還沒有進行任何的數據包交換。
下面做如下操作:
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 |
我們發現,PING過以后R1上依然沒有交換標簽的BYTE流量,這是因為MPLS是不會對自己的直連網絡打上TAG標簽的,粗淺的理解就是直連網絡直接轉發就可以了,打上TAG不是更麻煩了嗎?嘿嘿。
好,我們看R2-R4的轉發表:
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 |
注意中間兩行的標簽字節交換數量已經出現變化,說明在R2上進行了標簽交換。
此現象在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交換!因為目標網絡是自己的直連,所以在R4路由器把包交給R5之前,已經拆除TAG(看看R4的信息就可發現,在R4中去往192.168網段的outgoing 是untagged,就是去往這個網絡不應該帶有標簽的意思),在R4交給R5以后,IP包直接進行路由轉發,而不是繼續經由MPLS進行TAG交換。
以上只是簡單的說了說MPLS的標簽交換過程,下面我總結一下流程:
首先,PING包源:10.1.1.1 目的:192.168.1.1
進入RI以后,查找forwarding-table,發現去往R2,出接口時,打上R2可以正確判斷的18號標簽----------包進入R2后,查找forwarding-table,發現包應該交給R3,也應該打上R3識別的19號標簽(即outgoing 對應的出標簽)-----------接著,給了R3,R3照舊給了R4,此時R4查詢forwarding-table,發現outgoing對應的是Untagged,即轉發到192.168.1.0 這個網絡的數據包此時不應該繼續打上TAG,而是以正常的IP數據包格式進行路由轉發。Then,數據包到達R5,路由成功。
【編輯推薦】