MikroTik для Больших Дядей (Задание 4)

Четвёртая часть.

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

Схема сети MPLS MikroTik by vasilevkirill

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

У нас есть топология сети, которая равноправна по всем интерфейсам, кроме интерфейса между маршрутизаторами 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, вы должны использовать подход худшего сценария. Т.е "всё упало", всё загруженно на максимум.

MPLS

В первую очередь метки, диапазон возможных меток от 0 до 1048575, но притом надо учитывать, что первые 15 меток зарезервированы для специальных условий. Об этом позже.

Нам соответственно необходимо использовать от 16 до 1048575, кстати это два в двадцатой степени, а так как счёт идёт от нуля, то минус один.

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

Я предлагаю выделить каждому маршрутизатору по 5000 меток, такого количества будет достаточно для наших целей. Если оставить как есть значения по умолчанию, то может получиться таким образом, что маршрутизаторов будут использовать одинаковые метки, что становиться не удобно при траблшутинге.

Не будем как-то привязывать к типам маршрутизаторов, а просто по порядку распишем номера меток на нашей схеме, последовательно по 5000 меток.

Схема сети MPLS MikroTik by vasilevkirill

Для установки диапазона меток из которого будет выбирать маршрутизатор метки можно указать следующей командой.

/mpls set dynamic-label-range=5000-9999

LDP

Label Distribution Protocol - как я уже писал выше, простой как танк. Его задача рассказать всем какие у маршрутизатора есть сети и какие метки использовать для сетей, а также принять от других маршрутизаторов аналогичную информации и составить таблицу forward label.

По умолчанию LDP берёт таблицу маршрутизации и рассказывает всем соседям о всей своей таблице маршрутизации. Это не лучший кейс, лучше всего рассказать только о Loopback адресах.

Но для начало нам необходимо установить уникальный ID маршрутизатора.

Делается это командой

/mpls ldp set lsr-id=172.31.255.100

Естественно значение желательно чтобы было ожидаемым и мы для этих целей будем использовать адрес loopback интерфейса.

Далее необходимо установить адрес транспорта, т.е. С какого адреса будет происходить "вещание" поиск соседей и обмен с ними информацией.

Так же как и с lsr-id устанавливаем адрес loopback интерфейса.

/mpls ldp set transport-address=172.31.255.100

Следующим шагом нам необходимо, указать какие сети мы будем опубликовывать c помощью LDP протокола. Наша задача рассказать всем соседям о наших адресах, в том числе connected и loopback и вот тут нам поможет, то что мы правильно спланировали адресацию, и можем описать все адреса одной префиксом 172.31.0.0/16 немного большой, но возможно он нам в дальнейшем еще пригодится.

Делается данная настройка следующим образом:

/mpls ldp advertise-filter add prefix=172.31.0.0/16 advertise=yes
/mpls ldp advertise-filter add advertise=no

Первая командой мы указываем, что какой-то префикс из таблице маршрутизации мы разрешаем анонсировать advertise=yes, следующей командой указываем, что всё остальное запрещаем. Тем самым мы мы исключаем появления ошибки в конфигурации.

Следующим шагом настроить фильтр "на входе" какие префиксы мы можем ожидать.

/mpls ldp accept-filter add prefix=172.31.0.0/16 accept=yes
/mpls ldp accept-filter add accept=no

Мы будем принимать только маршруты которые попадают под префиксы наших служебных IP адресов маршрутизаторов.

LDP интерфейсы

Ну последний момент который необходимо сделать, это непосредственно запустить процесс LDP на интерфейсах, которыми связаны между собой маршрутизаторы.

/mpls ldp interface add interface=ether1
/mpls ldp interface add interface=ether2
/mpls ldp interface add interface=ether3

Обращаю ваше внимания ещё раз, указывать надо только те интерфейсы которыми между собой связанны маршрутизаторы.

Включение LDP

После всех манипуляций нам необходимо просто включить LDP и в нашей сети трафик между loopback интерфейсами будет маршрутизироваться на основании меток, т.е. У нас заработает MPLS.

/mpls ldp set enabled=yes

Проверка

Проверить можно простой трассировкой с CE-1 до CE-2 естественно проверяйте именно до адреса loopback.

