Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Настройка протокола LDP

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

В контроллере WLC-30 поддержаны следующие режимы работы LDP:

  • Режим обмена информации о меткаx — Downstream Unsolicited;
  • Механизм контроля за распространением меток — Independent Label Distribution Control;
  • Режим сохранения меток — Liberal Label Retention;

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

В текущей реализации протокол LDP работает только с IPv4-адресами.

Алгоритм настройки

ШагОписаниеКомандаКлючи
1В контексте настройки параметров MPLS указать интерфейсы, участвующие в процессе MPLS-коммутации.

wlc-30(config-mpls)# forwarding interface { <IF> | <TUN> }

<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе "Типы и порядок именования интерфейсов контроллера" справочника команд CLI;

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе "Типы и порядок именования туннелей контроллера" справочника команд CLI.

2Задать router-id для LDP (не обязательно, если указан transport-address).

wlc-30(config-ldp)# router-id <ID>

<ID> – идентификатор устройства, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
3

В контексте настройки address family ipv4 указать transport-address (не обязательно, если указан router-id).

wlc-30(config-ldp-af-ipv4)# transport-address <ADDR>

<ADDR> – задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

3

В контексте настройки address family ipv4 указать интерфейсы для включение на них процесса LDP.

wlc-30(config-ldp-af-ipv4)# interface { <IF> | <TUN> }


<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе "Типы и порядок именования интерфейсов контроллера" справочника команд CLI; 

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе "Типы и порядок именования туннелей контроллера" справочника команд CLI.

4Включить процесс LDP.

wlc-30(config-ldp)# enable


5Включить функционал explicit-null (не обязательно).

wlc-30(config-ldp)# egress-label-type explicit-null


6В режиме конфигурирования соседа LDP задать пароль командой password (не обязательно).

wlc-30(config-ldp-neig)# password {<TEXT> | ENCRYPTED-TEXT>}

<CLEAR-TEXT> – пароль, задаётся строкой, длинной [8..16] символов;

<ENCRYPTED-TEXT> – зашифрованный пароль размером [8..16] байт ([16..32] символа) в шестнадцатеричном формате (0xYYYY...) или (YYYY...).

В рамках настройки протокола LDP также доступен следующий функционал:

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

Задача:

Настроить взаимодействие по протоколу LDP между пирами.

Решение:
Предварительная конфигурация WLC-30_A:

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

Предварительная конфигурация WLC-30_A:

hostname wlc-30
router ospf 1
  area 0.0.0.0
    enable
  exit
  enable
exit

      
interface gigabitethernet 1/0/1
  ip firewall disable
  ip address 10.10.10.1/30
  ip ospf instance 1
  ip ospf
exit

      
interface loopback 1
  ip address 1.1.1.1/32
  ip ospf instance 1
  ip ospf
exit

Предварительная конфигурация WLC-30_B:

hostname wlc-30-1
router ospf 1
  area 0.0.0.0
    enable
  exit
  enable
exit

      
interface gigabitethernet 1/0/1
  ip firewall disable
  ip address 10.10.10.2/30
  ip ospf instance 1
  ip ospf
exit

      
interface loopback 1
  ip address 4.4.4.4/32
  ip ospf instance 1
  ip ospf
exit
Настройка на WLC-30_A:
WLC-30_A
wlc-30# config
wlc-30(config)# mpls
wlc-30(config-mpls)# forwarding interface gigabitethernet 1/0/1
wlc-30(config-mpls)# ldp
wlc-30(config-ldp)# router-id 1.1.1.1
wlc-30(config-ldp)# enable
wlc-30(config-ldp)# address-family ipv4
wlc-30(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
wlc-30(config-ldp-af-ipv4-if)# end
Ewlc-30#
Настройка на WLC-30_B:
WLC-30_B
wlc-30-1# configure
wlc-30-1(config)# mpls
wlc-30-1(config-mpls)# forwarding interface gigabitethernet 1/0/1
wlc-30-1(config-mpls)# ldp
wlc-30-1(config-ldp)# router-id 4.4.4.4
wlc-30-1(config-ldp)# enable
wlc-30-1(config-ldp)# address-family ipv4
wlc-30-1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
wlc-30-1(config-ldp-af-ipv4-if)# end
wlc-30-1#
Проверка:

На одном из пиров ввести следующие команды:

Вывод покажет параметры соседнего пира, полученные из мультикастовых hello-сообщений.

wlc-30# show mpls ldp discovery detailed
Local LDP ID: 1.1.1.1
Discovery sources:
    Interfaces:
        gigabitethernet 1/0/1:
                 Hello interval: 5 seconds
        Transport IP address: 1.1.1.1
        LDP ID: 4.4.4.4
            Source IP address: 10.10.10.2
            Transport IP address: 4.4.4.4
                          Hold time: 15 seconds
                          Proposed hold time: 90/15 (local/peer) seconds

Сессия LDP должна находиться в статусе "Operational".

wlc-30-1# show mpls ldp neighbor
Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1
    State: Operational
    TCP connection: 4.4.4.4:40245 - 1.1.1.1:646
    Messages sent/received: 10/11
    Uptime: 00:00:58
    LDP discovery sources:
        gigabitethernet 1/0/1

Конфигурирование параметров сессии в протоколе LDP

По умолчанию, в рассылаемых hello-сообщениях установлены следующие значения:

ПараметрLDP
Hello interval5 секунд
Hold timer 15 секунд
Keepalive holdtime 180 секунд

Hold timer является согласуемым параметром — выбирается наименьший. В данном примере показано, что в WLC-30_A после согласования Hold timer равен 10 секундам.

wlc-30# sh mpls ldp discovery detailed
Local LDP ID: 4.4.4.4
Discovery sources:
    Interfaces:
        gigabitethernet 1/0/4:
            Hello interval: 5 seconds
            Transport IP address: 4.4.4.4
            LDP ID: 1.1.1.1
                Source IP address: 10.10.10.1
                Transport IP address: 1.1.1.1
                                   Hold time: 10 seconds
                                   Proposed hold time: 15/10 (local/peer) seconds

Если после согласования Hello interval стал больше, чем Hold timer, то Hello interval будет равным Hold timer / 3.

На WLC-30 реализована возможность гибкой настройки параметров Hello holdtime, Hello interval и Keepalive holdtime. Рассмотрим пример настройки Hello holdtime для LDP-сессии:

wlc-30# show run mpls
mpls
  ldp
  router-id 4.4.4.4
     discovery hello holdtime 40
    address-family ipv4
      interface gigabitethernet 1/0/4
             discovery hello holdtime 60
    exit
  exit
  enable
exit

Если параметры Hello Holdtime и Hello Interval не указаны, то используются значения по умолчанию. Если параметры указаны, то приоритет значений для address-family будет выше чем для значений, сконфигурированных глобально.

wlc-30# show mpls ldp discovery detailed
Local LDP ID: 4.4.4.4
Discovery sources:
    Interfaces:
        gigabitethernet 1/0/4:
            Hello interval: 5 seconds
            Transport IP address: 4.4.4.4
            LDP ID: 1.1.1.1
                Source IP address: 10.10.10.1
                Transport IP address: 1.1.1.1
                Hold time: 15 seconds
                                   Proposed hold time: 60 /15 (local/peer) seconds

Параметры, сконфигурированные в address-family, могут быть настроены на каждый отдельный интерфейс, участвующий в процессе LDP.

wlc-30# show running-config mpls
mpls
  ldp
    router-id 4.4.4.4
    discovery hello holdtime 50
    discovery hello interval 10
    address-family ipv4
             interface gigabitethernet 1/0/1
                 discovery hello holdtime 60
                 discovery hello interval 20
      exit
             interface gigabitethernet 1/0/4
                 discovery hello holdtime 30
                 discovery hello interval 10
      exit
    exit
  enable
exit

Для TCP-сессии, Keepalive holdtime является также согласуемым параметром по аналогии с Hold timer. Keepalive interval рассчитывается автоматически, и равен Keepalive holdtime /3. Keepalive holdtime можно задать как глобально, так и для каждого соседа. Таймер, заданный для определенного соседа, является более приоритетным.

wlc-30# show running-config mpls
mpls
  ldp
  router-id 4.4.4.4
     keepalive 30 #установлен в глобальной конфигурации LDP
  neighbor 1.1.1.1
     keepalive 55 #установлен в соседа с адресом 1.1.1.1
  exit
exit
wlc-30# sh mpls ldp neighbor 1.1.1.1
Peer LDP ID: 1.1.1.1; Local LDP ID 4.4.4.4
    State: Operational
    TCP connection: 1.1.1.1:646 - 4.4.4.4:56668
    Messages sent/received: 401/401
    Uptime: 02:00:24
    Peer holdtime: 55
    Keepalive interval: 18
    LDP discovery sources:

Алгоритм настройки параметров Hello holdtime и Hello interval в глобальной конфигурации LDP

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2В режиме конфигурации протокола LDP задать Hello holdtime

wlc-30(config-ldp)# discovery hello holdtime <TIME>

<TIME> – время в секундах в интервале [3..65535]
Значение по умолчанию: 15

3

В режиме конфигурации протокола LDP задать Hello interval

wlc-30(config-ldp)# discovery hello interval <TIME>

<TIME> – время в секундах в интервале [3..65535]
Значение по умолчанию: 5

Алгоритм настройки параметров Hello holdtime и Hello interval для address family

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2В режиме конфигурации address familly протокола LDP установить Hello holdtime на нужном интерфейсе

wlc-30(config-ldp-af-ipv4-if)# discovery hello holdtime <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 15

3

В режиме конфигурации address familly протокола LDP установить Hello interval на нужном интерфейсе

wlc-30(config-ldp-af-ipv4-if)# discovery hello interval <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 5

Алгоритм настройки параметра Keepalive holdtime в глобальной конфигурации LDP

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2В режиме конфигурации LDP задать параметр Keepalive

wlc-30(config-ldp)# keepalive <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 180

Алгоритм настройки параметра Keepalive holdtime для определенного соседа

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2В режиме конфигурации соседа задать параметр Keepalive holdtime

wlc-30(config-ldp-neig)# keepalive <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 180

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

Задача:

Переопределить параметры hello holdtime (40 секунд) и hello interval (10 секунд) для всего процесса LDP. Для соседа с адресом 1.1.1.1 установить Keepalive holdtime равным 150 секунд.

Решение:
wlc-30(config)# mpls
wlc-30(config-mpls)# ldp
wlc-30(config-ldp)# discovery hello holdtime 40
wlc-30(config-ldp)# discovery hello interval 10
wlc-30(config-ldp)# neighbor 1.1.1.1
wlc-30(config-ldp-neig)# keepalive 150

Проверка:

Для просмотра hello-параметров:

wlc-30# sh mpls ldp discovery detailed
Local LDP ID: 4.4.4.4
Discovery sources:
    Interfaces:
        gigabitethernet 1/0/4:
            Hello interval:       10 seconds
            Transport IP address: 4.4.4.4
            LDP ID:               1.1.1.1
                Source IP address:    10.10.10.1
                Transport IP address: 1.1.1.1
                Hold time:            15 seconds
                Proposed hold time:   40/15 (local/peer) seconds

Для просмотра параметров установленной TCP-сессии:

wlc-30# sh mpls ldp neighbor 1.1.1.1 
Peer LDP ID: 1.1.1.1; Local LDP ID 4.4.4.4
    State:                  Operational
    TCP connection:         1.1.1.1:646 - 4.4.4.4:45414
    Messages sent/received: 15/15
    Uptime:                 00:06:31
    Peer holdtime:          150
    Keepalive interval:     50
    LDP discovery sources:

Конфигурирование параметров сессии в протоколе targeted-LDP

По умолчанию, для targeted LDP-сессии установлены следующие значения:

Параметрtargeted-LDP
 hello interval5 секунд
Hold timer 45 секунд
Keepalive holdtime 180 секунд

Hold timer является согласуемым параметром — выбирается наименьший. В данном примере показано, что WLC-30_A после согласования установил 30 секунд:

wlc-30-1# sh mpls ldp discovery detailed

...
Targeted hellos:
1.1.1.1 -> 4.4.4.4:
Hello interval: 2 seconds
Transport IP address: 1.1.1.1
LDP ID: 4.4.4.4
Source IP address: 4.4.4.4
Transport IP address: 4.4.4.4
Hold time: 30 seconds
Proposed hold time: 30/45 (local/peer) seconds

Если после согласования Hello interval стал больше чем Hold timer, то Hello interval будет равным Hold timer / 3.

На WLC-30 реализована возможность гибкой настройки параметров Hello holdtime, Hello interval и Keepalive holdtime: параметры можно задать как для всего процесса LDP, так и на соответствующего соседа.

Пример вывода для процесса LDP:

wlc-30# sh running-config mpls
mpls
  ldp
    router-id 1.1.1.1
         keepalive 160
         discovery targeted-hello holdtime 30
         discovery targeted-hello interval 10
  exit
exit

Пример вывода для targeted-LDP-сессии для определенного соседа:

wlc-30# sh running-config mpls
mpls
  ldp
    router-id 1.1.1.1
    neighbor 4.4.4.4
      keepalive 160
      targeted
      discovery targeted-hello holdtime 30
      discovery targeted-hello interval 45
    exit
  exit
exit

Если параметры установлены и для процесса LDP, и на определенного соседа, приоритетом будет считаться настройки, установленные для соседа.

wlc-30# sh running-config mpls
mpls
  ldp
    router-id 1.1.1.1
    keepalive  160
    discovery hello holdtime 90
    discovery targeted-hello interval 30
    neighbor 4.4.4.4
      keepalive 140
      targeted
      discovery targeted-hello holdtime 45
      discovery targeted-hello interval 15
    exit
  exit
exit
wlc-30# show mpls ldp discovery detailed
...
Targeted hellos:
1.1.1.1 -> 4.4.4.4:
Hello interval: 15 seconds
Transport IP address: 1.1.1.1
LDP ID: 4.4.4.4
Source IP address: 4.4.4.4
Transport IP address: 4.4.4.4
Hold time: 45 seconds
Proposed hold time: 45/45 (local/peer) seconds


wlc-30# show mpls ldp neighbor 4.4.4.4
Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1
     State: Operational
      TCP connection: 4.4.4.4:51861 - 1.1.1.1:646
      Messages sent/received: 10/10
      Uptime: 00:00:09
      Peer holdtime: 140
      Keepalive interval: 46
      LDP discovery sources:
            1.1.1.1 -> 4.4.4.4:

Алгоритм настройки параметров Hello holdtime, Hello interval и Keepalive holdtime для процесса LDP

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2В режиме конфигурации протокола LDP задать Hello holdtime

wlc-30(config-ldp)# discovery targeted-hello holdtime <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 45

3

В режиме конфигурации протокола LDP задать Hello interval

wlc-30(config-ldp)# discovery targeted- hello interval <TIME>

<TIME> – Время в секундах в интервале [1..65535]

Значение по умолчанию: 5

4В режиме конфигурации протокола LDP задать Keepalive holdtime

wlc-30(config-ldp)# keepalive <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 180

Алгоритм настройки параметров Hello holdtime, Hello interval и Keepalive holdtime для определенного соседа

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2В режиме конфигурации LDP-соседа задать Hello holdtime

wlc-30(config-ldp-neig)# discovery targeted-hello holdtime <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 45

3

В режиме конфигурации LDP-соседа задать Hello interval

wlc-30(config-ldp-neig)# discovery targeted- hello interval <TIME>

<TIME> – Время в секундах в интервале [1..65535]

Значение по умолчанию: 5

4В режиме конфигурации LDP-соседа задать Keepalive holdtime

wlc-30(config-ldp-neig)# keepalive <TIME>

<TIME> – Время в секундах в интервале [3..65535]

Значение по умолчанию: 180

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

Задача:

Переопределить параметры hello holdtime (120 секунд) и hello interval (30 секунд ) для всего процесса targeted-LDP. Для соседа с адресом 4.4.4.4 установить Keepalive holdtime равным 150 секунд.

Решение:
WLC-30
wlc-30(config)# mpls
wlc-30(config-mpls)# ldp
wlc-30(config-ldp)# discovery targeted-hello holdtime 40
wlc-30(config-ldp)# discovery targeted-hello interval 10
wlc-30(config-ldp)# neighbor 4.4.4.4
wlc-30(config-ldp-neig)# keepalive 150
Проверка:

Для просмотра hello-параметров targeted LDP-сессии:

WLC-30
wlc-301# sh mpls ldp discovery detailed
...
    Targeted hellos:
         1.1.1.1 -> 4.4.4.4:
            Hello interval:       10 seconds
            Transport IP address: 1.1.1.1
            LDP ID:               4.4.4.4
                Source IP address:    4.4.4.4
                Transport IP address: 4.4.4.4
                Hold time:            40 seconds
                Proposed hold time:   40/45 (local/peer) seconds

Для просмотра параметров установленной TCP-сессии:

WLC-30
wlc-30# sh mpls ldp neighbor 4.4.4.4
Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1
    State:                  Operational
    TCP connection:         4.4.4.4:34879 - 1.1.1.1:646
    Messages sent/received: 11/11
    Uptime:                 00:01:05
    Peer holdtime:          150
    Keepalive interval:     50
    LDP discovery sources:
         1.1.1.1 -> 4.4.4.4:
            Hello interval: 10 seconds
            Holdtime:       40 seconds
  ...

Настройка фильтрации LDP-меток

По умолчанию, WLC-30 выделяeт на каждый FEC отдельную метку. Существуют сценарии, когда необходимо выделять MPLS-метки только для определенных FEC.

Алгоритм настройки

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP)
2Создать object-group типа network

