Применение OSPF в MikroTik RouterOS (часть 3)

Механизмы преобразования маршрутной информации, полученной в служебных сообщениях OSPF, в записи таблицы маршрутизации для перенаправления пакетов.

Нет комментариевПросмотров: 1173
17апреля 2018
все статьи

Введение

В предыдущих частях серии статей были рассмотрены теоретические основы протокола OSPF, типы областей и типы LSA, распространяемых протоколом.

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

Заполнение таблицы маршрутизации

После синхронизации LSDB в рамках каждой области, устройства запускают процесс вычисления дерева кратчайших путей (SPF), результатом которого должен стать расчёт маршрутов к каждой из известных сетей с определённой метрикой.

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

Параметр distance

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

Рассмотрим пример, в котором демонстрируется использование нескольких источников маршрутов:

Схема для демонстрации использования параметра distance

Маршрутизаторы R1 и R2 подключены двумя каналами связи, на которых выделена адресация 172.16.100.0/24 и 172.16.50.0/24. Помимо этого, eth4-интерфейс маршрутизатора R2 ассоциирован с сетью 10.0.0.0/8. Интерфейсы eth2 на обоих маршрутизаторах помещены в backbone area, причём R2 инжектирует в магистральную область маршрут к 10.0.0.0/8, как внешний.

Конфигурация устройств:

R1:

/routing ospf instance
set [ find default=yes ] router-id=1.1.1.1
/ip address
add address=172.16.50.1/24 interface=ether1 network=172.16.50.0
add address=172.16.100.1/24 interface=ether2 network=172.16.100.0
/routing ospf network
add area=backbone network=172.16.100.0/24
/system identity
set name=R_1
 

R2:

/routing ospf instance
set [ find default=yes ] redistribute-connected=as-type-1 router-id=2.2.2.2
/ip address
add address=172.16.50.2/24 interface=ether1 network=172.16.50.0
add address=172.16.100.2/24 interface=ether2 network=172.16.100.0
add address=10.0.0.2/8 interface=ether4 network=10.0.0.0
/routing ospf network
add area=backbone network=172.16.100.0/24
/system identity
set name=R_2

Метрика OSPF

Проанализируем таблицу маршрутизации R1:

Таблица маршрутизации R1

Обратим внимание, что пакет в сеть 10.0.0.0/8 будет отправлен в сторону устройства с ip-адресом 172.16.100.2, т.е. на R2, c интерфейса eth2.

Добавим статический маршрут к сети 10.0.0.0/8 через шлюз 172.16.50.2, выполнив на R1 команду /ip route add dst-address=10.0.0.0/8 gateway=172.16.50.2, и проанализируем изменения в таблице маршрутизации:

Таблица маршрутизации R1 после добавления статического маршрута

По результатам вывода, после внесённых в конфигурацию изменений, все пакеты в сеть 10.0.0.0/8 будут отправлены с eth1-интерфейса. Это объясняется тем, что в базе данных маршрутов (RIB) R1 присутствует два маршрута к сети 10.0.0.0/8 от двух источников: один получен через OSPF (distance = 110), а другой из статических записей (distance = 1). Сравнив параметры distance этих маршрутов, R1 помещает в таблицу маршрутизации оба, однако активным (флаг A) делает только статический маршрут, т.к. его distance меньше.

Аналогичную ситуацию можно наблюдать для маршрута в сеть 172.16.50.0/24: один маршрут в эту сеть является непосредственно подключенным (distance = 0), а второй маршрут сообщает R2, т. к. eth1-интерфейс R2 ассоциирован с этой сетью (distance – 110).

Конфигурация устройств:

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

Значение стоимости указывается в качестве параметра каждого интерфейса, ассоциированного с OSPF и может принимать значения от 1 до 65535. Стоимость пути в сеть равна сумме стоимостей исходящих интерфейсов на пути распространения LSA с этой маршрутной информацией. Значение стоимости маршрута равная 16777215 считается недостижим для OSPF и данный маршрут не будет добавлен в таблицу маршрутизации.

В RFC 2328 отсутствует описание методики расчёта стоимости интерфейсов, поэтому при построении сетей с применением оборудования нескольких вендоров необходимо учитывать разницу в алгоритмах расчёта метрики OSPF. В RouterOS по умолчанию для всех интерфейсов используется стоимость 10, однако её можно задать вручную. Используя гибкую настройку стоимостей возможно реализовать схемы с асимметричной маршрутизацией и балансировкой трафика.

