MPLS
- Label – метка – значение от 0 до 1 048 575. На основе метки роутер определяет что с пакетом делать.
- Label Stack – стек меток (MPLS Bottom Of Label Stack). 1 – ниже больше нет mpls заголовка; 0 – ниже mpls заголовок есть. Обычно самая нижняя метка эта сервисная (принадлежность к какому-то VPN сервису), а верхняя транспортная.
- Push Label – добавление mpls метки к пакету. Выполняет Ingress LSR (Label Switch Router).
- Swap Label – процесс замены mpls метки. Выполняется промежуточными роутерами в MPLS домене (Intermediate LSR).
- Pop Label – процесс удаления mpls метки (верхней). Выполняется Egress LSR (последним роутером в MPLS домене)
- PHP (Penultimate Hop Popping) – процесс удаления метки (верхней) предпоследним LSR’ом. То есть последнему LSR’у придет уже чистый (если это был не стек меток) ip пакет, без mpls заголовка.
Для этого выделена фиктивная метка – 3. Предпоследний LSR выполняет операцию POP. - FEC – Forwarding Equivalence Class – это класс трафика. Очень грубо это ip – адрес назначения (лупбек Egress LSR в mpls домене). Например, потоки трафика от разных клиентов и разных приложений идут на один адрес (Egress роутер в домене) и оба потока принадлежат одному классу – одному FEC т.е. используют один LSP. Но помимо одного адреса назначения, FEC может учитывать и, например, метки QoS, идентификатора VPN или тип приложений, тогда уже FEC, даже до одного и того же Egress, может отличатся.
- LIB – Label Information Base – таблица меток (eq Control Plane) – таблица хранит все префиксы и метки, полученные от соседей:
IOS/IOS-XE:
Y-P2#show mpls ldp bindings
lib entry: 2.4.4.0/24, rev 15
no local binding
remote binding: lsr: 4.0.0.4:0, label: imp-null
lib entry: 4.0.0.1/32, rev 2
local binding: label: 16
remote binding: lsr: 4.0.0.4:0, label: 16
remote binding: lsr: 4.0.0.3:0, label: 24002
lib entry: 4.0.0.2/32, rev 4
local binding: label: imp-null
remote binding: lsr: 4.0.0.4:0, label: 17
remote binding: lsr: 4.0.0.3:0, label: 24001
IOS-XR:
RP/0/0/CPU0:Y-PE3#show mpls ldp bindings
Wed Mar 9 18:50:31.754 UTC
4.0.0.1/32, rev 14
Local binding: label: 24002
Remote bindings: (2 peers)
Peer Label
----------------- ---------
4.0.0.1:0 ImpNull
4.0.0.2:0 16
4.0.0.2/32, rev 13
Local binding: label: 24001
Remote bindings: (2 peers)
Peer Label
----------------- ---------
4.0.0.1:0 16
4.0.0.2:0 ImpNull
- LFIB – Label Forwarding Information Base – “база” меток к которой обращается сетевой процессор (data plane). т.е. Таблица которая используется для передачи (форвординга), содержит входящие/исходящие метки для лучших префиксов (for a prefix best path(s)). Выглядит след. образом:
IOS/IOS-XE:
Y-P2#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 24002 4.0.0.1/32 9672 Gi4 4.2.3.3
17 Pop Label 4.0.0.4/32 0 Gi5 4.2.4.4
18 Pop Label 4.1.3.0/24 0 Gi4 4.2.3.3
19 24004 4.1.4.0/24 0 Gi4 4.2.3.3
20 Pop Label 4.0.0.3/32 10091 Gi4 4.2.3.3
IOS-XR:
RP/0/0/CPU0:Y-PE3#show mpls forwarding
Wed Mar 9 18:49:40.837 UTC
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ----------
24000 17 4.0.0.4/32 Gi0/0/0/0 4.1.3.1 17671
17 4.0.0.4/32 Gi0/0/0/1 4.2.3.2 0
24001 Pop 4.0.0.2/32 Gi0/0/0/1 4.2.3.2 18024
24002 Pop 4.0.0.1/32 Gi0/0/0/0 4.1.3.1 25846
24003 Pop 4.2.4.0/24 Gi0/0/0/1 4.2.3.2 0
24004 Pop 4.1.4.0/24 Gi0/0/0/0 4.1.3.1 0
24005 Aggregate SQUARE: Per-VRF Aggr[V] \
SQUARE 0
24006 Unlabelled 172.0.0.11/32[V] Gi0/0/0/2 172.3.11.11 500
24007 Unlabelled 172.4.11.0/24[V] Gi0/0/0/2 172.3.11.11 0
24008 Aggregate SQUARE: Per-VRF Aggr[V] \
SQUARE 0
24009 Unlabelled 2001:db8:172::11/128[V] \
Gi0/0/0/2 fe80::5200:ff:fe08:2 \
0
24010 Unlabelled 2001:db8:172:411::/64[V] \
Gi0/0/0/2 fe80::5200:ff:fe08:2 \
0
Как ориентироваться в выхлопах команд LFIB и LIB на ISO XE и IOS XR:
отталкиваемся от схемы ниже

