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. Давайте порассуждаем.

И так наша схема

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

Нам необходимо найти место, которое было доступнее всего для “центрального” маршрутизатора iBGP RR.

Нам необходимо выбрать 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

Задание

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

Поделиться

Обсуждение