L2/L3 VPN
Начнём с простого, с L2 Сircuit (Ethernet over MPLS). Построить туннель можно статикой (если нужно) либо при помощи Targeted LDP. RSVP для построения соседства не поддерживается, однако, трафик по маршруту построенному по RSVP пускать можно, в чём убедимся позже.
Также есть VPWS. Отличается тем, что сигнальный протокол тут BGP и метки распространяются при помощи него, а не tLDP, поэтому соседи (т.е. PE) обнаруживаются автоматически. Об этом лучше прочитать тут и тут. Но, вроде бы уже давно к Martini прикрутили auto-discovery.
1. L2 VPN (Martini Mode)
1.1. L2 Circuit (Ethernet over MPLS)

Можно отдавать услугу клиенту просто на всём физическом порту или по VLAN'у. Настроим VLAN-Based L2 Circuit. Выделим на нашей и клиентской стороне VLAN и Unit под номером 500. Физические порты можно оставить.
Настройка
На самом деле тут всё довольно просто. Основная настройка пришлать на выдачу VLAN'ов, а сам туннель был настроен под "edit protocols l2circuit", где мы просто указали нашего tLDP PE-соседа, интерфейс в сторону CE и ID сервиса.
Вообще, главное в LDP включить интерфейс в сторону CE и Lo0. LSP можеть быть построен по любому протоколу. Хоть по RSVP, хоть статически. Подробнее.
Проверка работы
Проверим LDP-сессии
Тут видно, что нашим соседом стал маршрутизатор RT.SPB.LNX, хотя физически это не так. Его видно и в сессиях и в соседях. А теперь включим дамп на ge-0/0/3 RT.SPB.STL и посмотрим как выглядит трафик, проходящий по сети:
Но вот в дампе на порту ge-0/0/3 RT.SPB.STL трафика мы не увидим. Хоть соседство и было установлено по LDP трафик будет ходит по ранее установленному маршруту RSVP, так как в inet.3 RSVP имеет меньшую административную дистанцию. Дамп на RT.SPB.MIR:

Посмотреть tLDP подключения на PE:
По факту, по tLDP идёт распространение сервисными метками, которые привязаны к номеру service-id, который мы указали при настройке. Соединение по tLDP происходит аналогично, только установление сессии начинается с Unicast-отсылки нашего Hello-сообщения:

Далее установление сессии происходит аналогично обычному LDP. Отличие кроется в Label Message:

Тут мы видим, что FEC - это virtual-circuit-id, который мы указывали ранее, а метка в десятичном виде равна 299776. Именно её будет накидывать M34 "по просьбе" LNX:
Аналогично выглядит и сообщение посылаемое от M34:

Метка в 10ой системе счисления равна 299936
1.2. VPLS

Добавим в схему сети ещё 3 устройства и сделаем между ними VPLS. Вот пример настройки клиентского устройства:
Настроим конечный порт под клиента и создадим под VPLS специальный Routing-Instance:
Подробнее о туннельных сервисах, туннельных интерфейсах, Pseudowire-status в TLV, MAC-flushing.
После настройки получаем следующий результат:
Проверка:
При этом саму таблицу в RIB не найти, она есть тольков в FIB:
Минусы Martini Mode очевидны. Главный минус - это отсутствие возможности автообнаружения PE. И чем больше точек в VPLS, тем больше соседей приходится конфигурировать вручную. Эту проблему решает Kompella Mode. Эта технология позволяет передавать сервисные метки при помощи MP-BGP (Multiprotocol BGP). Но, прежде чем приступить к разбору Kompella Mode стоить рассмотреть L3 VPN, так как по принципу работу есть схожесть в некоторых моментах.
2. L3 VPN
Прежде чем настраивать L3 VPN, нужно разобраться с различными Routing-Instances и, в особенности, с RD/RT. Если вкратце, то под L3 VPN используется VRF Routing Instance. RD - позволяет определить к какой VRF принадлежит маршрутная информация. Необходим, чтобы для MBGP всё не сливалось в кучу. RT - бывает export и import. По факту, Export RT - это extended community. Import RT - позволяет указать какие маршруты, помеченные соответствующим Community, мы хотим принимать. Import RT может состоять из нескольких значений.
Предварительно стоит донастроить iBGP. Настроим парочку RR. Пусть ими будут STL и OBV. Они будут резервом для одного кластера. Как настраиваются RR было показано в главе про BGP. iBGP в данном случае нужен, чтобы распространять информацию о приватных клиентских префиксах по нашей сети. Можно было бы настроить Full-Mesh связность между PE, но смысла в частичной настройке нет. При росте клиентов мы всё равно вернёмся к тому, что у нас везде будет настроен iBGP, только хаотично и неструктурированно. Этого стоит избегать.

