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

1.1       wiki        1: #Some quick info about MPLS:
                      2: 
                      3: You need to compile your kernel with options MPLS and psuedo-device ifmpls
                      4: For pure LSR - that only switch labels without encap/decap from other protocols (e.g. INET) you need only to work on routing table. For example:
                      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: 
                     13: Translation of first line: if it receives an MPLS frame with label 41 forward it to INET next-hop 193.28.151.97, tagged with label 25
                     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.2     ! wiki       36: If you want to also decapsulate/encapsulate from MPLS to some other protocol (like INET or INET6), you have to create an mpls interface and put in up.
1.1       wiki       37: 
                     38: 
                     39: <pre>
                     40: # ifconfig mpls0 create up
                     41: </pre>
                     42: 
1.2     ! wiki       43: After that create routes like this - use -ifa flag in order to avoid self-generated packets having source address 1.1.1.1, 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: 
                     97: I'm working on [[LDP]] daemon, it should be available in src tree in a couple of months. You may still want to test the beta.

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