wlc-30(config)# object-group network <NAME>

<NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа.
3Описать префиксы, для которых будут назначаться метки

wlc-30(config-object-group-network)# ip prefix <ADDR/LEN>

<ADDR/LEN> – IP-адрес и маска подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32];

4

В контексте настройки LDP применить созданную object-group

wlc-30(config-ldp)# advertise-labels <NAME>

<NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа.

Метки будут выделяться ТОЛЬКО на описанные в object-group подсети, независимо от того, как они были изучены (connected, local, IGP и т.д.).

В object-group необходимо описывать префиксы. 

Префикс должен иметь точное совпадение с маршрутом из FIB.

Данный функционал поддержан для протокола IPv4.

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

Задача:

Назначить MPLS-метки только FEC 10.10.0.2/32 и 10.10.0.1/32.

Решение:

На WLC-30_A и WLC-30_B создадим object-group ADV_LABELS типа network и добавим в нее префиксы 10.10.0.1/32 и 10.10.0.2/32 соответственно.

WLC-30_A
wlc-30(config)# object-group network ADV_LABELS
wlc-30(config-object-group-network)# ip prefix 10.10.0.1/32
wlc-30(config-object-group-network)# ip prefix 10.10.0.2/32
WLC-30_B
wlc-30(config)# object-group network ADV_LABELS
wlc-30(config-object-group-network)# ip prefix 10.10.0.1/32
wlc-30(config-object-group-network)# ip prefix 10.10.0.2/32

Применим созданную object-group на обоих устройствах:

WLC-30_A и WLC-30_B
wlc-30(config)# mpls
wlc-30(config-ldp)# ldp
wlc-30(config-ldp)# advertise-labels ADV_LABELS
Проверка:

На WLC-30_B убедимся, что метка назначена для соответствующих префиксов:

wlc-30# sh mpls ldp bindings 10.10.0.1/32
10.10.0.1/32
local label: exp-null
remote label: 75 lsr: 172.16.0.1

И не назначена для 192.168.2.0/24:

wlc-30# sh mpls ldp bindings 192.168.2.0/24
wlc-30#

Настройка сервиса L2VPN Martini mode

L2VPN позволяет организовать передачу ethernet-фреймов через MPLS-домен. Выделение и распространение туннельных меток, в данном режиме, осуществляется посредством протокола LDP. В реализации L2VPN можно условно выделить два случая:

  1. P2P — туннель создаваемый по схеме "точка-точка".
  2. VPLS — туннель создаваемый по схеме "точка-многоточка".

В обоих случаях, для передачи ethernet-фреймов между устройствами создается виртуальный канал (далее pseudo-wire). Для согласования параметров pseudo-wire, а также для выделения и передачи туннельных меток между устройствами, устанавливается LDP-сессия в targeted-режиме.

Алгоритм настройки L2VPN VPWS

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP).
2Создать pw-class в системе и осуществить переход в режим настройки параметров pw-class.

wlc-30(config-l2vpn)# pw-class <WORD>

<WORD> – имя pw-class длинной [1..31] символов.

3Добавить описание для pw-class (не обязательно).

wlc-30(config-l2vpn-pw-class)# description <LINE>

<LINE> – описание. Задается в виде строки длинной [1..255] символов

4

Установить значение MTU для pseudo-wire входящих в pw-class (не обязательно).

wlc-30(config-l2vpn-pw-class)# encapsulation
mpls mtu <MTU>

<MTU> – значение MTU, принимает значение в диапазоне [552..10000]

Значение по умолчанию: 1500.

5Отключить обмен status-tlv сообщениями (не обязательно).

wlc-30(config-l2vpn-pw-class)# encapsulation
mpls status-tlv disable

Значение по умолчанию: status-tlv enable
6Создать p2p-туннель в системе и осуществить переход в режим настройки параметров p2p-туннеля.

wlc-30(config-l2vpn)# p2p <NAME>

<NAME> – имя p2p-сервиса, задается строкой до 31 символа.

7Задать Attached Circuit интерфейс.

wlc-30(config-l2vpn-p2p)# interface
 { <IF> | <TUN> }

<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе "Типы и порядок именования интерфейсов контроллера" справочника команд CLI;

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе "Типы и порядок именования туннелей контроллера" справочника команд CLI.

8Включить p2p-туннель.

wlc-30(config-l2vpn-p2p)# enable


9Задать транспортный режим (не обязательно).

wlc-30(config-l2vpn-p2p)# transport-mode
{ ethenet | vlan }

<ethernet> – режим при котором при входе в pseudo-wire из заголовка удаляется 802.1Q тег ;

<vlan> – режим при котором 802.1Q тег может быть сохранен при передаче через pseudo-wire.

Значение по умолчанию: ethernet

10Создать pseudo-wire и осуществить переход в режим настройки его параметров.

wlc-30(config-l2vpn-p2p)# pw <PW_ID> <LSR_ID>

<PW_ID> – идентификатор psewdowire, задается в виде числа в диапазоне [1..4294967295 ]

<LSR_ID> – идентификатор LSR, до которого строится pseudo-wire, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

11Добавить описание для pseudo-wire (не обязательно).

wlc-30(config-l2vpn-pw)# description <LINE>

<LINE> – описание. Задается в виде строки длинной [1..255] символов.
12Задать pw-class для pseudo-wire.

wlc-30(config-l2vpn-pw)# pw-class <WORD>

<WORD> – имя pw-class длинной [1..31] символов.

13Задать адрес LSR до которого устанавливается pseudo-wire (Не обязательно если neighbor address совпадает с LSR_ID).

wlc-30(config-l2vpn-pw)# neighbor-address <ADDR>

<ADDR> – IP-адрес контроллера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. 
14

Включить pseudo-wire.

wlc-30(config-l2vpn-pw)# enable



В случае, если необходимо изменить параметры по умолчанию для targeted LDP-сессии, обратитесь к разделу Конфигурирование параметров сессии в протоколе targeted-LDP.

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

Задача:

Настроить l2vpn таким образом чтобы интерфейс ge1/0/2.100 контроллера CE1 и интерфейс ge1/0/2.100 контроллера CE2 работали в рамках одного широковещательного домена.

Решение:

Предварительно нужно:

  • Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);

  • Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
  • Организовать обмен маршрутами между PE1 и PE2 при помощи IGP-протокола (OSPF, IS-IS, RIP).

На контроллере PE1 создадим саб-интерфейс, на который будем принимать трафик от CE1:

PE1# configure
PE1(config)# interface gigabitethernet 1/0/4.100
PE1(config-subif)# exit

Выставим на интерфейсе в сторону PE2 значение MTU равным 9600 для того, чтобы избежать ситуации с превышением MTU после инкапсуляции MPLS-заголовка, а также отключим межсетевой экран:

PE1#(config)# interface gigabitethernet 1/0/1
PE1(config-if-gi)# mtu 9600
PE1(config-if-gi)# ip firewall disable
PE1(config-if-gi)# exit

Разрешим прием пакетов с MPLS-заголовком на интерфейсе в сторону MPLS-сети (В данном примере интерфейс в сторону PE2):

PE1(config)# mpls
PE1(config-mpls)# forwarding interface gigabitethernet 1/0/1

Настроим протокол LDP и включим обнаружение соседей на интерфейсе в сторону PE2:

PE1(config-mpls)# ldp
PE1(config-ldp)# router-id 1.1.1.1
PE1(config-ldp)# address-family ipv4
PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
PE1(config-ldp-af-ipv4-if)# exit
PE1(config-ldp-af-ipv4)# transport-address 1.1.1.1
PE1(config-ldp-af-ipv4)# exit
PE1(config-ldp)# enable
PE1(config-ldp)# exit

Создадим pw-class, на основе которого в дальнейшем будет создан виртуальный канал (pw). Так как в данном примере на pw будут применяться параметры по умолчанию, достаточно будет указать имя класса:

PE1(config-mpls)# l2vpn
PE1(config-l2vpn)# pw-class for_p2p_VLAN100
PE1(config-l2vpn-pw-class)# exit

Создадим новый l2vpn типа p2p и добавим pw до контроллера PE3, идентификатор pw для удобства возьмем равным VID (в данном случай = 100):

PE1(config-l2vpn)# p2p to_PE2_VLAN100
PE1(config-l2vpn-p2p)# interface gigabitethernet 1/0/4.100
PE1(config-l2vpn-p2p)# pw 100 3.3.3.3
PE1(config-l2vpn-pw)# pw-class for_p2p_VLAN100
PE1(config-l2vpn-pw)# enable
PE1(config-l2vpn-pw)# exit
PE1(config-l2vpn-p2p)# enable
PE1(config-l2vpn-p2p)# end

Применим конфигурацию:

PE1# commit
PE1# confirm

Проведем настройку контроллера PE2 по аналогии с PE1:

PE2# configure
PE2(config)# interface gigabitethernet 1/0/4.100
PE2(config-subif)# exit
PE2#(config)# interface gigabitethernet 1/0/1
PE2(config-if-gi)# mtu 9600
PE1(config-if-gi)# ip firewall disable
PE1(config-if-gi)# exit
PE2(config)# mpls
PE2(config-mpls)# forwarding interface gigabitethernet 1/0/1
PE2(config-mpls)# ldp
PE2(config-ldp)# router-id 2.2.2.2
PE2(config-ldp)# address-family ipv4
PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
PE2(config-ldp-af-ipv4-if)# exit
PE2(config-ldp-af-ipv4)# transport-address 2.2.2.2
PE2(config-ldp-af-ipv4)# exit
PE2(config-ldp)# enable
PE2(config-ldp)# exit
PE2(config-mpls)# l2vpn
PE2(config-l2vpn)# pw-class for_p2p_VLAN100
PE2(config-l2vpn-pw-class)# exit
PE2(config-l2vpn)# p2p to_PE1_VLAN100
PE2(config-l2vpn-p2p)# interface gigabitethernet 1/0/4.100
PE2(config-l2vpn-p2p)# pw 100 1.1.1.1
PE2(config-l2vpn-pw)# pw-class for_p2p_VLAN100
PE2(config-l2vpn-pw)# enable
PE2(config-l2vpn-pw)# exit
PE2(config-l2vpn-p2p)# enable
PE2(config-l2vpn-p2p)# end
PE2# commit
PE2# confirm

