Настройка LDP

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

Переход в режим настройки и активация протокола LDP.

ecorouter(config)#router ldp

Включение LDP и функции работы с метками на интерфейсах.

ecorouter(config-if)#ldp enable ipv4   
ecorouter(config-if)#label-switching

После включения LDP на маршрутизаторе, по команде show ldp будет доступен просмотр текущих настроек LDP. Если вы не производили никаких изменений настроек в контекстном режиме router ldp, в выводе вы получите настройки по умолчанию.

Просмотр информации о LDP-соседстве.

ecorouter#sh mpls ldp neighbor

Далее по тексту следуют команды доступные в контекстном режиме router ldp.

Router ID — идентификатор LDP-маршрутизатора. Задаётся командой router-id <A.B.C.D> в виде IPv4 адреса. Идентификатор должен быть уникальным в пределах MPLS-домена. Если router ID не задан, в качестве идентификатора будет выбран адрес loopback-интерфейса с наибольшим значением. Если loopback-интерфейсы отсутствуют, будет выбран наибольший адрес из всех имеющихся интерфейсов. Хорошим правилом является использование в качестве Router ID интерфейса loopback.0.

Слияния LSP (Label Switched Path):

global-merge-capability {merge-capable | non-merge-capable}

Слияние путей переходов по меткам (LSP) подразумевает, что идущие через маршрутизатор и предназначенные для одного FEC (Forwarding equivalence class) LSP будут объединены в один маршрут, а все пакеты, принадлежащие этим LSP, будут отправлены далее под одной MPLS-меткой. Именно это поведение является поведением по умолчанию.

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

Команда global-merge-capability перекрывает настройку, установленную по умолчанию на всех интерфейсах заданной настройкой. merge-capable — это режим объединения LSP, non-merge-capable — это режим без объединения LSP. Режим non-merge-capable идентичен режиму по умолчанию.

Сохранение меток Label Preserve. При изменении у FEC адреса next-hop (адрес следующего маршрутизатора) маршрутизатор генерирует для этого FEC новую метку и сообщает её своим соседям. Для того чтобы маршрутизатор использовал одну и ту же метку для одного FEC при изменении адреса next-hop, необходимо включить опцию ldp label preserve.

Метка сохраняется 30 секунд. Поэтому для корректной работы данной опции смена next-hop должна быть произведена за меньшее время.

Установка транспортного адреса маршрутизатора:

transport-address ipv4 <ip-address>

Переключение режима распространения меток:

advertisement-mode {downstream-on-demand | downstream-unsolicited}

В режиме downstream-unsolicited маршрутизатор будет рассылать метки для каждого известного ему FEC всем своим соседям. В режиме downstream-on-demand маршрутизатор будет ожидать запроса метки от своих соседей.

Переключение режима назначения меток:

control-mode {independent | ordered}

В режиме independent маршрутизатор независимо и немедленно назначает и рассылает локальную метку для FEC, как только этот FEC появляется в его таблице маршрутизации. В режиме ordered маршрутизатор назначает и рассылает метки для FEC только если он является исходящим (egress) маршрутизатором или он уже получил метку для этого FEC от своего нижестоящего (next-hop) соседа .

Переключение режима удержания меток:

label-retention-mode {conservative | liberal}

В режиме conservative маршрутизатор удерживает метки только лучших маршрутов (т.е. если они получены с допустимого следующего перехода согласно маршрутизации), остальные метки при этом удаляются. В режиме liberal маршрутизатор удерживает все метки полученные от других LSR, в том числе метки не лучших маршрутов.

Включение явной нулевой метки (Explicit Null Label):

explicit-null

В данном режиме предпоследний перед выходным (Egress LSR) маршрутизатор установит метку “0” (ноль) и передаст пакет последнему по пути LSR маршрутизатору. По умолчанию установлен режим неявной нулевой метки (Implicit Null Label), в котором предпоследний маршрутизатор устанавливает метку “3” (три) и передаёт на последний маршрутизатор пакет без метки, реализуя тем самым механизм Penultimate Hop Popping.

Включение функции выявления петель LSP:

loop-detection 

Функция предотвращает зацикливание сообщений о запросах меток в присутствии маршрутизаторов LSR, не обеспечивающих слияние LSP. При включении loop-detection устанавливаются максимальные значения (255) для команд loop-detection-hop-count и loop-detection-path-vec-count.

