mpls header is a slim header just after the ethernet (or dot1q) header indicated by it's ethertype.
this is why mpls usually referred as a layer 2.5 technology.
it's a fixed size header with the possibility to create stack of labels inticated
by the bottom of stack bit. over the bos bit, a ttl, an exp and a label is contained within the header. the exp bits
indicate packet's qos threatment, similar to ip's prec bits. the ttl serves the same purpose as it does in case of ip
but with different expiration procedure. label indicates the lsp or vpn.
bos indicates if more labels or the payload follow.
outermost label is used by p is the one that is closest to the ethernet header
used by them for forwarding packets to it's destination.
inner labels may follow outermost label in case of vpn provided
or te used.
there are some special purpose labels: implicit null is the default behavior advertised
for connected routes of a given pe. explicit null may be used
instead of implicit null for end to end mpls based qos, in order to keep exp bits.
entropy label is used to indicate that a load balancing label will follow.