Убедимся в установлении соседства по протоколу LDP и выведем информацию по статусу виртуального канала (pseudowire) между PE1 и PE2.

PE2# show mpls ldp neighbor
Peer LDP ID: 1.1.1.1; Local LDP ID 2.2.2.2
    State: Operational
    TCP connection: 1.1.1.1:646 - 2.2.2.2:34625
    Messages sent/received: 12/12
    Uptime: 00:03:50
    LDP discovery sources:
        2.2.2.2 -> 1.1.1.1
PE2# show mpls l2vpn pseudowire
Neighbor                                  PW ID            Type          Status
--------------------------------------- ----------      ----------       ------
1.1.1.1                                    100           Ethernet          Up

Соседство по протоколу LDP установлено, pseudowire перешел в статус 'UP'. Настройка l2vpn типа p2p завершена.

Алгоритм настройки L2VPN VPLS

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP).
2Создать сетевой мост в системе без указания IP-адреса (см. раздел Настройка Bridge).
3Создать pw-class в системе и осуществить переход в режим настройки параметров pw-class.

wlc-30(config-l2vpn)# pw-class <WORD>

<WORD> – имя pw-class длинной [1..31] символов.

4Добавить описание для pw-class (не обязательно).

wlc-30(config-l2vpn-pw-class)# description <LINE>

<LINE> – описание, задается в виде строки длинной [1..255] символов.

5

Установить значение MTU для pseudo-wire входящих в pw-class (не обязательно).

wlc-30(config-l2vpn-pw-class)# encapsulation
mpls mtu <MTU>

<MTU> – значение MTU, принимает значение в диапазоне [552..10000]

Значение по умолчанию: 1500.

6Отключить обмен status-tlv сообщениями (не обязательно).

wlc-30(config-l2vpn-pw-class)# encapsulation
mpls status-tlv disable

Значение по умолчанию: status-tlv enable.
7Создать VPLS-домен в системе и осуществить переход в режим настройки параметров VPLS-домена.

wlc-30(config-l2vpn)# vpls <NAME>

<NAME> – имя p2p-сервиса, задается строкой до 31 символа.

8Включить VPLS-туннель.

wlc-30(config-l2vpn-vpls)# enable


9Добавить бридж-домен.

wlc-30 (config-l2vpn-vpls)# bridge-group <ID>

<ID> – идентификатор бридж-домена, задается в виде числа в диапазоне [1..250].
10Задать транспортный режим (не обязательно).

wlc-30(config-l2vpn-vpls)# transport-mode
{ ethenet | vlan }

<ethernet> – режим, при котором при входе в pseudo-wire из заголовка удаляется 802.1Q тег;
<vlan> – режим, при котором 802.1Q тэг может быть сохранен при передаче через pseudo-wire.
Значение по умолчанию: ethernet

11Создать pseudo-wire и осуществить переход в режим настройки его параметров

wlc-30(config-l2vpn-vpls)# pw <PW_ID> <LSR_ID>

<PW_ID> – идентификатор psewdowire, задается в виде числа в диапазоне [1..4294967295 ]

<LSR_ID> – идентификатор LSR, до которого строится pseudo-wire, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]

12Добавить описание для pseudo-wire (не обязательно).

wlc-30(config-l2vpn-pw)# description <LINE>

<LINE> – описание, задается в виде строки длинной [1..255] символов.
13Задать pw-class для pseudo-wire

wlc-30(config-l2vpn-pw)# pw-class <WORD>

<WORD> – имя pw-class длинной [1..31] символов.

14Задать адрес LSR, до которого устанавливается pseudo-wire (Не обязательно если neighbor address совпадает с LSR_ID).

wlc-30(config-l2vpn-pw)# neighbor-address <ADDR>

<ADDR> – IP-адрес устройства, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. 
15

Включить pseudo-wire.

wlc-30(config-l2vpn-pw)# enable


16В случае если топология создаваемого VPLS-домена требует установить более одного pseudo-wire, повторить шаги с 10 по 14.
17В случае, если необходимо изменить параметры по умолчанию для targeted LDP-сессии, обратитесь к разделу  Конфигурирование параметров сессии в протоколе targeted-LDP .

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

Задача:

Настроить l2vpn таким образом чтобы контроллеры CE1, CE2, CE3 имели L2-связность через интерфейсы gi1/0/2.100 и gi1/0/4 (CE2).

Решение:

Предварительно необходимо:

  • Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);

  • Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
  • Организовать обмен маршрутами между PE1, PE2 и PE3 при помощи IGP-протокола (OSPF, IS-IS);

На контроллере PE1 создадим бридж-группу и включим ее:

PE1# configure
PE1(config)# bridge 10
PE1(config-bridge)# enable
PE1(config-bridge)# exit

Интерфейс в сторону CE1 включим в созданную бридж-группу:

PE1(config)# interface gigabitethernet 1/0/4.100
PE1(config-subif)# bridge-group 10
PE1(config-subif)# exit

Выставим на интерфейсе в сторону PE2 значение MTU равным 9600 для того, чтобы избежать ситуации с превышением MTU после инкапсуляции MPLS-заголовка, а также отключим межсетевой экран.

PE1#(config)# interface gigabitethernet 1/0/1
PE1(config-if-gi)# mtu 9600
PE1(config-if-gi)# ip firewall disable
PE1(config-if-gi)# exit

Разрешим прием пакетов с MPLS-заголовком на интерфейсе в сторону MPLS-сети (В данном примере интерфейс в сторону PE2):

PE1(config)# mpls
PE1(config-mpls)# forwarding interface gigabitethernet 1/0/1

Настроим протокол LDP и включим обнаружение соседей на интерфейсе в сторону PE2:

PE1(config-mpls)# ldp
PE1(config-ldp)# router-id 1.1.1.1
PE1(config-ldp)# address-family ipv4
PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
PE1(config-ldp-af-ipv4-if)# exit
PE1(config-ldp-af-ipv4)# transport-address 1.1.1.1
PE1(config-ldp-af-ipv4)# exit
PE1(config-ldp)# enable
PE1(config-ldp)# exit

Создадим pw-class. на основе которого в дальнейшем будет созданы виртуальные каналы (pw). Так как в данном примере на pw будут применяться параметры по умолчанию достаточно будет указать имя класса:

PE1(config-mpls)# l2vpn
PE1(config-l2vpn)# pw-class for_vpls1
PE1(config-l2vpn-pw-class)# exit

Создадим новый l2vpn типа vpls и добавим pw до устройств PE2 и PE3, идентификатор pw для удобства возьмем равным VID (в данном случае = 100):

PE1(config-l2vpn)# vpls vpls1
PE1(config-l2vpn-vpls)# bridge-group 10
PE1(config-l2vpn-vpls)# pw 100 2.2.2.2
PE1(config-l2vpn-pw)# pw-class for_vpls1
PE1(config-l2vpn-pw)# enable
PE1(config-l2vpn-pw)# exit
PE1(config-l2vpn-vpls)# pw 100 3.3.3.3
PE1(config-l2vpn-pw)# pw-class for_vpls1
PE1(config-l2vpn-pw)# enable
PE1(config-l2vpn-pw)# exit
PE1(config-l2vpn-vpls)# enable
PE1(config-l2vpn-vpls)# end

Применим созданную конфигурацию:

PE1# commit
PE1# confirm 

Проведем настройку контроллеров PE2 и PE3 по аналогии с PE1:

PE2# configure
PE2(config)# bridge 10
PE2(config-bridge)# enable
PE2(config-bridge)# exit
PE2(config)# interface gigabitethernet 1/0/4.100
PE2(config-subif)# bridge-group 10
PE2(config-subif)# exit
PE2(config)# interface gigabitethernet 1/0/2
PE2(config-if-gi)# mtu 9600
PE2(config-if-gi)# ip firewall disable
PE2(config-if-gi)# exit
PE2(config)# mpls
PE2(config-mpls)# forwarding interface gigabitethernet 1/0/1
PE2(config-mpls)# forwarding interface gigabitethernet 1/0/2
PE2(config-mpls)# ldp
PE2(config-ldp)# enable
PE2(config-ldp)# router-id 2.2.2.2
PE2(config-ldp)# address-family ipv4
PE2(config-ldp-af-ipv4)# transport-address 2.2.2.2
PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
PE2(config-ldp-af-ipv4-if)# exit
PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2
PE2(config-ldp-af-ipv4-if)# exit
PE2(config-ldp-af-ipv4)# exit
PE2(config-ldp)# exit
PE2(config-mpls)# l2vpn
PE2(config-l2vpn)# pw-class for_vpls1
PE2(config-l2vpn-pw-class)# exit
PE2(config-l2vpn)# vpls vpls1
PE2(config-l2vpn-vpls)# enable
PE2(config-l2vpn-vpls)# bridge-group 10
PE2(config-l2vpn-vpls)# pw 100 1.1.1.1
PE2(config-l2vpn-pw)# pw-class for_vpls1
PE2(config-l2vpn-pw)# enable
PE2(config-l2vpn-pw)# exit
PE2(config-l2vpn-vpls)# pw 100 3.3.3.3
PE2(config-l2vpn-pw)# pw-class for_vpls1
PE2(config-l2vpn-pw)# enable
PE2(config-l2vpn-pw)# end
PE2# commit
PE2# confirm
PE3(config)# bridge 10
PE3(config-bridge)# enable
PE3(config-bridge)# exit
PE3(config)# interface gigabitethernet 1/0/4.100
PE3(config-subif)# bridge-group 10
PE3(config-subif)# exit
PE3(config)# interface gigabitethernet 1/0/1
PE3(config-if-gi)# mtu 9600
PE3(config-if-gi)# ip firewall disable
PE3(config-if-gi)# exit
PE3(config)# mpls
PE3(config-mpls)# forwarding interface gigabitethernet 1/0/1
PE3(config-mpls)# exit
PE3(config)# mpls
PE3(config-mpls)# ldp
PE3(config-ldp)# enable
PE3(config-ldp)# router-id 3.3.3.3
PE3(config-ldp)# address-family ipv4
PE3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
PE3(config-ldp-af-ipv4-if)# exit
PE3(config-ldp-af-ipv4)# transport-address 3.3.3.3
PE3(config-ldp-af-ipv4)# exit
PE3(config-ldp)# exit
PE3(config-mpls)# l2vpn
PE3(config-l2vpn)# pw-class for_vpls
PE3(config-l2vpn-pw-class)# exit
PE3(config-l2vpn)# vpls vpls1
PE3(config-l2vpn-vpls)# enable
PE3(config-l2vpn-vpls)# bridge-group 10
PE3(config-l2vpn-vpls)# pw 100 2.2.2.2
PE3(config-l2vpn-pw)# pw-class for_vpls
PE3(config-l2vpn-pw)# enable
PE3(config-l2vpn-pw)# exit
PE3(config-l2vpn-vpls)# pw 100 1.1.1.1
PE3(config-l2vpn-pw)# pw-class for_vpls
PE3(config-l2vpn-pw)# enable
PE3(config-l2vpn-pw)# end
PE3# commit
PE3# confirm

Убедимся в установлении соседства по протоколу LDP и выведем информацию по статусу виртуального канала (pseudowire) между PE1, PE2 и PE3:

PE3# show mpls ldp neighbor
Peer LDP ID: 1.1.1.1; Local LDP ID 3.3.3.3
    State: Operational
    TCP connection: 1.1.1.1:646 - 3.3.3.3:45979
    Messages sent/received: 22/22
    Uptime: 00:13:16
    LDP discovery sources:
        3.3.3.3 -> 1.1.1.1
Peer LDP ID: 2.2.2.2; Local LDP ID 3.3.3.3
    State: Operational
    TCP connection: 2.2.2.2:646 - 3.3.3.3:59627
    Messages sent/received: 22/22
    Uptime: 00:13:20
    LDP discovery sources:
        3.3.3.3 -> 2.2.2.2
        gigabitethernet 1/0/1
PE3# show mpls l2vpn pseudowire
Neighbor                                   PW ID    Type          Status
--------------------------------------- ----------      ----------       ------
1.1.1.1                                      100        Ethernet     Up
2.2.2.2                                      100        Ethernet     Up

Соседство по протоколу LDP установлено, pseudowire перешел в статус 'UP'. Настройка l2vpn завершена.

Настройка сервиса L2VPN Kompella mode

В отличии от Martini mode, где вся работа ложится на LDP, в данном режиме LDP отводится только работа с транспортными метками. Автообнаружение и построение псевдопроводного соединения возложено на протокол BGP.

Алгоритм настройки L2VPN VPLS

ШагОписаниеКомандаКлючи
1Настроить протокол LDP (см. раздел Конфигурирование протокола LDP).

2Создать сетевой мост в системе без указания IP-адреса (см. раздел Настройка Bridge).

3Создать VPLS-домен в системе и осуществить переход в режим настройки параметров vpls-домена.

wlc-30(config-l2vpn)# vpls <NAME>

<NAME> – имя p2p-сервиса, задается строкой до 31 символа.

4Включить VPLS-туннель.

wlc-30(config-l2vpn-vpls)# enable


5Добавить бридж-домен.

