MikroTik для Больших Дядей N5
MikroTik для Больших Дядей (Задание 5)
Освежим в памяти схему сети.
Подведём небольшой итог всего того, чего мы добились.
На данный момент у нас работает MPLS и прохождение пакета стало быстрее, из за того, что трафик не стал заходить в процесс обычной маршрутизации, а подвергается процессу маршрутизации с помощью протокола MPLS на основании меток.
Когда маршрутизатор добавляет метку к пакету, такая процедура называется push. Метка добавляется между заголовков IP и ethernet именно поэтому MPLS называют протоколов уровня L2.5 OSI.
Ниже анимация формирования пакета MPLS.
Нечего интересного в данном процессе нет, просто добавили к пакету метку, не более чем. А вот дальнейший процесс будет показывать нагляднее почему MPLS выигрывает у обычного процесса IP маршрутизации.
Взгляните на процес forward при работающим MPLS. Процесс IP маршрутизации не происходит как такового. Так как до него просто пакет не доходит. Из таблицы forward MPLS маршрутизатор сверил метку 5000, понял, что её надо поменять на 8888 сменил метку (SWAP) и отправил next-hop-у.
Снятие метку называется процедура POP, процесс сложнее о нём мы поговорим немного позже. Так как снятие происходит, не на последнем маршрутизаторе, а на предпоследним, и само сняти не всегда приводит конкретно к снятию метки, а к изменению метки на специальные номера, те самые которые зарезервированные от 0 до 15.
Скорее всего появился вопрос «что нам дал MPLS», ну в первую очередь конечно ускорение процесса маршрутизации и всё! Сам MPLS в чистом виде, не так очевиден и зачастую не используется в том виде как это сделано сейчас у нас. Но появляется возможность использовать такие технологии как PW он же VPLS, а также VPN4
Но мы же провайдер, поэтому ручной метод нам не подходит, мы бы хотели всё и вся оптимизировать.
Перед тем как начать, настраивать BGP нам надо осознать, что всё что мы до этого делали, необходимо было для работы в BGP между Loopback адресами.
Уточним задачу, у нас есть клиент под Котору необходимо предоставить услуги L2VPN, между двумя маршрутизаторами CE.
И так нам необходимо связать два маршрутизатора CE с помощь протокола BGP и указать чем будет заниматься BGP протокол. Напомню, что он может распространять не только маршрутную информацию но и распространять дополнительную информацию, именно эту дополнительную информацию мы будем распространять.
Точно также как и в OSPF у BGP маршрутизатора есть RouterID значение должно быть уникальным в пределах одной AS.
Для наших задач мы будем использовать отдельный instance и номер автономной системы 65000. Необходимо напомнить что диапазон номеров AS разделён на две части приватный и публичный, примерно также как и BOGON адреса, только есть одно серьёзное отличие, эти диапазоны намертво вшиты в протокол и его реализацию в RouterOS, поэтому вы ОБЯЗАНЫ использовать именно из приватного диапазона номера AS от 64512 до 65535. Публичный диапазон только если у вас есть своя AS либо на стендах когда вы делаете «один к одному».
И так сначала нам необходимо на CE маршрутизаторах создать BGP instance
Следующим шагом, нам необходимо связать два маршрутизатора, с помощью настроенных пиров BGP с двух сторон.
Давайте посмотрим на команду и распишем, какие параметры bgp Peer и для чего они нужны, не все, а только те который нам необходимы.
После того вы сделаете на всех маршрутизаторах, проверить то, что мы идём по верной дороге и всё у нас получается. Узнать состояние Peer
Состояние соединения должно быть Established, слево флаг E.
Когда мы строим VPLS то у пакета появляется не одна метка, а две (стек меток), первая метка обеспечивает прохождение трафика по MPLS сети, вторая метка указывает непосредственно на PW туннель.
Для того, чтобы запустить нашу «Трубу» или PW нам необходимо подготовить инфраструктуру. Надеюсь вы помните, что CE маршрутизатор, это тот маршрутизатор к которому подключается непосредственно клиенты.
Нам необходимо подготовить Bridge в порты которого будут присоединено оборудование клиента, также можно сделать и с vlan. Мы не будем добавлять интерфейсы нам достаточно для понимания самого принципа построения таких сетей.
И так необходимо создать Bridge c отключенным rstp\stp, мы не будем мешать нашему клиенту делать петли, если ему надо будет делает петли, пусть делает это его желание )), наша задача предоставить ему L2 туннель между точками включения на маршрутизаторах CE.
Название бриджа позаимствовано из вымышленного номера договора либо какого-то внутренного номера. Пусть будет клиент под номером 1.
Далее нам необходимо объявить через BGP на CE маршрутизаторах VPLS туннели.
А наверное самое главное.
Use mpls mikrotik что это
С одной стороны, желание несколько странное — организация «серьезного» MPLS/VPLS на дешевом железе типа Mikrotik. С другой стороны — за 70 баксов (1500-2000р) за младшую модель RB/750(GL) мы получаем PE/CE-устройство, умеющее (помимо прочего) L2VPN/L3VPN поверх MPLS-среды и способное прокачать через себя порядка 70 мегабит дуплекса (на больших пакетах).
Mikrotik RouterOS умеет как MPLS (L3VPN, Traffic Engeneering), так и L2VPN (l2circuit aka VPWS, VPLS), что покрывает практически все возможные задачи (учитывая производительность железа, разумеется).
Интересно? Прошу под кат!
Для начала, немного теории.
Ключевым понятием в MPLS является LSP (Label Switched Path) — путь прохождения пакета, который устанавливается на основе протоколов LDP, RSVP-TE, BGP или CR-LDP. В данной статье я не буду распространяться, по каким критериям устанавливается LSP, а из протоколов остановлюсь на LDP. Литературы по MPLS в сети достаточно, чтобы интересующийся читатель почерпнул для себя много нового, целью же данной статьи является демонстрация вполне конкретных возможностей RouterOS.
Роутер в MPLS-сети может выполнять одну из трех функций:
1. CE-роутер (Client-edge) — не является членом MPLS-сети, и вообще ничего про нее не знает, это просто клиентское устройство, которое имеет L2/L3 связность с роутером провайдера.
2. PE-роутер (Provider-edge) — пограничный MPLS маршрутизатор. Является шлюзом для клиента и пересылает его трафик в MPLS-сеть провайдера. Другое название — LER — label edge router.
3. P-роутер (provider router) — MPLS маршрутизатор, который прозрачно пропускает MPLS-траффик, не занимаясь анализом его содержимого. Другое название — LSR (label-switch router).
VPWS (l2circuit) — канал точка-точка (он же pseudo-wire).
VPLS — многоточечный канал, для клиента выглядит как виртуальный «тупой» свич, прозрачно пропускающий любые пакеты.
Теперь, когда определились с терминологией, рассмотрим конкретные примеры:
1. Mikrotik — Juniper — Mikrotik L2Circuit
Вариант первый: Mikrotik выступает в качестве PE-роутера, Juniper — в качестве P-роутера.
Схема сети 
Все картинки кликабельны
Конфигурация Miktorik в качестве PE-роутера
Поднимаем интерфейсы и ip-адреса:
Настраиваем OSPF, анонсируем сети, через которые видим своих соседей + loopback:
Настраиваем LDP, не забываем про mpls-mtu (для успешного прохождения тегированных пакетов и QinQ:
Наконец, поднимаем L2VPN и заворачиваем туда eth5, где будут жить наши клиенты:
Cisco-style определяет параметры id, по которому маршрутизаторы узнают друг друга. l2-mtu определяет максимальный размер кадра, который может пройти без фрагментации.
Конфигурация Juniper SRX в качестве P-роутера
Настраиваем интерфейсы, IP-адреса:
Затем поднимаем OSPF:
Наконец, настраиваем MPLS:
В данном случае SRX, как P-роутер, не устанавливает сам никаких MPLS-коннектов, а только лишь пропускает LDP-пакеты.
2. Juniper — Mikrotik — Mikrotik L2Circuit
Другой вариант — теперь Juniper SRX у нас выступает как PE-роутер, а Mikrotik — как P-роутер.
Схема сети
Из особенностей стоит отметить encapsulation vlan-ccc; который говорит нам, что этот порт заворачивается в кросс-коннект. mpls-mtu должен совпадать с таковым у другого PE-устройства.
Здесь мы строим l2circuit, указываем id и mpls-mtu.
Тут все абсолютно стандартно, vpls-интерфейсы создавать не нужно.
3. Juniper — Mikrotik VPLS
Третий вариант — настройка не L2circuit (он же — CrossConnect Circuit в реализации Juniper), а полноценного многоточечного VPLS.
Аналогично настройке для l2circuit, но есть пара нюансов:
1. Каналы в одном VPLS-домене должны иметь один vpls-id.
2. Связность должна быть full-mesh (каждый с каждым) для обеспечения наибольшей надежности. Впрочем, это условие не является обязательным.
3. Для избавления от возможности петли нужно использовать следующую опцию:
Конфигурация Juniper SRX в качестве PE-роутера
Если для кросс-коннекта мы указывали encapsulation vlan-ccc, то для VPLS нам нужно encapsulation ethernet-vpls и указать family vpls в настройках юнита.
VPLS-коннекты так же строятся, по возможности «каждый с каждым», хотя это не обязательно.
4. Проверка
PE Juniper
PE Mikrotik
Если канал не поднялся сразу, то помогает выключение-включение VPLS-интерфейса со стороны Mikrotik. В остальных случаях канал, что называется, «либо работает, либо нет».
MikroTik для Больших Дядей N4
MikroTik для Больших Дядей (Задание 4)
Освежим в памяти схему сети.
Подведём небольшой итог всего того, чего мы добились.
У нас есть топология сети, которая равноправна по всем интерфейсам, кроме интерфейса между маршрутизаторами P-2 и P-5. Данный интерфейс выступает в роли резервного, так как его пропускная способность заведомо меньше.
В данный момент все маршрутизаторы могу связаться с другими маршрутизаторами по их loopback адресам. И лучший маршрут до маршрутизаторов будет выбран с помощью протокола OSPF.
Нет повести печальнее на свете, чем повесть о BGP c MPLS-ом.
о MPLS
Настал тот час, когда мы уже должны каким то образом реализовать нашу сеть.
И конечно MPLS нам здесь поможет сам MPLS это всего лишь процесс маршрутизации пакетов на основании меток. Особое место занимает не процесс маршрутизации, а процесс распространения меток по маршрутизаторам. Все маршрутизаторы в сети должны знать какую метку надо ожидать с интерфейса и в какой интерфейс с какой меткой его необходимо перенаправить.
И для данного кейса в RouterOS есть два варианта, это протокол LDP и протокол Traffic-Engineering.
LDP протокол тупой как танк, его задача найти соседей обменяться с ним сетями и метками и создать таблицу forward. Особенность LDP заключается в том, что он полностью подчиняется маршрутизации. Как таблица маршрутизации решит куда отправлять трафик, туда LDP и будет отправлять трафик с метками. А так как у нас таблицей маршрутизацией заведует протокол OSPF, и часто его схождение требует приличного времени, полагаться на данный способ можно, но. мы пойдём другим путём.
Кто то из вас скажет «но ведь можно изменить Hello интервалы или использовать BFD», да можно, но при этом мы не сможем утилизировать резервный интерфейс. Данные настройки всего лишь могут способствовать уменьшению времени запуска процедуры калькуляции SPF и тем самым уменьшить простой, но не поможет утилизировать все интерфейсы.
А если посмотреть ещё глубже, каждый интерфейс между маршрутизаторами является бизнес активом, который стоит денег, обслуживание, интерфейсы ну и в конце концов Человеко-часы которые затрачены на настройку и подержанные такого стыка. Возможно вы арендуете некоторые интерфейсы. Если деньги потрачены, то нет смысла делать так, чтобы интерфейс простаивал, его необходимо загрузить, но обычной маршрутизацией этого сделать не получиться, так как пропускная способность резервного интерфейса 100Mbps. Если мы направим весь трафик в данный интерфейс то он будет заполнен на 100% и ещё куда-то надо будет деть 900Mbps.
Напоминание. Всегда когда рассчитываете нагрузку на сеть и failover, вы должны использовать подход худшего сценария. Т.е «всё упало», всё загруженно на максимум.
В первую очередь метки, диапазон возможных меток от 0 до 1048575, но притом надо учитывать, что первые 15 меток зарезервированы для специальных условий. Об этом позже.
Нам соответственно необходимо использовать от 16 до 1048575, кстати это два в двадцатой степени, а так как счёт идёт от нуля, то минус один.
Хорошим тоном считается выделить каждому маршрутизатору свой диапазон меток, чтобы вы понимали с какого маршрутизатора прилетела метка.
Я предлагаю выделить каждому маршрутизатору по 5000 меток, такого количества будет достаточно для наших целей. Если оставить как есть значения по умолчанию, то может получиться таким образом, что маршрутизаторов будут использовать одинаковые метки, что становиться не удобно при траблшутинге.
Не будем как-то привязывать к типам маршрутизаторов, а просто по порядку распишем номера меток на нашей схеме, последовательно по 5000 меток.
Для установки диапазона меток из которого будет выбирать маршрутизатор метки можно указать следующей командой.
По умолчанию LDP берёт таблицу маршрутизации и рассказывает всем соседям о всей своей таблице маршрутизации. Это не лучший кейс, лучше всего рассказать только о Loopback адресах.
Но для начало нам необходимо установить уникальный ID маршрутизатора.
Делается это командой
Естественно значение желательно чтобы было ожидаемым и мы для этих целей будем использовать адрес loopback интерфейса.
Далее необходимо установить адрес транспорта, т.е. С какого адреса будет происходить «вещание» поиск соседей и обмен с ними информацией.
Так же как и с lsr-id устанавливаем адрес loopback интерфейса.
Следующим шагом нам необходимо, указать какие сети мы будем опубликовывать c помощью LDP протокола. Наша задача рассказать всем соседям о наших адресах, в том числе connected и loopback и вот тут нам поможет, то что мы правильно спланировали адресацию, и можем описать все адреса одной префиксом 172.31.0.0/16 немного большой, но возможно он нам в дальнейшем еще пригодится.
Делается данная настройка следующим образом:
Следующим шагом настроить фильтр «на входе» какие префиксы мы можем ожидать.
Мы будем принимать только маршруты которые попадают под префиксы наших служебных IP адресов маршрутизаторов.
LDP интерфейсы
Ну последний момент который необходимо сделать, это непосредственно запустить процесс LDP на интерфейсах, которыми связаны между собой маршрутизаторы.
Обращаю ваше внимания ещё раз, указывать надо только те интерфейсы которыми между собой связанны маршрутизаторы.
Включение LDP
После всех манипуляций нам необходимо просто включить LDP и в нашей сети трафик между loopback интерфейсами будет маршрутизироваться на основании меток, т.е. У нас заработает MPLS.
Проверка
Проверить можно простой трассировкой с CE-1 до CE-2 естественно проверяйте именно до адреса loopback.
Обратите внимание, что хоп уже не loopback адрес, а транспортный адрес из 252 сети.
Так же можно посмотреть какие метке для каких маршрутов использует каждый маршрутизатор.
Когда необходимо будут переслать трафик по сети, будут использоваться следующие метки.
MPLS и VPLS на Mikrotik
С одной стороны, желание несколько странное — организация «серьезного» MPLS/VPLS на дешевом железе типа Mikrotik. С другой стороны — за 70 баксов (1500-2000р) за младшую модель RB/750(GL) мы получаем PE/CE-устройство, умеющее (помимо прочего) L2VPN/L3VPN поверх MPLS-среды и способное прокачать через себя порядка 70 мегабит дуплекса (на больших пакетах).
Mikrotik RouterOS умеет как MPLS (L3VPN, Traffic Engeneering), так и L2VPN (l2circuit aka VPWS, VPLS), что покрывает практически все возможные задачи (учитывая производительность железа, разумеется).
Интересно? Прошу под кат!
Для начала, немного теории.
Ключевым понятием в MPLS является LSP (Label Switched Path) — путь прохождения пакета, который устанавливается на основе протоколов LDP, RSVP-TE, BGP или CR-LDP. В данной статье я не буду распространяться, по каким критериям устанавливается LSP, а из протоколов остановлюсь на LDP. Литературы по MPLS в сети достаточно, чтобы интересующийся читатель почерпнул для себя много нового, целью же данной статьи является демонстрация вполне конкретных возможностей RouterOS.
Роутер в MPLS-сети может выполнять одну из трех функций:
1. CE-роутер (Client-edge) — не является членом MPLS-сети, и вообще ничего про нее не знает, это просто клиентское устройство, которое имеет L2/L3 связность с роутером провайдера.
2. PE-роутер (Provider-edge) — пограничный MPLS маршрутизатор. Является шлюзом для клиента и пересылает его трафик в MPLS-сеть провайдера. Другое название — LER — label edge router.
3. P-роутер (provider router) — MPLS маршрутизатор, который прозрачно пропускает MPLS-траффик, не занимаясь анализом его содержимого. Другое название — LSR (label-switch router).
VPWS (l2circuit) — канал точка-точка (он же pseudo-wire).
VPLS — многоточечный канал, для клиента выглядит как виртуальный «тупой» свич, прозрачно пропускающий любые пакеты.
Теперь, когда определились с терминологией, рассмотрим конкретные примеры:
1. Mikrotik — Juniper — Mikrotik L2Circuit
Вариант первый: Mikrotik выступает в качестве PE-роутера, Juniper — в качестве P-роутера.
Схема сети
Все картинки кликабельны
Конфигурация Miktorik в качестве PE-роутера
Поднимаем интерфейсы и ip-адреса:
Настраиваем OSPF, анонсируем сети, через которые видим своих соседей + loopback:
Настраиваем LDP, не забываем про mpls-mtu (для успешного прохождения тегированных пакетов и QinQ:
Наконец, поднимаем L2VPN и заворачиваем туда eth5, где будут жить наши клиенты:
Cisco-style определяет параметры id, по которому маршрутизаторы узнают друг друга. l2-mtu определяет максимальный размер кадра, который может пройти без фрагментации.
Конфигурация Juniper SRX в качестве P-роутера
Настраиваем интерфейсы, IP-адреса:
Затем поднимаем OSPF:
Наконец, настраиваем MPLS:
В данном случае SRX, как P-роутер, не устанавливает сам никаких MPLS-коннектов, а только лишь пропускает LDP-пакеты.
2. Juniper — Mikrotik — Mikrotik L2Circuit
Другой вариант — теперь Juniper SRX у нас выступает как PE-роутер, а Mikrotik — как P-роутер.
Схема сети
Конфигурация Juniper SRX в качестве PE-роутера
Из особенностей стоит отметить encapsulation vlan-ccc; который говорит нам, что этот порт заворачивается в кросс-коннект. mpls-mtu должен совпадать с таковым у другого PE-устройства.
Здесь мы строим l2circuit, указываем id и mpls-mtu.
Тут все абсолютно стандартно, vpls-интерфейсы создавать не нужно.
3. Juniper — Mikrotik VPLS
Третий вариант — настройка не L2circuit (он же — CrossConnect Circuit в реализации Juniper), а полноценного многоточечного VPLS.
Аналогично настройке для l2circuit, но есть пара нюансов:
1. Каналы в одном VPLS-домене должны иметь один vpls-id.
2. Связность должна быть full-mesh (каждый с каждым) для обеспечения наибольшей надежности. Впрочем, это условие не является обязательным.
3. Для избавления от возможности петли нужно использовать следующую опцию:
Конфигурация Juniper SRX в качестве PE-роутера
Если для кросс-коннекта мы указывали encapsulation vlan-ccc, то для VPLS нам нужно encapsulation ethernet-vpls и указать family vpls в настройках юнита.
VPLS-коннекты так же строятся, по возможности «каждый с каждым», хотя это не обязательно.
4. Проверка
PE Juniper
PE Mikrotik
Если канал не поднялся сразу, то помогает выключение-включение VPLS-интерфейса со стороны Mikrotik. В остальных случаях канал, что называется, «либо работает, либо нет».
Steinkäfer
воскресенье, 13 сентября 2015 г.
MPLS на MikroTik (VPLS)
Имеется стенд из 3-х микротиков и 2-х компьютеров. Компьютеры выполняют функцию клиентских устройств. Микротики 951G.
Схема:
PC1——PE1—P—RE2——PC2
Задача: пробросить vlan так чтобы PC1 и PC2 «думали» что они в одном бродкастном домене.
Между устройствами МикроТик должны быть подняты GRE-туннели.
Итак собираем схему, конфигурируем интерфейсы, Loopback-интерфейсы, GRE— туннели.
/ip address
add address=10.0.0.1/30 interface=ether1 network=10.0.0.0
/interface gre
add local-address=10.0.0.1 name=gre-tunnel1 remote-address=10.0.0.2
/ip address
add address=192.168.0.1/30 interface=gre-tunnel1 network=192.168.0.0
add address=192.168.0.201 interface=Loopback1 network=192.168.0.20
/ip address
add address=10.0.0.2/30 interface=ether1 network=10.0.0.0
add address=10.0.0.5/30 interface=ether2 network=10.0.0.4
/interface gre add local-address=10.0.0.2 name=gre-tunnel1 remote-address=10.0.0.1 add local-address=10.0.0.5 name=gre-tunnel2 remote-address=10.0.0.6
/ip address add address=192.168.0.2/30 interface=gre-tunnel1 network=192.168.0.0 add address=192.168.0.5/30 interface=gre-tunnel2 network=192.168.0.4 add address=192.168.0.202 interface=Loopback1 network=192.168.0.202
/ip address
add address=10.0.0.6/30 interface=ether2 network=10.0.0.4
/interface gre add local-address=10.0.0.6 name=gre-tunnel2 remote-address=10.0.0.5
/ip address add address=192.168.0.6/30 interface=gre-tunnel2 network=192.168.0.4 add address=192.168.0.203 interface=Loopback1 network=192.168.0.203
Снова начинаем с PE1
/routing ospf instance
set [ find default=yes ] router-id=192.168.0.201
/routing ospf interface
add interface=gre-tunnel1 network-type=point-to-point
add interface=Loopback1 network-type=broadcast
/routing ospf network add area=backbone network=192.168.0.0/30 add area=backbone network=192.168.0.201/32
/routing ospf instance
set [ find default=yes ] router-id=192.168.0.202
/routing ospf interface
add interface=gre-tunnel1 network-type=point-to-point
add interface=gre-tunnel2 network-type=point-to-point
add interface=Loopback1
/routing ospf network
add area=backbone network=192.168.0.0/30
add area=backbone network=192.168.0.4/30
add area=backbone network=192.168.0.202/32
/routing ospf instance
set [ find default=yes ] metric-bgp=0 metric-other-ospf=0 router-id=192.168.0.203
/routing ospf interface
add interface=gre-tunnel2 network-type=point-to-point
add interface=Loopback1 network-type=broadcast
/routing ospf network
add area=backbone network=192.168.0.4/30
add area=backbone network=192.168.0.203/32
MPLS & VPLS
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=192.168.0.201 transport-address=192.168.0.201
/mpls ldp interface
add interface=gre-tunnel1
Настраиваем VPLS
/interface vpls
add advertised-l2mtu=1526 disabled=no l2mtu=1526 mac-address=02:FB:63:92:68:03 mtu=1526 name=vpls5 remote-peer=192.168.0.203 vpls-id=1:1
/interface bridge port
add bridge=bridge5 interface=ether5
add bridge=bridge5 interface=vpls5
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=192.168.0.202 transport-address=192.168.0.202
/mpls ldp interface
add interface=gre-tunnel1
add interface=gre-tunnel2
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=192.168.0.203 transport-address=192.168.0.203
/mpls ldp interface
add interface=gre-tunnel2
/interface vpls
add advertised-l2mtu=1526 disabled=no l2mtu=1526 mac-address=02:6E:22:36:7E:5F mtu=1526 name=vpls5 remote-peer=192.168.0.201 vpls-id=1:1
/interface bridge
add name=bridge5
/interface bridge port
add bridge=bridge5 interface=vpls5
add bridge=bridge5 interface=ether5
На этом настройки закончены. Теперь к портам Ethernet5 PE1 PE2 подключаем клиентские компьютеры PC1 и PC2. Настраиваем на них IP-адреса из одного сетевого сегмента, без шлюзов по умолчанию. Запускаем Ping, все должно пинговаться.
При замере скорости утилитой iperf, скорость достигала 320 Мбит/с, при почти 100% загрузке процессоров всех устройств.






