MikroTik Для больших дядей часть 5

Подведём небольшой итог всего того, чего мы добились.

На данный момент у нас работает MPLS и прохождение пакета стало быстрее, из-за того, что трафик не стал заходить в процесс обычной маршрутизации, а подвергается процессу маршрутизации с помощью протокола MPLS на основании меток.

Освежим в памяти схему сети.

Васильев Кирилл MikroTik Vasilev Kirill MPLS Для больших дядей

Когда маршрутизатор добавляет метку к пакету, такая процедура называется push.Метка добавляется между заголовков IP и ethernet именно поэтому MPLS называют протоколов уровня L2.5 OSI.

Ниже анимация формирования пакета MPLS.

Васильев Кирилл MikroTik Vasilev Kirill MPLS Для больших дядей

Нечего интересного в данном процессе нет, просто добавили к пакету метку, не более чем.А вот дальнейший процесс будет показывать нагляднее почему MPLS выигрывает у обычного процесса IP маршрутизации.

Взгляните на процесс forward при работающим MPLS.Процесс IP маршрутизации не происходит как такового.Так как до него просто пакет не доходит.Из таблицы forward MPLS маршрутизатор сверил метку 5000, понял, что её надо поменять на 8888 сменил метку (SWAP) и отправил next-hop-у.

Васильев Кирилл MikroTik Vasilev Kirill MPLS Для больших дядей

Снятие метку называется процедура POP, процесс сложнее о нём мы поговорим немного позже.Так как снятие происходит, не на последнем маршрутизаторе, а на предпоследним, и само снятие не всегда приводит конкретно к снятию метки, а к изменению метки на специальные номера, те самые которые зарезервированные от 0 до 15.

Скорее всего появился вопрос “что нам дал MPLS”, ну в первую очередь конечно ускорение процесса маршрутизации и всё! Сам MPLS в чистом виде, не так очевиден и зачастую не используется в том виде как это сделано сейчас у нас.Но появляется возможность использовать такие технологии как PW он же VPLS, а также VPN4.

VPLS - это туннель, которые позволяет, пропустить через себя ethernet трафик, т.е, для того чтобы предоставить услугу L2 VPN, по сути аналогичную роль в RouterOS выполняет EoIP туннель.

VPN4 - это способ доставки IP пакета, через MPLS сеть, т.е предоставление клиенту услуги L3 VPN, но самое главное, что клиент может использовать любые сети, и они не будут влиять на ваши сети и сети других ваших клиентов.

Но мы же провайдер, поэтому ручной метод нам не подходит, мы бы хотели всё и вся оптимизировать.

BGP

Перед тем как начать, настраивать BGP нам надо осознать, что всё что мы до этого делали, необходимо было для работы в BGP между Loopback адресами.

Уточним задачу, у нас есть клиент которому необходимо предоставить услуги L2VPN, между двумя маршрутизаторами CE.

И так нам необходимо связать два маршрутизатора CE с помощью протокола BGP и указать чем будет заниматься BGP протокол.Напомню, что он может распространять не только маршрутную информацию, но и распространять дополнительную информацию, именно эту дополнительную информацию мы будем распространять.

Точно так же как и в OSPF у BGP маршрутизатора есть RouterID значение должно быть уникальным в пределах одной AS.

AS - автономная система, помимо того что это номер 16 бит, а сейчас и все 32 бита, это ещё и политическая сущность, которая определяет единую политику настройки маршрутизаторов в одной AS.

Для наших задач мы будем использовать отдельный instance и номер автономной системы 65000.Необходимо напомнить что диапазон номеров AS разделён на две части приватный и публичный, примерно так же как и BOGON адреса, только есть одно серьёзное отличие, эти диапазоны намертво вшиты в протокол и его реализацию в RouterOS, поэтому вы ОБЯЗАНЫ использовать именно из приватного диапазона номера AS от 64512 до 65535.Публичный диапазон только если у вас есть своя AS либо на стендах когда вы делаете “один к одному”.

И так сначала нам необходимо на CE маршрутизаторах создать BGP instance

/routing bgp instance add router-id=172.31.253.2 as=65000 name=bgp65000

Следующим шагом, нам необходимо связать два маршрутизатора, с помощью настроенных пиров BGP с двух сторон.

Давайте посмотрим на команду и распишем, какие параметры bgp Peer и для чего они нужны, не все, а только те который нам необходимы.

/routing bgp peer add address-families=l2vpn,l2vpn-cisco,vpnv4 instance=bgp65000 name=CE-2 remote-address=172.31.253.2 remote-as=65000 update-source=172.31.253.1

remote-address=172.31.243.2 - Указываем адрес противоположенного пира.

update-source=172.31.253.1 - Указываем адрес с которого будет строиться соединение, тут надо уточнить.Вы можете указать не адрес, а интерфейс, но если на интерфейс будет несколько IP адресов может произойти fuckup.

remote-as=65000 - Удалённая AS, если её номер совпадает с instance указанным в instance=bgp65000 то такое соединение считается как iBGP internal т.е.Внутренним.Если значения AS разные, то такое поведение называется eBGP т.е.Внешнее соединение.

address-families=l2vpn,l2vpn-cisco,vpnv4 - так называемые типы данных которые будут передаваться с помощью данного пира BGP.

После того вы сделаете на всех маршрутизаторах, проверить то, что мы идём по верной дороге и всё у нас получается.Узнать состояние Peer

[admin@CE-1] > /routing bgp peer print 
Flags: X - disabled, E - established 
 #   INS..REMOTE-ADDRESS                               REMOTE-AS
 0 E bgp..172.31.253.2                                 65000 

Состояние соединения должно быть Established, слева флаг E.

VPLS

Когда мы строим VPLS то у пакета появляется не одна метка, а две (стек меток), первая метка обеспечивает прохождение трафика по MPLS сети, вторая метка указывает непосредственно на PW туннель.

Для того чтобы запустить нашу “Трубу” или PW, нам необходимо подготовить инфраструктуру.Надеюсь вы помните, что CE маршрутизатор, это тот маршрутизатор к которому подключается непосредственно клиенты.

Нам необходимо подготовить Bridge в котором будут порты для оборудования клиента, также можно сделать и с vlan.Мы не будем добавлять интерфейсы нам достаточно для понимания самого принципа построения таких сетей.

И так необходимо создать Bridge c отключенным rstp\stp, мы не будем мешать нашему клиенту делать петли, если ему надо будет делать петли, пусть делает это его желание, наша задача предоставить ему L2 туннель между точками включения на маршрутизаторах CE.

/interface bridge add name=bridge-C1 protocol-mode=none

Название бриджа позаимствовано из вымышленного номера договора либо какого-то внутреннего номера.Пусть будет клиент под номером 1.

Далее нам необходимо объявить через BGP на CE маршрутизаторах VPLS туннели.

/interface vpls bgp-vpls add bridge=bridge-C1 bridge-horizon=10 export-route-targets=65000:1 import-route-targets=65000:1 name=C0001 pw-type=raw-ethernet route-distinguisher=172.31.253.1:0 site-id=1001

route-distinguisher=172.31.253.1:0 - Уникальное значение для каждого маршрутизатора, и в некоторых случаях может быть уникальным значением для разных ролей на одном маршрутизаторе.С помощью данного значения создаётся уникальность информации которая передаётся средствами BGP.Лучше всего укажите адрес loopback и просто порядковый номер, пока это неважно.

bridge=bridge-C1 - Когда VPLS поднимется, то интерфейс добавится автоматически в Bridge нашего клиента.

bridge-horizon=10 - Технология, которая позволит нам поднять fullmesh связь между все маршрутизаторами и защититься от возможной петли, если не указать, то она будет 100% при подключении следующего маршрутизатора.Смысл технологии очень простой если фрейм придёт в интерфейс Bridge, и у интерфейса с которого пришло фрейм установлено значение horizon.Фрейм не будет отправлен в интерфейсы у которых значение horizon аналогичное.Будьте пределы аккуратны, если на Bridge будет отключен rstp/stp и вы не установите значение horizon у вас будет L2 Loop.

pw-type=raw-ethernet - указываем какого типа PW.

site-id=1001 - уникальное значение, для всей AS и для каждого маршрутизатора.Тут надо быть внимательным, необходимо найти такой способ, чтобы сделать это значение с двух стороны уникальным и это значение не должно больше использоваться.Лучше все использовать такой подход, берём номер маршрутизатора умножаем на 1000 и прибавляем номер клиента.Получается, что значение site-id на первом маршрутизаторе будет для первого клиента 1001, а для второго 1002, на маршрутизаторе CE-3 3001 и соответственно 3002.Уникальность значения требуется из-за того, что значение site-id используется для расчёта номера метки MPLS, но просто давать порядковые номера не очень удобно, ввиду того, что придётся вести где-то документацию.Я несколько не призываю отказываться от документации, но всегда можно упростить себе жизнь прибегая к определённым шаблонам.

А наверное самое главное.

export-route-targets=65000:1 - хорошим кейсом (Вообще так и задумывалось, но некоторые игнорируют даней аспект) считается указывать сначала номер AS, а далее через разделитель двоеточие, номер клиента. Чтобы понять для чего этот параметр необходим, это уникальный идентификатор данного туннеля.Ключевое слово export т.е.Данный маршрутизатор будет “вещать” раскатывать всем своим пирам, о том что у него есть такой туннель VPLS.На стороне клиента данное значение должно быть указанно в поле import-route-targets.

import-route-targets=65000:1 - тип записи который мы ожидаем для сопоставления с данным VPLS туннелем.Часто мы должны указать значение которое указанно на противоположенной стороне в export-route-targets.

Задачи

Итого у нас есть два клиента C1 и C2

Поделиться

Обсуждение