MPLS tunnels are a way to represent an LSP to traditional routing protocols or IP services in a way which the understand, as an interface. MPLS tunnels are also one way or doing LSP heiearchy. To create an MPLS tunnel manually: -create an outgoing label mplsadm -A -O gen:1024:eth1:ipv4:192.168.0.1 -create an mpls tunnel interface mplsadm -A -T mpls0 -assign an IP address to the tunnel (it can be the same as the true interface it goes out, or maybe as a point-to-point with the IP address of the end of the LSP being used. ifconfig mpls0 192.168.0.2 netmask 255.255.255.255 -bind the outgoing label to the tunnel mplsadm -B -O gen:1024:eth1 -T mpls0 -add a route to forward traffic out mpls0 route add -net 172.16.0.0/16 mpls0 -any traffic to 17.16.0.0/16 now goes out eth1 with label 1024. You can create an outgoing label on an MPLS tunnel interface: -after the tunnel is setup as above, create an outgoing label on mpls0 mplsadm -A -O gen:2048:mpls0 -bind a FEC to it or create another tunnel interface on top of it route add -net 172.16.1.0/24 mpls0 mplsadm -B -O gen:2048:mpls0 -f 172.16.1.0/24 -or- mplsadm -A -T mpls1 mplsadm -B -O gen:2048:mpls0 -T mpls1 route add -net 172.16.1.0/24 mpls1 -both options above produce the same affect, any traffic to 172.16.1.0/24 leaved eth1 with the label stack 1024:2048 and any traffic to the less specific 172.16.0.0/16 goes out eth1 with the label 1024.