MPLS forwarding "Instructions" ------------------------------ Inside the kernel the processing of MPLS packets and their label stacks is down via "instructions". By adding in and out labels and switch paths you are modifing these instructions. Sometimes it is useful to be able to override these instructions, one specific case is when you want to send or recieve packet with a label stack of size greater then 1. Incoming labels and outgoing labels each have a set of instructions that can be executed. Certain instructions are only valid for incoming or outgoing labels. List of MPLS instructions ------------------------- -pop - remove the top label from the label stack. (in/out) -push - push another label on the label stack. (in/out) -dlv - send this packet to the layer 3 protocol stored with this in label. (in) -peek - look at the label on top of the label stack, look the label up in the list of incoming label for this interface, and start executing the instructions associated with it. If there is not a label, execute a dlv. (in) -set - last step before transmitting a MPLS packet. It copies the outgoing interface and the next hop layer 2 destination from the out going label structure. (out) - set the incoming interface to somethgin diffetn then the REAL incoming interface (in) -fwd - send a packet to an outgoing label structure to be processed (in/out) Format of each instruction -------------------------- Incoming instructions --------------------- pop push: