2016年5月7日 星期六

About MPLS Forwarding

此編文章我就不說明MPLS基本知識,以LAB方式來說明交換過程及封裝過程。
現在以lab來感受一下mpls在交換的時候,與之前我們熟悉的ip交換有何不同之處

LAB環境說明:

IGPOSPF均己建立
MPLS:己建立完成
每個mpls路由器都有針對lable range做分配,以利lab驗證,例r1100~199
mpls label range 100 199

我們針對r6loopback0來驗證交換過程ip address66.1.1.1/32
我們先看一下r5的路由表
R5#show ip route | s 66.1.1.1
O        66.1.1.1 [110/6] via 15.1.1.1, 00:02:30, FastEthernet0/0
其實我們可以看到,在r5上本來就有路由,到達66.1.1.1/32,是透過我們的igp ospf學習到的路由,那能通嗎?當然可以。
R5#ping 66.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 66.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/80/120 ms
那我們怎麼知道是利用mpls lable交換還是用ip交換呢?我們來traceroute一下就可以看到變化。
R5#traceroute 66.1.1.1
Type escape sequence to abort.
Tracing the route to 66.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
  1 15.1.1.1 [MPLS: Label 107 Exp 0] 84 msec 60 msec 52 msec
  2 12.1.1.2 [MPLS: Label 207 Exp 0] 88 msec 52 msec 68 msec
  3 23.1.1.3 [MPLS: Label 307 Exp 0] 64 msec 68 msec 52 msec
  4 34.1.1.4 [MPLS: Label 407 Exp 0] 60 msec 60 msec 64 msec
  5 46.1.1.6 56 msec 64 msec 56 msec
可以看到結果了吧!雖然中間路由器都是有路由,但交換卻是使用mpls來交換。
但是明明有路由,為何一定要用mpls來交換呢?其實在這個環境,表現不出mpls強大的能力,但是在早期路由器還沒有硬件轉發的時候,每一個封包都需要經過cup來計算並轉發,對於mpls來說就是一個很大的優勢,因為無需要到cup計算,在硬件的LFIB表就可以由data plan直接轉發,提高轉發效率。但目前cisco的路由器都有ip cef配合TACM表來做硬件轉發,所以差別己經不大。
中間的轉發過程我就不說了,我們來說一下POP的機制。
為何需要有POP的機制呢?還是為了效率的問題,試想一下,如果剛剛r5 ping r666.1.1.1/32的封包到了r6後,還是帶上一個mplslable,那r6是不是需要查二次表呢?一個帶了lable的數據包到了路由器,首先要先查LFIB表,發現這個數據是給我自己的,移除lable後,還需要在查一次FIB表來找到出接口,在做二層封裝。是不是太沒有效率。這才會延申出POP的機制,如果一個目的地為我本身的直連網路,我在分配lableneighbor的時候,會發送一個3的隱式空標籤,來告知我的上一跳路由器,需要將標籤移除,到我這個路由器時,就是一個純的ip包,只需要查詢FIB表則可。

我們來看一下在我們這個環境中66.1.1.1/32,為r6的直連網路,所以他會發送一個3的隱式空的標籤給r4對吧!我們來抓包看一下。我們可以看到r6送給r4lable mapping message裡計對66.1.1.1/32發送了一個3的標籤。這時r4就會記錄出的lablePOP lable


R4#show mpls forwarding-table                   
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop   
Label      Label      or Tunnel Id     Switched      interface             
400        300        55.1.1.1/32      1310          Fa1/0      34.1.1.3   
401        Pop Label  33.1.1.1/32      0             Fa1/0      34.1.1.3   
402        301        22.1.1.1/32      0             Fa1/0      34.1.1.3   
403        302        11.1.1.1/32      0             Fa1/0      34.1.1.3   
404        303        15.1.1.0/24      2486          Fa1/0      34.1.1.3   
405        304        12.1.1.0/24      0             Fa1/0      34.1.1.3   
406        Pop Label  23.1.1.0/24      0             Fa1/0      34.1.1.3   
407        Pop Label  66.1.1.1/32      2334          Fa0/0      46.1.1.6 
r4是查次表呢?還是查二次表呢?其實是查一次表!
R4#show mpls forwarding-table 66.1.1.1 32 detail
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop   
Label      Label      or Tunnel Id     Switched      interface             
407        Pop Label  66.1.1.1/32      2334          Fa0/0      46.1.1.6   
        MAC/Encaps=14/14, MRU=1504, Label Stack{}
        CA061C3C0000CA041BDC00008847
        No output feature configured
R4#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  34.1.1.3               49   ca03.1ce4.001c  ARPA   FastEthernet1/0
Internet  34.1.1.4                -   ca04.1bdc.001c  ARPA   FastEthernet1/0
Internet  46.1.1.4                -   ca04.1bdc.0000  ARPA   FastEthernet0/0
Internet  46.1.1.6               26   ca06.1c3c.0000  ARPA   FastEthernet0/0

CA061C3C0000   目前mac
CA041BDC0000    來源mac
8847    mpls封裝

這些是不是就是我們二層封裝需要用到的資料。

沒有留言:

張貼留言