wlc-30(config-l2vpn-vpls)# bridge-group <ID>

<ID> – идентификатор бридж-домена, задается в виде числа в диапазоне [1..250].

6Перейти в контекст настройки autodiscovery bgp.

wlc-30(config-l2vpn-vpls)# autodiscovery bgp


7Указать route distinguisher для данного экземпляра VPLS.

wlc-30(config-bgp)# rd <RD>


<RD> – значение Route distinguisher, задается в одном из следующем виде:

  • <ASN>:<nn> – где <ASN> – принимает значение [1..65535], nn - принимает значение [1..65535];
  • <ADDR>:<nn> – где <ADDR> имеет вид – AAA.BBB.CCC.DDD/EE и AAA-DDD принимают значения [0..255], а nn – принимает значение [1..65535];
  • <4ASN>:<nn> – где <4ASN> – принимает значение [1..4294967295], nn - принимает значение [1..65535];
8Указать route target import для данного экземпляра VPLS.

wlc-30(config-bgp)# route-target import <RT>

<RT> – значение route-target, задается в одном из следующих видов:

  • <ASN>:<nn> – где <ASN> – принимает значение [1..65535], nn - принимает значение [1..65535];
  • <ADDR>:<nn> – где <ADDR> имеет вид – AAA.BBB.CCC.DDD/EE и AAA-DDD принимают значения [0..255], а nn – принимает значение [1..65535];
  • <4BASN>:<nn> – где <4ASN> – принимает значение [1..4294967295], nn - принимает значение [1..65535];
9Указать route target export для данного экземпляра VPLS.

wlc-30(config-bgp)# route-target export <RT>

<RT> – значение route-target, задается в одном из следующих видов:

  • <ASN>:<nn> – где <ASN> – принимает значение [1..65535], nn – принимает значение [1..65535];
  • <ADDR>:<nn> – где <ADDR> имеет вид – AAA.BBB.CCC.DDD/EE и AAA-DDD принимают значения [0..255], а nn – принимает значение [1..65535];
  • <4BASN>:<nn> – где <4ASN> – принимает значение [1..4294967295], nn – принимает значение [1..65535];
10

Указать ve id.

wlc-30(config-bgp)# ve id <ID>

<ID> – идентификатор экземпляра VPLS, задается в виде числа в диапазоне [1..16384].
11Указать vpn id.

wlc-30 (config-bgp)# vpn id <ID>

<ID> – идентификатор VPN, задается в виде числа в диапазоне [1..4294967295].
12Указать ve range (не обязательно).

wlc-30 (config-bgp)# ve range <RANGE>

<RANGE> – диапазон идентификаторов пограничных устройств VPLS [8..100].
13Указать mtu (не обязательно).

wlc-30 (config-bgp)# mtu <VALUE>

<VALUE> – значение MTU [552..10000].
14Включить игнорирование типа инкапсуляции (не обязательно).

wlc-30(config-bgp)# ignore encapsulation-mismatch


15

Включить игнорирование значений MTU (не обязательно).

wlc-30(config-bgp)# ignore mtu-mismatch


16В контексте настройки address-family l2vpn vpls протокола BGP включить передачу расширенных атрибутов.

wlc-30(config-bgp-neighbor-af)# send-community extended


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

Задача:

Настроить L2VPN-сервис: все CE-устройства должны работать в рамках одного широковещательного домена.


Решение:

Предварительно необходимо:

  • Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);

  • Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
  • Организовать обмен маршрутами между PE1, PE2, PE3 и RR при помощи IGP-протокола (OSPF, IS-IS).

Первым делом настроим устройство RR:

hostname RR

system jumbo-frames

router ospf 1
area 0.0.0.0
enable
exit
enable
exit

interface gigabitethernet 1/0/2
mtu 9500
ip firewall disable
ip address 10.30.0.2/30
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/3
mtu 9500
ip firewall disable
ip address 10.31.0.2/30
ip ospf instance 1
ip ospf
exit
interface loopback 1
ip address 10.10.0.4/32
ip ospf instance 1
ip ospf
exit
mpls
ldp
router-id 10.10.0.4
address-family ipv4
interface gigabitethernet 1/0/2
exit
interface gigabitethernet 1/0/3
exit
exit
enable
exit
forwarding interface gigabitethernet 1/0/2
forwarding interface gigabitethernet 1/0/3
exit

Настроим BGP Route Reflector для address family l2vpn:

RR(config)# router bgp 65500
RR(config-bgp)# router-id 10.10.0.4
RR(config-bgp)# neighbor 10.10.0.1
RR(config-bgp-neighbor)# remote-as 65500
RR(config-bgp-neighbor)# route-reflector-client
RR(config-bgp-neighbor)# update-source 10.10.0.4
RR(config-bgp-neighbor)# address-family l2vpn vpls
RR(config-bgp-neighbor-af)# send-community extended
RR(config-bgp-neighbor-af)# enable
RR(config-bgp-neighbor-af)# exit
RR(config-bgp-neighbor)# enable
RR(config-bgp-neighbor)# exit
RR(config-bgp)# neighbor 10.10.0.2
RR(config-bgp-neighbor)# remote-as 65500
RR(config-bgp-neighbor)# route-reflector-client
RR(config-bgp-neighbor)# update-source 10.10.0.4
RR(config-bgp-neighbor)# address-family l2vpn vpls
RR(config-bgp-neighbor-af)# send-community extended
RR(config-bgp-neighbor-af)# enable
RR(config-bgp-neighbor-af)# exit
RR(config-bgp-neighbor)# enable
RR(config-bgp-neighbor)# exit
RR(config-bgp)# neighbor 10.10.0.3
RR(config-bgp-neighbor)# remote-as 65500
RR(config-bgp-neighbor)# route-reflector-client
RR(config-bgp-neighbor)# update-source 10.10.0.4
RR(config-bgp-neighbor)# address-family l2vpn vpls
RR(config-bgp-neighbor-af)# send-community extended
RR(config-bgp-neighbor-af)# enable
RR(config-bgp-neighbor-af)# exit
RR(config-bgp-neighbor)# enable
RR(config-bgp-neighbor)# exit
RR(config-bgp)# enable

Переходим к настройке протокола BGP на PE-устройствах:

Предварительная конфигурация
hostname PE1

system jumbo-frames

router ospf 1
area 0.0.0.0
enable
exit
enable
exit

interface gigabitethernet 1/0/1
mtu 9500
Предварительная конфигурация
ip firewall disable
ip address 10.20.0.1/30
ip ospf instance 1
ip ospfexit
interface gigabitethernet 1/0/2
mtu 9500
ip firewall disable
ip address 10.30.0.1/30
ip ospf instance 1
ip ospf
exitinterface gigabitethernet 1/0/3
mtu 9500
ip firewall disable
ip address 10.22.0.1/30
ip ospf instance 1
ip ospf
exit
interface loopback 1
ip address 10.10.0.1/32
ip ospf instance 1
ip ospf
exit
mpls
ldp
router-id 10.10.0.1
address-family ipv4
interface gigabitethernet 1/0/1
exit
interface gigabitethernet 1/0/2
exit
interface gigabitethernet 1/0/3
exit

exit

enable

exit
forwarding interface gigabitethernet 1/0/1
forwarding interface gigabitethernet 1/0/2
forwarding interface gigabitethernet 1/0/3
exit

Настройка протокола BGP:

PE1(config)# router bgp 65500
PE1(config-bgp)# neighbor 10.10.0.4
PE2(config-bgp)# router-id 10.10.0.1
PE1(config-bgp-neighbor)# remote-as 65500
PE1(config-bgp-neighbor)# update-source 10.10.0.1
PE1(config-bgp-neighbor)# address-family l2vpn vpls
PE1(config-bgp-neighbor-af)# send-community extended
PE1(config-bgp-neighbor-af)# enable
PE1(config-bgp-neighbor-af)# exit
PE1(config-bgp-neighbor)# enable
PE1(config-bgp-neighbor)# exit
PE1(config-bgp)# enable
PE1(config-bgp)# exit

Проверим, что BGP-сессия успешно установлена с RR:

PE1# show bgp neighbors
BGP neighbor is 10.10.0.4
BGP state: Established
Neighbor address: 10.10.0.4
Neighbor AS: 65500
Neighbor ID: 10.10.0.4
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: internal multihop AS4
Source address: 10.10.0.1
Weight: 0
Hold timer: 110/180
Keepalive timer: 21/60
Uptime: 7375 s

Настройка BGP на PE2:

Предварительная конфигурация
hostname PE2

system jumbo-frames

router ospf 1
area 0.0.0.0
enable
exit
enable
exit
Предварительная конфигурация
interface gigabitethernet 1/0/1
mtu 9500
ip firewall disable
ip address 10.20.0.2/30
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/2
mtu 9500
ip firewall disable
ip address 10.21.0.1/30
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/3
mtu 9500
ip firewall disable
ip address 10.31.0.1/30
ip ospf instance 1
ip ospf
exit
interface loopback 1
ip address 10.10.0.2/32
ip ospf instance 1
ip ospf
exit
mpls
ldp
router-id 10.10.0.2
address-family ipv4
interface gigabitethernet 1/0/1
exit
interface gigabitethernet 1/0/2
exit
interface gigabitethernet 1/0/3
exit
exit

enable

exit
forwarding interface gigabitethernet 1/0/1
forwarding interface gigabitethernet 1/0/2
forwarding interface gigabitethernet 1/0/3
exit
PE2(config)# router bgp 65500
PE2(config-bgp)# router-id 10.10.0.2
PE2(config-bgp)# neighbor 10.10.0.4
PE2(config-bgp-neighbor)# remote-as 65500
PE2(config-bgp-neighbor)# update-source 10.10.0.2
PE2(config-bgp-neighbor)# address-family l2vpn vpls
PE2(config-bgp-neighbor-af)# send-community extended
PE2(config-bgp-neighbor-af)# enable
PE2(config-bgp-neighbor-af)# exit
PE2(config-bgp-neighbor)# enable
PE2(config-bgp-neighbor)# exit
PE2(config-bgp)# enable
PE2(config-bgp)# exit

Убедимся, что сессия с RR поднялась успешно:

PE2# show bgp neighbors
BGP neighbor is 10.10.0.4
BGP state: Established
Neighbor address: 10.10.0.4
Neighbor AS: 65500
Neighbor ID: 10.10.0.4
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: internal multihop AS4
Source address: 10.10.0.2
Weight: 0
Hold timer: 113/180
Keepalive timer: 56/60
Uptime: 47 s

Настройка BGP на PE3:

Предварительная конфигурация
hostname PE3

system jumbo-frames

router ospf 1
area 0.0.0.0
enable
exit
enable
exit

interface gigabitethernet 1/0/2
mtu 9500
ip firewall disable
ip address 10.21.0.2/30
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/3
mtu 9500
ip firewall disable
ip address 10.22.0.2/30
ip ospf instance 1
ip ospf
exit
interface loopback 1
ip address 10.10.0.3/24
ip ospf instance 1
ip ospf
exit
mpls
ldp
router-id 10.10.0.3
address-family ipv4
interface gigabitethernet 1/0/2
exit
interface gigabitethernet 1/0/3
exit
exit
enable
exit
forwarding interface gigabitethernet 1/0/2
forwarding interface gigabitethernet 1/0/3
exit
PE3(config)# router bgp 65500
PE3(config-bgp)# router-id 10.10.0.3
PE3(config-bgp)# neighbor 10.10.0.4
PE3(config-bgp-neighbor)# remote-as 65500
PE3(config-bgp-neighbor)# update-source 10.10.0.3
PE3(config-bgp-neighbor)# address-family l2vpn vpls
PE3(config-bgp-neighbor-af)# send-community extended
PE3(config-bgp-neighbor-af)# enable
PE3(config-bgp-neighbor-af)# exit
PE3(config-bgp-neighbor)# enable
PE3(config-bgp-neighbor)# exit
PE3(config-bgp)# enable
PE3(config-bgp)# exit

Проверим, что сессия BGP установлена успешно:

PE3# show bgp neighbors
BGP neighbor is 10.10.0.4
BGP state: Established
Neighbor address: 10.10.0.4
Neighbor AS: 65500
Neighbor ID: 10.10.0.4
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: internal multihop AS4
Source address: 10.10.0.3
Weight: 0
Hold timer: 141/180
Keepalive timer: 27/60
Uptime: 77 s

Следующим этапом на каждом PE-устройстве создадим бридж-домен, и включим в него интерфейс (Attachment circuit , AC), смотрящий в сторону CE:

PE1:

PE1(config)# bridge 1
PE1(config-bridge)# enable 
PE1(config-bridge)# exit
PE1(config)# interface gigabitethernet 1/0/4
PE1(config-if-gi)# mode switchport 
PE1(config-if-gi)# bridge-group 1

Проверим, что интерфейс включен в бридж-домен:

PE1# show interfaces bridge 
Bridges      Interfaces                                                       
----------   --------------------------------------------------------------   
bridge 1     gi1/0/4 
                                                         
PE1# sh interfaces status bridge 1
Interface 'bridge 1' status information:
 Description:          --
 Operational state:    Up
 Administrative state: Up
 Supports broadcast:   Yes
 Supports multicast:   Yes
 MTU:                  1500
 MAC address:          a8:f9:4b:ac:4d:15
 Last change:          4 minutes and 22 seconds
 Mode:                 Routerport

PE2:

PE2(config)# bridge 1
PE2(config-bridge)# enable 
PE2(config-bridge)# exit
PE2(config)# interface gigabitethernet 1/0/4
PE2(config-if-gi)# mode switchport 
PE2(config-if-gi)# bridge-group 1
PE2# show interfaces bridge 1
Bridges      Interfaces                                                       
----------   --------------------------------------------------------------   
bridge 1     gi1/0/4  
                                                        
