MPLS#

Описание#

Механизм MPLS представляет собой механизм перенаправления IP пакетов, отличающийся от стандартного. Вместо IP адресов для принятия решения о перенаправлении пакета на исходящий интерфейс маршрутизатор использует специальный заголовок длиной 32 бита (4 байта), который называется MPLS меткой. Данная метка размещается между заголовком Ethernet фрейма (L2) и заголовком IP пакета (L3). Возможно как статическое, так и динамическое размещение MPLS меток, однако в настоящем разделе рассматривается только динамическое размещение с использованием одного из подходящих для данных целей протоколов/механизмов: протокола LDP, протокола RSVP, механизма SR с использованием протоколов OSPF или IS-IS. Указанные протокола используются фактически для формирования одноадресного пути до пункта назначения в сети, который идеологически схож с туннелем и именуется как коммутируемый на основе меток путь - LSP. Для упрощения понимания работы LSP можно провести его сравнение с GRE туннелем. Они отличаются с точки зрения технической реализации, но схожи между собой в части управления движением пакета через туннель. Рекомендуется рассматривать механизм MPLS как механизм туннелирования, позволяющий доставлять по сети различные типы пакетов, значительно упрощающий проектирование потоков и схем движения трафика в сети за счет использования протокола RSVP или механизма SR, и в основном упрощающий организацию движения потоков данных как внутри сети, так и при межсетевом взаимодействии.

Для получения более подробной информации о том, как работает механизм MPLS, рекомендуется ознакомиться с источником.

Примечание

Поддержка механизма MPLS в операционной системе имеет ряд ограничений. Например, механизм MPLS нельзя использовать совместно с механизмами защиты коммуникаций L3 VPN, L2 VPN, а также с механизмом динамического построения VPN сетей. Протокол RSVP нельзя использовать как базовый протокол маршрутизации в стеке по отношению к транспортному протоколу (ограничение компонента FRR, интегрированного в систему). В настоящий момент устройство под управлением операционной системы может быть сконфигурировано как MPLS маршрутизатор на последней миле.

Протокол LDP#

Архитектура механизма MPLS не предусматривает использование одного конкретного протокола для определения LSP. Операционная система использует протокол LDP в реализации, заложенной в компонент FRR и соответствующей спецификации RFC 5036

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

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

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

Также необходимо помнить, что принципиальная реализация протокола LDP схожа с реализацией протокола BGP в том, что она использует TCP в качестве транспорта. Однако в отличие от протокола BGP реализация LDP не предусматривает возможность обновления оперативных данных. Это означает, что в случае изменения топологии соседствующих узлов необходимо вручную изменить конфигурацию протокола LDP, чтобы он функционировал корректно.

Настройка#

Пример настройки#

Пример настройки механизма MPLS:

set protocols ospf area 0 network '192.168.255.252/32'
set protocols ospf area 0 network '192.168.0.5/32'
set protocols ospf parameters router-id '192.168.255.252'
set protocols mpls interface 'eth1'
set protocols mpls ldp discovery transport-ipv4-address '192.168.255.252'
set protocols mpls ldp interface 'eth1'
set protocols mpls ldp interface 'lo'
set protocols mpls ldp router-id '192.168.255.252'
set interfaces ethernet eth1 address '192.168.0.5/31'
set interfaces loopback lo address '192.168.255.252/32'

Список команд#

Основные настройки#

set protocols mpls interface <interface>#

Активирует использование механизма MPLS для выбранного интерфейса.

set protocols mpls ldp interface <interface>#

Активирует использование протокола LDP на выбранном интерфейсе.

set protocols mpls ldp router-id <address>#

Задет IP адрес, используемый в качестве идентификатора маршрутизатора на устройстве.

set protocols mpls ldp discovery transport-ipv4-address <address>#

Задает IPv4 адрес в качестве транспортного, используемого протоколом LDP.

set protocols mpls ldp discovery transport-ipv6-address <address>#

Задает IPv6 адрес в качестве транспортного, используемого протоколом LDP.

set protocols mpls ldp neighbor <address> password <password>#

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

set protocols mpls ldp neighbor <address> session-holdtime <seconds>#

Задает время удержания сессии для соседствующих узлов в контексте протокола LDP. Необходимо указать адрес соседствующего узла и время удержания сессии в секундах. Чтобы изменения вступили в силу, перезагрузите соседствующий узел.

set protocols mpls ldp neighbor <address> ttl-security <disable | hop count>#

Активирует механизм контроля TTL для соседствующих узлов в контексте протокола LDP (включить механизм и задать количество пересылок между узлами, отключить механизм). По умолчанию количество пересылок - 255, что эквивалентно максимальному значению TTL.

set protocols mpls ldp discovery hello-ipv4-interval <seconds>#

Задает временной интервал для отправки hello сообщений для протокола IPv4.

set protocols mpls ldp discovery hello-ipv4-holdtime <seconds>#

Задает временной интервал отправки hello сообщений для протокола IPv4.

set protocols mpls ldp discovery hello-ipv6-interval <seconds>#

Задает временной интервал удержания hello сообщений для протокола IPv4.

set protocols mpls ldp discovery hello-ipv6-holdtime <seconds>#

Задает временной интервал удержания hello сообщений для протокола IPv4.

