MikroTik Для больших дядей часть 9
Для того, чтобы распространить l2vpn информацию, мы будем использовать BGP и отдельный instance.Но есть одна проблема, которую нам придётся решить, и я выберу не самый простой способ в настройке, но самый лучший для понимания.Проблема заключается в том, что когда мы строим VPLS мы указываем с какого адреса на какой построить его, и адреса эти у нас loopback.Если мы используем BGP, то адрес источника это адрес с которого строится peer, тоже loopback.
Проблема в том, что мы не можем сказать явно, туннелю VPLS1 использовать такой путь, а VPLS2 использовать другой путь или какие-то ограничения наложить на туннель, так как для TE это будут одинаковые, а точнее даже не для ТЕ, а для MPLS первая метка в стеке будет одна и также, а заглянуть во вторую метку и посмотреть на VPLS метку мы не можем, в RouterOS не предусмотрен такой функционал. Получаем, что два туннеля для двух разный клиентов между двумя одинаковыми маршрутизаторами для TE и MPLS одна сущность.Решается это несколькими способами, два способа сложные и требуют хорошего понимания стека меток, это либо fullmesh TE между всеми P маршрутизаторами, а второй способ ещё мазохищнее, просто напишу название, а вы сделаете сами вывод )) LDPoRSVP или LDPoverTE.И есть ещё один способ, который как раз мы будем реализовывать, это когда для каждого клиента поднимается свои BGP peer на маршрутизаторе со своим уникальным адресом Loopback.
Так как мы выбрали самый простой для понимания, но не самый удобный для настройки ввиду множества действий, нам необходимо подготовиться.
В нашей конфигурации, у нас получится, то, что на PE маршрутизаторах будет по 3 BGP пира, также пир будет на PPPoE сервере.
Напомню, что iBGP требует полносвязной топологии, т.е все пиры в одной AS должны быть связаны между собой, и зачастую это не выполнимое действие, ввиду того, что таких связей может быть сотни, а то и тысячи.Появился новые клиент или PE маршрутизатор, будь добр пропиши на всех других BGP пирах.Нас такой расклад не устраивает и для решения данной проблемы в принципе существует два метода, первый это конфедерация, позволяет разделить AS, на более мелкие куски AS, но внутри конфедерации всё ровно должен быть fullmesh между всем маршрутизаторами, да и конфедерация используется в большинстве случаев для других целей.Второй способ, это использовать BGP Router Reflector, он же просто RR.Особенностью iBGP заключается в том, что маршрутизатора не передаёт дальше другим пирам информацию, полученную по iBGP, так как подразумевается наличие полносвязной топологии.BGP RR меняет такое поведение, и нам достаточно просто создать один peer на RR для каждого клиента и на маршрутизаторах PE там где клиент присутствует.
Минус RR это единая точка отказа, есть возможно объединять RR маршрутизаторы в кластеры, хотя это не тот кластер о котором вы подумали, не придётся строить избыточные связи.Мы пойдём пока простым путём без RR кластера.Для начало нам необходимо глядя на схему найти маршрутизатор который мог быть стать RR.Давайте порассуждаем.
И так наша схема

