Pull to refresh

OSPF LSA5: Forward Address или оптимальный роутинг в обход ASBR

Reading time 4 min
Views 12K
В учебных материалах к CCNP Route утверждается, что если существует несколько внешних маршрутов OSPF одного типа, будет выбран маршрут с лучшей метрикой, в случае же совпадения метрик, выбирается маршрут, объявленный ближайшим ASBR. При этом складывается впечатление, что трафик во внешние сети всегда должен проходить через ASBR. На практике данное описание является неполным и опускается один аспект, который может привести к субоптимальному роутингу.
Итак, имеем простую сетевую топологию из трёх маршрутизаторов.

image

R1 — маршрутизатор OSPF, R3 — маршрутизатор EIGRP и R2 — маршрутизатор ASBR, который занимается редистрибуцией маршрута EIGRP 10.3.3.0/24 в домен OSPF, т.е. на данном маршрутизаторе введена команда redistribute eigrp 1 subnets. OSPF работает только на прямом линке между R1 и R2 и выключен на интерфейсах маршрутизаторов R2 и R1, сопряженных с коммутатором SW1. EIGRP запущен на интерфейсах R2 и R3, подключённых к SW1. В результате данной конфигурации маршрут из R1 в подсеть 10.3.3.0/24 будет пролегать через 192.168.55.2, т.е. через ASBR-маршрутизатор R2:

image

Очевидно, что в результате мы получаем ситуацию с субоптимальным роутингом, т.к. более эффективный маршрут между роутером R1 и R3 через SW1 остаётся незадействован.
Как известно, внешние маршруты в протоколе OSPF описываются анонсами LSA5, структура LSA5 предусматривает поле Forward Address, для рассматриваемого маршрута данное поле в LSA5 заполнено нулями:

image

Эмпирическим путём было выяснено, что если данное поле имеет нулевое значение, как в описанном случае, то трафик всегда, собственно как и положено, пересылается на маршрутизатор ASBR, адрес которого указан в поле Advertising Router соответствующего LSA5. Именно эта ситуация описывается в большинстве материалов к CCNP:Route. Если же Forward Address имеет ненулевое значение, то трафик будет перенаправляться по указанному в данном поле адресу в обход ASBR. Используя данное поле для имеющейся топологии можно добиться более оптимального роутинга, направляя трафик напрямую между R1->R3 в обход ASBR R2. Forward Address будет автоматически заполняться, если выполнить условие — подсеть 192.168.0.0/24, связанная с SW2, должна быть объявлена в домене OSPF. Для этого необходимо включить OSPF на соответствующих интерфейсах R1 и R2, скоммутированных на SW1. В результате выполнения данных требований, меняется поле Forward Address в соответствующем LSA5:

image

После чего изменяется и запись в таблице маршрутизации R1:

image

В итоге используется более оптимальный маршрут от R1 напрямую на роутер R3 в обход ASBR-маршрутизатора R2. Что интересно, трафик передаётся напрямую роутеру, принадлежащему другому протоколу маршрутизации минуя ASBR.

Теперь рассмотрим, как производится маршрутизация, когда в сети существует два ASBR, для этого в рассматриваемую топологию добавим ASBR-роутер R4:

image

Для маршрута 10.3.3.0/24 каждый ASBR генерирует отдельный LSA5. В случае, когда LSA5 имеют один тип с разной метрикой — выигрывает LSA5 с меньшей метрикой и трафик направляется либо либо на ASBR сгенерировавший победивший анонс, либо на FA, в случае, если в победившем анонсе данное поле устанолвлено. Т.е. если метрика LSA5 от R4 лучше метрики R2, трафик направляется на ASBR-маршрутизатор R4. В обратной ситуации, если лучше LSA5 от R2, трафик пересылается минуя R2 напрямую на R3, т.к. поле FA в победившем анонсе установлено.

В более сложной ситуации, когда метрики анонсов одинаковы, выбор лучшего маршрута не столь очевиден. Если FA имеют нулевое значение, в качестве маршрута на текущем роутере выбирается ближайший ASBR. В рассмтривоемой топологии ASBR-маршрутизаторы имеют следующие стоимости:

image

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

image

Т.е. трафик по-прежнему отправляется на R3 минуя все ASBR-маршрутизаторы. Дело в том, что стоимости до ASBR сравниваются только в случае, если FA имеют нулевое значение. Если FA установлен в каком-либо анонсе, при сравнении из данного анонса используется именно стоимость до сети FA, стоимость до ASBR игнорируется. В рассматриваемой топологии сравнивается стоимость сети FA из анонса R2, со стоимостью до ASBR-маршрутизатора R4, и т.к. сеть FA имеет метрику 1, путь R1->R3 побеждает, не смотря на то, что расстояние до R4 лучше, чем до R2. Если стоимость FA и ASBR для разных LSA5 равны, будет выполняться балансировка нагрузки.

В отличие от стандартной зоны, где при обычных условиях FA заполняется нулями, роутер ASBR, находящийся в NSSA-зоне, генерируя LSA7, всегда заполняет поле FA адресом соответствующего интерфейса. Во время трансляции на ABR-маршрутизаторе поле FA не изменяетcя и сохраняется в LSA5, которое указывает на ASBR в NSSA-зоне. В итоге, трафик пойдёт не через ABR, который выполнил трансляцию LSA7->LSA5, а по кратчайшему маршруту до FA, т.е. трафик в NSSA зону до ASBR может гнаться через любой ABR. Изменить это поведение можно командой

area 1 nssa translate type7 suppress-fa

которая принудительно обнуляет FA при трансляции, заставляя трафик ASBR NSSA проходить только и только через единственный ABR-транслятор.

В NSSA-зоне можно направить трафик в обход ASBR на роутер из другого домена маршрутизации, как это делается в стандартных зонах в описанных выше ситуациях, для этого необходимо выполнить ряд условий, в частности, объявить общую подсеть в домен OSPF.
Строго говоря, для установки в поле FA адреса роутера из другого домена маршрутизации, не достаточно объявления общей сети в домен OSPF, должны быть выполнены следующие условия:

— OSPF должен быть включён на интерфейсе ASBR, подключённому к роутеру из другого домена маршрутизации.
— Интерфейс ASBR роутера, подключённый к роутеру из другого домена маршрутизации, не должен быть пассивным
— Интерфейс ASBR роутера, подключённый к роутеру из другого домена маршрутизации, не должен быть point-to-point
— Интерфейс ASBR роутера, подключённый к роутеру из другого домена маршрутизации, не должен быть point-to-multipoint
Tags:
Hubs:
+8
Comments 1
Comments Comments 1

Articles