> 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/2.-martini-mode/1.-teoriya.md).

# Теория

Что произошло?

**1.** Сразу после этого устанавливаются соединения LDP и происходит обмен метками. Технически LDP достаточно привязки к bridge-domain — не обязательно, чтобы были AC-интерфейсы (это поведение зависит от производителя.).

Вот обмен между Linkmeup\_R1 и Linkmeup\_R3:\
![](https://habrastorage.org/files/f3e/e1a/b06/f3ee1ab060794e1097d65dc5ea491065.PNG)

FEC 63 — номер нашего VPN. Метка выделена 0x18 (или 24).\
![](https://habrastorage.org/files/4a0/4cc/841/4a04cc841805491096db2674289cece2.png)

То есть, когда Linkmeup\_R3 будет отправлять кадры в этом VFI AC-интерфейсу, подключенному к Linkmeup\_R1, он должен добавить VPN-метку 24. А транспортная при этом — 17.\
![](https://habrastorage.org/files/803/796/92f/80379692f9874af08ce45d644abbcf6d.png)

Заметьте, что разным соседям Linkmeup\_R1 выдаёт разные метки — это для того, чтобы можно было корректно изучить MAC-адреса потом.

**2.** Если запустить пинг с Blue-A, то в дампе (на интерфейсе Gi1 Linkmeup\_R1) можно увидеть сначала ARP-запрос:\
![](https://habrastorage.org/files/524/642/108/5246421085224d609f2a26add8787c4b.png)\
![](https://habrastorage.org/files/aab/fde/f5a/aabfdef5a18e4197a52399f1cbe3c063.PNG)

Поскольку он широковещательный, то следом за ним можно увидеть его точную копию с одной лишь разницей — метки VPN и транспортная:\
![](https://habrastorage.org/files/af2/fe4/3b9/af2fe43b916046b0ab29dc23b61b3e13.PNG)

Один кадр был отправлен на Linkmeup\_R3, другой — на Linkmeup\_R4.

**3.** В таблице MACов видим MAC-адрес узла Blue-A (AABB-CC00-0700) — он находится за портом **GE3.EFP10** (Ethernet Flow Point и Service instance **10**) — и MAC, соответствующий IP-адресу 192.168.0.2 (AABB-CC00-0300) — за интерфейсом Pseudoport **Blue.100401a**.\
![](https://habrastorage.org/files/271/f27/bb3/271f27bb34f74cc0b504514595a56794.png)

> К сожалению, установить зависимость между Pseudoport и pseudowire мне так и не удалось. Как инженеру определить, с какого PW изучается MAC-адрес?\
> Например **show l2vpn vfi** показывает очевидное соответствие, но эти имена никак не перекликаются.\
> ![](https://habrastorage.org/files/e7a/d20/440/e7ad204404664b10b2a9f4a75ac28b49.PNG)\
> \
> Если кому-то удастся проследить связь между Pseudoport и pseudowire, эта статья станет чуточку полнее.

Естественно, это всё строго локально. Как и обычные коммутаторы — VPLS не сигнализирует MAC'и другим PE, а занимается их изучением исключительно в рамках Data Plane.

Ещё раз шаги настройки:

1. Создать VFI, с одинаковым VPN ID на всех PE и настроить связность со всеми соседями.
2. Привязать AC-интерфейсы к Service Instance.
3. Связать VFI и Service Instance с помощью Bridge-domain.

Итак подытожим про Martini mode:

* Для сигнализации меток VPN используется протокол LDP (метод [DU](http://lookmeup.linkmeup.ru/#term485)).
* Метки используются рационально — без какого-либо запаса. Это очень важный момент, поскольку ресурс меток ограничен и легко может стать узким местом.
* Соседи на каждом узле настраиваются вручную. (Но к этому вопросу мы [ещё вернёмся](https://github.com/eucariot/SDSM/tree/1bba87092a55c57ce614dabb1915aa8f1b76f650/12.-mpls-l2vpn/2.-vpls/2.-martini-mode/12.-mpls-l2vpn.md#LDP+BGP) — всё совсем не так плохо).
* Масштабируемость оригинального режима Martini, строго говоря, не велика — это ограничение полносвязной топологии. Но и для этой проблемы уже есть решение.