Для L3 VPN можно использовать unit 100. На клиентской стороне пока просто настроим адресацию. Теперь приступим к настройке PE:
Однако, после этой настройки, маршрутная информация передаваться не будет. Для BGP необходимо также настроить address family. Можно настроить для всей iBGP-группы передачу как обычных префиксов IPv4, так и префиксов с RT (Если используется IPv6, то нужно включить и его. Также есть множество других Address Family, про них не стоит забывать, иначе передача маршрутной информации прекратится):
Далее настраиваем с клиентом OSPF (Включаем в OSPF интерфейсы в сторону клиента, а у клиента просто интерфейсы в сторону провайдера и lo0). Но, это ещё не всё. Так как мы получаем маршруты от различных PE по BGP, то нам необходим экспорт этих маршрутов в протокол OSPF:
Проверка связности:
А вот так выглядит BGP Update:

Зачем же нужно передавать Update с метками? Это нужно чтобы трафик ходил по ядру сети при помощи MPLS, не используя таблицу маршрутизации. Т.е. мы как бы сообщаем, что если мы хотим достичь префикса 172.16.1.1, то на пакет нам нужно навешать метки 299968 (top), чтобы трафик дошёл до нужного нам PE, и 16 (bottom), чтобы попал в нужную Routing-Instance для маршрутизации. Т.е. мы передаём не столько маршрутную информацию, сколько FEC соседнему PE. Ну и сам маршрут, где видно сервисную и транспортную метки:
Как видно, сама передача сервисных меток происходит по BGP. Это позволяет не указывать явно соседей, так как они находятся сами при помощи RT. Этот механизм был взят за основу Kompella Mode L2 VPN и VPLS.
3. VPLS (Kompella Mode)
Смысла настраивать VPWS Kompella Mode особо нет, так как нужно будет также создавать отдельную Routing-Instance. Изменится только указание instance-type с vpls на l2vpn и настройка будет чуть легче. Сразу приступим к VPLS.
Настроим адресацию на юнитах 250 интерфейсов ge-0/0/9 на Site1, Site2, Site3:
Router
Interface
Address
Site1
ge-0/0/9.250
10.250.0.1/24
Site2
ge-0/0/9.250
10.250.0.2/24
Site3
ge-0/0/9.250
10.250.0.2/24
А теперь настроим VPLS с сигнализацией BGP:
Тут всё аналогично. RD служит для понимания какой NLRI какой routing-instance принадлежит, а RT служит для передачи маршрутной информации другим PE в соответствующие Routing-Instance. Site-ID указывает ID точки подключения. На каждом PE он должен быть уникален для интерфейса. Kompella Mode позволяет подключать с одного PE несколько клиентских точек, чего не может сделать Martini Mode, как раз за счёт site-identifier. Т.е. если нужно сюда подключить ещё одну точку клиента, то просто указываем новый site и новый уникальный ID.
Теперь посмотрим VPLS Connections:
Так происходит потому что у BGP не настроена соответствующая Address Family. Просто добаляем к уже существующей конфикурации следующие строчки на каждом iBGP маршрутизаторе:
Повторная проверка после коммита:
Проверка пингом:
Вот так выглядит сообщение с сервисной меткой:

CE-ID - это тот самый site-identifier, который мы указывали при настройке.
4.VPLS (Martini Mode with PE Autodiscovery)
Отличется от Kompella Mode чуть менее длинной настройкой и тем, что сервисные метки также передаются по LDP, но PE находят друг друга самостоятельно по BGP. Указываем, что хотим использовать BGP не только для сигнализации, но и просто для обнаружения PE:
Интерфейс в сторону CE настраивается аналогично. Пример настройки PE:
Проверка пингом:
А теперь посмотрим на разницу между VPLS Kompella Mode и Martini Mode:
Первое, что бросается в глаза - это Encapsulation ETHERNRT в Martini и VPLS в Kompella а также, так или иначе, явно указанный neighbor в Description. Вот так выглядит сообщение о доступности PE в VPLS:

Т.е. в отличие от Kompella Mode, Тут просто указывается то, что PE доступен, а передачей сервисных меток всё также занимается LDP.
Last updated
Was this helpful?