Я смотрел и RFC, и IANA - везде расшифровываются только 0-15 значения для lable. При том, что label принимает значения от 0 до 1048575. И у меня в wireshark попадаются значения явно больше 15.
Стоит прочитать описание
MPLS, чтобы понять, что метки назначаются маршрутизаторами
динамически, а 0-15 -- это зарезервированные значения.
Так вот как определить, что считать после MPLS Header?
Нет такой задачи. Если ты -- LSR, то ты принимаешь решение о маршрутизации на основании метки и информации полученной ранее от других маршрутизаторов через LDP.