How come MPLS header has no next protocol ID field? How can a parser tell for sure which protocol is next?
BOS field only indicates that the next header is not MPLS, which is not enough to distinguish between IPv4 and Ethernet for example.
Parsing the next protocol header itself for protocol ID is also prone to errors. (Might easily confuse IP header with Ethernet header - since Destination MAC addresses are quite random).