Технология VPLS давно зарекомендовала себя как способ объединения географически разнесенных объектов в единую сеть L2. Данное решение хорошо масштабируется по сравнению с классической сетью L2 и позволяет избавиться от проблем петель L2 в ядре сети.
Однако часто возникает необходимость организовать резервные каналы от абонента до облака VPLS. В такой ситуации существует опасность образования петель на участке PE-CE. Существует несколько подходов к решению этой проблемы.
Вот некоторые из них:
- Множественная адресация VPLS на основе BGP
- Комбинация VPLS и STP
- МС-ЛАГ
Содержание Настройка транспорта
- Базовая конфигурация PE-маршрутизаторов
- Базовая настройка P-роутеров
- Базовая настройка коммутаторов CE
При написании я не ставил перед собой цели глубоко вникнуть в теорию и объяснить тонкости работы тех или иных протоколов, о которых пойдет речь.
Предполагается, что читатель знаком с работой протоколов MPLS, BGP и Spanning-tree. Настройка транспорта Ниже приведена топология, которую я буду использовать в этой статье.
Сеть провайдера состоит из маршрутизаторов PE и P (Juniper MX), все они расположены в OSPF Area 0 и BGP AS 65412. Абонентская сеть состоит из трех свитчей (Cisco Catalyst), каждый из которых имеет Vlan 10 и версию RPVST. протокола связующего дерева (VSTP в терминологии Juniper).
Прежде чем приступить к настройке VPLS, необходимо установить транспорт MPLS. В этом примере используется сигнализация LSP — RSVP. Для краткости привожу конфигурации только двух роутеров; остальное легко настроить по аналогии.
Базовая настройка PE-маршрутизаторов на примере PE1
Базовая конфигурация PE1Параметры Flexible-VLAN-Tagging и Flexible-Ethernet-Sevices позволяют настраивать не только VPLS, но и другие сервисы на физическом интерфейсе, используя разные логические единицы.system { host-name PE1; } interfaces { ge-0/0/0 { encapsulation flexible-ethernet-services; flexible-vlan-tagging; unit 10 { encapsulation vlan-vpls; vlan-id 10; } } ge-0/0/1 { mtu 2000; unit 0 { family inet { address 10.0.11.1/30; } family mpls; } } ge-0/0/2 { mtu 2000; unit 0 { family inet { address 10.0.12.1/30; } family mpls; } } lo0 { unit 0 { family inet { address 10.0.0.1/32; } } } } routing-options { router-id 10.0.0.1; autonomous-system 65412; } protocols { rsvp { interface lo0.0; interface ge-0/0/1.0; interface ge-0/0/2.0; } mpls { label-switched-path PE1-PE2 { to 10.0.0.2; no-cspf; } label-switched-path PE1-PE3 { to 10.0.0.3; no-cspf; } label-switched-path PE1-PE4 { to 10.0.0.4; no-cspf; } interface ge-0/0/1.0; interface ge-0/0/2.0; } ospf { area 0.0.0.0 { interface ge-0/0/1.0 { interface-type p2p; } interface ge-0/0/2.0 { interface-type p2p; } interface lo0.0; } } }
Если интерфейс планируется использовать только для VPLS, то следует указать инкапсуляцию ethernet-vpls или vlan-vpls. Подробнее здесь .
Базовая настройка P-роутеров на примере P1
Базовая конфигурация P1 system {
host-name P1;
}
interfaces {
ge-0/0/0 {
mtu 2000;
unit 0 {
family inet {
address 10.0.11.2/30;
}
family mpls;
}
}
ge-0/0/1 {
mtu 2000;
unit 0 {
family inet {
address 10.0.13.2/30;
}
family mpls;
}
}
ge-0/0/2 {
mtu 2000;
unit 0 {
family inet {
address 10.0.21.1/30;
}
family mpls;
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.11/32;
}
}
}
}
routing-options {
router-id 10.0.0.11;
autonomous-system 65412;
}
protocols {
rsvp {
interface lo0.0;
interface ge-0/0/0.0;
interface ge-0/0/1.0;
interface ge-0/0/2.0;
}
mpls {
interface ge-0/0/0.0;
interface ge-0/0/1.0;
interface ge-0/0/2.0;
}
ospf {
area 0.0.0.0 {
interface ge-0/0/0.0 {
interface-type p2p;
}
interface ge-0/0/1.0 {
interface-type p2p;
}
interface ge-0/0/2.0 {
interface-type p2p;
}
interface lo0.0;
}
}
}
Проверяем, что MPLS включен и работает:
lab@PE1> traceroute mpls rsvp PE1-PE2
Probe options: retries 3, exp 7
ttl Label Protocol Address Previous Hop Probe Status
1 10.0.12.2 (null) Egress
Path 1 via ge-0/0/2.0 destination 127.0.0.64
lab@PE1> traceroute mpls rsvp PE1-PE3
Probe options: retries 3, exp 7
ttl Label Protocol Address Previous Hop Probe Status
1 299888 RSVP-TE 10.0.11.2 (null) Success
2 3 RSVP-TE 10.0.13.1 10.0.11.2 Egress
Path 1 via ge-0/0/1.0 destination 127.0.0.64
lab@PE1> traceroute mpls rsvp PE1-PE4
Probe options: retries 3, exp 7
ttl Label Protocol Address Previous Hop Probe Status
1 299936 RSVP-TE 10.0.11.2 (null) Success
2 299792 RSVP-TE 10.0.13.1 10.0.11.2 Success
3 3 RSVP-TE 10.0.34.2 10.0.13.1 Egress
Path 1 via ge-0/0/1.0 destination 127.0.0.64
Базовая настройка коммутаторов CE
Базовая конфигурация CE1 hostname CE1
!
spanning-tree mode rapid-pvst
spanning-tree extend system-id
!
vlan 10
!
interface GigabitEthernet0/0
switchport trunk allowed vlan 10
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface Vlan10
ip address 192.168.10.1 255.255.255.0
no shutdown
!
Базовая конфигурация CE2
hostname CE2
!
spanning-tree mode rapid-pvst
spanning-tree extend system-id
!
vlan 10
!
interface GigabitEthernet0/0
switchport trunk allowed vlan 10
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface Vlan10
ip address 192.168.10.2 255.255.255.0
no shutdown
!
Базовая конфигурация CE3
hostname CE3
!
spanning-tree mode rapid-pvst
spanning-tree extend system-id
!
vlan 10
!
interface GigabitEthernet0/0
switchport trunk allowed vlan 10
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface GigabitEthernet0/1
switchport trunk allowed vlan 10
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface Vlan10
ip address 192.168.10.3 255.255.255.0
no shutdown
!
Теперь можно перейти непосредственно к настройке сервиса VPLS. Множественная адресация VPLS на основе BGP Прежде всего хотелось бы рассмотреть «классическую», с точки зрения Juniper, реализацию VPLS с использованием сигнализации BGP ( RFC 4761 ).
С точки зрения плоскости управления это мало чем отличается от обычного L3VPN — здесь также используются Route Distinguisher и Route Target, а в качестве семейства адресов указывается l2vpn. Для начала вам необходимо настроить сам протокол BGP. Поскольку для корректной работы iBGP требуется полная связность внутри сети, я использовал P1 и P2 в качестве отражателей маршрутов, чтобы упростить настройку.
Настройка BGP
PE-маршрутизаторы: Конфигурация PE BGP protocols {
bgp {
group IBGP {
type internal;
local-address 10.0.0.X;
family l2vpn {
signaling;
}
neighbor 10.0.0.11;
neighbor 10.0.0.22;
}
}
}
где X — номер соответствующего PE П1 Конфигурация P1 BGP
routing-options {
rib inet.3 {
static {
route 10.0.0.0/24 discard;
}
}
}
protocols {
bgp {
group IBGP {
type internal;
local-address 10.0.0.11;
family l2vpn {
signaling;
}
cluster 10.0.0.0;
neighbor 10.0.0.1;
neighbor 10.0.0.2;
neighbor 10.0.0.3;
neighbor 10.0.0.4;
}
}
}
П2 Конфигурация P2 BGP
routing-options {
rib inet.3 {
static {
route 10.0.0.0/24 discard;
}
}
}
protocols {
bgp {
group IBGP {
type internal;
local-address 10.0.0.22;
family l2vpn {
signaling;
}
cluster 10.0.0.0;
neighbor 10.0.0.1;
neighbor 10.0.0.2;
neighbor 10.0.0.3;
neighbor 10.0.0.4;
}
}
}
Здесь стоит отметить блок параметры маршрутизации .
Когда отражатель маршрута получает маршрут от своего клиента, прежде чем объявить его другим клиентам, он проверяет доступность следующего перехода в таблице inet.3. Так как при первоначальной настройке MPLS на P-маршрутизаторах я не создавал LSP перед PE-маршрутизаторами, то эта таблица пуста и соответственно проверка не работает. Маршруты, полученные от клиентов RR, помечаются как скрытые и в дальнейшем не рекламируются.
Конечно, можно создать LSP от RR до каждого PE, но это трудоемко, и эти LSP никогда не будут использоваться для передачи трафика.
Гораздо проще и элегантнее создать статический маршрут к сети lo0.
На данный момент соединение BGP должно работать между всеми PE-маршрутизаторами, но они пока ничего не анонсируют. Можно переходить к настройке VPLS.
Настройка ВПЛС
П?1 Конфигурация PE1 BGP VPLS routing-instances {
VPLS {
instance-type vpls;
interface ge-0/0/0.10;
route-distinguisher 10.0.0.1:1;
vrf-target target:65412:10;
protocols {
vpls {
no-tunnel-services;
site CE1 {
site-identifier 1;
interface ge-0/0/0.10;
}
}
}
}
}
П?2 Конфигурация PE2 BGP VPLS
routing-instances {
VPLS {
instance-type vpls;
interface ge-0/0/0.10;
route-distinguisher 10.0.0.2:1;
vrf-target target:65412:10;
protocols {
vpls {
no-tunnel-services;
site CE2 {
site-identifier 2;
interface ge-0/0/0.10;
}
}
}
}
}
Здесь все достаточно просто: создаем router-instance с типом vpls, назначаем RD и RT, указываем интерфейсы к CE и уникальный site-identifier. Мы проверяем:
lab@PE1> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
Local site: CE1 (1)
connection-site Type St Time last up # Up trans
2 rmt Up May 30 17:29:28 2015 1
Remote PE: 10.0.0.2, Negotiated control-word: No
Incoming label: 262146, Outgoing label: 262145
Local interface: lsi.1048576, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 1 remote site 2
lab@PE2> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
Local site: CE2 (2)
connection-site Type St Time last up # Up trans
1 rmt Up May 30 17:29:30 2015 1
Remote PE: 10.0.0.1, Negotiated control-word: No
Incoming label: 262145, Outgoing label: 262146
Local interface: lsi.1048576, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 2 remote site 1
VPLS-соединения активны.
Проверить подключение CE1 и CE2 можно: CE1>ping 192.168.10.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.2, timeout is 2 seconds:
.
!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 10/119/207 ms
Настройка множественной адресации
Как видно из топологии, свитч CE3 подключается одновременно к двум PE-маршрутизаторам.Здесь, чтобы избежать возникновения петель L2, необходимо использовать механизм Многоадресность .
Давайте посмотрим на настройки PE3 и PE4.
П?3 Конфигурация PE3 VPLS routing-instances {
VPLS {
instance-type vpls;
interface ge-0/0/0.10;
route-distinguisher 10.0.0.3:1;
vrf-target target:65412:10;
protocols {
vpls {
no-tunnel-services;
site CE3 {
site-identifier 3;
multi-homing;
site-preference primary;
interface ge-0/0/0.10;
}
}
}
}
}
П?4 Конфигурация PE4 VPLS routing-instances {
VPLS {
instance-type vpls;
interface ge-0/0/0.10;
route-distinguisher 10.0.0.4:1;
vrf-target target:65412:10;
protocols {
vpls {
no-tunnel-services;
site CE3 {
site-identifier 3;
multi-homing;
site-preference backup;
interface ge-0/0/0.10;
}
}
}
}
}
В отличие от предыдущих конфигураций PE1 и PE2 здесь добавлены два параметра:
- множественная адресация — указывает маршрутизатору, что он подключен к многосетевому сайту;
- предпочтения сайта — значение от 1 (основной) до 65535 (резервный), объявленное другим PE как сообщество BGP.
Таким образом, PE3 и PE4 рекламируют один и тот же маршрут l2vpn, отличающийся только параметром site-preference. Маршрут с наибольшим предпочтением сайта, т. е.
маршрут от PE3, побеждает, и весь l2vpn-трафик от PE1 и PE2 начинает проходить через PE3. Интерфейс ge-0/0/0 на PE4 не пропускает трафик.
lab@PE1> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
Local site: CE1 (1)
connection-site Type St Time last up # Up trans
2 rmt Up May 30 17:29:28 2015 1
Remote PE: 10.0.0.2, Negotiated control-word: No
Incoming label: 262146, Outgoing label: 262145
Local interface: lsi.1048576, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 1 remote site 2
3 rmt Up May 30 20:16:41 2015 1
Remote PE: 10.0.0.3, Negotiated control-word: No
Incoming label: 262147, Outgoing label: 262145
Local interface: lsi.1048579, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 1 remote site 3
lab@PE2> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
Local site: CE2 (2)
connection-site Type St Time last up # Up trans
1 rmt Up May 30 17:29:30 2015 1
Remote PE: 10.0.0.1, Negotiated control-word: No
Incoming label: 262145, Outgoing label: 262146
Local interface: lsi.1048576, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 2 remote site 1
3 rmt Up May 30 20:16:42 2015 1
Remote PE: 10.0.0.3, Negotiated control-word: No
Incoming label: 262147, Outgoing label: 262146
Local interface: lsi.1048578, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 2 remote site 3
lab@PE3> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
Local site: CE3 (3)
connection-site Type St Time last up # Up trans
1 rmt Up May 30 20:16:35 2015 1
Remote PE: 10.0.0.1, Negotiated control-word: No
Incoming label: 262145, Outgoing label: 262147
Local interface: lsi.1048833, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 3 remote site 1
2 rmt Up May 30 20:16:35 2015 1
Remote PE: 10.0.0.2, Negotiated control-word: No
Incoming label: 262146, Outgoing label: 262147
Local interface: lsi.1048832, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS local site 3 remote site 2
3 rmt RN
lab@PE4> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
Local site: CE3 (3)
connection-site Type St Time last up # Up trans
1 rmt LN
2 rmt LN
3 rmt LN
Обратите внимание, что на PE4 все соединения VPLS находятся в состоянии LN — локальный сайт не назначен.
Это говорит о том, что PE4 не участвует в передаче VPLS-трафика.
При выходе из строя канала PE3-CE3 или когда PE3 теряет связь с остальной частью сети, маршрутизатор перестает анонсировать маршрут l2vpn, PE4 начинает пропускать трафик по интерфейсу ge-0/0/0, а PE1 и PE2 начинают маршрутизировать трафик в сторону PE4. Скорость переключения каналов в этом случае зависит от скорости конвергенции BGP. Комбинация VPLS и STP Теперь самое интересное.
Рассмотрим топологию, в которой CE1 и CE2 соединены друг с другом.
При использовании BGP-Based Multihoming в такой топологии все будет хорошо, пока не оборвется канал CE1-CE2. PE-маршрутизаторы не будут знать об изменении топологии и в случае, когда, например, PE1 является основным маршрутизатором, трафик к CE2 продолжит идти через PE1 и будет отброшен.
Чтобы изменения топологии в сегменте CE передавались в сегмент VPLS, необходимо настроить взаимодействие STP и VPLS. Ниже приведена теория высокого уровня о том, как это должно работать.
Давайте рассмотрим нормальную ситуацию, когда все ссылки работают.
- PE1 и PE2 участвуют как в доменах STP, так и в VPLS.
- Домен STP является локальным для CE1, CE2, PE1, PE2 и не распространяется на PE3, PE4 и CE3.
- STP на PE1 и PE2 настроен так, что PE1 является корневым мостом, а PE2 — резервным корнем.
- На портах PE1 и PE2, обращенных к CE, настроена защита root. Таким образом, когда BPDU от PE1 поступает на порт PE2, этот порт блокируется.
- На PE1 и PE2 PW (псевдопровода) подключаются друг к другу, а также к PE3 и PE4 (полное подключение), в то время как PE2 сигнализирует о своих PW как о резервных (показано пунктирными линиями), поскольку порт, ведущий к CE2, находится в заблокированном состоянии.
В домене STP:
- CE1 и CE2 отправляют уведомление об изменении топологии
- CE1 и CE2 сбрасывают таблицы MAC
- PE2 становится корневым мостом в своем сегменте
- PE1 остается корневым мостом
- PE2 разблокирует порт в сторону CE2, т.к.
перестает получать BPDU от PE1
- PE2 переводит свои PW в состояние Up, поскольку порт, ведущий к CE2, больше не заблокирован.
- PW на PE1 остается в состоянии Up, как и раньше.
- PE2 отправляет сигнал PE3 и PE4 для сброса MAC-адресов, полученных от PE1.
- PE3 и PE4 начинают использовать PE1 и PE2 для пересылки трафика на CE1 и CE2.
Теперь перейдем к настройке.
Сразу отмечу, что воссоздать такое поведение мне удалось только с использованием протокола LDP для сигнализации VPLS ( RFC 4762 ), хотя в официальной документации об этом нигде не написано (поправьте меня, если я ошибаюсь).
Настройка STP
В отличие от обычных коммутаторов, для настройки STP на маршрутизаторах серии MX необходимо создать Route-Instance с типом Layer2-Control. П?1 и П?3 Конфигурация STP PE1 и PE3 routing-instances {
STP {
instance-type layer2-control;
protocols {
vstp {
interface ge-0/0/0 {
mode point-to-point;
no-root-port;
}
vlan 10 {
bridge-priority 24k;
}
}
}
}
}
П?2 и П?4 Конфигурация STP PE2 и PE4
routing-instances {
STP {
instance-type layer2-control;
protocols {
vstp {
interface ge-0/0/0 {
mode point-to-point;
no-root-port;
}
vlan 10 {
bridge-priority 28k;
}
}
}
}
}
Проверка работы СТП
lab@PE1> show spanning-tree interface ge-0/0/0 routing-instance STP
Spanning tree interface parameters for VLAN 10
Interface Port ID Designated Designated Port State Role
port ID bridge ID Cost
ge-0/0/0 128:1 128:1 24586.00058671c3d0 20000 FWD DESG
lab@PE2> show spanning-tree interface ge-0/0/0 routing-instance STP
Spanning tree interface parameters for VLAN 10
Interface Port ID Designated Designated Port State Role
port ID bridge ID Cost
ge-0/0/0 128:1 128:1 32778.500000080000 20000 BLK ALT (Root-Prev)
STP работает как надо - порт в сторону CE2 заблокирован root-защитой.
Настройка VPLS на LDP
В отличие от BGP, при настройке VPLS с сигнализацией LDP необходимо вручную указать IP-адреса всех PE-маршрутизаторов, участвующих в VPLS. П?1 Конфигурация PE1 LDP VPLS protocols {
ldp {
interface lo0.0;
}
}
routing-instances {
VPLS {
instance-type vpls;
interface ge-0/0/0.10;
protocols {
vpls {
no-tunnel-services;
vpls-id 1;
mac-flush;
neighbor 10.0.0.2;
neighbor 10.0.0.3;
neighbor 10.0.0.4;
}
}
}
}
Ключевым параметром здесь является Mac-Flush .
Без него маршрутизаторы не будут сбрасывать таблицу MAC-адресов при изменении топологии.
На PE2, PE3, PE4 настройки абсолютно идентичны, за исключением соседних линий.
Проверка работы ЛДП lab@PE1> show ldp neighbor
Address Interface Label space ID Hold time
10.0.0.2 lo0.0 10.0.0.2:0 33
10.0.0.3 lo0.0 10.0.0.3:0 44
10.0.0.4 lo0.0 10.0.0.4:0 41
LDP-соединения работают, посмотрим, что происходит с VPLS. lab@PE1> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
VPLS-id: 1
Neighbor Type St Time last up # Up trans
10.0.0.2(vpls-id 1) rmt Up May 30 23:50:32 2015 1
Remote PE: 10.0.0.2, Negotiated control-word: No
Incoming label: 262401, Outgoing label: 262401
Negotiated PW status TLV: No
Local interface: lsi.1048580, Status: Up, Encapsulation: ETHERNET
Description: Intf - vpls VPLS neighbor 10.0.0.2 vpls-id 1
Flow Label Transmit: No, Flow Label Receive: No
10.0.0.3(vpls-id 1) rmt Up May 30 23:51:49 2015 1
Remote PE: 10.0.0.3, Negotiated control-word: No
Incoming label: 262402, Outgoing label: 262401
Negotiated PW status TLV: No
Local interface: lsi.1048581, Status: Up, Encapsulation: ETHERNET
Description: Intf - vpls VPLS neighbor 10.0.0.3 vpls-id 1
Flow Label Transmit: No, Flow Label Receive: No
10.0.0.4(vpls-id 1) rmt Up May 30 23:52:00 2015 1
Remote PE: 10.0.0.4, Negotiated control-word: No
Incoming label: 262403, Outgoing label: 262401
Negotiated PW status TLV: No
Local interface: lsi.1048582, Status: Up, Encapsulation: ETHERNET
Description: Intf - vpls VPLS neighbor 10.0.0.4 vpls-id 1
Flow Label Transmit: No, Flow Label Receive: No
lab@PE2> show vpls connections
Layer-2 VPN connections:
<.
>
Instance: VPLS
VPLS-id: 1
Neighbor Type St Time last up # Up trans
10.0.0.1(vpls-id 1) rmt ST
10.0.0.3(vpls-id 1) rmt ST
10.0.0.4(vpls-id 1) rmt ST
Здесь тоже все хорошо.
На PE2 соединения находятся в состоянии ожидания.
Проверяем, что CE3 может пинговать CE2. Трафик должен проходить через PE3, PE1 и CE1. CE3>ping 192.168.10.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/14/18 ms
Смотрим таблицу MAC-адресов на PE3 lab@PE3> show vpls mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC)
Routing instance : VPLS
Bridging domain : __VPLS__, VLAN : NA
MAC MAC Logical NH RTR
address flags interface Index ID
50:00:00:08:80:0a D lsi.1049088
50:00:00:09:80:0a D ge-0/0/0.10
Здесь 50:00:00:08:80:0a — это MAC-адрес интерфейса Vlan10 на CE2, lsi.1049088 — это PW от PE3 к PE1.
Теперь разорвем связь CE1-CE2 и посмотрим, что изменилось.
lab@PE1> show spanning-tree interface ge-0/0/0 routing-instance STP
Spanning tree interface parameters for VLAN 10
Interface Port ID Designated Designated Port State Role
port ID bridge ID Cost
ge-0/0/0 128:1 128:1 24586.00058671c3d0 20000 FWD DESG
lab@PE2> show spanning-tree interface ge-0/0/0 routing-instance STP
Spanning tree interface parameters for VLAN 10
Interface Port ID Designated Designated Port State Role
port ID bridge ID Cost
ge-0/0/0 128:1 128:1 28682.0005867142d0 20000 FWD DESG
Интерфейс PE2 по отношению к CE2 переключился в состояние пересылки, как и должно быть.
Мы снова пингуем PE2 CE3>ping 192.168.10.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/13/19 ms
Смотрим таблицу MAC на PE3 lab@PE3> show vpls mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC)
Routing instance : VPLS
Bridging domain : __VPLS__, VLAN : NA
MAC MAC Logical NH RTR
address flags interface Index ID
50:00:00:08:80:0a D lsi.1049089
50:00:00:09:80:0a D ge-0/0/0.10
Как видите, MAC CE2 теперь находится на интерфейсе lsi.1049089, а это PW перед PE2.
Выводы
Как видно из статьи, организация VPLS Multihoming – не самая тривиальная задача со своими подводными камнями.
Оба подхода к решению этой проблемы, которые я описал, имеют свои преимущества и недостатки и применимы только в определенных ситуациях.
Общим недостатком VPLS Multihoming является невозможность одновременного использования двух восходящих каналов.
Если такой функционал необходим, стоит обратить внимание в сторону технологии EVPN, которая постепенно вытесняет VPLS. Материалы, использованные при написании статьи
- Juniper Networks Warrior: Руководство по развитию внедрений Juniper Networks Питера Саутвика
- Реализация VPN, предоставляемых провайдером, с использованием отражателей маршрутов
- Конфигурация MPLS/RSVP и устранение неполадок
- VPLS на Junos с сигнализацией через LDP или BGP
- AdvancedVPLS
-
Встреча С Оперой Во Владивостоке
19 Oct, 24 -
В Api Директа Появилась «Песочница»
19 Oct, 24