Нам необходимо найти место, которое было доступнее всего для “центрального” маршрутизатора iBGP RR.
- Первый вариант - использовать R10, на нём и так будет BGP, плюс он должен быть самым производительным, но нам сильно производительный маршрутизатор для RR не нужен, он будет только пересылать информацию об услугах клиентов.Если интерфейс между маршрутизатором R10 и R5 упадёт, то клиенты не смогу получить доступ в интернет, а также потеряют услуги L2VPN или L4VPN.Вариант не подходит.
- Второй вариант - использовать один из маршрутизаторов PE, во первый непонятно какой именно выбрать, во вторых обычно PE маршрутизаторы находятся физически по краям сети и возможно, что данный сегмент может “отсохнуть”.Вариант не подходит.
- Третий вариант - поднять отдельную машину поднять VPLS туннели до всех маршрутизаторов P и объявить его RR, да, но сколько связей необходимо сделать, чтобы был отказоустойчивым.Вариант не подходит.
- Четвёртый вариант - использовать R5, он имеет с ядром три связи, в идеале сделать ещё по одной связи с R1 и R3, но пока не финансово не физически мы сделать этого не можем.Попробуем данный вариант.
Нам необходимо выбрать AS для внутреннего использования.Выберем 65000 из приватного диапазона.
Установить AS можно следующей командой на всех PE маршрутизаторах, а также R5 и R9.Естественно указать router-id такой же, как loopback интерфейса.
/routing bgp instance add router-id=172.31.255.5 as=65000 name=bgp65000
Теперь нам необходимо настроить peer на R9 и до R5.Когда мы будем говорить, что нам необходимо настроить peer, мы сразу будем иметь в виду, что peer будет строиться до R5, естественно на адрес loopback.
/routing bgp peer
add address-families=l2vpn instance=bgp65000 name=R5 remote-address=172.31.255.5 remote-as=65000 update-source=172.31.255.9
Ну и конечно же нам необходимо создать противоположенный BGP peer до R9 на самом R5.
/routing bgp peer
add address-families=l2vpn instance=bgp65000 name=R9 remote-address=172.31.255.9 remote-as=65000 route-reflect=yes update-source=172.31.255.5
Обратите внимание, что мы установили значение route-reflect другими словами роль RR. Возможно у вас появился вопрос, а чем нам на R9 peer? Дело в том, что мы предоставляем услугу pppoe, а для того, чтобы pppoe поднялось, необходим один broadcst домен между клиентом и серверов, эту роль будет выполнять VPLS.
Подключение клиентов
У нас почти всё готово для того, что бы мы могли предоставить клиентом услугу интернет.
Давайте рассмотрим на примере CE-1 первого клиента, далее всем по аналогии надо будет сделать также с другими.Естественно мы не трогаем клиентское оборудование, на нём всё должно заработать автоматически.
Первым, делом нам необходимо для уникального клиента выбрать уникальный адрес loopback, я предлагаю использовать отдельный loopback, для того чтобы router-id в mpls-te не поменял свой номер, это не критично, но и не хочется чего-то не предвиденного.
И так создадим отдельный loopback для уникальности каждого клиента, делается только одни раз, на всех PE маршрутизаторах, напоминаю у нас всего два маршрутизатора PE.
/interface bridge add name=Br-loClient
Далее нам необходимо выбрать для каждого клиента уникальный адрес loopback, пока у нас мало клиентов поэтому поступим следующим образом и используем 172.31.253.0/24 префикс и каждый порядковый номер клиента это последний октет в адресе.
Для первого клиента, будем использовать адрес loopback 172.31.253.1/32
/ip address add interface=Br-loClient address=172.31.253.1
Всех других клиентов, loopback адреса вы устанавливаете на Br-loClient интерфейс.
Следующим шагом нам необходимо рассказать в OSPF, что у нас есть такой адрес loopback, делаем так, для простоты.
/routing ospf network add area=backbone network=172.31.253.1/32
После данной настройке на всех маршрутизаторах, должен прилететь маршрут до loopback адреса.
Также нам необходимо для первого клиента создать Bridge, назовём его Bridge-1 и добавить в него интерфейс, который смотрит в сторону клиента, для первого клиента это будет ether3 (смотри схему), отключите протокол rstp/stp.
/interface bridge add name=Bridge-1 protocol-mode=none
/interface bridge port add bridge=Bridge-1 interface=ether3
Ну и предпоследняя часть, это создать peer данного клиента.
/routing bgp peer> add name=c1 remote-as=65000 instance=bgp65000 remote-address=172.31.255.5 update-source=172.31.252.1 address-families=l2vpn,vpnv4
Обратите внимание какой source адрес мы используем для данного пира. Естественно нам также необходимо настроить пир и на R5.
/routing bgp peer add address-families=l2vpn,vpnv4 instance=bgp65000 name=c1 remote-address=172.31.253.1 remote-as=65000 route-reflect=yes update-source=172.31.255.5
После данной настройки peer должен быть в состоянии established.
Теперь нам необходимо создать VPLS туннель до PPPoE сервера.Чтобы клиент мог подключиться и получить услугу “интернет”
На R8
/interface vpls bgp-vpls
add bridge=Bridge-1 bridge-horizon=10 export-route-targets=65000:1 import-route-targets=65000:1 name=c1 pw-type=tagged-ethernet route-distinguisher=172.31.255.8:0 site-id=8001
На R9
/interface vpls bgp-vpls
add bridge=Br-PPPoE bridge-horizon=10 export-route-targets=65000:1 import-route-targets=65000:1 name=c1 pw-type=tagged-ethernet route-distinguisher=172.31.255.9:0
Задание
- Создайте BGP instance на всех маршрутизаторах провайдера AS 65000.
- Создать peer на R9 до R5.
- Создать peer на R5 до R9.
- Создайте на PE маршрутизаторах пустой bridge c именем
Br-loClient
. - Укажите для всех клиентов уникальные loopback адреса на интерфейсе
Br-loClient
. - Опубликуйте loopback адреса в OSPF.
S:172.31.252.49/32,S:172.31.252.30/32,S:172.31.252.29/32,S:172.31.252.6/32,S:172.31.252.5/32,S:172.31.252.2/32,S:172.31.252.1/32,S:172.31.252.41/32,S:172.31.252.42/32,S:172.31.252.45/32,S:172.31.252.46/32
Поделиться
Обсуждение
Лицензия
Текст данной статьи распространяется под общедоступной лицензией CC BY-NC-ND 4.0, ознакомиться с тектом лицензии вы можете на данной странице.