Поддерживаются два метода обнаружения петель: обнаружения количества переходов и обнаружения вектора пути.

  • Количество переходов — в процессе построения LSP, в сообщениях LDP будет передаваться количество маршрутизаторов LSR, которые прошло данное сообщение. LSR, обнаруживший, что количество переходов достигло заданного в loop-detection-hop-count максимального значения, отреагирует так же, как если бы сообщение было зациклено.
  • Вектор пути — в процессе построения LSP в сообщениях LDP будет передаваться список идентификаторов маршрутизаторов LSR, которые прошло данное сообщение. Если маршрутизатор обнаружит свой идентификатор в списке, станет понятно, что сообщение прошло круг и зациклено. Если длина пути достигнет максимальной длины, указанной в loop-detection-path-vec-count, маршрутизатор отреагирует так же, как если бы сообщение было зациклено.

Включение функции повторного запроса меток:

request-retry

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

Команда request-retry-timeout <1-65535> работает в паре с request-retry и устанавливает интервал в секундах между повторными запросами метки.

Включение функции распространения сообщений об освобождении меток

propagate-release 

Функция подразумевает, что уведомление об освобождении (release) метки пересылается (propagate) дальше по цепочке LSP от upstream-роутеров к downstream-роутерам. Маршрутизатор получивший сообщение об освобождении метки от вышестоящего LSR, не просто освобождает метку, но и передаёт сообщение об освобождении метки далее нижестоящему LSR.

Функция бережного перезапуска плоскости управления LDP:

graceful-restart enable

Благодаря этой функции маршрутизатор может перезагрузить LDP соседство без разрыва идущего MPLS-трафика и отношений сопряжения.

Механизм бережного перезапуска работает в связке между двумя роутерами:

  • Restarter (Тот, кто перезагружается): Маршрутизатор, который выполняет перезагрузку.
  • Helper (Тот, кто помогает): Соседний маршрутизатор, который знает о перезагрузке и помогает сохранить трафик и восстановить сессию.

Чтобы маршрутизатор работал именно в режиме Helper, нужно дать команду graceful-restart helper-mode.

Для функций бережного перезапуска в режиме Helper существуют два таймера:

  • graceful-restart timers neighbor-liveness <5-300> — время в секундах, которое маршрутизатор будет ожидать перезапуска и восстановления подключения от своего соседа. Значение времени по умолчанию составляет 120 секунд.
  • graceful-restart timers max-recovery <15-600> — время в секундах, которое маршрутизатор будет ожидать полной повторной синхронизации. Значение времени по умолчанию составляет 120 секунд. За указанное время Restarter должен повторно запросить и получить все метки от Helper’а.

Команда graceful-restart disable отменит любую из двух команд: graceful-restart enable или graceful-restart helper-mode.

Для удаления таймеров из конфигурации нужно использовать команды no graceful-restart timers neighbor-liveness и no graceful-restart timers max-recovery соответственно.

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

no multicast-hellos

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

Установка интервала рассылки приветственных сообщений:

hello-interval <1-21845>

Команда задаёт частоту с которой маршрутизатор будет отправлять Hello сообщения своим соседям. Сообщение рассылается в виде UDP-дейтаграмм во все интерфейсы маршрутизатора где активирован LDP. Рассылка ведётся на мультикастовый адрес 224.0.0.2 и порт 646.

Заданное глобальное (в пределах маршрутизатора) значение hello-interval может быть переопределено на каждом интерфейсе командой ldp hello-interval <1-21845>.

Для достижения оптимальной производительности устанавливайте значение hello-interval не более чем в одну треть от значения времени удержания (hold-time).

Установка времени удержания до разрыва смежности:

hold-time <3-65535>

Время удержания определяет время, в течение которого LSR будет ожидать следующего приветственного сообщения, прежде чем сочтёт его неработоспособным и разорвёт с ним отношения смежности.

Пара LSR согласовывает время удержания, используемое для приветствий друг от друга. Каждый предлагает своё значение времени удержания, и LSR использует меньшее из двух значений.

Заданное глобальное (в пределах маршрутизатора) значение hold-time может быть переопределено на каждом интерфейсе командой ldp hold-time <3-65535>.

Для оптимальной производительности установите это значение не менее чем в три раза больше указанного интервала приветствий (hello-interval).

Targeted-peer в LDP — это механизм установления LDP-сессии с удалённым маршрутизатором, который не является непосредственным соседом на канальном уровне (т.е. между ними есть другие маршрутизаторы).