Рассмотрим схему с асимметричной маршрутизацией, рисунок 32. Пусть маршрутизаторы R1 и R2 соединены двумя каналами связи, на которые выделены сети 172.16.50.0/24 и 172.16.100.0/24. Кроме того, за каждым из маршрутизаторов есть сеть: 10.0.1.0/24 за R1 и 10.0.2.0/24 за R2. Все интерфейсы маршрутизаторов ассоциированы с backbone area.

Схема сети с асимметричной маршрутизацией

Конфигурация устройств:

R1:

/routing ospf instance
set [ find default=yes ] router-id=1.1.1.1
/ip address
add address=172.16.50.1/24 interface=ether1 network=172.16.50.0
add address=172.16.100.1/24 interface=ether2 network=172.16.100.0
add address=10.0.1.1/24 interface=ether4 network=10.0.1.0
/routing ospf network
add area=backbone network=172.16.50.0/24
add area=backbone network=172.16.100.0/24
add area=backbone network=10.0.1.0/24
/system identity
set name=R_1
 

R2:

/routing ospf instance
set [ find default=yes ] router-id=2.2.2.2
/ip address
add address=172.16.50.2/24 interface=ether1 network=172.16.50.0
add address=172.16.100.2/24 interface=ether2 network=172.16.100.0
add address=10.0.2.2/24 interface=ether4 network=10.0.2.0
/routing ospf network
add area=backbone network=172.16.50.0/24
add area=backbone network=172.16.100.0/24
add area=backbone network=10.0.2.0/24
/system identity
set name=R_2

Конфигурация устройств:

Проанализируем таблицу маршрутизации R1 и R2.

Таблица маршрутизации к сети 10.0.2.0/24 на R1:

Таблица маршрутизации к сети 10.0.2.0/24 на R1

Таблица маршрутизации к сети 10.0.1.0/24 на R2:

Таблица маршрутизации к сети 10.0.1.0/24 на R2

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

Для получения схемы с асимметричной маршрутизацией изменим стоимости интерфейсов, добавив в конфигурацию устройств следующие команды:

R1: /routIng ospf interface add interface=ether1 cost=30

R2:/ routing ospf interface add interface=ether2 cost=30

Таблица маршрутизации к сети 10.0.2.0/24 на R1:

Таблица маршрутизации к сети 10.0.2.0/24 на R1

Таблица маршрутизации к сети 10.0.1.0/24 на R2:

Таблица маршрутизации к сети 10.0.1.0/24 на R2

Пусть PC_1 запускает проверку доступности PC_2. Сформированный пакет попадает на R1 и, согласно таблице маршрутизации на иллюстрации 35, будет отправлен через интерфейс eth2. R2 получает пакет и передаёт его в сторону PC_2 через интерфейс eth4. PC_2 обрабатывает сообщение и отправляет его в сторону R2. R2, получив ответное icmp-сообщение, в соответствии с таблицей маршрутизации на рисунке 36, отправляет пакет через интерфейс eth1. Маршрутизатор R1 получает ответный пакет и передаёт его в сеть PC_1. Таким образом, пакеты посылаемые от R1 к R2 передаются по нижнему каналу связи, а пакеты от R2 к R1 – по верхнему, т.е асимметрично.

Типы маршрутов

При экспорте маршрутов из OSPF в RIB, помимо стоимости учитывается тип маршрута. В порядке убывания приоритета выделяют следующие типы маршрутов:

  • Intra-area (маршрутная информация о сетях в данной области, передаваемая в LSA type 1,2);
  • Inter-area (маршрутная информация о сетях в соседних областях, которые сообщает ABR в LSA type 3);
  • External type 1 (маршрутная информация о внешних, относительно OSPF, сетях);
  • External type 2 (аналогично external type 1, но с другим методом расчёта стоимости).

Оценка типа маршрута при вычислении SPT имеет больший вес, чем метрика, т. е. если в LSDB маршрутизатора присутствует intra-area и inter-area маршруты в одну сеть, то будет выбран более приоритетный тип маршрута, т.е. intra-area, даже если метрика inter-area маршрута будет ниже.

Рассмотрим следующую схему:

Схема сети для демонстрации типов маршрутов