PE2# sh interfaces status bridge 1
Interface 'bridge 1' status information:
 Description:          --
 Operational state:    Up
 Administrative state: Up
 Supports broadcast:   Yes
 Supports multicast:   Yes
 MTU:                  1500
 MAC address:          a8:f9:4b:ad:f2:45
 Last change:          10 seconds
 Mode:                 routerport

PE3:

PE3(config)# bridge 1
PE3(config-bridge)# enable 
PE3(config-bridge)# exit
PE3(config)# interface gigabitethernet 1/0/4
PE3(config-if-gi)# mode switchport 
PE3(config-if-gi)# bridge-group 1
PE3# show interfaces bridge 
Bridges      Interfaces                                                       
----------   --------------------------------------------------------------   
bridge 1     gi1/0/4                                                          
PE3# sh interfaces status bridge 
Interface            Admin   Link    MTU      MAC address          Last change                 Mode         
                     state   state                                                                          
------------------   -----   -----   ------   ------------------   -------------------------   ----------   
bridge 1             Up      Up      1500     a8:f9:4b:ac:df:f0    1 minute and 21 seconds     Routerport   

PE3# sh interfaces status bridge 1
Interface 'bridge 1' status information:
 Description:          --
 Operational state:    Up
 Administrative state: Up
 Supports broadcast:   Yes
 Supports multicast:   Yes
 MTU:                  1500
 MAC address:          a8:f9:4b:ac:df:f0
 Last change:          1 minute and 24 seconds
 Mode:                 Routerport

Следующим шагом выполним настройку VPLS:

PE1:

Переходим в контекст настройки L2VPN и включим в него заранее созданный бридж-домен.

PE1(config)# mpls 
PE1(config-mpls)# l2vpn 
PE1(config-l2vpn)# vpls l2vpn
PE1(config-l2vpn-vpls)# bridge-group 1

Укажем RD, RT, VE-ID, VPN ID согласно схеме сети и активируем сервис:

В некоторых случаях можно отказаться от ввода таких параметров как RD и RT: если указать только VPN ID, то они будут сформированы следующим образом:  <номер AS> : <vpn-id>.

Например, у нас есть номер автономной системы AS 65550, vpn-id мы указали 10, тогда cгенерируются следующие параметры:

RD — 65550: 10.

RT import/export — 65550:10.

PE1(config-l2vpn-vpls)# autodiscovery bgp
PE1(config-bgp)# rd 65500:100
PE1(config-bgp)# route-target import 65500:100
PE1(config-bgp)# route-target export 65500:100
PE1(config-bgp)# ve id 1
PE1(config-bgp)# vpn id 1
PE1(config-bgp)# exit
PE1(config-l2vpn-vpls)# enable 

После активации сервиса проверим, что в таблице l2vpn появилась маршрутная информация, и она анонсируется на RR:

PE1# show bgp l2vpn vpls all 
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Codes Route Distinguisher   VID   VBO   VBS   Next hop        Metric     LocPrf     Weight Path               
----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ -------------------
*>    65500:100             1     1     10    --              --         --         --   


PE1# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes 
Origin codes: i - IGP, e - EGP, ? - incomplete

Route Distinguisher   VID   VBO   VBS   Next hop        Metric     LocPrf     Path                  
--------------------- ----- ----- ----- --------------- ---------- ---------- ----------------------
65500:100             1     1     10    10.10.0.1       --         100        i


* Подробный вывод анонсированного маршрута *

PE1# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes  ve-id 1 block
-offset 1
BGP routing table entry for 65500:100 VE ID 1 VE Block Offset 1
    VE Block Size:      10
    Label Base:         86
    Next hop:           10.10.0.1
    AS path:            --
    Origin:             IGP
    Local preference:   100
    Extended Community: RT:65500:100
    Layer2-info:        encaps (VPLS), control flags(0x00), MTU (1500)

Переходим к настройке PE2:

PE2(config-mpls)# l2vpn 
PE2(config-l2vpn)# vpls l2vpn
PE2(config-l2vpn-vpls)# bridge-group 1
PE2(config-l2vpn-vpls)# autodiscovery bgp 
PE2(config-bgp)# rd 65500:100
PE2(config-bgp)# route-target export 65500:100
PE2(config-bgp)# route-target import  65500:100
PE2(config-bgp)# vpn id 2
PE2(config-bgp)# ve id 2
PE2(config-bgp)# exit
PE2(config-l2vpn-vpls)# enable 

Проверяем, что PE2 анонсирует маршрутную информацию на RR:

PE2# show bgp l2vpn vpls all  neighbor 10.10.0.4 advertise-routes 
Origin codes: i - IGP, e - EGP, ? - incomplete

Route Distinguisher   VID   VBO   VBS   Next hop        Metric     LocPrf     Path                  
--------------------- ----- ----- ----- --------------- ---------- ---------- ----------------------
65500:100             2     1     10    10.10.0.2       --         100        i

В таблице l2vpn видны как и свои маршруты, так и от PE1:

PE2# show bgp l2vpn vpls all 
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Codes Route Distinguisher   VID   VBO   VBS   Next hop        Metric     LocPrf     Weight Path               
----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ -------------------
*>    65500:100             2     1     10    --              --         --         --     
*>i   65500:100             1     1     10    10.10.0.1       --         100        0      i

Просмотреть вычисленные сервисные метки можно следующим образом:

1)
PE2# show mpls l2vpn bindings
Neighbor: 10.10.0.1, PW ID: 2, VE ID: 1
Local label: 45
Encasulation Type: VPLS
Control flags: 0x00
MTU: 1500
Remote label: 87
Encasulation Type: VPLS
Control flags: 0x00
MTU: 1500
2)
PE2# show mpls forwarding-table
Local       Outgoing    	  Prefix              Outgoing       		  Next Hop
label       label             or tunnel ID        Interface
--------    --------       	  -----------------   ----------------        ----------------------------------

45          87                PW ID 2                   --                10.10.0.1

Проверим состояние сервиса:

PE2# show mpls l2vpn vpls l2vpn 
VPLS: l2vpn
    bridge 1:
        MTU:    1500
        Status: Up
    ACs:
      gigabitethernet 1/0/4:
        MTU:    1500
        Status: Up
    PWs:
      PW ID 2, Neighbor 10.10.0.1:
        MTU:         1500
        Last change: 00:21:33
        Status:      Up

Переходим к настройке PE3:

PE3#    config
PE3(config)# mpls 
PE3(config-mpls)# l2vpn 
PE3(config-l2vpn)# vpls l2vpn
PE3(config-l2vpn-vpls)# bridge-group 1
PE3(config-l2vpn-vpls)# autodiscovery bgp 
PE3(config-bgp)# rd 65500:100
PE3(config-bgp)# route-target export 65500:100
PE3(config-bgp)# route-target import  65500:100
PE3(config-bgp)# ve id 3
PE3(config-bgp)# vpn id 3
PE3(config-bgp)# exit
PE3(config-l2vpn-vpls)# enable

Проверяем маршрутную информацию на PE3:

PE3# show bgp l2vpn vpls all 
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Codes Route Distinguisher   VID   VBO   VBS   Next hop        Metric     LocPrf     Weight Path               
----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ -------------------
*>    65500:100             3     1     10    --              --         --         --     
*>i   65500:100             2     1     10    10.10.0.2       --         100        0      i
*>i   65500:100             1     1     10    10.10.0.1       --         100        0      i

Убедимся, что PE3 анонсирует маршрутную информацию на RR:

PE3# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes 
Origin codes: i - IGP, e - EGP, ? - incomplete

Route Distinguisher   VID   VBO   VBS   Next hop        Metric     LocPrf     Path                  
--------------------- ----- ----- ----- --------------- ---------- ---------- ----------------------
65500:100             3     1     10    10.10.0.3       --         100        i

Проверим, что псевдопровод построен до обеих PE и находится в статусе "UP":

PE3# show mpls l2vpn vpls l2vpn 
VPLS: l2vpn
    bridge 1:
        MTU:    1500
        Status: Up
    ACs:
      gigabitethernet 1/0/4:
        MTU:    1500
        Status: Up
    PWs:
      PW ID 3, Neighbor 10.10.0.2:
        MTU:         1500
        Last change: 00:06:08
        Status:      Up
      PW ID 3, Neighbor 10.10.0.1:
        MTU:         1500
        Last change: 00:06:08
        Status:      Up

Проверим сетевую доступность клиентских устройств (СЕ):

CE3# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
!!!!!
--- 192.168.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.173/0.208/0.290/0.045 ms
CE3# ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
!!!!!
--- 192.168.0.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.158/0.204/0.255/0.032 ms

PE3# sh mac address-table bridge 1 
VID     MAC Address          Interface                        Type      
-----   ------------------   ------------------------------   -------   
--      a8:f9:4b:aa:11:08    gigabitethernet 1/0/4            Dynamic   
--      a8:f9:4b:aa:11:06    dypseudowire 3_10.10.0.1         Dynamic   
--      a8:f9:4b:aa:11:07    dypseudowire 3_10.10.0.2         Dynamic   
3 valid mac entries

Настройка L2VPN-сервиса завершена.

Настройка сервиса L3VPN

Сервис L3VPN позволяет объединить распределенные клиентские IP-сети и обеспечить передачу трафика между ними в рамках единой VRF.

В текущей реализации протокола MP-BGP поддержана передача только VPN-IPv4 маршрутов (AFI = 1, SAFI = 128).


Алгоритм настройки

ШагОписаниеКомандаКлючи
1

Настроить адресацию и один из протоколов IGP на всех P- и PE-устройствах



2

Настроить распространение транспортных меток по протоколу LDP (см. раздел Конфигурирование протокола LDP)



3

Создать VRF

wlc-30(config)# ip vrf <VRF>

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.
4Указать route distinguisher для данного VRF

wlc-30(config-vrf)# rd <RD>

<RD> – значение Route distinguisher, задается в одном из следующем виде:

  • <ASN>:<nn> – где <ASN> - принимает значение [1..65535], nn - принимает значение [1..65535];
  • <ADDR>:<nn> – где <ADDR> имеет вид – AAA.BBB.CCC.DDD/EE и AAA-DDD принимают значения [0..255], а nn - принимает значение [1..65535];
  • <4ASN>:<nn> – где <4ASN> – принимает значение [1..4294967295], nn - принимает значение [1..65535];
5Указать route target import для данного VRF

wlc-30(config-vrf)# route-target import <RT>

<RT> – значение route-target, задается в одном из следующих видов:

  • <ASN>:<nn> – где <ASN> – принимает значение [1..65535], nn - принимает значение [1..65535];
  • <ADDR>:<nn> – где <ADDR> имеет вид – AAA.BBB.CCC.DDD/EE и AAA-DDD принимают значения [0..255], а nn - принимает значение [1..65535];
  • <4BASN>:<nn> – где <4ASN> – принимает значение [1..4294967295], nn – принимает значение [1..65535];
6Указать route target export для данного VRF

wlc-30(config-vrf)# route-target export <RT>

<RT> – значение route-target, задается в одном из следующем виде:

  • <ASN>:<nn> – где <ASN> – принимает значение [1..65535], nn - принимает значение [1..65535];
  • <ADDR>:<nn> – где <ADDR> имеет вид – AAA.BBB.CCC.DDD/EE и AAA-DDD принимают значения [0..255], а nn – принимает значение [1..65535];
  • <4BASN>:<nn> – где <4ASN> – принимает значение [1..4294967295], nn – принимает значение [1..65535];
7Указать разрешенное количество маршрутов для данного VRF

wlc-30(config-vrf)# ip protocols <PROTOCOLS> max-routes <VALUE>

<PROTOCOL> – вид протокола, принимает значения: rip (только в глобальном режиме), ospf, isis, bgp;

<VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:

  • BGP [1..2500000],
  • OSPF и IS-IS [1..300000].
8

В рамках настройки address-family VPNv4 протокола BGP включить передачу расширенный атрибутов

wlc-30(config-bgp-neighbor-af)# send-community extended


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

Задача:

Настроить L3VPN на базе технологии MPLS между WLC-30_A и WLC-30_C. Конечным результатом настройки является появление связности между узлами, подключенными к VRF на различных устройствах сети (то есть объединение VRF на разных устройствах через MPLS-транспорт). При этом должна быть обеспечена передача сервисных MPLS-меток для сервиса L3VPN посредством MP-BGP и передача транспортных меток для достижения nexthop-адресов полученных BGP-маршрутов.

