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

Конфигурирование протокола 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 должен быть отключен.

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

ШагОписаниеКомандаКлючи
1В контексте настройки параметров MPLS указать интерфейсы, участвующие в процессе MPLS-коммутации
esr(config-mpls)# forwarding interface { <IF> | <TUN> }

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

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

2Задать router-id для LDP (не обязательно, если указан transport-address).
esr(config-ldp)# router-id <ID>
<ID> -идентификатор маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
3

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

esr(config-ldp-af-ipv4)# transport-address <ADDR>
<ADDR> - задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

3

В контексте настройки address family ipv4 указать интерфейсы для включение на них процесса LDP.
esr(config-ldp-af-ipv4)# interface { <IF> | <TUN> }


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

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

4Включить процесс LDP.
esr(config-ldp)# enable

5Включить функционал explicit-null (не обязательно).
esr(config-ldp)# egress-label-type explicit-null

6В режиме конфигурирование соседа LDP задать пароль командой password (не обязательно).
esr(config-ldp-neig)# password {<TEXT> | ENCRYPTED-TEXT>}

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

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

В рамках настройки протокола 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#
Проверка:

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

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

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

Сессия 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 необходимо описывать префиксы.

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

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

Задача:

Назначить mpls метки только FEC 10.10.0.0/24

Решение:

На ESR_A и ESR_B создадим object-group ADV_LABELS типа network и добавим в нее подсеть 10.10.0.0/24. На ESR_B также дополнительно добавим 192.168.2.0/24.

ESR_A
esr(config)# object-group network ADV_LABELS
esr(config-object-group-network)# ip prefix 10.10.0.0/24
ESR_B
esr(config)# object-group network ADV_LABELS
esr(config-object-group-network)# ip prefix 10.10.0.0/24
esr(config-object-group-network)# ip prefix 192.168.2.0/24

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

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

На ESR_B убедимся, что метка назначена для адресов из подсети 10.10.0.0/24

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
192.168.2.0/24:
local label: --
remote label: imp-null lsr: 172.16.0.1

Конфигурирование L2VPN Martini

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)# transport-mode
{ ethenet | vlan }

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

10Создать 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]

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

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

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

Задача:

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

Решение:

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

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

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

На маршрутизаторе 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 типа vpls завершена.

Конфигурирование L3VPN

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

