label switching is a procedure done by p routers that happens to an
mpls packet as it traverses an mpls enabled core.
outermost label is read from the label table, ttl decremented
and outgoing label is placed into the outermost header and the packet is forwarded.
since no longest match lookup required, simply an integer indexed table read happens,
it's forwarding time is quiet impressive.
if we're examining this procedure one hop before the packet's destination,
the outermost label is removed if control protocols
not requested otherwise. this behavior is called penultimate hop popping
and indicated by advertising implicit null for it's own addresses.
when a packet's ttl expires during label switching the packet's upper layer headers
are parsed, an icmp error generated and the resulting fresh packet sent with the same
mpls label on the same lsp as it was received
and would forwarded if not expired.
this is because p routers does not have the forwarding information
(especially when the packet belongs to a vpn) to be able to answer
directly to the source.
morever since there is no indication about the carried frame type so it's a painful
guesswork to find out if it's an ipv4, ipv6 or ethernet frame.