Решение:
Настройка адресации и включение IGP на P/PE устройствах:
WLC-30_A
wlc-30-1(config)# router ospf log-adjacency-changes
wlc-30-1(config)# router ospf 1
wlc-30-1(config-ospf)# router-id 1.1.1.1
wlc-30-1(config-ospf)# area 0.0.0.0
wlc-30-1(config-ospf-area)# enable
wlc-30-1(config-ospf-area)# exit
wlc-30-1(config-ospf)# enable
wlc-30-1(config-ospf)# exit
wlc-30-1(config)#  
wlc-30-1(config)# interface loopback 1
wlc-30-1(config-loopback)# ip address 1.1.1.1/32
wlc-30-1(config-loopback)# ip ospf instance 1
wlc-30-1(config-loopback)# ip ospf
wlc-30-1(config-loopback)# exit
wlc-30-1(config)#  
wlc-30-1(config)# interface gigabitethernet 1/0/1.10
wlc-30-1(config-subif)# ip firewall disable
wlc-30-1(config-subif)# ip address 10.10.10.1/30
wlc-30-1(config-subif)# ip ospf instance 1
wlc-30-1(config-subif)# ip ospf
wlc-30-1(config-subif)# exit
wlc-30-1(config)#  
wlc-30-1(config)# interface gigabitethernet 1/0/1.40
wlc-30-1(config-subif)# ip firewall disable
wlc-30-1(config-subif)# ip address 40.40.40.1/30
wlc-30-1(config-subif)# ip ospf instance 1
wlc-30-1(config-subif)# ip ospf
wlc-30-1(config-subif)# exit
wlc-30-1(config)#  
wlc-30-1(config)# system jumbo-frames
wlc-30-1(config)# do commit
wlc-30-1(config)# do confirm
WLC-30_B
wlc-30-2(config)# router ospf log-adjacency-changes
wlc-30-2(config)# router ospf 1
wlc-30-2(config-ospf)# router-id 2.2.2.2
wlc-30-2(config-ospf)# area 0.0.0.0
wlc-30-2(config-ospf-area)# enable
wlc-30-2(config-ospf-area)# exit
wlc-30-2(config-ospf)# enable
wlc-30-2(config-ospf)# exit
wlc-30-2(config)# 
wlc-30-2(config)# interface loopback 1
wlc-30-2(config-loopback)# ip address 2.2.2.2/32
wlc-30-2(config-loopback)# ip ospf instance 1
wlc-30-2(config-loopback)# ip ospf
wlc-30-2(config-loopback)# exit
wlc-30-2(config)# 
wlc-30-2(config)# interface gigabitethernet 1/0/1.10
wlc-30-2(config-subif)# ip firewall disable
wlc-30-2(config-subif)# ip address 10.10.10.2/30
wlc-30-2(config-subif)# ip ospf instance 1
wlc-30-2(config-subif)# ip ospf
wlc-30-2(config-subif)# exit
wlc-30-2(config)# 
wlc-30-2(config)# interface gigabitethernet 1/0/1.20
wlc-30-2(config-subif)# ip firewall disable
wlc-30-2(config-subif)# ip address 20.20.20.2/30
wlc-30-2(config-subif)# ip ospf instance 1
wlc-30-2(config-subif)# ip ospf
wlc-30-2(config-subif)# exit
wlc-30-2(config)# 
wlc-30-2(config)# system jumbo-frames
wlc-30-2(config)# do commit 
wlc-30-2(config)# do confirm
WLC-30_C
wlc-30-3(config)# router ospf log-adjacency-changes
wlc-30-3(config)# router ospf 1
wlc-30-3(config-ospf)# router-id 3.3.3.3
wlc-30-3(config-ospf)# area 0.0.0.0
wlc-30-3(config-ospf-area)# enable
wlc-30-3(config-ospf-area)# exit
wlc-30-3(config-ospf)# enable
wlc-30-3(config-ospf)# exit
wlc-30-3(config)#
wlc-30-3(config)# interface loopback 1
wlc-30-3(config-loopback)# ip address 3.3.3.3/32
wlc-30-3(config-loopback)# ip ospf instance 1
wlc-30-3(config-loopback)# ip ospf
wlc-30-3(config-loopback)# exit
wlc-30-3(config)#
wlc-30-3(config)# interface gigabitethernet 1/0/1.20
wlc-30-3(config-subif)# ip firewall disable
wlc-30-3(config-subif)# ip address 20.20.20.1/30
wlc-30-3(config-subif)# ip ospf instance 1
wlc-30-3(config-subif)# ip ospf
wlc-30-3(config-subif)# exit
wlc-30-3(config)#
wlc-30-3(config)# interface gigabitethernet 1/0/1.30
wlc-30-3(config-subif)# ip firewall disable
wlc-30-3(config-subif)# ip address 30.30.30.1/30
wlc-30-3(config-subif)# ip ospf instance 1
wlc-30-3(config-subif)# ip ospf
wlc-30-3(config-subif)# exit
wlc-30-3(config)#
wlc-30-3(config)# system jumbo-frames
wlc-30-3(config)# do commit
wlc-30-3(config)# do confirm


WLC-30_D
wlc-30-4(config)# router ospf log-adjacency-changes
wlc-30-4(config)# router ospf 1
wlc-30-4(config-ospf)# router-id 4.4.4.4
wlc-30-4(config-ospf)# area 0.0.0.0
wlc-30-4(config-ospf-area)# enable
wlc-30-4(config-ospf-area)# exit
wlc-30-4(config-ospf)# enable
wlc-30-4(config-ospf)# exit
wlc-30-4(config)# 
wlc-30-4(config)# interface loopback 1
wlc-30-4(config-loopback)# ip address 4.4.4.4/32
wlc-30-4(config-loopback)# ip ospf instance 1
wlc-30-4(config-loopback)# ip ospf
wlc-30-4(config-loopback)# exit
wlc-30-4(config)# 
wlc-30-4(config)# interface gigabitethernet 1/0/1.40
wlc-30-4(config-subif)# ip firewall disable
wlc-30-4(config-subif)# ip address 40.40.40.2/30
wlc-30-4(config-subif)# ip ospf instance 1
wlc-30-4(config-subif)# ip ospf
wlc-30-4(config-subif)# exit
wlc-30-4(config)# 
wlc-30-4(config)# interface gigabitethernet 1/0/1.30
wlc-30-4(config-subif)# ip firewall disable
wlc-30-4(config-subif)# ip address 30.30.30.2/30
wlc-30-4(config-subif)# ip ospf instance 1
wlc-30-4(config-subif)# ip ospf
wlc-30-4(config-subif)# exit
wlc-30-4(config)# 
wlc-30-4(config)# system jumbo-frames
wlc-30-4(config)# do commit
wlc-30-4(config)# do confirm

Необходимо убедиться, что протокол OSPF запущен на каждом устройстве:

wlc-30-1# show ip ospf neighbors


Router ID        Pri  State          DTime  Interface      Router IP
---------        ---  -----          -----  -------------  ---------
2.2.2.2          128  Full/BDR       00:39  gi1/0/1.10     10.10.10.2
4.4.4.4          128  Full/BDR       00:32  gi1/0/1.40     40.40.40.2


wlc-301# show ip ospf
O       40.40.40.0/30      	[150/10]          dev gi1/0/1.40                    [ospf1 1970-01-08]  (1.1.1.1)
O     * 30.30.30.0/30    	[150/20]          via 40.40.40.2 on gi1/0/1.40      [ospf1 1970-01-08]  (3.3.3.3)
O       1.1.1.1/32          [150/0]           dev lo1      						[ospf1 1970-01-08]  (1.1.1.1)
O     * 4.4.4.4/32          [150/10]          via 40.40.40.2 on gi1/0/1.40      [ospf1 1970-01-08]  (4.4.4.4)
O     * 20.20.20.0/30     	[150/20]          via 10.10.10.2 on gi1/0/1.10      [ospf1 22:05:45]  	(3.3.3.3)
O       10.10.10.0/30      	[150/10]          dev gi1/0/1.10                    [ospf1 22:05:33]  	(1.1.1.1)
O     * 3.3.3.3/32          [150/20]          multipath                         [ospf1 22:05:45]  	(3.3.3.3)
                            				  via 40.40.40.2 on gi1/0/1.40 weight 1