Для установки интервала отправки юникаст-hello-сообщений для всех целевых узлов необходимо использовать команду targeted-peer-hello-interval <1-21845> в режиме конфигурации router ldp.

Для установки времени удержания приветственных сообщений для всех целевых равноправных узлов необходимо использовать команду targeted-peer-hold-time <3-65535> в режиме конфигурации router ldp.

Установка аутентификации на соседские отношения:

neighbor {A.B.C.D | X:X::X:X} auth md5 password <0-7> PASS

Где: A.B.C.D — IPv4 адрес соседа; X:X::X:X — IPv6 адрес соседа; <0-7> — тип пароля; PASS — пароль. Идентичные тип пароля и пароль должны быть установлены на обоих соседних маршрутизаторах.

Аутентификация запрещает установление соседских отношений без пароля.

Переход в режим настройки и активация целевого равноправного узла:

targeted-peer {ipv4 | ipv6} <ADDRESS>

На маршрутизаторе LSR может быть настроено несколько целевых узлов.

В режиме настройки целевого узла доступны настройки hello-interval и hold-time, аналогичные по своему действию глобальным настройкам этих же параметров, но применённые к конкретному целевому узлу.

Применение команд настройки целевых узлов (targeted-peer) в различных сценариях будут разобраны в следующих подразделах этого раздела.

Установка интервала отправки сообщений подтверждения работоспособности:

keepalive-interval <10-21845> 

Значение по умолчанию равно 10 секундам. Keepalive сообщения служат подтверждением сохранности TCP сессии между соседними маршрутизаторами.

Нет необходимости проверять TCP-соединение также часто, как искать соседей в broadcast-сегменте, поэтому рекомендуется устанавливать интервал рассылки Keepalive в разы больше чем интервал рассылки Hello сообщений.

Данное глобальное (в пределах маршрутизатора) значение перекрывается значением заданным на интерфейсе командой ldp keepalive-interval <10-21845>.

Установка интервала ожидания сообщения подтверждающего работоспособность:

keepalive-timeout <30-65535>

Значение по умолчанию равно 30 секундам.

Маршрутизатор в течение указанного времени ожидает от соседнего маршрутизатора PDU или Keepalive сообщение. По истечении указанного времени, если не было получено ни одного LDP-пакета (ни Keepalive, ни Label Mapping, ни любого другого), TCP-соединение считается разорванным, и LDP-сессия прекращается.

Обычно значение keepalive-timeout должно втрое превосходить значение keepalive-interval.

Данное глобальное (в пределах маршрутизатора) значение перекрывается значением заданным на интерфейсе командой ldp keepalive-timeout <30-65535>.

Включение опции оптимизации LDP

ldp-optimization

Опция производит два действия:

  • Сбрасывает таймер ожидания сообщений Keepalive при получении приветственного сообщения.
  • Сбрасывает таймер удержания смежности при получении любого управляющего сообщения LDP. Такой режим работы может повысить стабильность и отказоустойчивость LDP-сессий в крупных и нестабильных сетях.

Advertise-labels. По умолчанию метки всех FEC объявляются всем LDP-соседям. С помощью команды контекстного режима router ldp advertise-labels можно гибко ограничивать рассылку меток LDP-соседям.

advertise-labels for any to none
advertise-labels for PREFIX_ACL to (PEER_ACL|any)

Первая команда означает: “Все метки для всех адресатов не отправлять никому.” Другими словами — никакие метки не будут отправлены.

В случае второй команды, из префиксного списка PREFIX_ACL будут взяты подсети, чьи метки будут рассылаться, а из префиксного списка PEER_ACL соседние LSR-маршрутизаторы которым будет осуществляться рассылка. Параметр any заставит маршрутизатор рассылать отобранные метки всем доступным LSR.

Включение функции импорта BGP-маршрутов:

import-bgp-routes

По умолчанию маршруты BGP не импортируются в LDP. Импорт BGP-маршрутов в LDP необходим для того, чтобы расширить механизм распределения меток за пределы IGP-домена и обеспечить MPLS-транспортировку трафика до next-hop’ов, о которых известно только из BGP.

Нестрогий режим отзыва меток:

ldp withdraw-release non-strict

Режим позволяет принимать запросы на отзыв (withdraw) и ответы об удалении меток (release) с такими дополнительными параметрами, как: VC_FEC_OPT_IF_MTU, VC_FEC_OPT_IF_VLAN, VC_FEC_OPT_IF_VCCV. В противном случае LDP сессия разрывается.