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.