O     * 2.2.2.2/32          [150/10]          via 10.10.10.2 on gi1/0/1.10      [ospf1 22:05:45]  	(2.2.2.2)
Настройка LDP на P/PE устройствах:
WLC-30_A
wlc-30-1# config
wlc-30-1(config)# mpls
wlc-30-1(config-mpls)# ldp
wlc-30-1(config-ldp)# address-family ipv4
wlc-30-1(config-ldp-af-ipv4)# transport-address 1.1.1.1
wlc-30-1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10
wlc-30-1(config-ldp-af-ipv4-if)# exit
wlc-301(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40
wlc-30-1(config-ldp-af-ipv4-if)# exit
wlc-30-1(config-ldp-af-ipv4)# exit
wlc-30-1(config-ldp)# enable
wlc-30-1(config-ldp)# exit
wlc-30-1(config-mpls)# forwarding interface gigabitethernet 1/0/1.10
wlc-30-1(config-mpls)# forwarding interface gigabitethernet 1/0/1.40
wlc-30-1(config-mpls)# exit
wlc-30-1(config)# do commit
wlc-30-1(config)# do confirm
WLC-30_B
wlc-30-2# config
wlc-30-2(config)# mpls
wlc-30-2(config-mpls)# ldp
wlc-30-2(config-ldp)# address-family ipv4
wlc-30-2(config-ldp-af-ipv4)# transport-address 2.2.2.2
wlc-30-2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10
wlc-30-2(config-ldp-af-ipv4-if)# exit
wlc-30-2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.20
wlc-30-2(config-ldp-af-ipv4-if)# exit
wlc-30-2(config-ldp-af-ipv4)# exit
wlc-30-2(config-ldp)# enable
wlc-30-2(config-ldp)# exit
wlc-30-2(config-mpls)# forwarding interface gigabitethernet 1/0/1.10
wlc-30-2(config-mpls)# forwarding interface gigabitethernet 1/0/1.20
wlc-30-2(config-mpls)# exit
wlc-30-2(config)# do commit
wlc-30-2(config)# do confirm
WLC-30_C
wlc-30-3# config
wlc-30-3(config)# mpls
wlc-30-3(config-mpls)# ldp
wlc-30-3(config-ldp)# address-family ipv4
wlc-30-3(config-ldp-af-ipv4)# transport-address 3.3.3.3
wlc-30-3(config-ldp-af-ipv4)#  interface gigabitethernet 1/0/1.20
wlc-30-3(config-ldp-af-ipv4-if)# exit
wlc-30-3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30
wlc-30-3(config-ldp-af-ipv4-if)# exit
wlc-30-3(config-ldp-af-ipv4)# exit
wlc-30-3(config-ldp)# enable
wlc-30-3(config-ldp)# exit
wlc-30-3(config-mpls)# forwarding interface gigabitethernet 1/0/1.20
wlc-30-3(config-mpls)# forwarding interface gigabitethernet 1/0/1.30
wlc-30-3(config-mpls)# exit
wlc-30-3(config)# do commit
wlc-30-3(config)# do confirm
WLC-30_D
wlc-30-4# config
wlc-30-4(config)# mpls
wlc-30-4(config-mpls)# ldp
wlc-30-4(config-ldp)# address-family ipv4
wlc-30-4(config-ldp-af-ipv4)# transport-address 4.4.4.4
wlc-30-4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30
wlc-30-4(config-ldp-af-ipv4-if)# exit
wlc-30-4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40
wlc-30-4(config-ldp-af-ipv4-if)# exit
wlc-30-4(config-ldp-af-ipv4)# exit
wlc-30-4(config-ldp)# enable
wlc-30-4(config-ldp)# exit
wlc-30-4(config-mpls)# forwarding interface gigabitethernet 1/0/1.30
wlc-30-4(config-mpls)# forwarding interface gigabitethernet 1/0/1.40
wlc-30-4(config-mpls)# exit
wlc-30-4(config)# do commit
wlc-30-4(config)# do confirm

Для проверки сходимости LDP можно воспользоваться одной из следующих команд:

wlc-30-1# show mpls ldp neighbor
Peer LDP ID: 2.2.2.2; Local LDP ID 1.1.1.1
	State: Operational
    TCP connection: 2.2.2.2:33933 - 1.1.1.1:646
    Messages sent/received: 1059/1070
    Uptime: 17:32:07
    LDP discovery sources:
        gigabitethernet 1/0/1.10
Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1
    State: Operational
    TCP connection: 4.4.4.4:40894 - 1.1.1.1:646
    Messages sent/received: 1376/1386
    Uptime: 22:38:38
    LDP discovery sources:
        gigabitethernet 1/0/1.40
Настройка MP-BGP

Создадим VRF на WLC-30_A и WLC-30_C соответственно. Укажем RD, rt-export/import в соответствии с нашей схемой, настроим интерфейс для взаимодействия с CE (CE-SiteA и CE-SiteB). Дополнительно создадим route-map для разрешения анонсирования маршрутов по протоколу BGP:

Без указания атрибутов RD и RT маршрутная информация не попадет в таблицу VPNv4.

WLC-30_A
wlc-30-1(config)# ip vrf Customer1
wlc-30-1(config-vrf)# ip protocols bgp max-routes 1000
wlc-30-1(config-vrf)# rd 65500:100
wlc-30-1(config-vrf)# route-target import 65500:100
wlc-30-1(config-vrf)# route-target export 65500:100
wlc-30-1(config-vrf)# exit
wlc-30-1(config)# interface gigabitethernet 1/0/2
wlc-30-1(config-if-gi)# ip vrf forwarding Customer1
wlc-30-1(config-if-gi)# description "Customer1"
wlc-30-1(config-if-gi)# ip firewall disable
wlc-30-1(config-if-gi)# ip address 192.168.32.1/30
wlc-30-1(config-if-gi)# exit
wlc-30-1(config)# route-map OUTPUT
wlc-30-1(config-route-map)# rule 1
wlc-30-1(config-route-map-rule)# action permit
wlc-30-1(config-route-map-rule)# exit
wlc-30-1(config-route-map)# exit
wlc-30-1(config)# do commit 
wlc-30-1(config)# do confirm 
WLC-30_C
wlc-30-3(config)# ip vrf Customer1
wlc-30-3(config-vrf)# ip protocols bgp max-routes 1000
wlc-30-3(config-vrf)# rd 65500:100
wlc-30-3(config-vrf)# route-target export 65500:100
wlc-30-3(config-vrf)# route-target import 65500:100
wlc-30-3(config-vrf)# exit
wlc-30-3(config)# interface gigabitethernet 1/0/2
wlc-30-3(config-if-gi)# ip vrf forwarding Customer1
wlc-30-3(config-if-gi)# description "Customer1"
wlc-30-3(config-if-gi)# ip firewall disable
wlc-30-3(config-if-gi)# ip address 192.168.32.5/30
wlc-30-3(config-if-gi)# exit
wlc-30-3(config)# route-map OUTPUT
wlc-30-3(config-route-map)# rule 1
wlc-30-3(config-route-map-rule)# action permit
wlc-30-3(config-route-map-rule)# exit
wlc-30-3(config-route-map)# exit
wlc-30-3(config)# do commit 
wlc-30-3(config)# do confirm 

Настроим iBGP между WLC-30_A и WLC-30_C. Включим отправку extended community на обоих устройствах:

WLC-30_A
wlc-30-1(config)# router bgp log-neighbor-changes
wlc-30-1(config)# router bgp 65500
wlc-30-1(config-bgp)# router-id 1.1.1.1
wlc-30-1(config-bgp)# enable
wlc-30-1(config-bgp)# neighbor 3.3.3.3
wlc-30-1(config-bgp-neighbor)# remote-as 65500
wlc-30-1(config-bgp-neighbor)# update-source 1.1.1.1
wlc-30-1(config-bgp-neighbor)# enable
wlc-30-1(config-bgp-neighbor)# address-family vpnv4 unicast
wlc-30-1(config-bgp-neighbor-af)# send-community extended
wlc-30-1(config-bgp-neighbor-af)# enable 
wlc-30-1(config-bgp-neighbor-af)# exit
wlc-30-1(config-bgp-neighbor)# exit
wlc-30-1(config-bgp)# exit
wlc-30-1(config)# do commit 
wlc-30-1(config)# do confirm 
WLC-30_C
wlc-30-3(config)# router bgp log-neighbor-changes
wlc-30-3(config)# router bgp 65500
wlc-30-3(config-bgp)# router-id 3.3.3.3
wlc-30-3(config-bgp)# enable
wlc-30-3(config-bgp)# neighbor 1.1.1.1
wlc-30-3(config-bgp-neighbor)# remote-as 65500
wlc-30-3(config-bgp-neighbor)# update-source 3.3.3.3
wlc-30-3(config-bgp-neighbor)# enable
wlc-30-3(config-bgp-neighbor)# address-family vpnv4 unicast
wlc-30-3(config-bgp-neighbor-af)# send-community extended
wlc-30-3(config-bgp-neighbor-af)# enable
wlc-30-3(config-bgp-neighbor-af)# exit
wlc-30-3(config-bgp-neighbor)# exit
wlc-30-3(config-bgp)# exit
wlc-30-3(config)# do commit 
wlc-30-3(config)# do confirm 

Необходимо убедиться, что BGP-сессия успешно установлена:

wlc-30-1# show bgp neighbors
BGP neighbor is 3.3.3.3
    BGP state: Established
    Neighbor address: 3.3.3.3
    Neighbor AS: 65500
    Neighbor ID: 3.3.3.3
    Neighbor caps: refresh enhanced-refresh restart-aware AS4
    Session: internal multihop AS4
    Source address: 1.1.1.1
    Weight: 0
    Hold timer: 126/180
    Keepalive timer: 40/60
    Address family ipv4 unicast:
    Default originate: No
    Default information originate: No
    Uptime: 88495 s
Настройка маршрутизации PE-CE

Согласно нашей топологии, Customer1 анонсирует по BGP (AS65505) подсеть 10.100.0.0/24. Необходимо настроить соответствующие интерфейсы, eBGP между WLC-30_A и CE_SiteA. Также необходимо разрешить анонсирование маршрутов в сторону PE. 

По умолчанию: для eBGP анонсирование маршрутов запрещено, необходимо настроить разрешающее правило. Для iBGP анонсирование маршрутов разрешено.

Необходимая конфигурация на устройстве CE-SiteA:

CE _SiteA
CE-SiteA(config)# interface gigabitethernet 1/0/2
CE-SiteA(config-if-gi)# ip firewall disable
CE-SiteA(config-if-gi)# ip address 192.168.32.2/30
CE-SiteA(config-if-gi)# exit
CE-SiteA(config)# interface loopback 1
CE-SiteA(config-loopback)# ip address 10.100.0.1/24
CE-SiteA(config-loopback)# exit 
CE-SiteA(config)# route-map OUTPUT
CE-SiteA(config-route-map)# rule 1
CE-SiteA(config-route-map-rule)# match ip address 10.100.0.0/24
CE-SiteA(config-route-map-rule)# action permit
CE-SiteA(config-route-map-rule)# exit
CE-SiteA(config-route-map)# exit
CE-SiteA(config)# router bgp log-neighbor-changes
CE-SiteA(config)# router bgp 65505
CE-SiteA(config-bgp)# router-id 192.168.32.1
CE-SiteA(config-bgp)# neighbor 192.168.32.1
CE-SiteA(config-bgp-neighbor)# remote-as 65500
CE-SiteA(config-bgp-neighbor)# allow-local-as 1
CE-SiteA(config-bgp-neighbor)# update-source 192.168.32.2
CE-SiteA(config-bgp-neighbor)# address-family ipv4 unicast
CE-SiteA(config-bgp-neighbor-af)# route-map OUTPUT out
CE-SiteA(config-bgp-neighbor-af)# enable
CE-SiteA(config-bgp-neighbor-af)# exit
CE-SiteA(config-bgp-neighbor)# enable
CE-SiteA(config-bgp-neighbor)# exit
CE-SiteA(config-bgp)# address-family ipv4 unicast
CE-SiteA(config-bgp-af)# network 10.100.0.0/24
CE-SiteA(config-bgp-af)# exit
CE-SiteA(config-bgp)# enable
CE-SiteA(config-bgp)# exit
CE-SiteA(config)# do commit 
CE-SiteA(config)# do confirm

Переходим к настройке eBGP на контроллере WLC-30_A.

Создадим eBGP сессию с CE_SiteA и разрешим передачу маршрутов BGP-пиру:

WLC-30_A
wlc-30-1(config)# router bgp 65500
wlc-30-1(config-bgp)# vrf Customer1
wlc-30-1(config-bgp-vrf)# router-id 192.168.32.1
wlc-30-1(config-bgp-vrf)# neighbor 192.168.32.2
wlc-30-1(config-bgp-vrf-neighbor)# remote-as 65505
wlc-30-1(config-bgp-vrf-neighbor)# update-source 192.168.32.1
wlc-30-1(config-bgp-vrf-neighbor)# address-family ipv4 unicast
wlc-30-1(config-bgp-neighbor-af-vrf)# route-map OUTPUT out 
wlc-30-1(config-bgp-neighbor-af-vrf)# enable 
wlc-30-1(config-bgp-neighbor-af-vrf)# exit
wlc-30-1(config-bgp-vrf-neighbor)# enable 
wlc-30-1(config-bgp-vrf-neighbor)# exit
wlc-30-1(config-bgp-vrf)# address-family ipv4 unicast 
wlc-30-1(config-bgp-vrf-af)# redistribute connected
wlc-30-1(config-bgp-vrf-af)# redistribute bgp 65500
wlc-301(config-bgp-vrf-af)# exit
wlc-30-1(config-bgp-vrf)# enable
wlc-30-1(config-bgp-vrf)# exit
wlc-30-1(config-bgp)# exit
wlc-30-1(config)# do commit
wlc-30-1(config)# do confirm                                                                                                                                 


При передаче маршрутов из VRF в таблицу VPNv4 только connected и/или static сетей указывать команду enable не нужно. Включение необходимо только при наличии BGP пиров в VRF.

Пример конфигурации передачи в VPNv4 таблицу connected- и static-сетей:

wlc-30-1(config)# router bgp 65500
wlc-30-1(config-bgp)# router-id 1.1.1.1 
wlc-30-1(config-bgp)# neighbor 3.3.3.3
wlc-30-1(config-bgp-neighbor)# remote-as 65500
wlc-30-1(config-bgp-neighbor)# update-source 1.1.1.1
wlc-30-1(config-bgp-neighbor)# enable 
wlc-30-1(config-bgp-neighbor)# address-family vpnv4 unicast 
wlc-30-1(config-bgp-neighbor-af)# send-community extended 
wlc-30-1(config-bgp-neighbor-af)# enable 
wlc-30-1(config-bgp-neighbor-af)# exit
wlc-30-1(config-bgp-neighbor)# exit
wlc-30-1(config-bgp)# enable 
wlc-30-1(config-bgp)# vrf Customer1 
wlc-30-1(config-bgp-vrf)# address-family ipv4 unicast 
wlc-30-1(config-bgp-vrf-af)# redistribute connected 
wlc-30-1(config-bgp-vrf-af)# redistribute static 
wlc-30-1(config-bgp-vrf-af)# exit
wlc-30-1(config-bgp-vrf)# exit
wlc-30-1(config-bgp)# exit
wlc-30-1(config)# do commit
wlc-30-1(config)# do confirm

Для проверки принятых и анонсированных маршрутов можно воспользоваться следующими командами:

wlc-30-1# show bgp vpnv4 unicast vrf Customer1 neighbors 192.168.32.2 advertise-routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
              * - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete

      
     Network              Next Hop             Metric  LocPrf      Weight Path        
*> u 10.100.1.0/24        192.168.32.1                 100                65500 i
*> u 192.168.32.4/30      192.168.32.1                 100                65500 i

Вывод анонсируемых маршрутов для определенного пира. Маршрутная информация отображается после применения фильтрации.

wlc-30-1# show bgp vpnv4 unicast vrf Customer1 neighbors 192.168.32.2 routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
              * - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete

      
     Network              Next Hop             Metric  LocPrf      Weight Path       
*> u 10.100.0.0/24        192.168.32.2                 100         0      65505

Вывод принятой маршрутной информации от определенного пира. Маршрутная информация отображается после применения фильтрации.

CE-SiteB

Необходимо проделать схожие операции теперь уже между устройствами WLC-30_C и CE_SiteB.

Произвести настройку соответствующих интерфейсов и создать eBGP-сессию между WLC-30_C и CE_SiteB:

CE-SiteB
CE-SiteB(config)# interface gigabitethernet 1/0/2
CE-SiteB(config-if-gi)# ip firewall disable
CE-SiteB(config-if-gi)# ip address 192.168.32.6/30
CE-SiteB(config-if-gi)# exit
CE-SiteB(config)#  
CE-SiteB(config)# interface loopback 1
CE-SiteB(config-loopback)# ip address 10.100.1.1/24
CE-SiteB(config-loopback)# exit
CE-SiteB(config)#  
CE-SiteB(config)# route-map OUTPUT
CE-SiteB(config-route-map)# rule 1
CE-SiteB(config-route-map-rule)# match ip address 10.100.1.0/24
CE-SiteB(config-route-map-rule)# action permit
CE-SiteB(config-route-map-rule)# exit
CE-SiteB(config-route-map)# exit
CE-SiteB(config)# 
CE-SiteB(config)# router bgp 65505
CE-SiteB(config-bgp)# router-id 192.168.32.6
CE-SiteB(config-bgp)# neighbor 192.168.32.5
CE-SiteB(config-bgp-neighbor)# remote-as 65500
CE-SiteB(config-bgp-neighbor)# allow-local-as 1
CE-SiteB(config-bgp-neighbor)# update-source 192.168.32.6
CE-SiteB(config-bgp-neighbor)# address-family ipv4 unicast
CE-SiteB(config-bgp-neighbor-af)# route-map OUTPUT out
CE-SiteB(config-bgp-neighbor-af)# enable
CE-SiteB(config-bgp-neighbor-af)# exit
CE-SiteB(config-bgp-neighbor)# enable
CE-SiteB(config-bgp-neighbor)# exit
CE-SiteB(config-bgp)# address-family ipv4 unicast
CE-SiteB(config-bgp-af)# network 10.100.1.0/24
CE-SiteB(config-bgp-af)# exit
CE-SiteB(config-bgp)# enable
CE-SiteB(config-bgp)# exit
CE-SiteB(config)# do commit 
CE-SiteB(config)# do confirm

Со стороны WLC-30_C также настроить eBGP и разрешить передачу маршрутной информации из VRF в таблицу VPNv4:

WLC-30_C
router bgp 65500
wlc-30-3(config)# router bgp 65500
wlc-30-3(config-bgp)# vrf Customer1
wlc-30-3(config-bgp-vrf)# router-id 192.168.32.5
wlc-30-3(config-bgp-vrf)# neighbor 192.168.32.6
wlc-30-3(config-bgp-vrf-neighbor)# remote-as 65505
wlc-30-3(config-bgp-vrf-neighbor)# update-source 192.168.32.5
wlc-30-3(config-bgp-vrf-neighbor)# address-family ipv4 unicast
wlc-30-3(config-bgp-neighbor-af-vrf)# route-map OUTPUT out
wlc-30-3(config-bgp-neighbor-af-vrf)# enable
wlc-30-3(config-bgp-neighbor-af-vrf)# exit
wlc-30-3(config-bgp-vrf-neighbor)# enable
wlc-30-3(config-bgp-vrf-neighbor)# exit
wlc-30-3(config-bgp-vrf)# address-family ipv4 unicast
wlc-30-3(config-bgp-vrf-af)# redistribute connected
wlc-30-3(config-bgp-vrf-af)# redistribute bgp 65500
wlc-30-3(config-bgp-vrf-af)# exit
wlc-30-3(config-bgp-vrf)# enable
wlc-30-3(config-bgp-vrf)# exit
wlc-30-3(config-bgp)# exit
wlc-30-3(config)# do commit 
wlc-30-3(config)# do confirm

Для просмотра VPNv4-таблицы можно воспользоваться одной из следующих команд:

wlc-30-1# show bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete

      
Codes Route Distinguisher   IP Prefix          Next hop        Metric     Label   LocPrf     Weight Path            
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>    65500:100            	10.100.0.0/24      --              --         23      --         --     ?
*>i   65500:100            	192.168.32.4/30    3.3.3.3         --         84      100        0      i
*>i   65500:100            	10.100.1.0/24      3.3.3.3         --         84      100        0      i

Выводит все принятые VPNv4 маршруты после применения фильтрации.

Балансировка трафика MPLS

Контроллер WLC-30 имеет многоядерную архитектуру. Одним из первых звеньев обработки поступающего трафика является load balancer daemon(lbd), который выполняет две основных функции:

1) Равномерно распределяет нагрузку между всеми CPU контроллера.

