Ранее (в версиях до 3.12.0) выбор транспорта для pw происходил следующим образом:
- Для Martini pw (pw, явно создаваемые в конфигурации), выбор осуществляется опцией transport (rsvp или bgplu) в самом pw или в pw-class. При отсутствии данной настройки используется ldp-транспорт
- Для Auto-discovery pw выбирается доступный, на данный момент, транспортный туннель. При падении выбранного туннеля выбирается другой доступный.
- Для Inter-as option B pw - такая же логика что и для auto-discovery pw, за исключением того, что недоступны bgplu-туннели
С версиии 3.12 мы реализовали новый механизм - tunnel-policy, который позволяет гибко выбирать транспорт для конкретного PE или диапазона PE, и прописать приоритет используемого транспорта.
Политика представляет собой список destination, заданных в формате IPv4 (A.B.C.D/N), и упорядоченного перечня типов транспортных туннелей, разрешенных к выбору при построении VPN сервиса до данного destination.
Под destination подразумевается ipv4 идентификатор маршрутизатора, сгенерировавшего "сервисную" MPLS метку для VPN сервиса.
При обработке политики, поиск соответствия между ipv4 идентификатором маршрутизатора, сгенерировавшего "сервисную" MPLS метку и destination, указанным в политике, производится в соответствии с принципом Longest Prefix Match, что позволяет формировать как более специфичные так и более общие наборы правил выбора транспортных туннелей.
В качестве примера разберем предложенную схему. Мы настроили LDP между 3 маршрутизаторами стенда, а также настроили RSVP туннели 21 и 3 от R1 до R3(В данной статье опущены моменты настройки IGP, MPLS и настройки не связанные с функционалом tunnel-policy).
На маршрутизаторе R1 применены следующие настройки L2VPN и tunnel-policy:
0/ME5200S:US-STN-ILCH-PE21# show running-config l2vpn
Thu Jan 29 10:00:41 2026
! Configuration version 3.12.0.188R
l2vpn
bridge-group service_1
bridge-domain service_1
interface tengigabitethernet 0/0/23.4091
exit
pw 172.27.72.230 1
pw-class pw
exit
pw-tunnel-policy l2vpn <<< Применили настройку tunnel-policy
exit
exit
pw-class pw
encapsulation mpls signaling-type pseudowire-id-fec-signaling
exit
exit
0/ME5200S:R1# show running-config tunnel-policy
Thu Jan 29 10:00:45 2026
! Configuration version 3.12.0.188R
tunnel-policy l2vpn
destination 172.27.72.230/32 << Указываем peer адрес удаленной PE
seq-num 1
type ldp <<< Выбираем LDP как более приоритетный транспорт для PW
exit
seq-num 5
tunnel-set
tunnel 21 <<< Данной настройкой задаем RSVP туннель 21 как возможный транспорт для pw
priority 2 <<< Для туннеля 21 задаем приоритет 2(Чем меньше приоритет тем приоритетнее будет транспорт)
exit
tunnel 3 <<< Данной настройкой задаем RSVP туннель 3 как возможный транспорт для pw
priority 8 <<< Для туннеля 3 задаем приоритет 8(Чем меньше приоритет тем приоритетнее будет транспорт)
exit
exit
type rsvp
exit
exit
exit
Также следует сказать, что tunnel-policy можно назначать на весь конфигурационный блок L2VPN:
l2vpn
bridge-group service_1
bridge-domain 1
exit
exit
pw-tunnel-policy l2vpn
exit
Следует заметить, что политика tunnel-policy создается как tunnel-policy, но ее применение в конфигурационный блок L2VPN происходит как pw-tunnel-policy. Мы также предусмотрели сценарий inter-as option B, в этом случае в конфигурационном блоке L2VPN применение происходит как pw-tunnel-policy-ia.
Запустим трафик и посмотрим какие транспортные метки выделяются изначально, а далее отключим сначалаLDP, а потом tunnel 21 и посмотрим за изменениями транспортных меток для pw:
0/ME5200S:R1# show mpls ldp forwarding
Thu Jan 29 10:34:41 2026
Codes:
R = LFA FRR backup
E = Entropy Label Capability
Prefix Label(s) out Outgoing Interface Next Hop flags
--------------------- ------------- ------------------- --------------------- ------
172.27.72.230/32 132 te0/0/4.4093 2.2.2.2
0/ME5200S:R1# show mpls rsvp lsps
Thu Jan 29 10:34:45 2026
Role: I - Ingress, T - Transit, E - Egress, * - Detour, # - Facility backup
Flags: E - Entropy Label Capability
Name Id Source Destination In/Out Label Role Flags State
---------------------------------------- ------ ----------------- ----------------- ----------------- ----- ------ ------
21@21 1 172.27.72.231 172.27.72.230 -/127 I up
1@11 1 172.27.72.230 172.27.72.231 23/- E up
3@3 1 172.27.72.231 172.27.72.230 -/119 I up
Резюмируя, в начале теста выделенная метка должна быть 132, при обрыве LDP должна смениться на 127 и в случае отключения туннеля 21 должна смениться на 119.
На дампе показано, что транспортная метка 127, а сервисная 301. Далее отключим LDP на исходящем интерфейсе:
0/ME5200S:R1(config-ldp)# discovery interface tengigabitethernet 0/0/4.4093 <<< выключили ldp, pw должна использовать в качестве транспорта туннель 21(метка 127) 0/ME5200S:R1(config-tengigabitethernet-sub)# shutdown 0/ME5200S:R1(config-tengigabitethernet-sub)# commit Thu Jan 29 10:36:35 2026
0/ME5200S:R1(config-mpls)# rsvp tunnel 21 <<< выключили туннель 21, pw должна использовать в качестве транспорта туннель 3(метка 119) 0/ME5200S:R1(config-tunnel)# shutdown 0/ME5200S:R1(config-tunnel)# commit Thu Jan 29 10:37:15 2026
Далее в случае включения более приоритетного транспорта, pw будет переключаться на него:
0/ME5200S:R1(config-ldp)# discovery interface tengigabitethernet 0/0/4.4093 <<< Включаем LDP на исходящем интерфейсе
0/ME5200S:R1(config-tengigabitethernet-sub)# no shutdown
0/ME5200S:R1(config-tengigabitethernet-sub)# commit
Thu Jan 29 10:38:10 2026
0/ME5200S:R1# show mpls ldp forwarding
Thu Jan 29 10:38:37 2026
Codes:
R = LFA FRR backup
E = Entropy Label Capability
Prefix Label(s) out Outgoing Interface Next Hop flags
--------------------- ------------- ------------------- --------------------- ------
172.27.72.230/32 140 te0/0/4.4093 2.2.2.2
Также следует сказать о настройках по-умолчанию, если вы не сконфигурировали tunnel-policy для xconnect/bridge-domain. Если tunnel-policy отсутствует, то в ход идёт политика с такими настройками:
tunnel-policy implicitPolicy
destination 0.0.0.0/0
seq-num 1
type ldp
exit
seq-num 2
type rsvp
exit
seq-num 3
type bgp-lu
exit
exit
exit
Также мы предусмотрели tunnel-policy для сценария inter-as BGP optioin B, когда мы не можем использовать BGP-LU транспорт. Для этого случая, следующие настройки по-умолчанию:
tunnel-policy implicitPolicy_inter-as
destination 0.0.0.0/0
seq-num 1
type rsvp
exit
seq-num 2
type ldp
exit
exit
exit




