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.