2) Выявляет аномальные ситуации с высокой нагрузкой на отдельные CPU, и перераспределяет обработку с этих CPU на менее загруженные.

По умолчанию, lbd использует только MPLS-метки для вычисления хэша и дальнейшего распределения нагрузки на различные CPU. Данное поведение не всегда дает преимущество, особенное когда существуют "большие" однородные потоки MPLS-трафика. Для добавление энтропии в хэш можно включить дополнительный функционал:

cpu load-balance mpls passenger ip

Включает возможность "заглядывать" дальше MPLS-заголовка для поиска IP-заголовка, и добавления ip-src и ip-dst в расчет хэша.

cpu load-balance mpls passenger ip-over-ethernet-pseudowire-with-cw

cpu load-balance mpls passenger ip-over-ethernet-pseudowire-without-cw

Позволяет явно указать, используется ли при построении L2VPN функционал Control Word. Позволяет исключить возникновение ошибки, когда пакет с наличием Сontrol word может быть ошибочно распознан как пакет без Сontrol Word.

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

Задача:

Включить балансировку L2VPN-трафика без использования функционала Control Word.

Решение:
WLC-30
wlc-30(config)# system cpu load-balance mpls passenger ip
wlc-30(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw

Работа с бридж-доменом в рамках MPLS

Для организации L2VPN-сервиса необходимо настроить на устройстве бридж-домен, создать требуемые AC, PW (LDP-signaling) и связать все данные элементы с бридж-доменом.

Для point-to-point бридж-домен создается автоматически.


Между элементами бридж-домена осуществляется коммутация трафика на основании перечисленных правил :

  1. Для каждого бридж-домена автоматически создается таблица MAC-адресов по аналогии с Ethernet-коммутаторами. Ethernet-кадры коммутируются на основании анализа MAC-адреса получателя (DST MAC).
  2. Кадры с известным DST MAC будут отправляться в соответствующие AC/PW.
  3. Кадры с неизвестным DST MAC, broadcast- и multicast-кадры (т.н. BUM-трафик, "Broadcast, Unknown unicast и Multicast") будут отправляться во все элементы бридж-домена, за исключением того элемента (AC либо PW), с которого вошли в бридж-домен.
  4. При коммутации учитываются DST MAC в кадрах, но не учитываются VLAN-теги, имеющиеся на кадрах — таким образом, коммутация внутри бридж-домена не является"VLAN-aware".

В текущей реализации, бридж-домен не пропускает трафик протоколов канального уровня таких так: STP, LLDP, CDP и т.д.

Бридж-домен может работать в двух транспортных режимах: ethernet или vlan. Транспортных режим задает правила обработки трафика на входе и выходе с бридж-домена.

В LDP signaling, по умолчанию используется ethernet mode (Raw mode, type 5). Для каждого отдельного экземпляра VPLS можно задать транспортный режим. 

В BGP signaling, бридж-домен работает только в ethernet mode.

PE1# config
PE1(config)# mpls 
PE1(config-mpls)# l2vpn 
PE1(config-l2vpn)# vpls MARTINI_br 
PE1(config-l2vpn-vpls)# transport-mode vlan 

PE1# sh mpls l2vpn pseudowire  
Neighbor                                PW ID      Sig Type       Status
--------------------------------------- ---------- --- ---------- ------
10.10.0.2                               200        LDP Eth Tagged Up    

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

Рассмотрим правила обработки трафика:

1. Ethernet (Raw) mode:

  • Если AC является сабинтерфейсом, то vlan-тег перед помещением в бридж снимается. При выходе из бриджа vlan-тег восстанавливается.
  • Если AC является интерфейсом, то тегированный и нетегированный трафик проходит в обоих направлениях без модификаций.


Предположим, PE1 и PE2 cконфигурированы в ethernet mode (на рисунке ниже). Со стороны PE1 в бридж-домен включен cабинтерфейс gigabitethernet 1/0/4.100, соответственно vlan-тег (vlan id 100) с входящего трафика будет удален перед помещением в Pseudowire 10 (соответственно, восстановлен при трафике в сторону АС). С другой стороны, AC на PE2, является интерфейсом, а значит, трафик будет проходить без модификаций в обоих направлениях.

2. Vlan (Tagged) mode:

  • Если AC является сабинтерфейсом, то vlan-тег перед помещением в бридж сохраняется. При выходе из бриджа vlan-тег может быть сохранен или перезаписан в зависимости от конфигурации.
  • Если АС является интерфейсом, то модификация трафика не происходит в обоих направлениях.

Назначение MTU при работе с MPLS

Очень важно понимать и правильно сконфигурировать параметр MTU на интерфейсах, через который передается пакет. Это справедливо и для установки псевдопровода и для передачи сервисного трафика.

Прежде всего, значение MTU участвует в сигнализации при построении псевдопровода как в LDP-signaling, так и в BGP-signaling. В LDP-signaling MTU задается в рамках настройки pw - class:

Для сигнализации (LDP, BGP) значение MTU по умолчанию — 1500.

Значения MTU, участвующие в сигнализации, не влияют на фактический размер пакета, проходящего по псевдопроводу.


LDP-signaling. Настройка MTU для согласования
PE2(config)# mpls 
PE2(config-mpls)# l2vpn 
PE2(config-l2vpn)# pw-class MTU_example
PE2(config-l2vpn-pw-class)# encapsulation mpls mtu 9000
PE2(config-l2vpn-pw-class)# exit
PE2(config-mpls)# l2vpn 
PE2(config-l2vpn)# vpls MTU_Example_PW 
PE2(config-l2vpn-vpls)# pw 200 10.10.0.1 
PE2(config-l2vpn-pw)# pw-class 
PE2(config-l2vpn-pw)# pw-class MTU_example 

*Просмотр созданных pw-class'ов*
PE2#  sh mpls l2vpn pw-class 
PW-class                         Neighbor   PW ID      Status Status-tlv MTU   
-------------------------------- ---------- ---------- ------ ---------- ------
MTU_example                       10.10.0.1  200        Up     Enable     9000  
 
                              
PE2# sh mpls l2vpn vpls  MTU_Example_PW
VPLS:  MTU_Example_PW
...
    PWs:
      PW ID 2, Neighbor 10.10.0.1:
        MTU:         9000
        Last change: 01:27:42
        Status:      Up

* Для сигнализации PW 2 данного VPLS выбрано MTU 9000* 

Рассмотрим пример:

                                                                                                                                                                                                                                                                                    

На рисунке выше РЕ1 поднимает два псевдопровода: Pseudowire 10 до PE2, и Pseudowire 20 до PE3 соответственно.  Для сигнализации с PE2 будет выбрано MTU равным 2000 (pw-class TO_PE2), для PE3 – MTU 3000 (pw-class TO_PE3). 

Для BGP-signaling параметр MTU также можно указать:

BGP -signaling. Настройка MTU для согласования
PE1(config)# mpls 
PE1(config-mpls)# l2vpn 
PE1(config-l2vpn)# vpls l2vpn_MTU 
PE1(config-l2vpn-vpls)# autodiscovery bgp 
PE1(config-bgp)# mtu 1500
 
PE2# sh mpls l2vpn vpls  l2vpn_MTU
VPLS: l2vpn_MTU
...
    PWs:
      PW ID 2, Neighbor 10.10.0.1:
        MTU:         1500
        Last change: 01:27:42
        Status:      Up

* Для сигнализации всех псевдо проводов данного VPLS будет выбрано MTU 1500 *

Если при согласовании значение MTU оказалось разным, то cтатус псевдопровода будет — "DOWN", " Reason: MTU mismatch"

PE1(config-l2vpn)# vpls l2vpn_MTU
PE1(config-l2vpn-vpls)# autodiscovery bgp 
PE1(config-bgp)# mtu 2000

PE2# sh mpls l2vpn vpls l2vpn_MTU 
...
    PWs:
      PW ID 2, Neighbor 10.10.0.1:
        MTU:         2000
        Last change: 00:00:10
        Status:      Down
        Reason:      MTU mismatch

При настройке VPLS (BGP-signaling) можно отключить проверку MTU при создании псевдопроводов:

PE1(config)# mpls
PE1(config-mpls)# l2vpn
PE1(config-l2vpn)# vpls l2vpn _MTU
PE1(config-l2vpn-vpls)# autodiscovery bgp
PE1(config-bgp)# ignore mtu-mismatch

Теперь, при согласовании, значение MTU будет игнорироваться.

По умолчанию бридж-домен имеет MTU равным 1500 байт. Стоит отметить, что bridge-domain автоматически выбирает наименьшее значение MTU, исходя из собственного MTU и MTU-интерфейсов, включенных в бридж-домен.

* Например, имеем бридж-домен 100, в который включены интерфейсы gi1/0/1 cо значением MTU 2000, и gi1/0/2 cо значением MTU 3000 *
CE3(config)# bridge 100
CE3(config-bridge)# enable 
CE3(config-bridge)# exit
CE3(config)# interface gigabitethernet 1/0/1
CE3(config-if-gi)# mtu 2000
CE3(config-if-gi)# bridge-group 100
CE3(config-if-gi)# exit
CE3(config)# interface gigabitethernet 1/0/2
CE3(config-if-gi)# mtu 3000
CE3(config-if-gi)# bridge-group 100
CE3(config-if-gi)# do com

* MTU бридж-домена будет равным 1500, так как по умолчанию сам бридж имеет MTU 1500 (значение по умолчанию), которое и стало наименьшим:
 MTU bridge 100 = 1500  <-- Наименьшее значение MTU
 MTU gi1/0/1  = 2000 
 MTU gi1/0/2 = 3000 
*


CE3# sh interfaces bridge 
Bridges      Interfaces                                                       
----------   --------------------------------------------------------------   
bridge 100   gi1/0/1-2   
                                                     
CE3# sh interfaces status bridge 100
Interface 'bridge 100' status information:
 Description:          --
 Operational state:    UP
 Administrative state: Up
 Supports broadcast:   Yes
 Supports multicast:   Yes
 MTU:                  1500 
 MAC address:          a8:f9:4b:aa:11:00
 Last change:          1 minute and 46 seconds
 Mode:                 Routerport

* Изменим MTU на самом бридж-домене:  *

CE3(config)# bridge 100
CE3(config-bridge)# mtu 6000
CE3(config-bridge)# do com

* MTU бридж-домена  стало равным 2000 байт, так как  gi1/0/2 имеет наименьшее MTU:
 MTU bridge 100 = 6000 
 MTU gi1/0/1  = 2000 <-- Наименьшее значение MTU
 MTU gi1/0/2 = 3000 
*

CE3# sh interfaces bridge 
Bridges      Interfaces                                                       
----------   --------------------------------------------------------------   
bridge 100   gi1/0/1-2   
                                                     
CE3# sh interfaces status bridge 100
Interface 'bridge 100' status information:
 Description:          --
 Operational state:    Up
 Administrative state: Up
 Supports broadcast:   Yes
 Supports multicast:   Yes
 MTU:                  2000
 MAC address:          a8:f9:4b:aa:11:00
 Last change:          6 minutes and 42 seconds
 Mode:                 Routerport

Рассмотрим пример прохождения трафика в L2VPN-сервисе:


PE1 имеет следующие значения MTU на интерфейсах:

PE1# sh interfaces status 
Interface            Admin   Link    MTU      MAC address          Last change                 Mode         
                     state   state                                                                          
------------------   -----   -----   ------   ------------------   -------------------------   ----------   
gi1/0/1              Up      Up      9000     a8:f9:4b:ac:4d:16    5 hours, 25 minutes and 2   Routerport   
                                                                   seconds                                  

gi1/0/2              Up      Up      1500     a8:f9:4b:ac:4d:17    4 days, 4 hours, 49         Switchport   
                                                                   minutes and 40 seconds                   

gi1/0/3              Up      Up      1800     a8:f9:4b:ac:4d:18    4 days, 1 hour, 49          Switchport   
                                                                   minutes and 38 seconds                   

bridge 2             Up      Up      1500     a8:f9:4b:ac:4d:15    1 day, 1 hour, 27 minutes   Routerport   
                                                                   and 28 seconds                           

СE1 посылает пакеты размером 1500 байт, CE2 — 1800 байт соответственно. Так как MTU бридж-домена меньше, чем MTU пакета от CE2, то пакет от CE2 будет отброшен перед попаданием в бридж-домен. Аналогичные действия будут, если MTU-интерфейса, смотрящего в сторону mpls-core (gi1/0/1), меньше чем MTU, приходящих от СE-пакетов (с учетом mpls-заголовка).

Cхожее поведение и при прохождении трафика в L3VPN-сервисе:                    

Если СE1 пошлет пакет с большим MTU, чем на интерфейсе, смотрящим в сторону клиента (gi1/0/2) или в сторону mpls-core (gi1/0/1), то пакет будет отброшен.




  • Нет меток