[admin@CE-1] > /tool traceroute 172.31.253.2  
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST STD-DEV STATUS                                               
 1 172.31.252.45                      0%    5  14.1ms    28.2    12.6      83    27.4 <MPLS:L=15007,E=0>                                   
 2 172.31.252.41                      0%    5   8.9ms    19.5     7.9    51.6    16.3 <MPLS:L=15007,E=0>                                   
 3 172.31.252.2                       0%    5   6.2ms    13.3     6.2    17.1     3.9 <MPLS:L=20007,E=0>                                   
 4 172.31.252.6                       0%    5   6.8ms    12.1     6.8    16.8     3.6 <MPLS:L=25014,E=0>                                   
 5 172.31.252.30                      0%    5   7.8ms     9.9     7.8      12     1.6 <MPLS:L=20007,E=0>                                   
 6 172.31.253.2                       0%    5   6.2ms     9.6     6.2    15.3     3.1                                                      
-- [Q quit|D dump|C-z pause]

Обратите внимание, что хоп уже не loopback адрес, а транспортный адрес из 252 сети.

Так же можно посмотреть какие метке для каких маршрутов использует каждый маршрутизатор.

Local-bindings - Метки которые будет использовать маршрутизатор при необходимости отправить трафик.

/mpls local-bindings print
Flags: X - disabled, A - advertised, D - dynamic, L - local-route, G - gateway-route, e - egress 
 #      DST-ADDRESS        LABEL                                                                         PEERS                     
 0 ADG  172.31.255.1/32    15009                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 1 ADLe 172.31.254.1/32    impl-null                                                                      172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 2 ADG  172.31.254.2/32    15010                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 3 ADLe 172.31.252.40/30   impl-null                                                                    172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 4 ADG  172.31.255.6/32    15011                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 5 ADG  172.31.255.4/32    15012                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 6 ADG  172.31.253.2/32    15013                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 7 ADG  172.31.255.2/32    15014                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 8 ADG  172.31.255.3/32    15015                                                                          172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
 9 ADLe 172.31.252.44/30   impl-null                                                                    172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
10 ADG  172.31.255.5/32    15016                                                                         172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
11 ADG  172.31.253.1/32    15017                                                                           172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0            
12 ADLe 172.31.252.36/30   impl-null                                                                    172.31.255.4:0            
                                                                                                                       172.31.255.1:0            
                                                                                                                       172.31.253.1:0  

Forward

Когда необходимо будут переслать трафик по сети, будут использоваться следующие метки.

/mpls forwarding-table print
Flags: H - hw-offload, L - ldp, V - vpls, T - traffic-eng 
 #    IN-LABEL                           OUT-LABELS                       DESTINATION                    INTERFACE                       NEXTHOP        
 0    expl-null                         
 1  L 15009                                                               172.31.255.1/32                ether1                          172.31.252.41  
 2  L 15010                              15002                            172.31.254.2/32                ether1                          172.31.252.41  
 3  L 15011                              50002                            172.31.255.6/32                ether2                          172.31.252.37  
 4  L 15012                                                               172.31.255.4/32                ether2                          172.31.252.37  
 5  L 15013                              15007                            172.31.253.2/32                ether1                          172.31.252.41  
 6  L 15014                              15005                            172.31.255.2/32                ether1                          172.31.252.41  
 7  L 15015                              15003                            172.31.255.3/32                ether1                          172.31.252.41  
 8  L 15016                              50003                            172.31.255.5/32                ether2                          172.31.252.37  
 9  L 15017                                                               172.31.253.1/32                ether3                          172.31.252.46

Задачи

  • На всех маршрутизаторах, установить диапазон меток согласно схеме.
  • Установить LDP lsr-id на всех маршрутизаторах.
  • Установить на всех маршрутизаторах LDP transport-address.
  • Разрешите на всех маршрутизаторах в advertise-filter все сети для адресов 172.31.0.0/16.
  • Принимать на всех маршрутизаторах только маршруты из префикса 172.31.0.0/16.
  • На всех маршрутизаторах добавить в LDP интерфейсы между маршрутизаторами.
  • Включить LDP на всех маршрутизаторах.

Следующий пост с заданием MikroTik для Больших Дядей (Задание 5)

Рассказать друзьям

Чатик телеграм

@mikrotikme