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