В схеме представлено четыре маршрутизатора, находящихся в backbone area. Маршрутизаторы R2, R3 и R4 имеют интерфейс в сеть 10.0.0.0/8, однако R2 помещает интерфейс eth4 в backbone area со стоимостью 100, R4 – в area 10 со стоимостью 50, а R3 является ASBR и интерфейс eth4 является внешним со значением стоимости по умолчанию.

Конфигурация устройств:

R1:

/routing ospf instance
set [ find default=yes ] router-id=1.1.1.1
/ip address
add address=172.16.100.1/24 interface=ether2 network=172.16.100.0
add address=192.168.20.1/24 interface=ether4 network=192.168.20.0
add address=192.168.10.1/24 interface=ether3 network=192.168.10.0
/routing ospf network
add area=backbone network=172.16.100.0/24
add area=backbone network=192.168.10.0/24
add area=backbone network=192.168.20.0/24
/system identity
set name=R_1
 

R2:

/routing ospf instance
set [ find default=yes ] router-id=2.2.2.2
/ip address
add address=172.16.100.2/24 interface=ether1 network=172.16.100.0
add address=10.0.0.2/8 interface=ether4 network=10.0.0.0
/routing ospf interface
add cost=100 interface=ether4
/routing ospf network
add area=backbone network=172.16.100.0/24
add area=backbone network=10.0.0.0/8
/system identity
set name=R_2
 

R3:

/routing ospf instance
set [ find default=yes ] redistribute-connected=as-type-1 router-id=3.3.3.3
/ip address
add address=192.168.10.3/24 interface=ether1 network=192.168.10.0
add address=10.0.0.3/8 interface=ether4 network=10.0.0.0
/routing ospf network
add area=backbone network=192.168.10.0/24
/system identity
set name=R_3
 

R4:

/routing ospf area
add area-id=0.0.0.10 name=area_10
/routing ospf instance
set [ find default=yes ] router-id=4.4.4.4
/ip address
add address=192.168.20.4/24 interface=ether1 network=192.168.20.0
add address=10.0.0.4/8 interface=ether4 network=10.0.0.0
/routing ospf interface
add cost=50 interface=ether4
/routing ospf network
add area=backbone network=192.168.20.0/24
add area=area_10 network=10.0.0.0/8
/system identity
set name=R_4
 

Проанализируем LSDB на маршрутизаторе R1.

Фрагмент детального вывода LSDB на R1:

Фрагмент детального вывода LSDB на R1

На иллюстрации видно, что R1 получает три LSA с маршрутной информацией о сети 10.0.0.0/8: R2 формирует LSA type 1 с метрикой 100, R4 – LSA type 3 с метрикой 50 и R3 – LSA type 5 с метрикой 20.

Таблица маршрутизации и SPT на R1:

Таблица маршрутизации и SPT на R1

Если руководствоваться только стоимостью маршрутов, то в таблицу маршрутизации должен быть добавлен маршрут к сети 10.0.0.0/8 через R3, однако, как показано на рисунке 39, в таблицу маршрутизации добавлен маршрут через R2, поскольку intra-area маршруты являются более приоритетными.

Выключим интерфейс eth2 на R1 в сторону R2 и проанализируем таблицу маршрутизации (команда /interface ether set ether2 disabled=yes).

Таблица маршрутизации и SPT на R1 при недоступности R2:

Таблица маршрутизации и SPT на R1 при недоступности R2

В таблицу маршрутизации добавлен маршрут к 10.0.0.0/8 через R4, как inter-area, поскольку такой тип маршрутов имеет приоритет относительно E1.

Выключим интерфейс ether4 на маршрутизаторе R1, убедившись, что сеть 10.0.0.0/8 станет доступна через R3 (команда /interface ether set ether4 disabled=yes).

Таблица маршрутизации и SPT на R1 при недоступности R2 и R4:

Таблица маршрутизации и SPT на R1 при недоступности R2 и R4

Типы внешних маршрутов

В OSPF выделяют два типа внешних маршрутов: external type 1 (E1) и external type 2 (E2), отличающиеся между собой методом расчёта стоимости.

В E1-маршрутах стоимость складывается из стоимости внешнего маршрута на ASBR и стоимости пути до ASBR, а в E2 используется только стоимость маршрута на ASBR и не изменяется при передаче вдоль OSPF-домена. Если в LSDB присутствует два E2-маршрута к одной и той же сети, то лучшим будет признан маршрут с меньшей стоимостью пути до ASBR.