set protocols mpls ldp discovery session-ipv4-holdtime <seconds>#

Задает временной интервал удержания TCP сессий для протокола IPv4.

set protocols mpls ldp discovery session-ipv6-holdtime <seconds>#

Задает временной интервал удержания TCP сессий для протокола IPv6.

set protocols mpls ldp import ipv4 import-filter filter-access-list <access list number>#

Настраивает импорт классов эквивалентности - FEC от соседствующих узлов в контексте протокола LDP для протокола IPv4.

set protocols mpls ldp import ipv6 import-filter filter-access-list6 <access list number>#

Настраивает импорт классов эквивалентности - FEC от соседствующих узлов в контексте протокола LDP для протокола IPv6.

set protocols mpls ldp export ipv4 export-filter filter-access-list <access list number>#

Настраивает экспорт классов FEC для соседствующих узлов в контексте протокола LDP для протокола IPv4.

set protocols mpls ldp export ipv6 export-filter filter-access-list6 <access list number>#

Настраивает экспорт классов FEC для соседствующих узлов в контексте протокола LDP для протокола IPv6.

set protocols mpls ldp export ipv4 explicit-null#

Управляет анонсом классов FEC с меткой 0 для протокола IPv4. Метка 0 используется для явных нулевых операций в контексте протокола LDP.

set protocols mpls ldp export ipv6 explicit-null#

Управляет анонсом классов FEC с меткой 0 для протокола IPv6. Метка 0 используется для явных нулевых операций в контексте протокола LDP.

set protocols mpls ldp allocation ipv4 access-list <access list number>#

Задает фильтры, которые позволяют контролировать процесс размещения локальных классов FEC в контексте протокола LDP для протокола IPv4.

set protocols mpls ldp allocation ipv6 access-list6 <access list number>#

Задает фильтры, которые позволяют контролировать процесс размещения локальных классов FEC в контексте протокола LDP для протокола IPv6.

set protocols mpls ldp parameters cisco-interop-tlv#

Активирует режим использования формата данных, не соответствующего требованиям компании Cisco, который подразумевает отправку и интерпретацию структур TLV для коммуникаций по протоколу LDP поверх протокола IPv6. Описание данной особенности представлено в спецификации RFC 7552.

set protocols mpls ldp parameters ordered-control#

Активирует режим упорядоченного распространения меток. По умолчанию компонент FRR в составе операционной системы использует режим независимого распространения меток. Описание данной особенности представлено в спецификации RFC 5036.

set protocols mpls ldp parameters transport-prefer-ipv4#

Активирует режим использования протокола IPv4 в качестве предпочтительного для TCP коммуникаций между соседствующими маршрутизаторами в контексте протокола LDP. Рекомендуется использовать эту команду в случае, если на интерфейсе задан как IPv4 адрес, так и IPv6 адрес.

set protocols mpls ldp targeted-neighbor ipv4 enable#

Активирует режим принятия таргетированных LDP сессий данным маршрутизатором для протокола IPv4. В этом режиме маршрутизатор будет отвечать на любые попытки установления сессий, адресованных именно ему, за исключением локальных TCP соединений.

set protocols mpls ldp targeted-neighbor ipv6 enable#

Активирует режим принятия таргетированных LDP сессий данным маршрутизатором для протокола IPv6. В этом режиме маршрутизатор будет отвечать на любые попытки установления сессий, адресованных именно ему, за исключением локальных TCP соединений.

set protocols mpls ldp targeted-neighbor ipv4 address <address>#

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

set protocols mpls ldp targeted-neighbor ipv6 address <address>#

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

set protocols mpls ldp targeted-neighbor ipv4 hello-holdtime <seconds>#

Задает временной интервал удержания hello сообщений для протокола IPv4 определенным соседствующим маршрутизаторам, которые являются адресатами таргетированных LDP сессий.

set protocols mpls ldp targeted-neighbor ipv4 hello-interval <seconds>#

Задает временной интервал отправки hello сообщений для протокола IPv4 определенным соседствующим маршрутизаторам, которые являются адресатами таргетированных LDP сессий.

set protocols mpls ldp targeted-neighbor ipv6 hello-holdtime <seconds>#

Задает временной интервал удержания hello сообщений для протокола IPv6 определенным соседствующим маршрутизаторам, которые являются адресатами таргетированных LDP сессий.

set protocols mpls ldp targeted-neighbor ipv6 hello-interval <seconds>#

Задает временной интервал отправки hello сообщений для протокола IPv6 определенным соседствующим маршрутизаторам, которые являются адресатами таргетированных LDP сессий.

reset mpls ldp neighbor <IPv4 or IPv6 address>#

Сбрасывает LDP сессии, установленные с определенным соседствующим маршрутизатором в контексте протокола LDP по указанному адресу.

Мониторинг состояния#

show mpls ldp binding#

Выводит на экран информацию о метках из базы LIB.

show mpls ldp discovery#

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

show mpls ldp interface#

Выводит на экран информацию о текущем статусе протокола LDP на интерфейсах.

show mpls ldp neighbor#

Выводит на экран общую информацию о соседствующих маршрутизаторах в контексте протокола LDP.

show mpls ldp neighbor detail#

Выводит на экран детальную информацию о соседствующих маршрутизаторах в контексте протокола LDP.