В LIB мы видим метки:
- Которые локальный роутер (где мы смотрим эту команду) назначил для каждого FEC и, соответственно, просигнализировал их своим соседям;
- Которые локальный роутер получил от соседей;
IOS XR:
RP/0/0/CPU0:B-ASBR1# show mpls ldp bindings
Mon Mar 14 16:01:59.093 UTC
11.11.11.11/32, rev 2
Local binding: label: ImpNull
Remote bindings: (1 peers)
Peer Label
----------------- ---------
22.22.22.22:0 24001
22.22.22.22/32, rev 10
Local binding: label: 24000
Remote bindings: (1 peers)
Peer Label
----------------- ---------
22.22.22.22:0 ImpNull
33.33.33.33/32, rev 15
Local binding: label: 24003
Remote bindings: (1 peers)
Peer Label
----------------- ---------
22.22.22.22:0 24002
44.44.44.44/32, rev 16
Local binding: label: 24004
Remote bindings: (1 peers)
Peer Label
----------------- ---------
22.22.22.22:0 24000
=============================================================
IOS XE:
Y-ASBR1#show mpls ld bin
lib entry: 1.1.1.1/32, rev 2
local binding: label: imp-null
remote binding: lsr: 2.2.2.2:0, label: 16
lib entry: 2.2.2.2/32, rev 8
local binding: label: 16
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 3.3.3.3/32, rev 16
local binding: label: 20
remote binding: lsr: 2.2.2.2:0, label: 18
lib entry: 4.4.4.4/32, rev 14
local binding: label: 19
remote binding: lsr: 2.2.2.2:0, label: 17
lib entry: 100.2.1.0/24, rev 6
local binding: label: imp-null
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 100.2.3.0/24, rev 12
local binding: label: 18
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 100.2.4.0/24, rev 10
local binding: label: 17
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 100.200.1.0/24, rev 4
local binding: label: imp-null
ISO XE / IOS XR:
В примере выше Local binding это метка, которая была назначена локальным роутером и просигнализирована соседям.
Под каждым FEC есть список соседей и их метки – Remote binding, которые они назначили и просигнализировали остальным роутерам (включая локальный).
Сказать проще, в циске это:
- Local Label – Просигналили соседям и ожидаем трафик с этой меткой
- Remote Binding – Мы получили эту метку от соседей и с этой меткой будем форвардить трафик дальше
Выхлоп команд с P ротуров (по несколько ldp соседей):
ISO XR:
RP/0/0/CPU0:B-P2#show mpls ldp bindings
Mon Mar 14 16:32:07.059 UTC
11.11.11.11/32, rev 13
Local binding: label: 24001
Remote bindings: (3 peers)
Peer Label
----------------- ---------
11.11.11.11:0 ImpNull
33.33.33.33:0 24003
44.44.44.44:0 24003
22.22.22.22/32, rev 2
Local binding: label: ImpNull
Remote bindings: (3 peers)
Peer Label
----------------- ---------
11.11.11.11:0 24000
33.33.33.33:0 24000
44.44.44.44:0 24000
=============================================================
IOS XE:
Y-P2#show mpls ld bi
lib entry: 1.1.1.1/32, rev 10
local binding: label: 16
remote binding: lsr: 1.1.1.1:0, label: imp-null
remote binding: lsr: 4.4.4.4:0, label: 17
remote binding: lsr: 3.3.3.3:0, label: 18
lib entry: 2.2.2.2/32, rev 2
local binding: label: imp-null
remote binding: lsr: 1.1.1.1:0, label: 16
remote binding: lsr: 4.4.4.4:0, label: 16
remote binding: lsr: 3.3.3.3:0, label: 17
Сверим метки с FIB и LFIB:
LIB на IOS XR:
RP/0/0/CPU0:B-P2#show mpls ldp bindings | i "rev|Local"
Mon Mar 14 16:53:08.432 UTC
11.11.11.11/32, rev 13
Local binding: label: 24001
22.22.22.22/32, rev 2
Local binding: label: ImpNull
33.33.33.33/32, rev 14
Local binding: label: 24002
44.44.44.44/32, rev 12
Local binding: label: 24000
И теперь смотрим в LFIB
RP/0/0/CPU0:B-P2#show mpls forwarding
Mon Mar 14 16:53:11.922 UTC
Local Outgoing Prefix Outgoing Next Hop
Label Label or ID Interface
------ ----------- ------------------ ------------ ---------------
24000 Pop 44.44.44.44/32 Gi0/0/0/1 200.2.4.4
24001 Pop 11.11.11.11/32 Gi0/0/0/2 200.2.1.1
24002 Pop 33.33.33.33/32 Gi0/0/0/3 200.2.3.3
Видим что метка из Local binding (LIB) сопоставима с меткой в Local Label (LFBI) т.е. именно эта метка и отдается соседям. В случае если эта метка пришла на локальный роутер (от куда выхлоп выше), то с ней будет выполнено действие из Outgoing Label.
FEC, у которого Local Binding был ImpNull () нет в выхлопе LFIB, т.к. ImpNull говорит соседям, чтоб они при форвардинге на локальный роутер, удаляли mpls метку. imp-null
На локальном роутере, мы можем посмотреть конкретную метку, сгенерированную этим же роутером – Local Label. Так и ту, которую мы получили от соседей Remote Binding
Командой show mpls forwarding-table labels <label> мы сможем посмотреть только локальные метки (мы их генерим)
Тут стоит поправить себя, что во всем выхлопе команды мы увидим outgoing (remote) метку, но вот вбить команду так, чтобы она нам показала конкретно remote метку не получится. Только local lable
Командой show mpls ldp bindings можем увидеть и local и remote
- show mpls ldp bindings local-label <label> – local
Y-ASBR1#show mpls ldp bindings local-label 18
lib entry: 100.2.3.0/24, rev 12
local binding: label: 18
- show mpls ldp bindings remote-label <label> – remote
Y-ASBR1#show mpls ldp bindings remote-label 18
lib entry: 3.3.3.3/32, rev 16
remote binding: lsr: 2.2.2.2:0, label: 18