ШагОписаниеКомандаКлючи
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-1700 [1..5000000];
    • ESR-1000/1200/1500 [1..3000000];
    • ESR-20/21/100/200 [1..1500000],
    • ESR-10/12V/12VF/14VF [1.. 800000].
  • OSPF и IS-IS
    • ESR-1000/1200/1500/1700 [1..500000];
    • ESR-20/21/100/200 [1..300000];
    • ESR-10/12V/12VF/14VF [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 на маршрутизаторах
ESR1
router ospf log-adjacency-changes
router ospf 1
  router-id 1.1.1.1
  area 0.0.0.0
    enable
  exit
  enable
exit

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

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

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

system jumbo-frames
ESR2
router ospf log-adjacency-changes
router ospf 1
  router-id 2.2.2.2
  area 0.0.0.0
    enable
  exit
  enable
exit

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

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

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

system jumbo-frames
ESR3
router ospf log-adjacency-changes
  router ospf 1
  router-id 3.3.3.3
  area 0.0.0.0
    enable
  exit
  enable
exit

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

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

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

system jumbo-frames
ESR4
router ospf log-adjacency-changes
router ospf 1
  router-id 4.4.4.4
  area 0.0.0.0
    enable
  exit
  enable
exit

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

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

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

system jumbo-frames

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

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:
ESR1
mpls
  ldp
    address-family ipv4
      transport-address 1.1.1.1
      interface gigabitethernet 1/0/1.10
      exit
      interface gigabitethernet 1/0/1.40
      exit
    exit
    enable
  exit
  forwarding interface gigabitethernet 1/0/1.10
  forwarding interface gigabitethernet 1/0/1.40
exit
ESR2
mpls
  ldp
    address-family ipv4
      transport-address 2.2.2.2
      interface gigabitethernet 1/0/1.10
      exit
      interface gigabitethernet 1/0/1.20
      exit
    exit
    enable
  exit
  forwarding interface gigabitethernet 1/0/1.10
  forwarding interface gigabitethernet 1/0/1.20
exit
ESR3
mpls
  ldp
    address-family ipv4
      transport-address 3.3.3.3
      interface gigabitethernet 1/0/1.20
      exit
      interface gigabitethernet 1/0/1.30
      exit
    exit
    enable
  exit
  forwarding interface gigabitethernet 1/0/1.20
  forwarding interface gigabitethernet 1/0/1.30
exit
ESR4
mpls
  ldp
    address-family ipv4
      transport-address 4.4.4.4
      interface gigabitethernet 1/0/1.30
      exit
      interface gigabitethernet 1/0/1.40
      exit
    exit
    enable
  exit
  forwarding interface gigabitethernet 1/0/1.30
  forwarding interface gigabitethernet 1/0/1.40
exit

Для проверки сходимости 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 в соответствии с нашей схемой.

Без указание атрибутов 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
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

Настроим 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 ipv4 unicast
ESR1(config-bgp-neighbor-af)# enable
ESR1(config-bgp-neighbor-af)# exit
ESR1(config-bgp-neighbor)# address-family vpnv4 unicast
ESR1(config-bgp-neighbor-af)# send-community extended
ESR1(config-bgp-neighbor-af)# enable 
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 ipv4 unicast
ESR3(config-bgp-neighbor-af)# enable
ESR3(config-bgp-neighbor-af)# exit
ESR3(config-bgp-neighbor)# address-family vpnv4 unicast
ESR3(config-bgp-neighbor-af)# send-community extended
ESR3(config-bgp-neighbor-af)# enable
Необходимо убедиться, что BGP-сессия успешно установлена.
ESR1# show ip 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-сессию между CE_SiteA и PE.

По-умолчанию: для EBGP анонсирование маршрутов запрещено, необходимо сконфигурировать разрешающее правило; для IBGP-анонсирование маршрутов разрешено.

CE_SiteA

Настроим соответствующие интерфейсы. Также создадим route-map, в котором укажем подсети, разрешенные для анонсирования.

CE _SiteA
interface gigabitethernet 1/0/2
  ip firewall disable
  ip address 192.168.32.2/30
exit

interface loopback 1
  ip address 10.100.0.1/24
exit

route-map OUTPUT
  rule 1
    match ip address 10.100.0.0/24
    action permit

Настроим eBGP между ESR1 и CE_SiteA.

CE_SiteA
router bgp log-neighbor-changes
router bgp 65505
  router-id 192.168.32.1
  neighbor 192.168.32.1
    remote-as 65500
    allow-local-as 1
    update-source 192.168.32.2
    address-family ipv4 unicast
      route-map OUTPUT out
      enable
    exit
    enable
  exit
  address-family ipv4 unicast
    network 10.100.0.0/24
    exit
  enable

ESR1

Настроим интерфейс в сторону CE. Также создадим route-map, в котором укажем подсети, разрешенные для анонсирования.

ESR1
interface gigabitethernet 1/0/2
  ip vrf forwarding Customer1
  description "Customer1"
  ip firewall disable
  ip address 192.168.32.1/30

Создаем route-map

route-map OUTPUT
  rule 1
    action permit

Настроим eBGP между ESR1 и CE_SiteA.

ESR1
router bgp 65500
  vrf Customer1
    router-id 192.168.32.1
    neighbor 192.168.32.2
    remote-as 65505
    update-source 192.168.32.1
    address-family ipv4 unicast

Разрешим передачу маршрутов BGP пиру.

ESR1
route-map OUTPUT out
  enable
exit
enable
exit

Разрешим пересылку маршрутов из VRF в таблицу VPNv4 unicast

ESR1
address-family ipv4 unicast
redistribute connected
redistribute bgp 65500
exit
enable
exit 

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

ESR1# show ip bgp 65500 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 ip bgp 65500 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

Настроим соответствующие интерфейсы.

CE_SiteB
interface gigabitethernet 1/0/2
ip firewall disable
ip address 192.168.32.6/30
exit

interface loopback 1
ip address 10.100.1.1/24
exit

route-map OUTPUT
rule 1
match ip address 10.100.1.0/24
action permit

Настроим eBGP между ESR3 и CE_SiteB.

CE_SiteB
router bgp 65505
router-id 192.168.32.6
neighbor 192.168.32.5
remote-as 65500
allow-local-as 1
update-source 192.168.32.6
address-family ipv4 unicast
route-map OUTPUT out
enable
exit
enable
exit
address-family ipv4 unicast
network 10.100.1.0/24
exit
enable

ESR3

Настроим интерфейс в сторону CE.

ESR3
interface gigabitethernet 1/0/2
ip vrf forwarding Customer1
description "Customer1"
ip firewall disable
ip address 192.168.32.5/30

Cоздадим route-map, в котором укажем подсети, разрешенные для анонсирования.

ESR3
route-map OUTPUT
rule 1
action permit

Настроим eBGP c между ESR3 и CE_SiteB.

ESR3
router bgp 65500
vrf Customer1
router-id 192.168.32.5
neighbor 192.168.32.6
remote-as 65505
update-source 192.168.32.5
address-family ipv4 unicast

Разрешим передачу маршрутов BGP пиру.

ESR3
route-map OUTPUT out
enable
exit
enable
exit

Разрешим пересылку маршрутов из VRF в VPNV4 для address-family IPv4.

ESR3
address-family ipv4 unicast
redistribute connected
redistribute bgp 65500
exit
enable
exit

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

ESR1# show ip 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 в расчет хэша.

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

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

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

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

Задача:

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

Решение:
ESR
ESR(config)# system cpu load-balance mpls passenger ip
ESR(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
  • Нет меток
Написать комментарий...