> For the complete documentation index, see [llms.txt](https://linkmeup.gitbook.io/sdsm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://linkmeup.gitbook.io/sdsm/12.-mpls-l2vpn/2.-vpls/3.-kompella-mode/3.-praktika.md).

# Практика

Остаёмся с той же сетью:\
![](https://habrastorage.org/files/eab/9cc/5e0/eab9cc5e0b8d4fea892cf5b513764949.png)

> Предыдущая конфигурация снова очищается до начальной.\
> [Файл начальной конфигурации.](https://docs.google.com/document/d/1_o0-Fu0_g1JGCfxGQuDWrIVzaNFRbVPUpDXdk_Rvvdo/pub)

1. Создаём VFI, как это делали в режиме Martini:

   ```
   Linkmeup_R1(config)#l2vpn vfi context Blue 
   Linkmeup_R1(config-vfi)#vpn id 63 
   Linkmeup_R1(config-vfi)#autodiscovery bgp signaling bgp 
   Linkmeup_R1(config-vfi-autodiscovery)#ve id 101
   ```

```
Этот способ позволяет настроить три типа VFI: ручной Martini с настройкой соседей. _BGP Autodiscovery + **BGP** Signalling_, либо _BGP Autodiscovery + **LDP** Signalling_.  
В нашем случае мы выбрали оба — BGP.  

Опционально мы можем задать количество членов VPLS-домена. В cisco по умолчанию — 10. Командой **ve range _Х_** можно увеличить от 11 до 100 (но не уменьшить). Huawei — по умолчанию 10, можно изменять (1-16000). Juniper — по умолчанию 8, можно изменять (2,4,8, 16...)  
Route Distinguisher и Route Target мы можем не настраивать — они будут назначены автоматически. Разве что вам хочется странного — объединить в один домен разные VFI.  

Далее я даю команду **mpls label range 1000 1999**. Она глобально задаёт диапазон динамически используемых меток. Вообще говоря этого делать не нужно, поскольку так всем приложениям MPLS (LDP, TE, BGP) мы указываем, какие метки выбирать, а я не люблю кому-то что-то указывать. Но я делаю это для более наглядной иллюстрации вычисления меток.
```

Linkmeup\_R1(config)#mpls label range 1000 1999 Label range change will cause 5 labels in the old dynamic range \[16-1048575] to go out of range

```
Предупреждение говорит как раз о том, что распределённые прежде транспортные метки не укладываются в новый диапазон.
```

1. Привязываем интерфейсы к Service Instance:

   ```
   Linkmeup_R1(config)#interface gigabitEthernet 3
   Linkmeup_R1(config-if)#service instance 10 ethernet 
   Linkmeup_R1(config-if-srv)#description Blue-A
   Linkmeup_R1(config-if-srv)#encapsulation default

   Linkmeup_R1(config)#interface gigabitEthernet 4
   Linkmeup_R1(config-if)#service instance 12 ethernet 
   Linkmeup_R1(config-if-srv)#description Blue-C
   Linkmeup_R1(config-if-srv)#encapsulation default
   ```
2. Связываем VFI и Service Instance.

```
    Linkmeup_R3(config)#bridge-domain 255
    Linkmeup_R1(config-bdomain)#member vfi Blue
    Linkmeup_R1(config-bdomain)#member gigabitEthernet 3 service-instance 10
    Linkmeup_R1(config-bdomain)#member gigabitEthernet 4 service-instance 12
```

1. Ну что же, дело осталось за малым — BGP.

   Сначала поднимаем базовое соседство с Linkmeup\_R3 и Linkmeup\_R4.

   ```
   Linkmeup_R1(config)#router bgp 64500 
   Linkmeup_R1(config-router)#neighbor 3.3.3.3 remote-as 64500
   Linkmeup_R1(config-router)#neighbor 3.3.3.3 update-source Loopback 0
   Linkmeup_R1(config-router)#neighbor 4.4.4.4 remote-as 64500
   Linkmeup_R1(config-router)#neighbor 4.4.4.4 update-source Loopback 0
   ```

```
Потом создаём Address-Family L2VPN VPLS и указываем соседей, которые будут участвовать в L2VPN. Заметьте, не в конкретном VFI Blue, а вообще.
```

Linkmeup\_R1(config-router)#address-family l2vpn vpls Linkmeup\_R1(config-router-af)#neighbor 3.3.3.3 activate Linkmeup\_R1(config-router-af)#neighbor 3.3.3.3 send-community extended Linkmeup\_R1(config-router-af)#neighbor 3.3.3.3 suppress-signaling-protocol ldp

Linkmeup\_R1(config-router-af)#neighbor 4.4.4.4 activate Linkmeup\_R1(config-router-af)#neighbor 4.4.4.4 send-community extended Linkmeup\_R1(config-router-af)#neighbor 4.4.4.4 suppress-signaling-protocol ldp

```
Здесь вы должны помнить, что обычно мы используем Route Reflector'ы — не нужно настраивать всех соседей вручную, иначе смысл Auto-Discovery теряется.  
То есть если всего PE-устройств в сети MPLS — 100, в данном VPLS-домене — 20, а L2VPN RR — 2, то на каждом PE нужно поднять соседство только с этими двумя RR.  
Ну вы же не маленькие, чтобы я вам это рассказывал?  

**send-community extended** — как и в L3VPN включаем передачу Extended Community (RT).  
**suppress-signaling-protocol ldp** — и запрещаем сигнализацию LDP.  

Вот что BGP знает о VPLS, ещё даже не имея соседей:  
![](https://habrastorage.org/files/7a4/041/bfb/7a4041bfbd4d4e7aa6db6411b79efc4d.PNG)  

Верхняя строка — это RD, выбранный автоматически: AS:VPN ID.  
Нижняя — это префикс, который будет передаваться соседям.  

Аналогичные манипуляции производим на Linkmeup\_R3 и Linkmeup\_R4.  

**Конфигурация всех PE**

* * *


**Linkmeup\_R1**
```

Linkmeup\_R1(config)#l2vpn vfi context Blue Linkmeup\_R1(config-vfi)#vpn id 63 Linkmeup\_R1(config-vfi)#autodiscovery bgp signaling bgp Linkmeup\_R1(config-vfi-autodiscovery)#ve id 101 Linkmeup\_R1(config)#mpls label range 1000 1999

Linkmeup\_R1(config)#bridge-domain 255 Linkmeup\_R1(config-bdomain)#member vfi Blue Linkmeup\_R1(config-bdomain)#member gigabitEthernet 3 service-instance 10 Linkmeup\_R1(config-bdomain)#member gigabitEthernet 4 service-instance 12

Linkmeup\_R1(config)#interface gigabitEthernet 3 Linkmeup\_R1(config-if)# service instance 10 ethernet Linkmeup\_R1(config-if-srv)#description Blue-A Linkmeup\_R1(config-if-srv)#encapsulation default

Linkmeup\_R1(config)#interface gigabitEthernet 4 Linkmeup\_R1(config-if)# service instance 12 ethernet Linkmeup\_R1(config-if-srv)#description Blue-C Linkmeup\_R1(config-if-srv)#encapsulation default

Linkmeup\_R1(config)#router bgp 64500 Linkmeup\_R1(config-router)#neighbor 3.3.3.3 remote-as 64500 Linkmeup\_R1(config-router)#neighbor 3.3.3.3 update-source Loopback 0 Linkmeup\_R1(config-router)#neighbor 4.4.4.4 remote-as 64500 Linkmeup\_R1(config-router)#neighbor 4.4.4.4 update-source Loopback 0

Linkmeup\_R1(config-router)#address-family l2vpn vpls Linkmeup\_R1(config-router-af)#neighbor 3.3.3.3 activate Linkmeup\_R1(config-router-af)#neighbor 3.3.3.3 send-community extended Linkmeup\_R1(config-router-af)#neighbor 3.3.3.3 suppress-signaling-protocol ldp Linkmeup\_R1(config-router-af)#neighbor 4.4.4.4 activate Linkmeup\_R1(config-router-af)#neighbor 4.4.4.4 send-community extended Linkmeup\_R1(config-router-af)#neighbor 4.4.4.4 suppress-signaling-protocol

```
* * *


**Linkmeup\_R3**
```

Linkmeup\_R3(config)#l2vpn vfi context Blue Linkmeup\_R3(config-vfi)#vpn id 63 Linkmeup\_R3(config-vfi)#autodiscovery bgp signaling bgp Linkmeup\_R3(config-vfi-autodiscovery)#ve id 103

Linkmeup\_R3(config)#mpls label range 3000 3999

Linkmeup\_R3(config)#bridge-domain 255 Linkmeup\_R3(config-bdomain)#member vfi Blue Linkmeup\_R3(config-bdomain)#member gigabitEthernet 3 service-instance 13

Linkmeup\_R3(config)#interface gigabitEthernet 3 Linkmeup\_R3(config-if)#service instance 13 ethernet Linkmeup\_R3(config-if-srv)#description Blue-D Linkmeup\_R3(config-if-srv)#encapsulation default

Linkmeup\_R3(config)#router bgp 64500 Linkmeup\_R3(config-router)#neighbor 1.1.1.1 remote-as 64500 Linkmeup\_R3(config-router)#neighbor 1.1.1.1 update-source Loopback 0 Linkmeup\_R3(config-router)#neighbor 4.4.4.4 remote-as 64500 Linkmeup\_R3(config-router)#neighbor 4.4.4.4 update-source Loopback 0

Linkmeup\_R3(config-router)#address-family l2vpn vpls Linkmeup\_R3(config-router-af)#neighbor 1.1.1.1 activate Linkmeup\_R3(config-router-af)#neighbor 1.1.1.1 send-community extended Linkmeup\_R3(config-router-af)#neighbor ppress-signaling-protocol ldp Linkmeup\_R3(config-router-af)#neighbor 4.4.4.4 activate Linkmeup\_R3(config-router-af)#neighbor 4.4.4.4 send-community extended Linkmeup\_R3(config-router-af)#neighbor 4.4.4.4 suppress-signaling-protocol ldp

```
* * *


**Linkmeup\_R4**
```

Linkmeup\_R4(config)#l2vpn vfi context Blue Linkmeup\_R4(config-vfi)#vpn id 63 Linkmeup\_R4(config-vfi)#autodiscovery bgp signaling bgp Linkmeup\_R4(config-vfi-autodiscovery)#ve id 104

Linkmeup\_R4(config)#mpls label range 4000 4999

Linkmeup\_R4(config)#bridge-domain 255 Linkmeup\_R4(config-bdomain)#member vfi Blue Linkmeup\_R4(config-bdomain)#member gigabitEthernet 3 service-instance 131

Linkmeup\_R4(config)#interface gigabitEthernet 3 Linkmeup\_R4(config-if)#service instance 11 ethernet Linkmeup\_R4(config-if-srv)#description Blue-B Linkmeup\_R4(config-if-srv)#encapsulation default

Linkmeup\_R4(config)#router bgp 64500 Linkmeup\_R4(config-router)#neighbor 1.1.1.1 remote-as 64500 Linkmeup\_R4(config-router)#neighbor 1.1.1.1 update-source Loopback 0 Linkmeup\_R4(config-router)#neighbor 3.3.3.3 remote-as 64500 Linkmeup\_R4(config-router)#neighbor 3.3.3.3 update-source Loopback 0

Linkmeup\_R4(config-router)#address-family l2vpn vpls Linkmeup\_R4(config-router-af)#neighbor 1.1.1.1 activate Linkmeup\_R4(config-router-af)#neighbor 1.1.1.1 send-community extended Linkmeup\_R4(config-router-af)#neighbor 1.1.1 suppress-signaling-protocol ldp Linkmeup\_R4(config-router-af)#neighbor 3.3.3.3 activate Linkmeup\_R4(config-router-af)#neighbor 3.3.3.3 send-community extended Linkmeup\_R4(config-router-af)#neighbor 3.3.3 suppress-signaling-protocol ldp

```
* * *


Для разных устройств я указал разные mpls label range, чтобы более наглядной была разница между локальными и удалённым метками.
```

> **На этом конфигурация MPLS Kompella Mode закончена.**\
> [Файл конфигурации VPLS Kompella Mode](https://docs.google.com/document/d/1-1OfZRlsMEFuka7bSV3JQpvsaMG6fxifMtXEjr55-Mw/pub).\
> Альтернативного метода, как в случае с Martini здесь нет.
