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

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 2 Следующий »

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

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

В маршрутизаторах ESR поддержаны следующие режимы работы LDP:

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

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

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

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

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

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

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

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

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

esr(config-ldp)# router-id { <ID> | <IF> | <TUN> }

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

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

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

3

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

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

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

4

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

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


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

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

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

esr(config-ldp)# enable


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

esr(config-ldp)# egress-label-type explicit-null


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

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

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

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

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

Если изменить значение router-id, то новое значение будет применено только после рестарта данного протокола. Для рестарта mpls ldp используется команда clear mpls ldp.

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

Задача:

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

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

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

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

hostname ESR
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

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

hostname ESR1
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
Настройка на ESR:
ESR
ESR# config
ESR(config)# mpls
ESR(config-mpls)# forwarding interface gigabitethernet 1/0/1
ESR(config-mpls)# ldp
ESR(config-ldp)# router-id 1.1.1.1
ESR(config-ldp)# enable
ESR(config-ldp)# address-family ipv4
ESR(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
ESR(config-ldp-af-ipv4-if)# end
ESR#
Настройка на ESR1:
ESR1
ESR1# configure
ESR1(config)# mpls
ESR1(config-mpls)# forwarding interface gigabitethernet 1/0/1
ESR1(config-mpls)# ldp
ESR1(config-ldp)# router-id 4.4.4.4
ESR1(config-ldp)# enable
ESR1(config-ldp)# address-family ipv4
ESR1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
ESR1(config-ldp-af-ipv4-if)# end
ESR1#
Проверка:

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

ESR# 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

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

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

ESR1# 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 является согласуемым параметром – выбирается наименьший. В данном примере показано, что на ESR после согласования Hold timer равен 10 секундам.

ESR# 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.

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

ESR# 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 будет выше, чем для значений, сконфигурированных глобально.

ESR# 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.

ESR# 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 можно задать как глобально, так и для каждого соседа. Таймер, заданный для определенного соседа, является более приоритетным.

ESR# 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
ESR# 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

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

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

3

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

esr(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 на нужном интерфейсе

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

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

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

3

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

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

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

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

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

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

esr(config-ldp)# keepalive <TIME>

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

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

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

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

esr(config-ldp-neig)# keepalive <TIME>

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

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

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

Задача:

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

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

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

ESR
ESR# 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-сессии:

ESR
ESR# 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 является согласуемым параметром – выбирается наименьший. В данном примере показано, что ESR после согласования установил 30 секунд:

ESR1# 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.

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

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

ESR# 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-сессии для определенного соседа:

ESR# 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, и на определенного соседа, приоритетом будут считаться настройки, установленные для соседа.

ESR# 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
ESR# 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


ESR# 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

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

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

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

3

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

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

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

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

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

esr(config-ldp)# keepalive <TIME>

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

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

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

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

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

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

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

3

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

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

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

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

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

esr(config-ldp-neig)# keepalive <TIME>

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

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

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

Задача:

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

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

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

ESR
ESR1# 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-сессии:

ESR
ESR# 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-меток

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

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

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

esr(config)# object-group network <NAME>

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

esr(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.

esr(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.

Решение:

На ESR_A и ESR_B создадим object-group ADV_LABELS типа network и добавим в нее префиксы 10.10.0.1/32 и 10.10.0.2/32 соответственно:

ESR_A
esr(config)# object-group network ADV_LABELS
esr(config-object-group-network)# ip prefix 10.10.0.1/32
esr(config-object-group-network)# ip prefix 10.10.0.2/32
ESR_B
esr(config)# object-group network ADV_LABELS
esr(config-object-group-network)# ip prefix 10.10.0.1/32
esr(config-object-group-network)# ip prefix 10.10.0.2/32

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

ESR_A и ESR_B
esr(config)# mpls
esr(config-ldp)# ldp
esr(config-ldp)# advertise-labels ADV_LABELS
Проверка:

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

esr# 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:

esr# sh mpls ldp bindings 192.168.2.0/24
esr#

Настройка сервиса 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.

esr(config-l2vpn)# pw-class <WORD>

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

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

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

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

4

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

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

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

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

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

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

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

esr(config-l2vpn)# p2p <NAME>

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

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

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

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

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

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

esr(config-l2vpn-p2p)# enable


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

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

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

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

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

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

esr(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 (не обязательно).

esr(config-l2vpn-pw)# description <LINE>

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

esr(config-l2vpn-pw)# pw-class <WORD>

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

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

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

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

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

esr(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.

esr(config-l2vpn)# pw-class <WORD>

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

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

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

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

5

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

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

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

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

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

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

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

esr(config-l2vpn)# vpls <NAME>

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

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

esr(config-l2vpn-vpls)# enable


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

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

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

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

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

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

esr(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 (не обязательно).

esr(config-l2vpn-pw)# description <LINE>

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

esr(config-l2vpn-pw)# pw-class <WORD>

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

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

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

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

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

esr(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-домена.

esr(config-l2vpn)# vpls <NAME>

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

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

esr(config-l2vpn-vpls)# enable


5

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

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

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

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

esr(config-l2vpn-vpls)# autodiscovery bgp


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

esr(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.

esr(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.

esr(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.

esr(config-bgp)# ve id <ID>

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

11Указать vpn id.

esr (config-bgp)# vpn id <ID>

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

12Указать ve range (не обязательно).

esr (config-bgp)# ve range <RANGE>

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

esr (config-bgp)# mtu <VALUE>

<VALUE> – значение MTU [552..10000].

14Включить игнорирование типа инкапсуляции (не обязательно).

esr(config-bgp)# ignore encapsulation-mismatch


15

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

esr(config-bgp)# ignore mtu-mismatch


16В контексте настройки address-family l2vpn vpls протокола BGP включить передачу расширенных атрибутов.esr(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.



3

Создать VRF.

esr(config)# ip vrf <VRF>

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

esr(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.

esr(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.

esr(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.

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

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

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

  • BGP
    • ESR-1000/1200
      /1500/1511
      /3100/3200/1700 – [1..5000000];
    • ESR-20/21/30/100/200 – [1..2500000],
    • ESR-10/12V/12VF/14VF/15 – [1.. 1000000].
  • OSPF и IS-IS
    • ESR-1000/1200
      /1500/1511
      /1700/3100/3200 – [1..500000];
    • ESR-20/21/30/100/200 – [1..300000];
    • ESR-10/12V/12VF/14VF/15 – [1..30000].
8

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

esr(config-bgp-neighbor-af)# send-community extended


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

Задача:

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

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


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

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

ESR1# 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


ESR1# 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-маршрутизаторах
ESR1
ESR1# config
ESR1(config)# mpls
ESR1(config-mpls)# ldp
ESR1(config-ldp)# address-family ipv4
ESR1(config-ldp-af-ipv4)# transport-address 1.1.1.1
ESR1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10
ESR1(config-ldp-af-ipv4-if)# exit
ESR1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40
ESR1(config-ldp-af-ipv4-if)# exit
ESR1(config-ldp-af-ipv4)# exit
ESR1(config-ldp)# enable
ESR1(config-ldp)# exit
ESR1(config-mpls)# forwarding interface gigabitethernet 1/0/1.10
ESR1(config-mpls)# forwarding interface gigabitethernet 1/0/1.40
ESR1(config-mpls)# exit
ESR1(config)# do commit
ESR1(config)# do confirm
ESR2
ESR2# config
ESR2(config)# mpls
ESR2(config-mpls)# ldp
ESR2(config-ldp)# address-family ipv4
ESR2(config-ldp-af-ipv4)# transport-address 2.2.2.2
ESR2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10
ESR2(config-ldp-af-ipv4-if)# exit
ESR2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.20
ESR2(config-ldp-af-ipv4-if)# exit
ESR2(config-ldp-af-ipv4)# exit
ESR2(config-ldp)# enable
ESR2(config-ldp)# exit
ESR2(config-mpls)# forwarding interface gigabitethernet 1/0/1.10
ESR2(config-mpls)# forwarding interface gigabitethernet 1/0/1.20
ESR2(config-mpls)# exit
ESR2(config)# do commit
ESR2(config)# do confirm
ESR3
ESR3# config
ESR3(config)# mpls
ESR3(config-mpls)# ldp
ESR3(config-ldp)# address-family ipv4
ESR3(config-ldp-af-ipv4)# transport-address 3.3.3.3
ESR3(config-ldp-af-ipv4)#  interface gigabitethernet 1/0/1.20
ESR3(config-ldp-af-ipv4-if)# exit
ESR3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30
ESR3(config-ldp-af-ipv4-if)# exit
ESR3(config-ldp-af-ipv4)# exit
ESR3(config-ldp)# enable
ESR3(config-ldp)# exit
ESR3(config-mpls)# forwarding interface gigabitethernet 1/0/1.20
ESR3(config-mpls)# forwarding interface gigabitethernet 1/0/1.30
ESR3(config-mpls)# exit
ESR3(config)# do commit
ESR3(config)# do confirm
ESR4
ESR4# config
ESR4(config)# mpls
ESR4(config-mpls)# ldp
ESR4(config-ldp)# address-family ipv4
ESR4(config-ldp-af-ipv4)# transport-address 4.4.4.4
ESR4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30
ESR4(config-ldp-af-ipv4-if)# exit
ESR4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40
ESR4(config-ldp-af-ipv4-if)# exit
ESR4(config-ldp-af-ipv4)# exit
ESR4(config-ldp)# enable
ESR4(config-ldp)# exit
ESR4(config-mpls)# forwarding interface gigabitethernet 1/0/1.30
ESR4(config-mpls)# forwarding interface gigabitethernet 1/0/1.40
ESR4(config-mpls)# exit
ESR4(config)# do commit
ESR4(config)# do confirm

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

ESR1# 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 на ESR1 и ESR3 соответственно. Укажем RD, rt-export/import в соответствии со схемой, настроим интерфейс для взаимодействия с CE (CE-SiteA и CE-SiteB). Дополнительно создадим route-map для разрешения анонсирования маршрутов по протоколу BGP:

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

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

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

ESR1
ESR1(config)# router bgp log-neighbor-changes
ESR1(config)# router bgp 65500
ESR1(config-bgp)# router-id 1.1.1.1
ESR1(config-bgp)# enable
ESR1(config-bgp)# neighbor 3.3.3.3
ESR1(config-bgp-neighbor)# remote-as 65500
ESR1(config-bgp-neighbor)# update-source 1.1.1.1
ESR1(config-bgp-neighbor)# enable
ESR1(config-bgp-neighbor)# address-family vpnv4 unicast
ESR1(config-bgp-neighbor-af)# send-community extended
ESR1(config-bgp-neighbor-af)# enable 
ESR1(config-bgp-neighbor-af)# exit
ESR1(config-bgp-neighbor)# exit
ESR1(config-bgp)# exit
ESR1(config)# do commit 
ESR1(config)# do confirm 
ESR3
ESR3(config)# router bgp log-neighbor-changes
ESR3(config)# router bgp 65500
ESR3(config-bgp)# router-id 3.3.3.3
ESR3(config-bgp)# enable
ESR3(config-bgp)# neighbor 1.1.1.1
ESR3(config-bgp-neighbor)# remote-as 65500
ESR3(config-bgp-neighbor)# update-source 3.3.3.3
ESR3(config-bgp-neighbor)# enable
ESR3(config-bgp-neighbor)# address-family vpnv4 unicast
ESR3(config-bgp-neighbor-af)# send-community extended
ESR3(config-bgp-neighbor-af)# enable
ESR3(config-bgp-neighbor-af)# exit
ESR3(config-bgp-neighbor)# exit
ESR3(config-bgp)# exit
ESR3(config)# do commit 
ESR3(config)# do confirm 

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

ESR1# 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 между ESR1 и 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 на маршрутизаторе ESR1.

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

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


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

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

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


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

ESR1# 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

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

ESR1# 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

Необходимо проделать схожие операции между маршрутизаторами ESR3 и CE_SiteB.

Произвести настройку соответствующих интерфейсов и создать eBGP-сессию между ESR3 и 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

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

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

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

ESR1# 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

Маршрутизаторы ESR имеют многоядерную архитектуру. Одним из первых звеньев обработки поступающего трафика является 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 в расчет хеша:

Для L3VPN: идет поиск пары ip-src и ip-dst в ip-заголовке, находящимся за mpls заголовком.

                                                                      

Для L2VPN: ESR попытается "заглянуть" в ethernet-фрейм (который находится за mpls-заголовком) и получить ip-src и ip-dst  в ip-заголовке для добавления в расчет хеша.

                 

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 может быть ошибочно распознан как пакет без него.

При хешировании MPLS-меток действуют следующие ограничения:

  • В расчет не добавляются метки 0-15 (Special-Purpose Labels) – см. RFC 7274;
  • В расчет не добавляется метка, если непосредственно перед ней следует метка 15 (Extension Label) – см. RFC 7274;
  • В расчет хеша добавляется не более трёх меток.


Во избежание падения LDP-сессии при большой нагрузке на СPU маршрутизатора на моделях ESR-200, ESR-1000, ESR-1200, ESR-1500, ESR-1700 после включения функционала все пакеты протокола LDP будут обрабатываться управляющими CPU (Management CPU), которые не участвуют в обработке трафика. Для ESR-200, ESR-1000, ESR-1200, ESR-1500 – это СPU 0, ESR-1700 – CPU 0-1.

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

Задача:

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

Решение:
ESR
ESR(config)# system cpu load-balance mpls passenger ip
ESR(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 на интерфейсах, участвующих в передаче трафика. Отметим два ключевых момента:

  1.   Размер Ethernet-заголовка (18 байт), inner tag (4 байта), outer tag (4 байта) не учитываются на AC-интерфейсах;
  2.   На интерфейсах, принимающих участие в пересылке MPLS-трафика, необходимо увеличить MTU на количество меток (каждая метка равна 4 байтам).

 Значение MTU также участвует в сигнализации при построении псевдо-провода как в LDP-signaling, так и в BGP-signaling. Рассмотрим примеры настройки для обоих случаев: 

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

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

В LDP-signaling MTU задается в рамках настройки pw  class:

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 указывается в рамках конфигурации l2vpn-сервиса:

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 не совпадает, то статус псевдо-провода будет – "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

В 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 байт. Стоит отметить, что бридж-домен автоматически выбирает наименьшее значение 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), то пакет будет отброшен.

Inter-AS Option A

Рассмотрим примеры настройки на базе построения сервисов l3vpn и l2vpn. Главная особенность inter-AS Option A – отсутствие mpls-меток в трафике при передаче между ABSR. Для разделения трафика клиентских сервисов между ASBR обычно используют VRF для l3vpn или тегирование (dot1q, q-in-q)  для сервисов l2vpn. 

L2VPN





Настроим  СE:

СE1
ESR# config
ESR(config)# hostname CE1
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-if-gi)# ip firewall disable 
ESR(config-if-gi)# ip address 192.168.1.1/24
ESR(config-if-gi)# do com
ESR(config-if-gi)# do conf

СЕ2
ESR# config
ESR(config)# hostname CE2
ESR(config)# interface gigabitethernet 1/0/1.200
ESR(config-if-gi)# ip firewall disable 
ESR(config-if-gi)# ip address 192.168.2.1/24
ESR(config-if-gi)# do com
ESR(config-if-gi)# do conf
СЕ3
ESR# config
ESR(config)# hostname CE3
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-if-gi)# ip firewall disable 
ESR(config-if-gi)# ip address 192.168.1.2/24
ESR(config-if-gi)# do com
ESR(config-if-gi)# do conf


СЕ4
ESR# config
ESR(config)# hostname CE4
ESR(config)# interface gigabitethernet 1/0/1.200
ESR(config-if-gi)# ip firewall disable 
ESR(config-if-gi)# ip address 192.168.2.2/24
ESR(config-if-gi)# do com
ESR(config-if-gi)# do conf

Произведем настройку PE1 и PE2. Анонсирование сервисных меток возложим на протокол BGP (Kompella mode):

PE1
ESR(config)# hostname PE1
ESR(config)# system jumbo-frames
ESR(config)# router bgp log-neighbor-changes
ESR(config)# router bgp 65500
ESR(config-bgp)#   neighbor 10.10.1.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.10.1.1
ESR(config-bgp-neighbor)#     address-family l2vpn vpls
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# bridge 100
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# bridge 200
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   description "to CE1"
ESR(config-subif)#   bridge-group 100
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/1.200
ESR(config-subif)#   description "to CE2"
ESR(config-subif)#   bridge-group 200
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.100.0.1/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.10.1.1/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.10.1.1
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   l2vpn
ESR(config-l2vpn)#     vpls CE1
ESR(config-l2vpn-vpls)#       bridge-group 100
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 1
ESR(config-bgp)#         ve id 2
ESR(config-bgp)#         rd 65500:1
ESR(config-bgp)#         route-target export 65500:1
ESR(config-bgp)#         route-target import 65500:1
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#     vpls CE2
ESR(config-l2vpn-vpls)#       bridge-group 200
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 2
ESR(config-bgp)#         ve id 2
ESR(config-bgp)#         rd 65500:2
ESR(config-bgp)#         route-target export 65500:2
ESR(config-bgp)#         route-target import 65500:2
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com
ESR(config)# do conf
PE2
ESR(config)# hostname ESR
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# router bgp log-neighbor-changes
ESR(config)# router bgp 65500
ESR(config-bgp)#   router-id 10.11.1.1
ESR(config-bgp)#   neighbor 10.11.1.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.11.1.1
ESR(config-bgp-neighbor)#     address-family l2vpn vpls
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# bridge 100
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# bridge 200
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   description "to CE3"
ESR(config-subif)#   bridge-group 100
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/1.200
ESR(config-subif)#   description "to CE4"
ESR(config-subif)#   bridge-group 200
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.101.0.1/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.11.1.1/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.11.1.1
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   l2vpn
ESR(config-l2vpn)#     vpls CE1
ESR(config-l2vpn-vpls)#       bridge-group 100
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 1
ESR(config-bgp)#         ve id 2
ESR(config-bgp)#         rd 65500:1
ESR(config-bgp)#         route-target export 65500:1
ESR(config-bgp)#         route-target import 65500:1
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#     vpls CE2
ESR(config-l2vpn-vpls)#       bridge-group 200
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 2
ESR(config-bgp)#         ve id 2
ESR(config-bgp)#         rd 65500:2
ESR(config-bgp)#         route-target export 65500:2
ESR(config-bgp)#         route-target import 65500:2
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com
ESR(config)# do conf

Настроим ASBR1 и ASBR2. Для разделения трафика от CE1 и CE2 в сторону ASBR2 сделаем интерфейс gi1/0/1 транковым. Vlan 100 и 200 будут предназначены для трафика от CE1 и СE2 соответственно:

ASBR1
ESR(config)#  hostname ASBR1
ESR(config)# 
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# vlan 100,200
ESR(config-vlan)# exit
ESR(config)# 
ESR(config)# router bgp 65500
ESR(config-bgp)#   router-id 10.10.1.2
ESR(config-bgp)#   neighbor 10.10.1.1
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.10.1.2
ESR(config-bgp-neighbor)#     address-family l2vpn vpls
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# bridge 10
ESR(config-bridge)#   vlan 100
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# bridge 20
ESR(config-bridge)#   vlan 200
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1
ESR(config-if-gi)#   description "to ASBR2"
ESR(config-if-gi)#   mode switchport
ESR(config-if-gi)#   spanning-tree disable
ESR(config-if-gi)#   switchport forbidden default-vlan
ESR(config-if-gi)#   switchport mode trunk
ESR(config-if-gi)#   switchport trunk allowed vlan add 100,200
ESR(config-if-gi)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   description "to PE1"
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.100.0.2/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.10.1.2/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.10.1.2
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   l2vpn
ESR(config-l2vpn)#     vpls CE1
ESR(config-l2vpn-vpls)#       bridge-group 10
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 1
ESR(config-bgp)#         ve id 1
ESR(config-bgp)#         rd 65500:1
ESR(config-bgp)#         route-target export 65500:1
ESR(config-bgp)#         route-target import 65500:1
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#     vpls CE2
ESR(config-l2vpn-vpls)#       bridge-group 20
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 2
ESR(config-bgp)#         ve id 1
ESR(config-bgp)#         rd 65500:2
ESR(config-bgp)#         route-target export 65500:2
ESR(config-bgp)#         route-target import 65500:2
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com 
ESR(config)# do conf

ASBR2
ESR(config)#  hostname ASBR2
ESR(config)# 
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# vlan 100,200
ESR(config-vlan)# exit
ESR(config)# 
ESR(config)# router bgp 65500
ESR(config-bgp)#   router-id 10.10.1.2
ESR(config-bgp)#   neighbor 10.10.1.1
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.10.1.2
ESR(config-bgp-neighbor)#     address-family l2vpn vpls
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# bridge 10
ESR(config-bridge)#   vlan 100
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# bridge 20
ESR(config-bridge)#   vlan 200
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1
ESR(config-if-gi)#   description "to ASBR1"
ESR(config-if-gi)#   mode switchport
ESR(config-if-gi)#   spanning-tree disable
ESR(config-if-gi)#   switchport forbidden default-vlan
ESR(config-if-gi)#   switchport mode trunk
ESR(config-if-gi)#   switchport trunk allowed vlan add 100,200
ESR(config-if-gi)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   description "to PE1"
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.100.0.2/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.10.1.2/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.10.1.2
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   l2vpn
ESR(config-l2vpn)#     vpls CE1
ESR(config-l2vpn-vpls)#       bridge-group 10
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 1
ESR(config-bgp)#         ve id 1
ESR(config-bgp)#         rd 65500:1
ESR(config-bgp)#         route-target export 65500:1
ESR(config-bgp)#         route-target import 65500:1
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#     vpls CE2
ESR(config-l2vpn-vpls)#       bridge-group 20
ESR(config-l2vpn-vpls)#       autodiscovery bgp
ESR(config-bgp)#         vpn id 2
ESR(config-bgp)#         ve id 1
ESR(config-bgp)#         rd 65500:2
ESR(config-bgp)#         route-target export 65500:2
ESR(config-bgp)#         route-target import 65500:2
ESR(config-bgp)#       exit
ESR(config-l2vpn-vpls)#       enable
ESR(config-l2vpn-vpls)#     exit
ESR(config-l2vpn)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com 
ESR(config)# do conf

Проверим назначение меток, статус сервисов, а также сетевую доступность между CE:

Информация о метках
ASBR2# sh 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               
----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ -------------------
*>i   65500:1               2     1     10    10.11.1.1       --         100        0      i
*>i   65500:2               2     1     10    10.11.1.1       --         100        0      i
*>    65500:1               1     1     10    --              --         --         --     
*>    65500:2               1     1     10    --              --         --         --     

ASBR2# sh mpls forwarding-table 
Local    Outgoing Prefix                                      Outgoing         Next Hop                               
label    label    or tunnel ID                                Interface                                               
-------- -------- ------------------------------------------- ---------------- ---------------------------------------
56       imp-null 10.11.1.1/32                                gi1/0/2          10.101.0.1                             
47       37       PW ID 1                                     --               10.11.1.1                              
37       47       PW ID 2                                     --               10.11.1.1                              

Статус сервисов
ASBR2# sh mpls l2vpn vpls 
VPLS: CE1
    bridge 10:
        MTU:    1500
        Status: Up
    PWs:
      PW ID 1, Neighbor 10.11.1.1:
        MTU:         1500
        Last change: 00:16:59
        Status:      Up
VPLS: CE2
    bridge 20:
        MTU:    1500
        Status: Up
    PWs:
      PW ID 2, Neighbor 10.11.1.1:
        MTU:         1500
        Last change: 00:16:59
        Status:      Up

Проверка сетевой доступности
CE1# ping 192.168.1.2 detailed 
PING 192.168.1.2 (192.168.1.2) 56 bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=0 time=1.08 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=0 time=1.06 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=0 time=1.01 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=0 time=0.971 ms
64 bytes from 192.168.1.2: icmp_seq=5 ttl=0 time=0.972 ms

CE2# ping 192.168.2.2 detailed  packets
PING 192.168.2.2 (192.168.2.2) 56 bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=0 time=1.17 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=0 time=0.972 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=0 time=0.960 ms
64 bytes from 192.168.2.2: icmp_seq=4 ttl=0 time=1.04 ms
64 bytes from 192.168.2.2: icmp_seq=5 ttl=0 time=0.976 ms

ASBR2# sh mac address-table bridge 10
VID     MAC Address          Interface                        Type      
-----   ------------------   ------------------------------   -------   
--      e4:5a:d4:01:b9:73    vlan 100                         Dynamic   
--      e4:5a:d4:a1:34:61    dypseudowire 1_10.11.1.1         Dynamic   
2 valid mac entries
ASBR2# sh mac address-table bridge 20
VID     MAC Address          Interface                        Type      
-----   ------------------   ------------------------------   -------   
--      e4:5a:d4:01:c1:80    vlan 200                         Dynamic   
--      e4:5a:d4:a1:34:61    dypseudowire 2_10.11.1.1         Dynamic   
2 valid mac entries


L3VPN


 Настроим СЕ:

СE1
ESR(config)# hostname CE1
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.1.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.110.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.1.1/30
ESR(config-subif)# exit 
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.110.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com 
ESR(config)# do conf
СE2
ESR(config)# hostname CE2
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.2.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.112.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.2.1/30
ESR(config-subif)# exit
ESR(config)# 
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.112.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com 
ESR(config)# do conf
СE3
ESR(config)# hostname CE3
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.3.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.113.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.3.1/30
ESR(config-subif)# exit
ESR(config)# 
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.113.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com 
ESR(config)# do conf

СE4
ESR(config)# hostname CE4
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.4.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.114.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.4.1/30
ESR(config-subif)# exit
ESR(config)# 
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.114.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com 
ESR(config)# do conf

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

PE1
ESR(config)# hostname PE1
ESR(config)# 
ESR(config)# ip vrf CE1
ESR(config-vrf)#   ip protocols bgp max-routes 100
ESR(config-vrf)#   rd 65500:1
ESR(config-vrf)#   route-target export 65500:1
ESR(config-vrf)#   route-target import 65500:1
ESR(config-vrf)# exit
ESR(config)# ip vrf CE2
ESR(config-vrf)#   ip protocols bgp max-routes 100
ESR(config-vrf)#   rd 65500:2
ESR(config-vrf)#   route-target export 65500:2
ESR(config-vrf)#   route-target import 65500:2
ESR(config-vrf)# exit
ESR(config)# 
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp log-neighbor-changes
ESR(config)# router bgp 65500
ESR(config-bgp)#   neighbor 10.10.1.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.10.1.1
ESR(config-bgp-neighbor)#     address-family vpnv4 unicast
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)#   vrf CE1
ESR(config-bgp-vrf)#     neighbor 192.168.1.1
ESR(config-bgp-vrf-neighbor)#       remote-as 65501
ESR(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
ESR(config-bgp-neighbor-af-vrf)#         route-map BGP out
ESR(config-bgp-neighbor-af-vrf)#         enable
ESR(config-bgp-neighbor-af-vrf)#       exit
ESR(config-bgp-vrf-neighbor)#       enable
ESR(config-bgp-vrf-neighbor)#     exit
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#     enable
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)#   vrf CE2
ESR(config-bgp-vrf)#     neighbor 192.168.2.1
ESR(config-bgp-vrf-neighbor)#       remote-as 65501
ESR(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
ESR(config-bgp-neighbor-af-vrf)#         route-map BGP out
ESR(config-bgp-neighbor-af-vrf)#         enable
ESR(config-bgp-neighbor-af-vrf)#       exit
ESR(config-bgp-vrf-neighbor)#       enable
ESR(config-bgp-vrf-neighbor)#     exit
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#     enable
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip vrf forwarding CE1
ESR(config-subif)#   description "to CE1"
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.1.2/30
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/1.200
ESR(config-subif)#   ip vrf forwarding CE2
ESR(config-subif)#   description "to CE2"
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.2.2/30
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.100.0.1/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.10.1.1/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.10.1.1
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com
ESR(config)# do conf
PE2
ESR(config)# hostname PE2
ESR(config)# 
ESR(config)# ip vrf CE1
ESR(config-vrf)#   ip protocols bgp max-routes 100
ESR(config-vrf)#   rd 65500:1
ESR(config-vrf)#   route-target export 65500:1
ESR(config-vrf)#   route-target import 65500:1
ESR(config-vrf)# exit
ESR(config)# ip vrf CE2
ESR(config-vrf)#   ip protocols bgp max-routes 100
ESR(config-vrf)#   rd 65500:2
ESR(config-vrf)#   route-target export 65500:2
ESR(config-vrf)#   route-target import 65500:2
ESR(config-vrf)# exit
ESR(config)# 
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp log-neighbor-changes
ESR(config)# router bgp 65500
ESR(config-bgp)#   router-id 10.11.1.1
ESR(config-bgp)#   neighbor 10.11.1.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.11.1.1
ESR(config-bgp-neighbor)#     address-family vpnv4 unicast
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)#   vrf CE1
ESR(config-bgp-vrf)#     neighbor 192.168.3.1
ESR(config-bgp-vrf-neighbor)#       remote-as 65501
ESR(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
ESR(config-bgp-neighbor-af-vrf)#         route-map BGP out
ESR(config-bgp-neighbor-af-vrf)#         enable
ESR(config-bgp-neighbor-af-vrf)#       exit
ESR(config-bgp-vrf-neighbor)#       enable
ESR(config-bgp-vrf-neighbor)#     exit
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#     enable
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)#   vrf CE2
ESR(config-bgp-vrf)#     neighbor 192.168.4.1
ESR(config-bgp-vrf-neighbor)#       remote-as 65501
ESR(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
ESR(config-bgp-neighbor-af-vrf)#         route-map BGP out
ESR(config-bgp-neighbor-af-vrf)#         enable
ESR(config-bgp-neighbor-af-vrf)#       exit
ESR(config-bgp-vrf-neighbor)#       enable
ESR(config-bgp-vrf-neighbor)#     exit
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#     enable
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip vrf forwarding CE1
ESR(config-subif)#   description "to CE3"
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.3.2/30
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/1.200
ESR(config-subif)#   ip vrf forwarding CE2
ESR(config-subif)#   description "to CE4"
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.4.2/30
ESR(config-subif)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.101.0.1/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.11.1.1/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.11.1.1
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com
ESR(config)# do conf

Настроим ASBR1 и ASBR2. Для передачи маршрутной информации между ними воспользуемся протоколом OSPF в соответствующих VRF:

ASBR1
ESR(config)# hostname ASBR1
ESR(config)# 
ESR(config)# ip vrf CE1
ESR(config-vrf)#   ip protocols ospf max-routes 100
ESR(config-vrf)#   rd 65500:1
ESR(config-vrf)#   route-target export 65500:1
ESR(config-vrf)#   route-target import 65500:1
ESR(config-vrf)# exit
ESR(config)# ip vrf CE2
ESR(config-vrf)#   ip protocols ospf max-routes 100
ESR(config-vrf)#   rd 65500:2
ESR(config-vrf)#   route-target export 65500:2
ESR(config-vrf)#   route-target import 65500:2
ESR(config-vrf)# exit
ESR(config)# 
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# vlan 100,200
ESR(config-vlan)# exit
ESR(config)# 
ESR(config)# router bgp 65500
ESR(config-bgp)#   router-id 10.10.1.2
ESR(config-bgp)#   neighbor 10.10.1.1
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.10.1.2
ESR(config-bgp-neighbor)#     address-family vpnv4 unicast
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)#   vrf CE1
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute ospf 1 intra-area inter-area external1 external2
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)#   vrf CE2
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute ospf 1 intra-area inter-area external1 external2
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf log-adjacency-changes
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# router ospf 1 vrf CE1
ESR(config-ospf)#   redistribute bgp 65500
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# router ospf 1 vrf CE2
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# bridge 10
ESR(config-bridge)#   ip vrf forwarding CE1
ESR(config-bridge)#   vlan 100
ESR(config-bridge)#   ip firewall disable
ESR(config-bridge)#   ip address 172.16.32.1/30
ESR(config-bridge)#   ip ospf instance 1
ESR(config-bridge)#   ip ospf
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# bridge 20
ESR(config-bridge)#   ip vrf forwarding CE2
ESR(config-bridge)#   vlan 200
ESR(config-bridge)#   ip firewall disable
ESR(config-bridge)#   ip address 172.16.32.5/30
ESR(config-bridge)#   ip ospf instance 1
ESR(config-bridge)#   ip ospf
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1
ESR(config-if-gi)#   description "to ASBR2"
ESR(config-if-gi)#   mode switchport
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   spanning-tree disable
ESR(config-if-gi)#   switchport forbidden default-vlan
ESR(config-if-gi)#   switchport mode trunk
ESR(config-if-gi)#   switchport trunk allowed vlan add 100,200
ESR(config-if-gi)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   description "to PE1"
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.100.0.2/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.10.1.2/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.10.1.2
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com
ESR(config)# do conf
ASBR2
ESR(config)# hostname ASBR2
ESR(config)# 
ESR(config)# ip vrf CE1
ESR(config-vrf)#   ip protocols ospf max-routes 100
ESR(config-vrf)#   rd 65500:1
ESR(config-vrf)#   route-target export 65500:1
ESR(config-vrf)#   route-target import 65500:1
ESR(config-vrf)# exit
ESR(config)# ip vrf CE2
ESR(config-vrf)#   ip protocols ospf max-routes 100
ESR(config-vrf)#   rd 65500:2
ESR(config-vrf)#   route-target export 65500:2
ESR(config-vrf)#   route-target import 65500:2
ESR(config-vrf)# exit
ESR(config)# 
ESR(config)# system jumbo-frames
ESR(config)# 
ESR(config)# vlan 100,200
ESR(config-vlan)# exit
ESR(config)# 
ESR(config)# router bgp 65500
ESR(config-bgp)#   router-id 10.11.1.2
ESR(config-bgp)#   neighbor 10.11.1.1
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     update-source 10.11.1.2
ESR(config-bgp-neighbor)#     address-family vpnv4 unicast
ESR(config-bgp-neighbor-af)#       send-community extended
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)#   vrf CE1
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute ospf 1 intra-area inter-area external1 external2
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)#   vrf CE2
ESR(config-bgp-vrf)#     address-family ipv4 unicast
ESR(config-bgp-vrf-af)#       redistribute ospf 1 intra-area inter-area external1 external2
ESR(config-bgp-vrf-af)#     exit
ESR(config-bgp-vrf)#   exit
ESR(config-bgp)# exit
ESR(config)# 
ESR(config)# router ospf log-adjacency-changes
ESR(config)# router ospf 1
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# router ospf 1 vrf CE1
ESR(config-ospf)#   redistribute bgp 65500
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# router ospf 1 vrf CE2
ESR(config-ospf)#   redistribute bgp 65500
ESR(config-ospf)#   area 0.0.0.0
ESR(config-ospf-area)#     enable
ESR(config-ospf-area)#   exit
ESR(config-ospf)#   enable
ESR(config-ospf)# exit
ESR(config)# 
ESR(config)# bridge 10
ESR(config-bridge)#   ip vrf forwarding CE1
ESR(config-bridge)#   vlan 100
ESR(config-bridge)#   ip firewall disable
ESR(config-bridge)#   ip address 172.16.32.2/30
ESR(config-bridge)#   ip ospf instance 1
ESR(config-bridge)#   ip ospf
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# bridge 20
ESR(config-bridge)#   ip vrf forwarding CE2
ESR(config-bridge)#   vlan 200
ESR(config-bridge)#   ip firewall disable
ESR(config-bridge)#   ip address 172.16.32.6/30
ESR(config-bridge)#   ip ospf instance 1
ESR(config-bridge)#   ip ospf
ESR(config-bridge)#   enable
ESR(config-bridge)# exit
ESR(config)# 
ESR(config)# interface gigabitethernet 1/0/1
ESR(config-if-gi)#   description "to ASBR1"
ESR(config-if-gi)#   mode switchport
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   spanning-tree disable
ESR(config-if-gi)#   switchport forbidden default-vlan
ESR(config-if-gi)#   switchport mode trunk
ESR(config-if-gi)#   switchport trunk allowed vlan add 100,200
ESR(config-if-gi)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)#   description "to PE2"
ESR(config-if-gi)#   mtu 1522
ESR(config-if-gi)#   ip firewall disable
ESR(config-if-gi)#   ip address 10.101.0.2/30
ESR(config-if-gi)#   ip ospf instance 1
ESR(config-if-gi)#   ip ospf
ESR(config-if-gi)# exit
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.11.1.2/32
ESR(config-loopback)#   ip ospf instance 1
ESR(config-loopback)#   ip ospf
ESR(config-loopback)# exit
ESR(config)# mpls
ESR(config-mpls)#   ldp
ESR(config-ldp)#     router-id 10.11.1.2
ESR(config-ldp)#     address-family ipv4
ESR(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ESR(config-ldp-af-ipv4-if)#       exit
ESR(config-ldp-af-ipv4)#     exit
ESR(config-ldp)#     enable
ESR(config-ldp)#   exit
ESR(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ESR(config-mpls)# exit
ESR(config)# do com 
ESR(config)# do conf

Настройка завершена. Проверим распространение маршрутной информации и сетевую доступность узлов:

PE1# sh 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:1               10.110.0.1/32      --              --         37      100        --     65501 i
*>    65500:1               10.111.0.1/32      --              --         35      100        --     65501 i
*>i   65500:1               10.113.0.1/32      10.10.1.2       --         43      100        0      ?
*>i   65500:1               10.114.0.1/32      10.10.1.2       --         48      100        0      ?

CE1# ping 10.113.0.1 source ip 10.110.0.1 detailed 
PING 10.113.0.1 (10.113.0.1) from 10.110.0.1 : 56 bytes of data.
64 bytes from 10.113.0.1: icmp_seq=1 ttl=0 time=1.31 ms
64 bytes from 10.113.0.1: icmp_seq=2 ttl=0 time=1.14 ms
64 bytes from 10.113.0.1: icmp_seq=3 ttl=0 time=1.08 ms
64 bytes from 10.113.0.1: icmp_seq=4 ttl=0 time=1.06 ms
64 bytes from 10.113.0.1: icmp_seq=5 ttl=0 time=1.16 ms

Inter-AS Option B

В отличие от Option A, между ASBR нет необходимости использовать VRF: при передаче трафика между ASBR будет навешиваться mpls-метка. Данная схема имеет лучшую масштабируемость.

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

L3VPN


Настроим CE:

СE1
ESR(config)# hostname CE1
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.1.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.110.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.1.1/30
ESR(config-subif)# exit 
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.110.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com 
ESR(config)# do conf
CE2
ESR(config)# hostname CE2
ESR(config)# 
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.2.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.112.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.2.1/30
ESR(config-subif)# exit
ESR(config)# 
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.112.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com 
ESR(config)# do conf
CE3
ESR(config)# hostname CE3
ESR(config)#
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.3.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.113.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.3.1/30
ESR(config-subif)# exit
ESR(config)#
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.113.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com
ESR(config)# do conf
CE4
ESR(config)# hostname CE4
ESR(config)#
ESR(config)# route-map BGP
ESR(config-route-map)#   rule 1
ESR(config-route-map-rule)#   exit
ESR(config-route-map)# exit
ESR(config)# router bgp 65501
ESR(config-bgp)#   neighbor 192.168.4.2
ESR(config-bgp-neighbor)#     remote-as 65500
ESR(config-bgp-neighbor)#     address-family ipv4 unicast
ESR(config-bgp-neighbor-af)#       route-map BGP out
ESR(config-bgp-neighbor-af)#       enable
ESR(config-bgp-neighbor-af)#     exit
ESR(config-bgp-neighbor)#     enable
ESR(config-bgp-neighbor)#   exit
ESR(config-bgp)#   address-family ipv4 unicast
ESR(config-bgp-af)#     network 10.114.0.1/32
ESR(config-bgp-af)#   exit
ESR(config-bgp)#   enable
ESR(config-bgp)# exit
ESR(config)# interface gigabitethernet 1/0/1.100
ESR(config-subif)#   ip firewall disable
ESR(config-subif)#   ip address 192.168.4.1/30
ESR(config-subif)# exit
ESR(config)#
ESR(config)# interface loopback 1
ESR(config-loopback)#   ip address 10.114.0.1/32
ESR(config-loopback)# exit
ESR(config)# do com
ESR(config)# do conf

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

PE1
PE1(config)# hostname PE1
PE1(config)# 
PE1(config)# ip vrf CE1
PE1(config-vrf)# ip protocols bgp max-routes 100
PE1(config-vrf)# rd 65501:1
PE1(config-vrf)# route-target export 65501:1
PE1(config-vrf)# route-target import 65501:1
PE1(config-vrf)# exit
PE1(config)# ip vrf CE2
PE1(config-vrf)# ip protocols bgp max-routes 100
PE1(config-vrf)# rd 65501:2
PE1(config-vrf)# route-target export 65501:2
PE1(config-vrf)# route-target import 65501:2
PE1(config-vrf)# exit
PE1(config)# 
PE1(config)# system jumbo-frames
PE1(config)# 
PE1(config)# route-map BGP_OUT
PE1(config-route-map)# rule 1
PE1(config-route-map-rule)# exit
PE1(config-route-map)# exit
PE1(config)# router bgp 65501
PE1(config-bgp)# neighbor 10.10.1.2
PE1(config-bgp-neighbor)# remote-as 65501
PE1(config-bgp-neighbor)# update-source 10.10.1.1
PE1(config-bgp-neighbor)# address-family vpnv4 unicast
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)# vrf CE1
PE1(config-bgp-vrf)# neighbor 192.168.1.1
PE1(config-bgp-vrf-neighbor)# remote-as 65510
PE1(config-bgp-vrf-neighbor)# address-family ipv4 unicast
PE1(config-bgp-neighbor-af-vrf)# route-map BGP_OUT out
PE1(config-bgp-neighbor-af-vrf)# enable
PE1(config-bgp-neighbor-af-vrf)# exit
PE1(config-bgp-vrf-neighbor)# enable
PE1(config-bgp-vrf-neighbor)# exit
PE1(config-bgp-vrf)# address-family ipv4 unicast
PE1(config-bgp-vrf-af)# redistribute bgp 65501 route-map BGP_OUT
PE1(config-bgp-vrf-af)# exit
PE1(config-bgp-vrf)# enable
PE1(config-bgp-vrf)# exit
PE1(config-bgp)# vrf CE2
PE1(config-bgp-vrf)# neighbor 192.168.2.1
PE1(config-bgp-vrf-neighbor)# remote-as 65511
PE1(config-bgp-vrf-neighbor)# address-family ipv4 unicast
PE1(config-bgp-neighbor-af-vrf)# route-map BGP_OUT out
PE1(config-bgp-neighbor-af-vrf)# enable
PE1(config-bgp-neighbor-af-vrf)# exit
PE1(config-bgp-vrf-neighbor)# enable
PE1(config-bgp-vrf-neighbor)# exit
PE1(config-bgp-vrf)# address-family ipv4 unicast
PE1(config-bgp-vrf-af)# redistribute bgp 65501 route-map BGP_OUT
PE1(config-bgp-vrf-af)# exit
PE1(config-bgp-vrf)# enable
PE1(config-bgp-vrf)# exit
PE1(config-bgp)# exit
PE1(config)# 
PE1(config)# router ospf 1
PE1(config-ospf)# area 0.0.0.0
PE1(config-ospf-area)# enable
PE1(config-ospf-area)# exit
PE1(config-ospf)# enable
PE1(config-ospf)# exit
PE1(config)# 
PE1(config)# interface gigabitethernet 1/0/1.100
PE1(config-subif)# ip vrf forwarding CE1
PE1(config-subif)# description "to CE1"
PE1(config-subif)# ip firewall disable
PE1(config-subif)# ip address 192.168.1.2/30
PE1(config-subif)# exit
PE1(config)# interface gigabitethernet 1/0/1.200
PE1(config-subif)# ip vrf forwarding CE2
PE1(config-subif)# description "to CE2"
PE1(config-subif)# ip firewall disable
PE1(config-subif)# ip address 192.168.2.2/30
PE1(config-subif)# exit
PE1(config)# interface gigabitethernet 1/0/2
PE1(config-if-gi)# description "to ASBR1"
PE1(config-if-gi)# mtu 1522
PE1(config-if-gi)# ip firewall disable
PE1(config-if-gi)# ip address 10.100.0.1/30
PE1(config-if-gi)# ip ospf instance 1
PE1(config-if-gi)# ip ospf
PE1(config-if-gi)# exit
PE1(config)# interface loopback 1
PE1(config-loopback)# ip address 10.10.1.1/32
PE1(config-loopback)# ip ospf instance 1
PE1(config-loopback)# ip ospf
PE1(config-loopback)# exit
PE1(config)# mpls
PE1(config-mpls)# ldp
PE1(config-ldp)# router-id 10.10.1.1
PE1(config-ldp)# address-family ipv4
PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2
PE1(config-ldp-af-ipv4-if)# exit
PE1(config-ldp-af-ipv4)# exit
PE1(config-ldp)# enable
PE1(config-ldp)# exit
PE1(config-mpls)# forwarding interface gigabitethernet 1/0/2
PE1(config-mpls)# exit
PE1(config)# do com
PE1(config)# do conf
PE2
PE2(config)# hostname PE2
PE2(config)# 
PE2(config)# ip vrf CE1
PE2(config-vrf)#   ip protocols bgp max-routes 100
PE2(config-vrf)#   rd 65501:1
PE2(config-vrf)#   route-target export 65501:1
PE2(config-vrf)#   route-target import 65501:1
PE2(config-vrf)# exit
PE2(config)# ip vrf CE2
PE2(config-vrf)#   ip protocols bgp max-routes 100
PE2(config-vrf)#   rd 65501:2
PE2(config-vrf)#   route-target export 65501:2
PE2(config-vrf)#   route-target import 65501:2
PE2(config-vrf)# exit
PE2(config)# 
PE2(config)# system jumbo-frames
PE2(config)# 
PE2(config)# route-map BGP_OUT
PE2(config-route-map)#   rule 1
PE2(config-route-map-rule)#   exit
PE2(config-route-map)# exit
PE2(config)# router bgp 65500
PE2(config-bgp)#   neighbor 10.11.1.2
PE2(config-bgp-neighbor)#     remote-as 65500
PE2(config-bgp-neighbor)#     update-source 10.11.1.1
PE2(config-bgp-neighbor)#     address-family vpnv4 unicast
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)#   vrf CE1
PE2(config-bgp-vrf)#     neighbor 192.168.3.1
PE2(config-bgp-vrf-neighbor)#       remote-as 65512
PE2(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
PE2(config-bgp-neighbor-af-vrf)#         route-map BGP_OUT out
PE2(config-bgp-neighbor-af-vrf)#         enable
PE2(config-bgp-neighbor-af-vrf)#       exit
PE2(config-bgp-vrf-neighbor)#       enable
PE2(config-bgp-vrf-neighbor)#     exit
PE2(config-bgp-vrf)#     address-family ipv4 unicast
PE2(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP_OUT
PE2(config-bgp-vrf-af)#     exit
PE2(config-bgp-vrf)#     enable
PE2(config-bgp-vrf)#   exit
PE2(config-bgp)#   vrf CE2
PE2(config-bgp-vrf)#     neighbor 192.168.4.1
PE2(config-bgp-vrf-neighbor)#       remote-as 65513
PE2(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
PE2(config-bgp-neighbor-af-vrf)#         route-map BGP_OUT out
PE2(config-bgp-neighbor-af-vrf)#         enable
PE2(config-bgp-neighbor-af-vrf)#       exit
PE2(config-bgp-vrf-neighbor)#       enable
PE2(config-bgp-vrf-neighbor)#     exit
PE2(config-bgp-vrf)#     address-family ipv4 unicast
PE2(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP_OUT
PE2(config-bgp-vrf-af)#     exit
PE2(config-bgp-vrf)#     enable
PE2(config-bgp-vrf)#   exit
PE2(config-bgp)# exit
PE2(config)# 
PE2(config)# router ospf 1
PE2(config-ospf)#   router-id 10.11.1.1
PE2(config-ospf)#   area 0.0.0.0
PE2(config-ospf-area)#     enable
PE2(config-ospf-area)#   exit
PE2(config-ospf)#   enable
PE2(config-ospf)# exit
PE2(config)# 
PE2(config)# interface gigabitethernet 1/0/1.100
PE2(config-subif)#   ip vrf forwarding CE1
PE2(config-subif)#   description "to CE3"
PE2(config-subif)#   ip firewall disable
PE2(config-subif)#   ip address 192.168.3.2/30
PE2(config-subif)# exit
PE2(config)# interface gigabitethernet 1/0/1.200
PE2(config-subif)#   ip vrf forwarding CE2
PE2(config-subif)#   description "CE4"
PE2(config-subif)#   ip firewall disable
PE2(config-subif)#   ip address 192.168.4.2/30
PE2(config-subif)# exit
PE2(config)# interface gigabitethernet 1/0/2
PE2(config-if-gi)#   description "to ASBR2"
PE2(config-if-gi)#   mtu 1522
PE2(config-if-gi)#   ip firewall disable
PE2(config-if-gi)#   ip address 10.102.0.1/30
PE2(config-if-gi)#   ip ospf instance 1
PE2(config-if-gi)#   ip ospf
PE2(config-if-gi)# exit
PE2(config)# interface loopback 1
PE2(config-loopback)#   ip address 10.11.1.1/32
PE2(config-loopback)#   ip ospf instance 1
PE2(config-loopback)#   ip ospf
PE2(config-loopback)# exit
PE2(config)# mpls
PE2(config-mpls)#   ldp
PE2(config-ldp)#     router-id 10.11.1.1
PE2(config-ldp)#     address-family ipv4
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)#     enable
PE2(config-ldp)#   exit
PE2(config-mpls)#   forwarding interface gigabitethernet 1/0/2
PE2(config-mpls)# exit
PE2(config)# do com
PE2(config)# do conf

Настроим ASBR1 и ASBR2:

ASBR1
ASBR1(config)# hostname ASBR1
ASBR1(config)# 
ASBR1(config)# system jumbo-frames
ASBR1(config)# 
ASBR1(config)# route-map VPNv4
ASBR1(config-route-map)#   rule 1
ASBR1(config-route-map-rule)#   exit
ASBR1(config-route-map)# exit
ASBR1(config)# router bgp 65501
ASBR1(config-bgp)#   router-id 10.10.1.2
ASBR1(config-bgp)#   neighbor 10.10.1.1
ASBR1(config-bgp-neighbor)#     remote-as 65501
ASBR1(config-bgp-neighbor)#     update-source 10.10.1.2
ASBR1(config-bgp-neighbor)#     address-family vpnv4 unicast
ASBR1(config-bgp-neighbor-af)#       next-hop-self
ASBR1(config-bgp-neighbor-af)#       send-community extended
ASBR1(config-bgp-neighbor-af)#       enable
ASBR1(config-bgp-neighbor-af)#     exit
ASBR1(config-bgp-neighbor)#     enable
ASBR1(config-bgp-neighbor)#   exit
ASBR1(config-bgp)#   neighbor 10.101.0.1
ASBR1(config-bgp-neighbor)#     remote-as 65500
ASBR1(config-bgp-neighbor)#     address-family vpnv4 unicast
ASBR1(config-bgp-neighbor-af)#       route-map VPNv4 out
ASBR1(config-bgp-neighbor-af)#       send-community extended
ASBR1(config-bgp-neighbor-af)#       enable
ASBR1(config-bgp-neighbor-af)#     exit
ASBR1(config-bgp-neighbor)#     enable
ASBR1(config-bgp-neighbor)#   exit
ASBR1(config-bgp)#   enable
ASBR1(config-bgp)# exit
ASBR1(config)# 
ASBR1(config)# router ospf 1
ASBR1(config-ospf)#   area 0.0.0.0
ASBR1(config-ospf-area)#     enable
ASBR1(config-ospf-area)#   exit
ASBR1(config-ospf)#   enable
ASBR1(config-ospf)# exit
ASBR1(config)# 
ASBR1(config)# interface gigabitethernet 1/0/1
ASBR1(config-if-gi)#   description "to ASBR2"
ASBR1(config-if-gi)#   ip firewall disable
ASBR1(config-if-gi)#   ip address 10.101.0.2/30
ASBR1(config-if-gi)# exit
ASBR1(config)# interface gigabitethernet 1/0/2
ASBR1(config-if-gi)#   description "to PE1"
ASBR1(config-if-gi)#   mtu 1522
ASBR1(config-if-gi)#   ip firewall disable
ASBR1(config-if-gi)#   ip address 10.100.0.2/30
ASBR1(config-if-gi)#   ip ospf instance 1
ASBR1(config-if-gi)#   ip ospf
ASBR1(config-if-gi)# exit
ASBR1(config)# interface loopback 1
ASBR1(config-loopback)#   ip address 10.10.1.2/32
ASBR1(config-loopback)#   ip ospf instance 1
ASBR1(config-loopback)#   ip ospf
ASBR1(config-loopback)# exit
ASBR1(config)# mpls
ASBR1(config-mpls)#   ldp
ASBR1(config-ldp)#     router-id 10.10.1.2
ASBR1(config-ldp)#     address-family ipv4
ASBR1(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ASBR1(config-ldp-af-ipv4-if)#       exit
ASBR1(config-ldp-af-ipv4)#     exit
ASBR1(config-ldp)#     enable
ASBR1(config-ldp)#   exit
ASBR1(config-mpls)#   forwarding interface gigabitethernet 1/0/1
ASBR1(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ASBR1(config-mpls)# exit
ASBR1(config)# do com
ASBR1(config)# do conf

ASBR2
ASBR2(config)# hostname ASBR2
ASBR2(config)# 
ASBR2(config)# system jumbo-frames
ASBR2(config)# 
ASBR2(config)# route-map VPNv4
ASBR2(config-route-map)#   rule 1
ASBR2(config-route-map-rule)#   exit
ASBR2(config-route-map)# exit
ASBR2(config)# router bgp 65500
ASBR2(config-bgp)#   router-id 10.11.1.2
ASBR2(config-bgp)#   neighbor 10.101.0.2
ASBR2(config-bgp-neighbor)#     remote-as 65501
ASBR2(config-bgp-neighbor)#     address-family vpnv4 unicast
ASBR2(config-bgp-neighbor-af)#       route-map VPNv4 out
ASBR2(config-bgp-neighbor-af)#       send-community extended
ASBR2(config-bgp-neighbor-af)#       enable
ASBR2(config-bgp-neighbor-af)#     exit
ASBR2(config-bgp-neighbor)#     enable
ASBR2(config-bgp-neighbor)#   exit
ASBR2(config-bgp)#   neighbor 10.11.1.1
ASBR2(config-bgp-neighbor)#     remote-as 65500
ASBR2(config-bgp-neighbor)#     update-source 10.11.1.2
ASBR2(config-bgp-neighbor)#     address-family vpnv4 unicast
ASBR2(config-bgp-neighbor-af)#       next-hop-self
ASBR2(config-bgp-neighbor-af)#       send-community extended
ASBR2(config-bgp-neighbor-af)#       enable
ASBR2(config-bgp-neighbor-af)#     exit
ASBR2(config-bgp-neighbor)#     enable
ASBR2(config-bgp-neighbor)#   exit
ASBR2(config-bgp)#   enable
ASBR2(config-bgp)# exit
ASBR2(config)# 
ASBR2(config)# router ospf 1
ASBR2(config-ospf)#   router-id 10.11.1.2
ASBR2(config-ospf)#   area 0.0.0.0
ASBR2(config-ospf-area)#     enable
ASBR2(config-ospf-area)#   exit
ASBR2(config-ospf)#   enable
ASBR2(config-ospf)# exit
ASBR2(config)# 
ASBR2(config)# interface gigabitethernet 1/0/1
ASBR2(config-if-gi)#   description "to ASBR1"
ASBR2(config-if-gi)#   ip firewall disable
ASBR2(config-if-gi)#   ip address 10.101.0.1/30
ASBR2(config-if-gi)# exit
ASBR2(config)# interface gigabitethernet 1/0/2
ASBR2(config-if-gi)#   description "to PE2"
ASBR2(config-if-gi)#   mtu 1522
ASBR2(config-if-gi)#   ip firewall disable
ASBR2(config-if-gi)#   ip address 10.102.0.2/30
ASBR2(config-if-gi)#   ip ospf instance 1
ASBR2(config-if-gi)#   ip ospf
ASBR2(config-if-gi)# exit
ASBR2(config)# interface loopback 1
ASBR2(config-loopback)#   ip address 10.11.1.2/32
ASBR2(config-loopback)#   ip ospf instance 1
ASBR2(config-loopback)#   ip ospf
ASBR2(config-loopback)# exit
ASBR2(config)# mpls
ASBR2(config-mpls)#   ldp
ASBR2(config-ldp)#     router-id 10.11.1.2
ASBR2(config-ldp)#     address-family ipv4
ASBR2(config-ldp-af-ipv4)#       interface gigabitethernet 1/0/2
ASBR2(config-ldp-af-ipv4-if)#       exit
ASBR2(config-ldp-af-ipv4)#     exit
ASBR2(config-ldp)#     enable
ASBR2(config-ldp)#   exit
ASBR2(config-mpls)#   forwarding interface gigabitethernet 1/0/1
ASBR2(config-mpls)#   forwarding interface gigabitethernet 1/0/2
ASBR2(config-mpls)# exit
ASBR2(config)# do com
ASBR2(config)# do conf

 После завершения настройки проверим распространение маршрутной информации и сетевую доступность узлов:

PE1# sh 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            
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>i   65501:2               10.104.0.1/32      10.10.1.2       --         23      100        0      65500 65513 i
*>i   65501:1               10.103.0.1/32      10.10.1.2       --         19      100        0      65500 65512 i
*>    65501:2               10.101.0.1/32      --              --         29      100        --     65511 i
*>    65501:1               10.100.0.1/32      --              --         28      100        --     65510 i
ASBR1#    sh 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            
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>    65501:2               10.104.0.1/32      10.101.0.1      --         24      100        0      65500 65513 i
*>    65501:1               10.103.0.1/32      10.101.0.1      --         20      100        0      65500 65512 i
*>i   65501:2               10.101.0.1/32      10.10.1.1       --         29      100        0      65511 i
*>i   65501:1               10.100.0.1/32      10.10.1.1       --         28      100        0      65510 i

ASBR2# sh 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            
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>i   65501:2               10.104.0.1/32      10.11.1.1       --         19      100        0      65513 i
*>i   65501:1               10.103.0.1/32      10.11.1.1       --         18      100        0      65512 i
*>    65501:2               10.101.0.1/32      10.101.0.2      --         30      100        0      65501 65511 i
*>    65501:1               10.100.0.1/32      10.101.0.2      --         31      100        0      65501 65510 i

PE2# sh 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            
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>    65501:2               10.104.0.1/32      --              --         19      100        --     65513 i
*>    65501:1               10.103.0.1/32      --              --         18      100        --     65512 i
*>i   65501:2               10.101.0.1/32      10.11.1.2       --         29      100        0      65501 65511 i
*>i   65501:1               10.100.0.1/32      10.11.1.2       --         30      100        0      65501 65510 i

CE4# ping 10.104.0.1 source ip 10.101.0.1  detailed 
PING 10.104.0.1 (10.104.0.1) from 10.101.0.1 : 56 bytes of data.
64 bytes from 10.104.0.1: icmp_seq=1 ttl=0 time=2.25 ms
64 bytes from 10.104.0.1: icmp_seq=2 ttl=0 time=2.08 ms
64 bytes from 10.104.0.1: icmp_seq=3 ttl=0 time=2.15 ms
64 bytes from 10.104.0.1: icmp_seq=4 ttl=0 time=2.12 ms
64 bytes from 10.104.0.1: icmp_seq=5 ttl=0 time=2.09 ms

CE1# ping 10.103.0.1 source ip 10.100.0.1 detailed 
PING 10.103.0.1 (10.103.0.1) from 10.100.0.1 : 56 bytes of data.
64 bytes from 10.103.0.1: icmp_seq=1 ttl=0 time=2.22 ms


Inter-AS Option C

Inter-AS опция C является третьим сценарием для настройки связности различных автономных систем описанным в RFC 4364. Данный сценарий является наиболее масштабируемым из описанных ранее, однако он имеет свои особенности, которые необходимо учитывать при построении сети.

В данной схеме ASBR'ы  не хранят клиентские VPNv4 префиксы, а только распространяют маршрутную информацию и метки для PE устройств в своей автономной системе. 

Для распространения клиентских VPNv4 префиксов между различными автономными системами используется MP-EBGP сессия между устройствами, выполняющими роль RR (route reflector) , либо между PE устройствами. В случае, если VPNv4 сессия настраивается между RR, то в передаваемых BGP update сообщениях не должен меняться атрибут next-hop.

В рамках EBGP сессии между ASBR производится обмен маршрутной информацией о транспортных префиксах PE  различных автономных систем. Эти маршруты отвечают за доступность next-hop для клиентских VPNv4 префиксов, передаваемых в рамках MP-EBGP сессии между RR или PE. Данные префиксы так же используются для установления MP-EBGP сесcии между устройствами, выполняющими роль RR либо роль PE в разных автономных системах.


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

Из недостатков можно отметить следующее:

  • Безопасность

Передача транспортных префиксов PE из локальной AS во вне несет в себе потенциальные риски. Межу AS должен быть установлен высокий уровень доверия.

  • QoS

VPN контексты отсутствует на ASBR, соответственно нет возможности применить шейпинг/полисинг per VPN.

Для организации сквозных настроек QoS требуется согласование настроек на стыке ASBR↔ASBR.

L3VPN

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

  • Внутри AS должен быть настроен IGP для распространения маршрутной информации для связности PE.
  • Внутри AS должен быть настроен протокол LDP для распространения меток.
  • На PE, к которым подключены абонентские CPE, должны быть настроены соответствующие VRF. Интерфейсы, к которым подключены CPE должны быть помещены в соответсвующий VRF.

Для настройки сервиса VPN приведем пример конфигурации устройств одной из AS (Настройки в другой AS будут полностью зеркальные)

PE1
hostname PE1

ip vrf vrf1
  rd 1.1.1.1:1
  route-target export 100:1
  route-target import 100:1
exit

router bgp 65000
  neighbor 2.2.2.2
    remote-as 200
    update-source loopback 1
    address-family ipv4 unicast
      send-label
      enable
    exit
    address-family vpnv4 unicast
      next-hop-self
      send-community extended
      enable
    exit
    enable
  exit
  enable
  vrf vrf1
    address-family ipv4 unicast
      network 100.100.100.12/32 ????? - дописать импорт клиентских префиксов
    exit
  exit
exit

RR-1
hostname RR1

route-map VPNv4_RM1
  rule 1
  exit
exit
router bgp 65000
  neighbor 3.3.3.3
    remote-as 65000
    route-reflector-client
    update-source loopback 1
    address-family ipv4 unicast
        send-label
      enable
    exit
    enable
  exit
  neighbor 1.1.1.1
    remote-as 65000
    route-reflector-client
    update-source loopback 1
    address-family ipv4 unicast
      send-label
      enable
    exit
    address-family vpnv4 unicast
      send-community extended
      enable
    exit
    enable
  exit 
  neighbor 5.5.5.5
    remote-as 65001
    ebgp-multihop 10
    update-source loopback 1
    address-family vpnv4 unicast
      route-map VPNv4_RM1 out
      next-hop-unchanged
      send-community extended
      enable
    exit
    enable
  exit
  enable
exit

ASBR-1
hostname ASBR1

route-map RM1
  rule 1
  exit
exit
router bgp 65000
  neighbor 2.2.2.2
    remote-as 65000
    update-source loopback 1
    address-family ipv4 unicast
      next-hop-self
      send-label
      enable
    exit
    enable
  exit
  neighbor 192.168.100.1
    remote-as 65001
    address-family ipv4 unicast
      route-map RM1 out
      send-label
      enable
    exit
    enable
  exit
  address-family ipv4 unicast
    network 1.1.1.1/32
    network 2.2.2.2/32
    network 3.3.3.3/32
  exit
  enable
exit

MPLS over GRE

В этом разделе приведен пример настройки VPN сервисов, построенных через GRE-туннель.

L2VPN

В качестве сервиса l2vpn произведем настройку EoMPLS over GRE. Также возможно построение VPLS over GRE ( BGP или LDP signaling).

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

  • По крайней мере одна mpls-метка будет присутствовать при передаче через туннель. В учет стоит включать все метки в стеке, например, explicit null или entropy label; 
  • Необходимо учитывать vlan, q-in-q заголовки (если они имеются);
  • При превышении MTU исходящего интерфейса пакет будет отброшен (если не включена безусловная фрагментация GRE-трафика);
  • Control world не поддержан;
  • DF-бит будет выставлен в единицу.

Ниже представлена примерная структура пакета:



Настройки CE1 и CE2:

CE1
hostname CE1

interface gigabitethernet 1/0/2
  ip firewall disable
  ip address 10.100.0.1/24
exit

CE2
hostname CE2

interface gigabitethernet 1/0/2
  ip firewall disable
  ip address 10.100.0.2/24
exit

Конфигурация ESR1 и ESR2:

ESR1
ESR1(config)# hostname ESR1
ESR1(config)# 
ESR1(config)# system cpu load-balance mpls passenger ip
ESR1(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
ESR1(config)# security zone trusted
ESR1(config-zone)# exit
ESR1(config)# security zone untrusted
ESR1(config-zone)# exit
ESR1(config)# 
ESR1(config)# router ospf 1
ESR1(config-ospf)#   area 0.0.0.0
ESR1(config-ospf-area)#     enable
ESR1(config-ospf-area)#   exit
ESR1(config-ospf)#   enable
ESR1(config-ospf)# exit
ESR1(config)# 
ESR1(config)# interface gigabitethernet 1/0/1
ESR1(config-if-gi)#   security-zone untrusted
ESR1(config-if-gi)#   ip address 192.0.2.1/30
ESR1(config-if-gi)# exit
ESR1(config)# interface gigabitethernet 1/0/2
ESR1(config-if-gi)#   description "From CE1"
ESR1(config-if-gi)#   mode switchport
ESR1(config-if-gi)# exit
ESR1(config)# interface loopback 1
ESR1(config-loopback)#   ip address 10.100.0.1/32
ESR1(config-loopback)#   ip ospf instance 1
ESR1(config-loopback)#   ip ospf
ESR1(config-loopback)# exit
ESR1(config)# tunnel gre 1
ESR1(config-gre)#   key 60
ESR1(config-gre)#   ttl 64
ESR1(config-gre)#   mtu 1458
ESR1(config-gre)#   ip firewall disable
ESR1(config-gre)#   local address 192.0.2.1
ESR1(config-gre)#   remote address 192.0.2.2
ESR1(config-gre)#   ip address 10.0.0.1/30
ESR1(config-gre)#   ip ospf instance 1
ESR1(config-gre)#   ip ospf network point-to-point
ESR1(config-gre)#   ip ospf
ESR1(config-gre)#   enable
ESR1(config-gre)# exit
ESR1(config)# 
ESR1(config)# mpls
ESR1(config-mpls)#   ldp
ESR1(config-ldp)#     router-id 10.100.0.1
ESR1(config-ldp)#     address-family ipv4
ESR1(config-ldp-af-ipv4)#       interface gre 1
ESR1(config-ldp-af-ipv4-if)#       exit
ESR1(config-ldp-af-ipv4)#     exit
ESR1(config-ldp)#     enable
ESR1(config-ldp)#   exit
ESR1(config-mpls)#   l2vpn
ESR1(config-l2vpn)#     pw-class VPWS
ESR1(config-l2vpn-pw-class)#     exit
ESR1(config-l2vpn)#     p2p EoMPLS
ESR1(config-l2vpn-p2p)#       interface gigabitethernet 1/0/2
ESR1(config-l2vpn-p2p)#       pw 100 10.100.0.2
ESR1(config-l2vpn-pw)#         pw-class VPWS
ESR1(config-l2vpn-pw)#         enable
ESR1(config-l2vpn-pw)#       exit
ESR1(config-l2vpn-p2p)#       enable
ESR1(config-l2vpn-p2p)#     exit
ESR1(config-l2vpn)#   exit
ESR1(config-mpls)#   forwarding interface gre 1
ESR1(config-mpls)# exit
ESR1(config)# security zone-pair untrusted self
ESR1(config-zone-pair)#   rule 1
ESR1(config-zone-pair-rule)#     action permit
ESR1(config-zone-pair-rule)#     match protocol gre
ESR1(config-zone-pair-rule)#     enable
ESR1(config-zone-pair-rule)#   exit
ESR1(config-zone-pair)# exit
ESR1(config)# do com
ESR1(config)# do conf
ESR2
ESR2(config)# hostname ESR2
ESR2(config)# 
ESR2(config)# system cpu load-balance mpls passenger ip
ESR2(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
ESR2(config)# security zone trusted
ESR2(config-zone)# exit
ESR2(config)# security zone untrusted
ESR2(config-zone)# exit
ESR2(config)# 
ESR2(config)# router ospf 1
ESR2(config-ospf)#   area 0.0.0.0
ESR2(config-ospf-area)#     enable
ESR2(config-ospf-area)#   exit
ESR2(config-ospf)#   enable
ESR2(config-ospf)# exit
ESR2(config)# 
ESR2(config)# interface gigabitethernet 1/0/1
ESR2(config-if-gi)#   security-zone untrusted
ESR2(config-if-gi)#   ip address 192.0.2.2/30
ESR2(config-if-gi)# exit
ESR2(config)# interface gigabitethernet 1/0/2
ESR2(config-if-gi)#   description "From CE2"
ESR2(config-if-gi)#   mode switchport
ESR2(config-if-gi)# exit
ESR2(config)# interface loopback 1
ESR2(config-loopback)#   ip address 10.100.0.2/32
ESR2(config-loopback)#   ip ospf instance 1
ESR2(config-loopback)#   ip ospf
ESR2(config-loopback)# exit
ESR2(config)# tunnel gre 1
ESR2(config-gre)#   key 60
ESR2(config-gre)#   ttl 64
ESR2(config-gre)#   mtu 1458
ESR2(config-gre)#   ip firewall disable
ESR2(config-gre)#   local address 192.0.2.2
ESR2(config-gre)#   remote address 192.0.2.1
ESR2(config-gre)#   ip address 10.0.0.2/30
ESR2(config-gre)#   ip ospf instance 1
ESR2(config-gre)#   ip ospf network point-to-point
ESR2(config-gre)#   ip ospf
ESR2(config-gre)#   enable
ESR2(config-gre)# exit
ESR2(config)# 
ESR2(config)# mpls
ESR2(config-mpls)#   ldp
ESR2(config-ldp)#     router-id 10.100.0.2
ESR2(config-ldp)#     address-family ipv4
ESR2(config-ldp-af-ipv4)#       interface gre 1
ESR2(config-ldp-af-ipv4-if)#       exit
ESR2(config-ldp-af-ipv4)#     exit
ESR2(config-ldp)#     enable
ESR2(config-ldp)#   exit
ESR2(config-mpls)#   l2vpn
ESR2(config-l2vpn)#     pw-class VPWS
ESR2(config-l2vpn-pw-class)#     exit
ESR2(config-l2vpn)#     p2p EoMPLS
ESR2(config-l2vpn-p2p)#       interface gigabitethernet 1/0/2
ESR2(config-l2vpn-p2p)#       pw 100 10.100.0.1
ESR2(config-l2vpn-pw)#         pw-class VPWS
ESR2(config-l2vpn-pw)#         enable
ESR2(config-l2vpn-pw)#       exit
ESR2(config-l2vpn-p2p)#       enable
ESR2(config-l2vpn-p2p)#     exit
ESR2(config-l2vpn)#   exit
ESR2(config-mpls)#   forwarding interface gre 1
ESR2(config-mpls)# exit
ESR2(config)# security zone-pair untrusted self
ESR2(config-zone-pair)#   rule 1
ESR2(config-zone-pair-rule)#     action deny
ESR2(config-zone-pair-rule)#     match protocol gre
ESR2(config-zone-pair-rule)#     enable
ESR2(config-zone-pair-rule)#   exit
ESR2(config-zone-pair)# exit
ESR2(config)# do com
ESR2(config)# do conf

Настройка завершена. Проверим состояние сервиса и доступность узлов:

* Конфигурация туннеля*
ESR2# sh tunnels configuration gre 1
State:                                             Enabled
Description:                                       --
Mode:                                              ip
Bridge group:                                      --
VRF:                                               --
Local address:                                     192.0.2.2
Remote address:                                    192.0.2.1
Calculates checksums for outgoing GRE packets:     No
Requires that all input GRE packets were checksum: No
key:                                               60
TTL:                                               64
DSCP:                                              Inherit
MTU:                                               1458
Path MTU discovery:                                Enabled
Don't fragment bit suppression:                    Disabled
Security zone:                                     --
Multipoint mode:                                   Disabled
Keepalive:                                         
    State:                                             Disabled
    Timeout:                                           10
    Retries:                                           6
    Destination address:                               --

*Статус cервиса и выделенные метки*
sh mpls l2vpn p2p 
P2P: EoMPLS
    gigabitethernet 1/0/2:
        MTU:    1500
        Status: Up
    PW ID 100, Neighbor 10.100.0.1:
        MTU:         1500
        Status TLV:  Enable
        Last change: 00:14:27
        Status:      Up

ESR2# sh mpls forwarding-table 
Local    Outgoing Prefix                                      Outgoing         Next Hop                               
label    label    or tunnel ID                                Interface                                               
-------- -------- ------------------------------------------- ---------------- ---------------------------------------
17       imp-null 10.100.0.1/32                               gre 1            10.0.0.1                               
16       16       PW ID 100                                   --               10.100.0.1                             

*Доступность*CE1# ping 10.100.0.2 detailed 
PING 10.100.0.2 (10.100.0.2) 56 bytes of data.
64 bytes from 10.100.0.2: icmp_seq=1 ttl=0 time=1.38 ms
64 bytes from 10.100.0.2: icmp_seq=2 ttl=0 time=1.22 ms
64 bytes from 10.100.0.2: icmp_seq=3 ttl=0 time=1.33 ms
64 bytes from 10.100.0.2: icmp_seq=4 ttl=0 time=1.26 ms
64 bytes from 10.100.0.2: icmp_seq=5 ttl=0 time=1.17 ms

L3VPN

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

  • По крайне мере одна mpls-метка будет присутствовать при передаче через туннель. В учет стоит включать все метки в стеке, например, explicit null и/или entropy label; 
  • При превышении MTU исходящего интерфейса пакет будет отброшен (если не включена безусловная фрагментация GRE-трафика);
  • Control world не поддержан;
  • DFбит будет выставлен в единицу.

Ниже представлена примерная структура пакета:

Настройки CE1 и CE2:

CE1
CE1(config)# hostname CE1
CE1(config)# 
CE1(config)# route-map BGP_OUT
CE1(config-route-map)#   rule 1
CE1(config-route-map-rule)#   exit
CE1(config-route-map)# exit
CE1(config)# router bgp 65501
CE1(config-bgp)#   neighbor 10.10.0.2
CE1(config-bgp-neighbor)#     remote-as 65500
CE1(config-bgp-neighbor)#     address-family ipv4 unicast
CE1(config-bgp-neighbor-af)#       route-map BGP_OUT out
CE1(config-bgp-neighbor-af)#       enable
CE1(config-bgp-neighbor-af)#     exit
CE1(config-bgp-neighbor)#     enable
CE1(config-bgp-neighbor)#   exit
CE1(config-bgp)#   address-family ipv4 unicast
CE1(config-bgp-af)#     network 10.100.0.0/24
CE1(config-bgp-af)#   exit
CE1(config-bgp)#   enable
CE1(config-bgp)# exit
CE1(config)# 
CE1(config)# 
CE1(config)# interface gigabitethernet 1/0/2
CE1(config-if-gi)#   description "to ESR1"
CE1(config-if-gi)#   ip firewall disable
CE1(config-if-gi)#   ip address 10.10.0.1/30
CE1(config-if-gi)# exit
CE1(config)# interface loopback 1
CE1(config-loopback)#   ip address 10.100.0.1/24
CE1(config-loopback)# exit
CE2
CE2(config)# hostname CE2
CE2(config)# 
CE2(config)# route-map BGP_OUT
CE2(config-route-map)#   rule 1
CE2(config-route-map-rule)#   exit
CE2(config-route-map)# exit
CE2(config)# router bgp 65502
CE2(config-bgp)#   neighbor 10.10.0.5
CE2(config-bgp-neighbor)#     remote-as 65500
CE2(config-bgp-neighbor)#     address-family ipv4 unicast
CE2(config-bgp-neighbor-af)#       route-map BGP_OUT out
CE2(config-bgp-neighbor-af)#       enable
CE2(config-bgp-neighbor-af)#     exit
CE2(config-bgp-neighbor)#     enable
CE2(config-bgp-neighbor)#   exit
CE2(config-bgp)#   address-family ipv4 unicast
CE2(config-bgp-af)#     network 10.101.0.0/24
CE2(config-bgp-af)#   exit
CE2(config-bgp)#   enable
CE2(config-bgp)# exit
CE2(config)# 
CE2(config)# 
CE2(config)# interface gigabitethernet 1/0/2
CE2(config-if-gi)#   description "to ESR2"
CE2(config-if-gi)#   ip firewall disable
CE2(config-if-gi)#   ip address 10.10.0.6/30
CE2(config-if-gi)# exit
CE2(config)# interface loopback 1
CE2(config-loopback)#   ip address 10.101.0.1/24
CE2(config-loopback)# exit

Конфигурация ESR1 и ESR2:

ESR1
ESR1(config)# hostname ESR1
ESR1(config)# 
ESR1(config)# ip vrf l3vpn_service
ESR1(config-vrf)#   ip protocols bgp max-routes 100
ESR1(config-vrf)#   rd 65500:1
ESR1(config-vrf)#   route-target export 65500:1
ESR1(config-vrf)#   route-target import 65500:1
ESR1(config-vrf)# exit
ESR1(config)# 
ESR1(config)# 
ESR1(config)# system cpu load-balance mpls passenger ip
ESR1(config)# security zone untrusted
ESR1(config-zone)# exit
ESR1(config)# security zone trusted
ESR1(config-zone)# exit
ESR1(config)# 
ESR1(config)# route-map BGP_OUT
ESR1(config-route-map)#   rule 1
ESR1(config-route-map-rule)#   exit
ESR1(config-route-map)# exit
ESR1(config)# router bgp 65500
ESR1(config-bgp)#   router-id 10.12.0.1
ESR1(config-bgp)#   neighbor 10.12.0.2
ESR1(config-bgp-neighbor)#     remote-as 65500
ESR1(config-bgp-neighbor)#     update-source 10.12.0.1
ESR1(config-bgp-neighbor)#     address-family vpnv4 unicast
ESR1(config-bgp-neighbor-af)#       send-community extended
ESR1(config-bgp-neighbor-af)#       enable
ESR1(config-bgp-neighbor-af)#     exit
ESR1(config-bgp-neighbor)#     enable
ESR1(config-bgp-neighbor)#   exit
ESR1(config-bgp)#   enable
ESR1(config-bgp)#   vrf l3vpn_service
ESR1(config-bgp-vrf)#     neighbor 10.10.0.1
ESR1(config-bgp-vrf-neighbor)#       remote-as 65501
ESR1(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
ESR1(config-bgp-neighbor-af-vrf)#         route-map BGP_OUT out
ESR1(config-bgp-neighbor-af-vrf)#         enable
ESR1(config-bgp-neighbor-af-vrf)#       exit
ESR1(config-bgp-vrf-neighbor)#       enable
ESR1(config-bgp-vrf-neighbor)#     exit
ESR1(config-bgp-vrf)#     address-family ipv4 unicast
ESR1(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP_OUT
ESR1(config-bgp-vrf-af)#     exit
ESR1(config-bgp-vrf)#     enable
ESR1(config-bgp-vrf)#   exit
ESR1(config-bgp)# exit
ESR1(config)# 
ESR1(config)# router ospf 1
ESR1(config-ospf)#   router-id 10.12.0.1
ESR1(config-ospf)#   area 0.0.0.0
ESR1(config-ospf-area)#     enable
ESR1(config-ospf-area)#   exit
ESR1(config-ospf)#   enable
ESR1(config-ospf)# exit
ESR1(config)# 
ESR1(config)# interface gigabitethernet 1/0/1
ESR1(config-if-gi)#   security-zone untrusted
ESR1(config-if-gi)#   ip address 192.0.2.1/30
ESR1(config-if-gi)# exit
ESR1(config)# interface gigabitethernet 1/0/2
ESR1(config-if-gi)#   ip vrf forwarding l3vpn_service
ESR1(config-if-gi)#   description "from CE1"
ESR1(config-if-gi)#   ip firewall disable
ESR1(config-if-gi)#   ip address 10.10.0.2/30
ESR1(config-if-gi)# exit
ESR1(config)# interface loopback 1
ESR1(config-loopback)#   ip address 10.12.0.1/32
ESR1(config-loopback)#   ip ospf instance 1
ESR1(config-loopback)#   ip ospf
ESR1(config-loopback)# exit
ESR1(config)# tunnel gre 1
ESR1(config-gre)#   key 60
ESR1(config-gre)#   ttl 64
ESR1(config-gre)#   mtu 1472
ESR1(config-gre)#   ip firewall disable
ESR1(config-gre)#   local address 192.0.2.1
ESR1(config-gre)#   remote address 192.0.2.2
ESR1(config-gre)#   ip address 10.11.0.1/30
ESR1(config-gre)#   ip ospf instance 1
ESR1(config-gre)#   ip ospf
ESR1(config-gre)#   enable
ESR1(config-gre)# exit
ESR1(config)# 
ESR1(config)# mpls
ESR1(config-mpls)#   ldp
ESR1(config-ldp)#     router-id 10.12.0.1
ESR1(config-ldp)#     address-family ipv4
ESR1(config-ldp-af-ipv4)#       interface gre 1
ESR1(config-ldp-af-ipv4-if)#       exit
ESR1(config-ldp-af-ipv4)#     exit
ESR1(config-ldp)#     enable
ESR1(config-ldp)#   exit
ESR1(config-mpls)#   forwarding interface gre 1
ESR1(config-mpls)# exit
ESR1(config)# security zone-pair untrusted self
ESR1(config-zone-pair)#   rule 1
ESR1(config-zone-pair-rule)#     action permit
ESR1(config-zone-pair-rule)#     match protocol gre
ESR1(config-zone-pair-rule)#     enable
ESR1(config-zone-pair-rule)#   exit
ESR1(config-zone-pair)# exit
ESR2(config)# hostname ESR2
ESR2(config)# 
ESR2(config)# ip vrf l3vpn_service
ESR2(config-vrf)#   ip protocols bgp max-routes 100
ESR2(config-vrf)#   rd 65500:1
ESR2(config-vrf)#   route-target export 65500:1
ESR2(config-vrf)#   route-target import 65500:1
ESR2(config-vrf)# exit
ESR2(config)# 
ESR2(config)# 
ESR2(config)# system cpu load-balance mpls passenger ip
ESR2(config)# security zone untrusted
ESR2(config-zone)# exit
ESR2(config)# security zone trusted
ESR2(config-zone)# exit
ESR2(config)# 
ESR2(config)# route-map BGP_OUT
ESR2(config-route-map)#   rule 1
ESR2(config-route-map-rule)#   exit
ESR2(config-route-map)# exit
ESR2(config)# router bgp 65500
ESR2(config-bgp)#   router-id 10.12.0.2
ESR2(config-bgp)#   neighbor 10.12.0.1
ESR2(config-bgp-neighbor)#     remote-as 65500
ESR2(config-bgp-neighbor)#     update-source 10.12.0.2
ESR2(config-bgp-neighbor)#     address-family vpnv4 unicast
ESR2(config-bgp-neighbor-af)#       send-community extended
ESR2(config-bgp-neighbor-af)#       enable
ESR2(config-bgp-neighbor-af)#     exit
ESR2(config-bgp-neighbor)#     enable
ESR2(config-bgp-neighbor)#   exit
ESR2(config-bgp)#   enable
ESR2(config-bgp)#   vrf l3vpn_service
ESR2(config-bgp-vrf)#     neighbor 10.10.0.6
ESR2(config-bgp-vrf-neighbor)#       remote-as 65502
ESR2(config-bgp-vrf-neighbor)#       address-family ipv4 unicast
ESR2(config-bgp-neighbor-af-vrf)#         route-map BGP_OUT out
ESR2(config-bgp-neighbor-af-vrf)#         enable
ESR2(config-bgp-neighbor-af-vrf)#       exit
ESR2(config-bgp-vrf-neighbor)#       enable
ESR2(config-bgp-vrf-neighbor)#     exit
ESR2(config-bgp-vrf)#     address-family ipv4 unicast
ESR2(config-bgp-vrf-af)#       redistribute bgp 65500 route-map BGP_OUT
ESR2(config-bgp-vrf-af)#     exit
ESR2(config-bgp-vrf)#     enable
ESR2(config-bgp-vrf)#   exit
ESR2(config-bgp)# exit
ESR2(config)# 
ESR2(config)# router ospf 1
ESR2(config-ospf)#   router-id 10.12.0.2
ESR2(config-ospf)#   area 0.0.0.0
ESR2(config-ospf-area)#     enable
ESR2(config-ospf-area)#   exit
ESR2(config-ospf)#   enable
ESR2(config-ospf)# exit
ESR2(config)# 
ESR2(config)# interface gigabitethernet 1/0/1
ESR2(config-if-gi)#   security-zone untrusted
ESR2(config-if-gi)#   ip address 192.0.2.2/30
ESR2(config-if-gi)# exit
ESR2(config)# interface gigabitethernet 1/0/2
ESR2(config-if-gi)#   ip vrf forwarding l3vpn_service
ESR2(config-if-gi)#   description "from CE2"
ESR2(config-if-gi)#   ip firewall disable
ESR2(config-if-gi)#   ip address 10.10.0.5/30
ESR2(config-if-gi)# exit
ESR2(config)# interface loopback 1
ESR2(config-loopback)#   ip address 10.12.0.2/32
ESR2(config-loopback)#   ip ospf instance 1
ESR2(config-loopback)#   ip ospf
ESR2(config-loopback)# exit
ESR2(config)# tunnel gre 1
ESR2(config-gre)#   key 60
ESR2(config-gre)#   ttl 64
ESR2(config-gre)#   mtu 1472
ESR2(config-gre)#   ip firewall disable
ESR2(config-gre)#   local address 192.0.2.2
ESR2(config-gre)#   remote address 192.0.2.1
ESR2(config-gre)#   ip address 10.11.0.2/30
ESR2(config-gre)#   ip ospf instance 1
ESR2(config-gre)#   ip ospf
ESR2(config-gre)#   enable
ESR2(config-gre)# exit
ESR2(config)# 
ESR2(config)# mpls
ESR2(config-mpls)#   ldp
ESR2(config-ldp)#     router-id 10.12.0.2
ESR2(config-ldp)#     address-family ipv4
ESR2(config-ldp-af-ipv4)#       interface gre 1
ESR2(config-ldp-af-ipv4-if)#       exit
ESR2(config-ldp-af-ipv4)#     exit
ESR2(config-ldp)#     enable
ESR2(config-ldp)#   exit
ESR2(config-mpls)#   forwarding interface gre 1
ESR2(config-mpls)# exit
ESR2(config)# security zone-pair untrusted self
ESR2(config-zone-pair)#   rule 1
ESR2(config-zone-pair-rule)#     action permit
ESR2(config-zone-pair-rule)#     match protocol gre
ESR2(config-zone-pair-rule)#     enable
ESR2(config-zone-pair-rule)#   exit
ESR2(config-zone-pair)# exit

После завершения настройки проверим статус сервиса и доступность узлов в сети:

*Конфигурация туннеля GRE*
ESR2# sh tunnels configuration 
Tunnel             State      Description                      
----------------   --------   ------------------------------   
gre 1              Enabled    --                               

ESR2# sh tunnels configuration gre 1
State:                                             Enabled
Description:                                       --
Mode:                                              ip
Bridge group:                                      --
VRF:                                               --
Local address:                                     192.0.2.2
Remote address:                                    192.0.2.1
Calculates checksums for outgoing GRE packets:     No
Requires that all input GRE packets were checksum: No
key:                                               60
TTL:                                               64
DSCP:                                              Inherit
MTU:                                               1472
Path MTU discovery:                                Enabled
Don't fragment bit suppression:                    Disabled
Security zone:                                     --
Multipoint mode:                                   Disabled
Keepalive:                                         
    State:                                             Disabled
    Timeout:                                           10
    Retries:                                           6
    Destination address:                               --

*Наличие vpnv4-маршрутов*
SR2# sh 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:1               10.101.0.0/24      --              --         34      100        --     65502 i
*>i   65500:1               10.100.0.0/24      10.12.0.1       --         16      100        0      65501 i

*Состояние протокола LDP*
ESR2# sh mpls ldp neighbor 
Peer LDP ID: 10.12.0.1; Local LDP ID 10.12.0.2
    State:                  Operational
    TCP connection:         10.12.0.1:646 - 10.12.0.2:46444
    Messages sent/received: 60/60
    Uptime:                 00:53:59
    LDP discovery sources:
        gre 1
ESR2# sh mpls forwarding-table 
Local    Outgoing Prefix                                      Outgoing         Next Hop                               
label    label    or tunnel ID                                Interface                                               
-------- -------- ------------------------------------------- ---------------- ---------------------------------------
35       imp-null 10.12.0.1/32                                gre 1            10.11.0.1       

*Доступность узлов в сети*  
CE2# ping 10.100.0.1 source ip 10.101.0.1 detailed 
PING 10.100.0.1 (10.100.0.1) from 10.101.0.1 : 56 bytes of data.
64 bytes from 10.100.0.1: icmp_seq=1 ttl=0 time=1.32 ms
64 bytes from 10.100.0.1: icmp_seq=2 ttl=0 time=1.12 ms
64 bytes from 10.100.0.1: icmp_seq=3 ttl=0 time=1.14 ms
64 bytes from 10.100.0.1: icmp_seq=4 ttl=0 time=1.09 ms
64 bytes from 10.100.0.1: icmp_seq=5 ttl=0 time=1.15 ms


  • Нет меток