Logo

EcoRouter

EcoNAT

EcoQOE

EcoBypass

English

  • Release Notes
  • Multiprotocol Label Switching EcoRouter Documentation / Multiprotocol Label Switching

    MPLS (multiprotocol label switching — многопротокольная коммутация по меткам) — механизм, осуществляющий передачу данных от одного узла сети к другому с помощью меток.

    Каждому пакету, проходящему через MPLS-сеть, независимо от типа этого пакета, назначается определенная метка, на основе которой принимается решение о маршрутизации. Содержимое пакетов при этом не изучается.

    Маршрутизаторы в сети MPLS разделяются по своему функционалу на граничные (Label Edge Router, LER) и промежуточные (Label Switch Router, LSR) маршрутизаторы, на которых происходит смена меток.

    В таблице ниже представлены основные команды, необходимые для настройки MPLS на EcoRouter.

    КомандаОписание
    mpls ac-group <имя> <номер>
    Создание новой группы каналов доступа
    mpls bandwidth-class

    mpls disable-all-interfaces
    Отключение MPLS на всех интерфейсах
    mpls egress-ttl <0-255>
    Задание значения TTL для выхода с маршрутизатора
    mpls enable-all-interfaces
    Включение MPLS на всех интерфейсах
    mpls ftn-entry <ip-префикс> <метка> <ip-адрес ожидающего интерфейса> <имя исходящего интерфейса>
    Настройка метки для FEC при входе в MPLS облако
    mpls ilm-entry <приходящая метка> <имя входного интерфейса> swap <исходящая метка> <имя исходящего интерфейса> <ip-адрес ожидающего интерфейса> <ip-префикс>
    Настройка замены метки для FEC при транзите через LSR
    mpls ingress-ttl <0-255>
    Задание значения TTL при входе на маршрутизатор
    mpls ldp <max-label-value|min-label-value>
    Задание диапазона значений выдаваемых меток. Возможные значения от 16 до 1048575
    mpls lsp-tunneling <имя входного интерфейса> <приходящая метка> <исходящая метка> <ip-префикс>

    mpls map-route <ip-префикс|ip-префикс/маска> <ip-префикс>

    mpls propagate-ttl

    Управление переносом значения TTL из IP в MPLS

    mpls l2-circuit <имя> <ID> <ip-префикс>Создание l2-circuit 5 типа
    mpls l2-circuit <имя> <ID> <ip-префикс> mode tagged svlan <VLAN> tpid <TPID>Создание l2-circuit 4 типа

    Настройка статического MPLS

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

    Задание правила ILM. Где 1111 — метка, которая ожидается на интерфейсе е1; 2222 — новое значение метки и отправка ее через интерфейс е2; 10.0.0.1 — адрес следующего маршрутизатора(nexthop), а 2.2.2.2/32 — FEC. 

    ecorouter(config)#mpls ilm-entry 1111 e1 swap 2222 e2 10.0.0.1 2.2.2.2/32

    Для explicit-null и implicit-null выходящие метки должны быть 0 и 3, соответственно.


    Задание правила FTN. Где 2.2.2.2/32 — FEC; 2222 — метка, которая будет навешана; 10.0.0.2 — адрес следующего маршрутизатора(nexthop); е1 — интерфейс для отправки. 

    ecorouter(config)#mpls ftn-entry 2.2.2.2/32 2222 10.0.0.2 e1


    LDP

    LDP (Label Distribution Protocol) — протокол распределения меток. Метки генерируются для всех маршрутов в таблице маршрутизации. Все локальные метки хранятся в LIB. Метки распространяются в направлении от Egress LER к Ingress LER. В зависимости от настроек распространение меток может происходить либо в режиме Downstream Unsolicited — распространение меток сразу всем соседним маршрутизаторам, либо Downstream-on-Demand — распространение меток по запросу. Соответствие между меткой и сетью отправляется всем соседям LDP.

    Настройка LDP

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

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

    ecorouter(config)#router ldp    

    При изменении у FEC (Forwarding equivalence class) адреса next-hop (адрес следующего маршрутизатора) маршрутизатор генерирует для этого FEC новую метку и сообщает ее своим соседям. Для того чтобы маршрутизатор использовал одну и ту же метку для одного FEC при изменении адреса next-hop, необходимо включить данную опцию в режиме конфигурации протокола LDP. 

    ecorouter(config)#ldp label preserve    

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

    Определение транспортного адреса маршрутизатора (необязательный параметр).

    ecorouter(config-router)#transport-address ipv4 <ip-address>    

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

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

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

    ecorouter#sh mpls ldp neighbor

    Команды просмотра

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

    Команда

    Описание

    show ldp adjacencyСписок LDP-связности

    show ldp advertise-labels

    Просмотр информации о метках

    show ldp downstream

    Просмотр распространение меток по методу downstream

    show ldp upstream

    Просмотр распространение меток по методу upstream

    show ldp fec

    Информация о Forwarding Equivalence Class

    show ldp fec-ipv4

    Информация о Forwarding Equivalence Class

    show ldp graceful-restartСтатус механизма Graceful Restart
    show ldp igpПараметры IGP

    show ldp interface

    Статус интерфейсов с функцией LDP

    show ldp lsp

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

    show ldp mpls-l2-circuit

    Просмотр конфигурации l2-circuit

    show ldp ms-pwMulti-Segment PW information
    show ldp routesТаблица NSM маршрутов LDP

    show ldp session

    Информация о сессии LDP

    show ldp statistics

    Просмотр статистики LDP

    show ldp targeted-peer

    Информация о пограничном MPLS маршрутизаторе

    show ldp targeted-peers

    List of targeted peers defined

    Pseudowire

    Pseudowire (pseudo-wire)  или L2-circuit — это сервис виртуальной частной сети для связи между собой двух сегментов сети по типу точка-точка. Любому поступающему трафику на РЕ маршрутизаторе назначается метка MPLS по которой происходит маршрутизация.

    Настройка L2-circuit

    Базовая настройка pseudowire включает в себя настройку граничных (Label Edge Router, LER) и промежуточных (Label Switch Router, LSR) маршрутизаторов сети.

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

    Создание loopback интерфейса.

    ecorouter(config)#interface loopback.<number>
    ecorouter(config-if)#ip address <address/mask>

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

    ecorouter(config)#router ldp

    Определение транспортного адреса маршрутизатора.

    ecorouter(config-router)#transport-address ipv4 <ip-address>

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

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


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

    Создание loopback интерфейса.

    ecorouter(config)#interface loopback.<number>
    ecorouter(config-if)#ip address <address/mask>

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

    ecorouter(config)#router ldp

    Определение транспортного адреса маршрутизатора.

    ecorouter(config-router)#transport-address ipv4 <ip-address>

    Определение целевого маршрутизатора. Где в качестве <ip-address> указывается сетевой адрес пограничного маршрутизатора, до которого будет построен l2-circuit.

    ecorouter(config-router)#targeted-peer ipv4 <ip-address>

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

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

    L2-circuit конфигурируется в зависимости от типа создаваемой схемы.

    Создание l2-circuit type 5.

    mpls l2-circuit <name> <Identifying value> <ip-address for end-point>

    Где в качестве <name> задается идентификационное имя соединения, <Identifying value> - номер l2-circuit, <ip-address for end-point> - адрес граничного маршрутизатора.

    Создание l2-circuit type 4.

    mpls l2-circuit <name> <Identifying value> <ip-address for end-point> mode tagged svlan <vlan Identifier>

    Где в качестве <name> задается идентификационное имя соединения, <Identifying value> - номер l2-circuit, <ip-address for end-point> - адрес граничного маршрутизатора, <vlan Identifier> - номер виртуальной сети.

    Привязка созданной l2-circuit к порту.

    ecorouter(config)#port ge2
    ecorouter(config-port)#service-instance ge2/e2
    ecorouter(config-service-instance)#encapsulation <tag/untag>
    ecorouter(config-service-instance)#mpls-l2-circuit <name>

    Где в зависимости от типа l2-circuit указывается тегированный или нетегированный трафик, параметр <name> - имя ранее созданного l2-circuit.

    Просмотр состояния l2-circuit. Где <name> - имя ранее созданного l2-circuit.

    ecorouter#show mpls l2-circuit <name>

    Гибкая настройка различных операций с VLAN-тегами на service-instance позволяет передавать пакет через l2-circuit, предварительно проделав эти операции с VLAN-тегами. При этом используется тип инкапсуляции 5 (ethernet).

    Поддерживаются следующие операции:

    Снять внешнюю метку с пакета с двумя метками, перед отправкой в MPLS-туннель:

    mpls l2-circuit pop_sv_any_cv 20 2.2.2.2 
    !
    port te1
     service-instance pop_sv_any_cv
     encapsulation dot1q 40 second-dot1q any
     rewrite pop 1
     mpls-l2-circuit pop_sv_any_cv primary

    Внутренняя метка может быть любой (second-dot1q any) или жестко заданной (second-dot1q 100). Во втором случае, все пакеты должны иметь внешнюю метку 40 и внутреннюю метку 100. В противном случае пакет будет отброшен.

    Снять обе метки с пакета перед отправкой в MPLS-туннель:

    mpls l2-circuit pop_pop 30 2.2.2.2
    !
    port te1
     service-instance pop_pop
     encapsulation dot1q 40 second-dot1q 90
     rewrite pop 2
     mpls-l2-circuit pop_pop primary

    Cнять внешнюю метку и заменить внутреннюю на произвольную перед отправкой в MPLS-туннель:

    mpls l2-circuit pop_swap 40 2.2.2.2 
    !
    port te1
     service-instance pop_swap
     encapsulation dot1q 40 second-dot1q 90
     rewrite translate 2-to-1 77
     mpls-l2-circuit pop_swap primary

    Добавить внешнюю метку перед отправкой в MPLS-туннель:

    mpls l2-circuit push_sv 50 2.2.2.2 
    !
    port te1
     service-instance push_sv
     encapsulation dot1q 60 exact
     rewrite push 77
     mpls-l2-circuit push_sv primary

    Добавить две метки перед отправкой в MPLS-туннель:

    mpls l2-circuit push_two 60 2.2.2.2 
    !
    port te1
     service-instance push_two
     encapsulation untagged
     rewrite push 77 88
     mpls-l2-circuit push_two primary

    Заменить внешнюю метку перед отправкой в MPLS-туннель:

    mpls l2-circuit swap_sv 70 2.2.2.2
    !
    port te1
     service-instance swap_sv
     encapsulation dot1q 40 second-dot1q 90
     rewrite translate 1-to-1 77
     mpls-l2-circuit push_two primary

    Заменить обе метки перед отправкой в MPLS-туннель:

    mpls l2-circuit swap_swap 80 2.2.2.2 
    !
    port te1
     service-instance swap_swap
     encapsulation dot1q 40 second-dot1q 90
     rewrite translate 2-to-2 77 88
     mpls-l2-circuit swap_swap primary

    Заменить внутреннюю метку и добавить внешнюю перед отправкой в MPLS-туннель:

    mpls l2-circuit swap_push 90 2.2.2.2 
    !
    port te1
     service-instance swap_push
     encapsulation dot1q 60 exact
     rewrite translate 1-to-2 77 88
     mpls-l2-circuit swap_push primary

    Backup Pseudowire

    Pseudowire Redundancy (backup pseudowire) позволяет настроить один из граничных маршрутизаторов сети MPLS для обнаружения сбоя в сети и перенаправить трафик к другой конечной точке. Функция обеспечивает возможность восстановления после сбоя одного из удаленных граничных маршрутизаторов.

    Для аварийного переключения на резервный pseudowire в конфигурации EcoRouter должно быть настроено два L2 туннеля, один из которых будет выполнять роль backup pseudowire. При передаче трафика по основному L2 туннелю backup pseudowire будет находиться в состоянии standby.

    Для настройки backup pseudowire необходимо произвести описанные ниже действия.

    Создать loopback интерфейс loopback.0 с сетевым адресом 1.1.1.1 и маской 32.

    ecorouter(config)#interface loopback.0
    ecorouter(config-if)#ip address 1.1.1.1/32

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

    ecorouter(config)#router ldp

    Определить транспортный адрес маршрутизатора.

    ecorouter(config-router)#transport-address ipv4 1.1.1.1

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

    ecorouter(config-router)#targeted-peer ipv4 2.2.2.2

    Включить режим распространения меток по всей таблице маршрутизации.

    ecorouter(config-router)#pw-status-tlv

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

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

    Далее необходимо настроить основной L2 туннель. Например, создать l2-circuit type 5 с именем vc1, Identifying value — 1111.

    Для этого нужно создать l2-circuit type 5.

    mpls l2-circuit vc1 1111 2.2.2.2

    Настроить резервный L2 туннель, с именем vc2, Identifying value — 2222.

    mpls l2-circuit vc2 2222 2.2.2.2

    Привязать созданный l2-circuit к порту ge2, включить функцию переключения на основной l2-circuit при его доступности.

    ecorouter(config)#port ge2
    ecorouter(config-port)#service-instance ge2/e2
    ecorouter(config-service-instance)#encapsulation untag
    ecorouter(config-service-instance)#mpls-l2-circuit vc1
    ecorouter(config-service-instance)#mpls-l2-circuit vc2
    ecorouter(config-service-instance)#vc-mode revertive

    Совместная работа BGP и MPLS

    В данном разделе рассматривается реализация совместной работы протоколов BGP и MPLS на базе EcoRouterOS.

    Главным отличием протокола BGP от IGP при работе с MPLS является то, что для BGP-маршрутов метки не создаются. Когда маршрутизатор LSR получает маршрут по BGP, то дальше он передает пакеты в сторону BGP-соседа, который указан, как next-hop в анонсе этого маршрута, используя созданную для next-hop метку. Поэтому нет необходимости настраивать BGP на каждом маршрутизаторе в автономной системе, его конфигурируют только на пограничных маршрутизаторах, к которым подключены клиенты или другие провайдеры.

    Топология

    Приведенная ниже схема реализует классический сценарий совместной работы протоколов BGP и MPLS, который явно демонстрирует все плюсы коммутации по меткам.

    На схеме маршрутизаторы ECO-1, ECO-2 и R2 находятся в MPLS-облаке, и между ECO-1 и ECO-2 настроен iBGP. Маршрутизаторы R1 и R3 подключены к MPLS-облаку через eBGP. Локальные сети маршрутизаторов R1 и R3 представлены в виде loopback-интерфейсов. Необходимо создать связность между локальными сетями маршрутизаторов R1 и R3.

    Конфигурация маршрутизаторов

    Ниже приведена конфигурация маршрутизаторов для реализации данной схемы.

    ECO-1

    ECO-1#sh running-config
    !
    router ldp
     transport-address ipv4 100.100.100.100
    !
    mpls map-route 3.3.3.3/32 200.200.200.200/32
    !
    router ospf 1
     network 10.0.0.0 0.255.255.255 area 0.0.0.0
     network 100.100.100.100 0.0.0.0 area 0.0.0.0
    !
    router bgp 200
     neighbor 11.0.0.1 remote-as 100
     neighbor 200.200.200.200 remote-as 200
     neighbor 200.200.200.200 update-source loopback.0
     neighbor 200.200.200.200 next-hop-self
    !
    port te0
     lacp-priority 32767
     mtu 9728
     service-instance te0/e1
      encapsulation untagged
    !
    port te1
     lacp-priority 32767
     mtu 9728
     service-instance te1/e2
      encapsulation untagged
    !
    interface loopback.0
     ip mtu 1500
     ip address 100.100.100.100/32
    !
    interface e2
     ip mtu 1500
     label-switching
     connect port te1 service-instance te1/e2
     ip address 10.12.0.100/16
     ldp enable ipv4
    !
    interface e1
     ip mtu 1500
     connect port te0 service-instance te0/e1
     ip address 11.0.0.100/16
    !
    end

    ECO-2

    ECO-2#sh running-config
    !
    router ldp
     transport-address ipv4 200.200.200.200
    !
    mpls map-route 1.1.1.1/32 100.100.100.100/32
    !
    router ospf 1
     network 10.0.0.0 0.255.255.255 area 0.0.0.0
     network 200.200.200.200 0.0.0.0 area 0.0.0.0
    !
    router bgp 200
     neighbor 23.0.0.3 remote-as 300
     neighbor 100.100.100.100 remote-as 200
     neighbor 100.100.100.100 update-source loopback.0
     neighbor 100.100.100.100 next-hop-self
    !
    port te1
     lacp-priority 32767
     mtu 9728
     service-instance te1/e2
      encapsulation untagged
    !
    port te2
     lacp-priority 32767
     mtu 9728
     service-instance te2/e3
      encapsulation untagged
    !
    interface loopback.0
     ip mtu 1500
     ip address 200.200.200.200/32
    !
    interface e3
     ip mtu 1500
     connect port te2 service-instance te2/e3
     ip address 23.0.0.200/16
    !
    interface e2
     ip mtu 1500
     label-switching
     connect port te1 service-instance te1/e2
     ip address 10.22.0.200/16
     ldp enable ipv4
    !
    end

    R1

    R1#sh running-config
    !
    router bgp 100
     neighbor 11.0.0.100 remote-as 200
     network 1.1.1.1 mask 255.255.255.255
    !
    port te0
     lacp-priority 32767
     mtu 9728
     service-instance te0/FastEthernet0/0
      encapsulation untagged
    !
    interface loopback.0
     ip mtu 1500
     ip address 1.1.1.1/32
    !
    interface FastEthernet0/0
     ip mtu 1500
     connect port te0 service-instance te0/FastEthernet0/0
     ip address 11.0.0.1/16
    !
    end

    R3

    R3#sh running-config
    !
    router bgp 300
     neighbor 23.0.0.200 remote-as 200
     network 3.3.3.3 mask 255.255.255.255
    !
    port te0
     lacp-priority 32767
     mtu 9728
     service-instance te0/FastEthernet0/0
      encapsulation untagged
    !
    interface loopback.0
     ip mtu 1500
     ip address 3.3.3.3/32
    !
    interface FastEthernet0/0
     ip mtu 1500
     connect port te0 service-instance te0/FastEthernet0/0
     ip address 23.0.0.3/16
    !
    end

    R2

    R2#sh running-config
    !
    router ldp
     transport-address ipv4 22.22.22.22
    !
    mpls map-route 3.3.3.3/32 200.200.200.200/32
    !
    router ospf 1
      network 10.0.0.0 0.255.255.255 area 0.0.0.0
      network 22.22.22.22 0.0.0.0 area 0.0.0.0
    !
    port te0
     lacp-priority 32767
     mtu 9728
     service-instance te0/FastEthernet0/1
      encapsulation untagged
    !
    port te1
     lacp-priority 32767
     mtu 9728
     service-instance te1/FastEthernet0/0
      encapsulation untagged
    !
    interface loopback.0
     ip mtu 1500
     ip address 22.22.22.22/32
    !
    interface FastEthernet0/0
     ip mtu 1500
     label-switching
     connect port te1 service-instance te1/FastEthernet0/0
     ip address 10.12.0.2/16
     ldp enable ipv4
    !
    interface FastEthernet0/1
     ip mtu 1500
     label-switching
     connect port te0 service-instance te0/FastEthernet0/1
     ip address 10.22.0.2/16
     ldp enable ipv4
    !
    end


    Для связности между loopback-интерфейсами маршрутизаторов R1 и R3 не требуется, чтобы на маршрутизаторе R2 был настроен BGP и присутствовали все маршруты в таблице маршрутизации. При увеличении MPLS-облака в размерах это становится заметным преимуществом использования технологии коммутации по меткам.

    Ниже представлен вывод на консоль таблицы маршрутизации ECO-1.

    ECO-1#sh ip route
    Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
           O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2
           i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
           * - candidate default
     
    IP Route Table for VRF "default"
    B       1.1.1.1/32 [20/0] via 11.0.0.1, e1, 19:33:53
    B       3.3.3.3/32 [200/0] via 200.200.200.200 (recursive via 10.12.0.2 ), 19:33:40
    C       10.12.0.0/16 is directly connected, e2
    O       10.22.0.0/16 [110/20] via 10.12.0.2, e2, 19:34:09
    C       11.0.0.0/16 is directly connected, e1
    C       100.100.100.100/32 is directly connected, loopback.0
    O       200.200.200.200/32 [110/30] via 10.12.0.2, e2, 19:33:56

    MPLS карта

    Маршрут до адреса 3.3.3.3/32, полученный от BGP-соседа ECO-2, пролегает по MPLS-облаку через устройство с адресом 10.12.0.2. Такие маршруты называются рекурсивными. Для того чтобы при передаче пакетов в сторону адреса 3.3.3.3 добавлялась MPLS-метка, предназначенная для адреса next-hop BGP-соседа, в EcoRouterOS требуется явно указать «MPLS карту».

    Для этого необходимо ввести команду конфигурационного режима mpls map-route <IP подсеть/маска подсети> <FEC подсеть/маска подсети>, где подсети задаются статически. Первый параметр в команде - IP-подсеть, для которой необходимо составить MPLS-карту. Второй параметр - FEC для этой подсети. FEC (Forwarding Equivalence Class) представляет собой класс трафика. В простейшем случае идентификатором класса является адресный префикс назначения (другими словами, IP-адрес или подсеть назначения).

    В приведенной выше конфигурации маршрутизатора ECO-1 этому действию соответствует строка:

    mpls map-route 3.3.3.3/32 200.200.200.200/32

    Эта строка конфигурации означает, что при отправке пакета в сторону подсети 3.3.3.3/32 для него необходимо использовать метку для подсети 200.200.200.200/32.

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