Тип external-маршрута и его стоимость указываются в конфигурации instance на ASBR, который инжектирует эти маршруты в OSPF.

Для сравнения E1- и E2- маршрутов, рассмотрим следующую схему:

Схема для демонстрации типов внешних маршрутов

В схеме участвуют три маршрутизатора, помещённые в backbone area, причём R2 и R3 имеют внешний канал к сети 10.0.0.0/8, которые они инжектируют в OSPF как E1 и E2 соответственно.

Конфигурация устройств:

R1:

/routing ospf instance
set [ find default=yes ] router-id=1.1.1.1
/ip address
add address=192.168.10.1/24 interface=ether2 network=192.168.10.0
add address=192.168.20.1/24 interface=ether3 network=192.168.20.0
/routing ospf network
add area=backbone network=192.168.10.0/24
add area=backbone network=192.168.20.0/24
/system identity
set name=R_1
 

R2:

/routing ospf instance
set [ find default=yes ] redistribute-connected=as-type-1 router-id=2.2.2.2
/ip address
add address=192.168.10.2/24 interface=ether1 network=192.168.10.0
add address=10.0.0.2/8 interface=ether2 network=10.0.0.0
/routing ospf network
add area=backbone network=192.168.10.0/24
/system identity
set name=R_2
 

R3:

/routing ospf instance
set [ find default=yes ] redistribute-connected=as-type-2 router-id=3.3.3.3
/ip address
add address=192.168.20.3/24 interface=ether1 network=192.168.20.0
add address=10.0.0.3/8 interface=ether2 network=10.0.0.0
/routing ospf network
add area=backbone network=192.168.20.0/24
/system identity
set name=R_3
 

Проанализируем LSDB и FIB на маршрутизаторе R1:

Фрагмент LSDB, FIB и SPT на R1

Маршрутизатор R1 получает два LSA type 5 о сети 10.0.0.0/8 от R2 и R3 с одинаковой метрикой, но разных типов. При этом в таблицу маршрутизации помещается маршрут через R2, поскольку маршруты типа E1 приоритетней E2.

Следует обратить внимание, что метрика в LSA равна 20, но в SPT к метрике прибавляется стоимость пути до ABR R2, после чего метрика равняется 30.

Отключим интерфейс в сторону R2, убедившись в том, что в таблицу маршрутизации добавится маршрут к сети 10.0.0.0/8 через R3, причём метрика этого маршрута будет равна изначальной (команда /interface ether set ether2 disabled=yes).

FIB и SPT на R1 при недоступности R2:

Импорт маршрутной информации из OSPF в FIB

Хотелось бы отдельно заострить внимание на экспорте маршрутной информации из OSPF в FIB и резюмировать данный раздел.

Экспорт маршрутной информации из OSPF происходит в несколько этапов:

  1. Синхронизация LSDB между маршрутизаторами домена:

    • /routing ospf lsa print
    • /routing ospf lsa print detail
  2. Расчёт дерева кратчайших путей. К каждой сети, представленной в LSA, должен быть найден кратчайший путь. При выборе из нескольких маршрутов к одной сети, маршрутизатор в первую очередь руководствуется типом маршрута и только во-вторую – стоимостью. Важно, что маршрутизатор сравнивает сети назначения по адресу сети назначения и маске, т.е. сети 192.168.0.0/24 и 192.168.0.0/30 являются разными:

    • /routing ospf route print
    • /routing ospf route print detail
  3. Экспорт маршрутов из SPT в FIB. На данном этапе маршрутизатор не учитывает тип маршрута и его стоимость, а всем маршрутам из SPT присваивает определённое значение distance (по умолчанию 110). При экспорте маршруты из SPT сравниваются с маршрутами из других источников и, в случае если сети назначения совпали, маршрутизатор, руководствуясь параметром distance, помещает в FIB маршрут с меньшим значением distance:

    • /ip route print
    • /ip route print detail

Заключение

В третьей части серии статей были рассмотрены основные принципы, заложенные в процесс импорта маршрутной информации из OSPF в таблицу маршрутизации устройства. Рассмотрены различные типы внутренних и внешних маршрутов и их приоритеты в процедуре импорта в RIB.

поделиться материалом:

Читайте также

комментарии — 0