Annotation of wikisrc/users/kefren/mpls.mdwn, revision 1.3

1.1       wiki        1: #Some quick info about MPLS:
                      2: 
                      3: You need to compile your kernel with options MPLS and psuedo-device ifmpls
1.3     ! wiki        4: For pure LSR - that only switch labels without encap/decap from other protocols (e.g. INET) - you need to work on routing table, ONLY. For example:
1.1       wiki        5: 
                      6: <pre># route add -mpls 41 -tag 25 -inet 193.28.151.97
                      7: add host 41: gateway 193.28.151.97
                      8: # route add -mpls 42 -tag 30 -inet 193.28.151.97
                      9: add host 42: gateway 193.28.151.97
                     10: # route add -mpls 51 -tag 25 -inet 193.28.151.97
                     11: add host 51: gateway 193.28.151.97</pre>
                     12: 
1.3     ! wiki       13: Translation of first line: if it receives an MPLS frame with label 41 forward it to INET next-hop 193.28.151.97, but switch (change) label 41 with label 25
1.1       wiki       14: 
                     15: You also need to tweak sysctl to accept and forward MPLS:
                     16: 
                     17: <pre># sysctl -w net.mpls.accept=1
                     18: net.mpls.accept: 0 -> 1
                     19: # sysctl -w net.mpls.forwarding=1
                     20: net.mpls.forwarding: 0 -> 1</pre>
                     21: 
                     22: 
                     23: Verify routes with route get or better with netstat -nrT:
                     24: 
                     25: <pre>
                     26: ...
                     27: MPLS:
                     28: Destination        Gateway            Flags    Refs      Use    Mtu     Tag Interface
                     29: 41                 193.28.151.97      UGHS        0    37241      -      25 sk0
                     30: 42                 193.28.151.97      UGHS        0        0      -      30 sk0
                     31: 51                 193.28.151.97      UGHS        0        0      -      25 sk0
                     32: </pre>
                     33: 
                     34: #Interacting with other protocols
                     35: 
1.3     ! wiki       36: If you want to also decapsulate/encapsulate from MPLS to some other protocol (like INET or INET6), then you have to create an mpls interface and put in up state.
1.1       wiki       37: 
                     38: 
                     39: <pre>
                     40: # ifconfig mpls0 create up
                     41: </pre>
                     42: 
1.3     ! wiki       43: After that, create routes using ifa flag in order to specify the source interface (used for source IP Address of host generated packets), but route them through mpls0 interface.
1.1       wiki       44: 
                     45: <pre>
                     46: # route add 204.152.190.0/24 -ifa 193.28.151.105 -ifp mpls0 -tag 25 -inet 193.28.151.97
                     47: add net 204.152.190.0: gateway 193.28.151.97
                     48: </pre>
                     49: 
                     50: Verify the route:
                     51: 
                     52: <pre>
                     53: # route -n get 204.152.190.0/24
                     54:    route to: 204.152.190.0
                     55: destination: 204.152.190.0
                     56:        mask: 255.255.255.0
                     57:     gateway: 193.28.151.97
                     58:         Tag: 25
                     59:  local addr: 193.28.151.105
                     60:   interface: mpls0
                     61:       flags: <UP,GATEWAY,DONE,STATIC>
                     62:  recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
                     63:        0         0         0       813       344         0         0         0 
                     64: sockaddrs: <DST,GATEWAY,NETMASK,IFP,IFA,TAG>
                     65: </pre>
                     66: 
                     67: or with netstat -rT:
                     68: <pre>
                     69: ...
                     70: 204.152.190/24     193.28.151.97      UGS         0    95362      -      25 mpls0
                     71: ...
                     72: </pre>
                     73: 
1.2       wiki       74: Test if it's working using traceroute -M. Notice first hop is reporting label 25.
                     75: 
                     76: <pre>
                     77: # traceroute -M 204.152.190.12
                     78: traceroute to 204.152.190.12 (204.152.190.12), 64 hops max, 40 byte packets
                     79:  1  shaitan.girsa.ro (193.28.151.97)  2.892 ms  1.957 ms  1.992 ms [MPLS: Label 25 Exp 0]
                     80:  2  b4-vlan811.girsa.ro (193.28.151.82)  1.988 ms  1.961 ms  1.989 ms [MPLS: Label 27 Exp 0]
                     81:  3  80.97.219.81 (80.97.219.81)  1.990 ms  1.974 ms  2.009 ms
                     82:  4  vlan103.cr3-sw.buch.artelecom.net (80.97.199.1)  2.651 ms  2.280 ms  3.663 ms
                     83:  5  10.0.241.189 (10.0.241.189)  33.944 ms  34.011 ms  33.869 ms [MPLS: Label 21669 Exp 0]
                     84:  6  10.0.240.22 (10.0.240.22)  33.946 ms  33.689 ms  33.929 ms
                     85:  7  20gigabitethernet4-3.core1.fra1.he.net (80.81.192.172)  35.930 ms  35.926 ms  35.917 ms
                     86:  8  10gigabitethernet1-2.core1.par1.he.net (72.52.92.89)  43.940 ms  45.900 ms  47.916 ms
                     87:  9  10gigabitethernet1-3.core1.lon1.he.net (72.52.92.33)  59.901 ms  51.888 ms  51.913 ms
                     88: 10  10gigabitethernet4-4.core1.nyc4.he.net (72.52.92.241)  119.808 ms  119.780 ms  119.800 ms
                     89: 11  10gigabitethernet1-2.core1.chi1.he.net (72.52.92.102)  141.755 ms  143.748 ms  149.756 ms
                     90: 12  he.ord1.isc.org (209.51.161.18)  143.756 ms  143.757 ms  141.755 ms
                     91: 13  iana.r1.ord1.isc.org (199.6.0.1)  145.831 ms  141.747 ms  143.762 ms
                     92: 14  int-0-0-1-8.r1.pao1.isc.org (149.20.65.157)  201.653 ms  205.650 ms  201.650 ms [MPLS: Label 16005 Exp 0]
                     93: 15  int-0-0-1-0.r2.sql1.isc.org (149.20.65.10)  201.663 ms  201.645 ms  201.664 ms
                     94: 16  www.netbsd.org (204.152.190.12)  199.676 ms  201.652 ms  201.673 ms
                     95: </pre>
1.1       wiki       96: 
1.3     ! wiki       97: See also [[LDP]] wiki page.

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb