Настройка протокола LDP
LDP — протокол распределения меток. Для нахождения соседей используется рассылка hello-сообщений на мультикастный адрес 224.0.0.2. При обмене hello-сообщениями устройства узнают транспортные адреса друг друга. Устройство с большим адресом инициализирует TCP-сессию. После проверки параметров, LDP-сессия считается установленной.
В контроллере WLC-30 поддержаны следующие режимы работы LDP:
- Режим обмена информации о меткаx — Downstream Unsolicited;
- Механизм контроля за распространением меток — Independent Label Distribution Control;
- Режим сохранения меток — Liberal Label Retention;
На интерфейсах, где включены протокол LDP и MPLS-коммутация, firewall должен быть отключен.
В текущей реализации протокол LDP работает только с IPv4-адресами.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | В контексте настройки параметров MPLS указать интерфейсы, участвующие в процессе MPLS-коммутации. | wlc-30(config-mpls)# forwarding interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе "Типы и порядок именования интерфейсов контроллера" справочника команд CLI; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе "Типы и порядок именования туннелей контроллера" справочника команд CLI. |
2 | Задать router-id для LDP (не обязательно, если указан transport-address). | wlc-30(config-ldp)# router-id <ID> | <ID> – идентификатор устройства, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
3 | В контексте настройки address family ipv4 указать transport-address (не обязательно, если указан router-id). | wlc-30(config-ldp-af-ipv4)# transport-address <ADDR> | <ADDR> – задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
3 | В контексте настройки address family ipv4 указать интерфейсы для включение на них процесса LDP. | wlc-30(config-ldp-af-ipv4)# interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе "Типы и порядок именования интерфейсов контроллера" справочника команд CLI; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе "Типы и порядок именования туннелей контроллера" справочника команд CLI. |
4 | Включить процесс LDP. | wlc-30(config-ldp)# enable | |
5 | Включить функционал explicit-null (не обязательно). | wlc-30(config-ldp)# egress-label-type explicit-null | |
6 | В режиме конфигурирования соседа LDP задать пароль командой password (не обязательно). | wlc-30(config-ldp-neig)# password {<TEXT> | ENCRYPTED-TEXT>} | <CLEAR-TEXT> – пароль, задаётся строкой, длинной [8..16] символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером [8..16] байт ([16..32] символа) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
В рамках настройки протокола LDP также доступен следующий функционал:
|
Пример настройки
Задача:
Настроить взаимодействие по протоколу LDP между пирами.
Решение:
Предварительная конфигурация WLC-30_A:
Предварительно на интерфейсы должны быть назначены IP-адреса, отключен межсетевой экран и настроен один из протоков внутренней маршрутизации.
Предварительная конфигурация WLC-30_A:
hostname wlc-30 router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/1 ip firewall disable ip address 10.10.10.1/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 1.1.1.1/32 ip ospf instance 1 ip ospf exit
Предварительная конфигурация WLC-30_B:
hostname wlc-30-1 router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/1 ip firewall disable ip address 10.10.10.2/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 4.4.4.4/32 ip ospf instance 1 ip ospf exit
Настройка на WLC-30_A:
wlc-30# config wlc-30(config)# mpls wlc-30(config-mpls)# forwarding interface gigabitethernet 1/0/1 wlc-30(config-mpls)# ldp wlc-30(config-ldp)# router-id 1.1.1.1 wlc-30(config-ldp)# enable wlc-30(config-ldp)# address-family ipv4 wlc-30(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 wlc-30(config-ldp-af-ipv4-if)# end Ewlc-30#
Настройка на WLC-30_B:
wlc-30-1# configure wlc-30-1(config)# mpls wlc-30-1(config-mpls)# forwarding interface gigabitethernet 1/0/1 wlc-30-1(config-mpls)# ldp wlc-30-1(config-ldp)# router-id 4.4.4.4 wlc-30-1(config-ldp)# enable wlc-30-1(config-ldp)# address-family ipv4 wlc-30-1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 wlc-30-1(config-ldp-af-ipv4-if)# end wlc-30-1#
Проверка:
На одном из пиров ввести следующие команды:
Вывод покажет параметры соседнего пира, полученные из мультикастовых hello-сообщений.
wlc-30# show mpls ldp discovery detailed Local LDP ID: 1.1.1.1 Discovery sources: Interfaces: gigabitethernet 1/0/1: Hello interval: 5 seconds Transport IP address: 1.1.1.1 LDP ID: 4.4.4.4 Source IP address: 10.10.10.2 Transport IP address: 4.4.4.4 Hold time: 15 seconds Proposed hold time: 90/15 (local/peer) seconds
Сессия LDP должна находиться в статусе "Operational".
wlc-30-1# show mpls ldp neighbor Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1 State: Operational TCP connection: 4.4.4.4:40245 - 1.1.1.1:646 Messages sent/received: 10/11 Uptime: 00:00:58 LDP discovery sources: gigabitethernet 1/0/1
Конфигурирование параметров сессии в протоколе LDP
По умолчанию, в рассылаемых hello-сообщениях установлены следующие значения:
Параметр | LDP |
---|---|
Hello interval | 5 секунд |
Hold timer | 15 секунд |
Keepalive holdtime | 180 секунд |
Hold timer является согласуемым параметром — выбирается наименьший. В данном примере показано, что в WLC-30_A после согласования Hold timer равен 10 секундам.
wlc-30# sh mpls ldp discovery detailed Local LDP ID: 4.4.4.4 Discovery sources: Interfaces: gigabitethernet 1/0/4: Hello interval: 5 seconds Transport IP address: 4.4.4.4 LDP ID: 1.1.1.1 Source IP address: 10.10.10.1 Transport IP address: 1.1.1.1 Hold time: 10 seconds Proposed hold time: 15/10 (local/peer) seconds
Если после согласования Hello interval стал больше, чем Hold timer, то Hello interval будет равным Hold timer / 3.
На WLC-30 реализована возможность гибкой настройки параметров Hello holdtime, Hello interval и Keepalive holdtime. Рассмотрим пример настройки Hello holdtime для LDP-сессии:
wlc-30# show run mpls mpls ldp router-id 4.4.4.4 discovery hello holdtime 40 address-family ipv4 interface gigabitethernet 1/0/4 discovery hello holdtime 60 exit exit enable exit
Если параметры Hello Holdtime и Hello Interval не указаны, то используются значения по умолчанию. Если параметры указаны, то приоритет значений для address-family будет выше чем для значений, сконфигурированных глобально.
wlc-30# show mpls ldp discovery detailed Local LDP ID: 4.4.4.4 Discovery sources: Interfaces: gigabitethernet 1/0/4: Hello interval: 5 seconds Transport IP address: 4.4.4.4 LDP ID: 1.1.1.1 Source IP address: 10.10.10.1 Transport IP address: 1.1.1.1 Hold time: 15 seconds Proposed hold time: 60 /15 (local/peer) seconds
Параметры, сконфигурированные в address-family, могут быть настроены на каждый отдельный интерфейс, участвующий в процессе LDP.
wlc-30# show running-config mpls mpls ldp router-id 4.4.4.4 discovery hello holdtime 50 discovery hello interval 10 address-family ipv4 interface gigabitethernet 1/0/1 discovery hello holdtime 60 discovery hello interval 20 exit interface gigabitethernet 1/0/4 discovery hello holdtime 30 discovery hello interval 10 exit exit enable exit
Для TCP-сессии, Keepalive holdtime является также согласуемым параметром по аналогии с Hold timer. Keepalive interval рассчитывается автоматически, и равен Keepalive holdtime /3. Keepalive holdtime можно задать как глобально, так и для каждого соседа. Таймер, заданный для определенного соседа, является более приоритетным.
wlc-30# show running-config mpls mpls ldp router-id 4.4.4.4 keepalive 30 #установлен в глобальной конфигурации LDP neighbor 1.1.1.1 keepalive 55 #установлен в соседа с адресом 1.1.1.1 exit exit
wlc-30# sh mpls ldp neighbor 1.1.1.1 Peer LDP ID: 1.1.1.1; Local LDP ID 4.4.4.4 State: Operational TCP connection: 1.1.1.1:646 - 4.4.4.4:56668 Messages sent/received: 401/401 Uptime: 02:00:24 Peer holdtime: 55 Keepalive interval: 18 LDP discovery sources:
Алгоритм настройки параметров Hello holdtime и Hello interval в глобальной конфигурации LDP
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации протокола LDP задать Hello holdtime | wlc-30(config-ldp)# discovery hello holdtime <TIME> | <TIME> – время в секундах в интервале [3..65535] |
3 | В режиме конфигурации протокола LDP задать Hello interval | wlc-30(config-ldp)# discovery hello interval <TIME> | <TIME> – время в секундах в интервале [3..65535] |
Алгоритм настройки параметров Hello holdtime и Hello interval для address family
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации address familly протокола LDP установить Hello holdtime на нужном интерфейсе | wlc-30(config-ldp-af-ipv4-if)# discovery hello holdtime <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 15 |
3 | В режиме конфигурации address familly протокола LDP установить Hello interval на нужном интерфейсе | wlc-30(config-ldp-af-ipv4-if)# discovery hello interval <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 5 |
Алгоритм настройки параметра Keepalive holdtime в глобальной конфигурации LDP
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации LDP задать параметр Keepalive | wlc-30(config-ldp)# keepalive <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 180 |
Алгоритм настройки параметра Keepalive holdtime для определенного соседа
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации соседа задать параметр Keepalive holdtime | wlc-30(config-ldp-neig)# keepalive <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 180 |
Пример настройки
Задача:
Переопределить параметры hello holdtime (40 секунд) и hello interval (10 секунд) для всего процесса LDP. Для соседа с адресом 1.1.1.1 установить Keepalive holdtime равным 150 секунд.
Решение:
wlc-30(config)# mpls wlc-30(config-mpls)# ldp wlc-30(config-ldp)# discovery hello holdtime 40 wlc-30(config-ldp)# discovery hello interval 10 wlc-30(config-ldp)# neighbor 1.1.1.1 wlc-30(config-ldp-neig)# keepalive 150
Проверка:
Для просмотра hello-параметров:
wlc-30# sh mpls ldp discovery detailed Local LDP ID: 4.4.4.4 Discovery sources: Interfaces: gigabitethernet 1/0/4: Hello interval: 10 seconds Transport IP address: 4.4.4.4 LDP ID: 1.1.1.1 Source IP address: 10.10.10.1 Transport IP address: 1.1.1.1 Hold time: 15 seconds Proposed hold time: 40/15 (local/peer) seconds
Для просмотра параметров установленной TCP-сессии:
wlc-30# sh mpls ldp neighbor 1.1.1.1 Peer LDP ID: 1.1.1.1; Local LDP ID 4.4.4.4 State: Operational TCP connection: 1.1.1.1:646 - 4.4.4.4:45414 Messages sent/received: 15/15 Uptime: 00:06:31 Peer holdtime: 150 Keepalive interval: 50 LDP discovery sources:
Конфигурирование параметров сессии в протоколе targeted-LDP
По умолчанию, для targeted LDP-сессии установлены следующие значения:
Параметр | targeted-LDP |
---|---|
hello interval | 5 секунд |
Hold timer | 45 секунд |
Keepalive holdtime | 180 секунд |
Hold timer является согласуемым параметром — выбирается наименьший. В данном примере показано, что WLC-30_A после согласования установил 30 секунд:
wlc-30-1# sh mpls ldp discovery detailed ... Targeted hellos: 1.1.1.1 -> 4.4.4.4: Hello interval: 2 seconds Transport IP address: 1.1.1.1 LDP ID: 4.4.4.4 Source IP address: 4.4.4.4 Transport IP address: 4.4.4.4 Hold time: 30 seconds Proposed hold time: 30/45 (local/peer) seconds
Если после согласования Hello interval стал больше чем Hold timer, то Hello interval будет равным Hold timer / 3.
На WLC-30 реализована возможность гибкой настройки параметров Hello holdtime, Hello interval и Keepalive holdtime: параметры можно задать как для всего процесса LDP, так и на соответствующего соседа.
Пример вывода для процесса LDP:
wlc-30# sh running-config mpls mpls ldp router-id 1.1.1.1 keepalive 160 discovery targeted-hello holdtime 30 discovery targeted-hello interval 10 exit exit
Пример вывода для targeted-LDP-сессии для определенного соседа:
wlc-30# sh running-config mpls mpls ldp router-id 1.1.1.1 neighbor 4.4.4.4 keepalive 160 targeted discovery targeted-hello holdtime 30 discovery targeted-hello interval 45 exit exit exit
Если параметры установлены и для процесса LDP, и на определенного соседа, приоритетом будет считаться настройки, установленные для соседа.
wlc-30# sh running-config mpls mpls ldp router-id 1.1.1.1 keepalive 160 discovery hello holdtime 90 discovery targeted-hello interval 30 neighbor 4.4.4.4 keepalive 140 targeted discovery targeted-hello holdtime 45 discovery targeted-hello interval 15 exit exit exit
wlc-30# show mpls ldp discovery detailed ... Targeted hellos: 1.1.1.1 -> 4.4.4.4: Hello interval: 15 seconds Transport IP address: 1.1.1.1 LDP ID: 4.4.4.4 Source IP address: 4.4.4.4 Transport IP address: 4.4.4.4 Hold time: 45 seconds Proposed hold time: 45/45 (local/peer) seconds wlc-30# show mpls ldp neighbor 4.4.4.4 Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1 State: Operational TCP connection: 4.4.4.4:51861 - 1.1.1.1:646 Messages sent/received: 10/10 Uptime: 00:00:09 Peer holdtime: 140 Keepalive interval: 46 LDP discovery sources: 1.1.1.1 -> 4.4.4.4:
Алгоритм настройки параметров Hello holdtime, Hello interval и Keepalive holdtime для процесса LDP
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации протокола LDP задать Hello holdtime | wlc-30(config-ldp)# discovery targeted-hello holdtime <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 45 |
3 | В режиме конфигурации протокола LDP задать Hello interval | wlc-30(config-ldp)# discovery targeted- hello interval <TIME> | <TIME> – Время в секундах в интервале [1..65535] Значение по умолчанию: 5 |
4 | В режиме конфигурации протокола LDP задать Keepalive holdtime | wlc-30(config-ldp)# keepalive <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 180 |
Алгоритм настройки параметров Hello holdtime, Hello interval и Keepalive holdtime для определенного соседа
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации LDP-соседа задать Hello holdtime | wlc-30(config-ldp-neig)# discovery targeted-hello holdtime <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 45 |
3 | В режиме конфигурации LDP-соседа задать Hello interval | wlc-30(config-ldp-neig)# discovery targeted- hello interval <TIME> | <TIME> – Время в секундах в интервале [1..65535] Значение по умолчанию: 5 |
4 | В режиме конфигурации LDP-соседа задать Keepalive holdtime | wlc-30(config-ldp-neig)# keepalive <TIME> | <TIME> – Время в секундах в интервале [3..65535] Значение по умолчанию: 180 |
Пример настройки
Задача:
Переопределить параметры hello holdtime (120 секунд) и hello interval (30 секунд ) для всего процесса targeted-LDP. Для соседа с адресом 4.4.4.4 установить Keepalive holdtime равным 150 секунд.
Решение:
wlc-30(config)# mpls wlc-30(config-mpls)# ldp wlc-30(config-ldp)# discovery targeted-hello holdtime 40 wlc-30(config-ldp)# discovery targeted-hello interval 10 wlc-30(config-ldp)# neighbor 4.4.4.4 wlc-30(config-ldp-neig)# keepalive 150
Проверка:
Для просмотра hello-параметров targeted LDP-сессии:
wlc-301# sh mpls ldp discovery detailed ... Targeted hellos: 1.1.1.1 -> 4.4.4.4: Hello interval: 10 seconds Transport IP address: 1.1.1.1 LDP ID: 4.4.4.4 Source IP address: 4.4.4.4 Transport IP address: 4.4.4.4 Hold time: 40 seconds Proposed hold time: 40/45 (local/peer) seconds
Для просмотра параметров установленной TCP-сессии:
wlc-30# sh mpls ldp neighbor 4.4.4.4 Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1 State: Operational TCP connection: 4.4.4.4:34879 - 1.1.1.1:646 Messages sent/received: 11/11 Uptime: 00:01:05 Peer holdtime: 150 Keepalive interval: 50 LDP discovery sources: 1.1.1.1 -> 4.4.4.4: Hello interval: 10 seconds Holdtime: 40 seconds ...
Настройка фильтрации LDP-меток
По умолчанию, WLC-30 выделяeт на каждый FEC отдельную метку. Существуют сценарии, когда необходимо выделять MPLS-метки только для определенных FEC.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | Создать object-group типа network | wlc-30(config)# object-group network <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
3 | Описать префиксы, для которых будут назначаться метки | wlc-30(config-object-group-network)# ip prefix <ADDR/LEN> | <ADDR/LEN> – IP-адрес и маска подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]; |
4 | В контексте настройки LDP применить созданную object-group | wlc-30(config-ldp)# advertise-labels <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
Метки будут выделяться ТОЛЬКО на описанные в object-group подсети, независимо от того, как они были изучены (connected, local, IGP и т.д.).
В object-group необходимо описывать префиксы.
Префикс должен иметь точное совпадение с маршрутом из FIB.
Данный функционал поддержан для протокола IPv4.
Пример настройки
Задача:
Назначить MPLS-метки только FEC 10.10.0.2/32 и 10.10.0.1/32.
Решение:
На WLC-30_A и WLC-30_B создадим object-group ADV_LABELS типа network и добавим в нее префиксы 10.10.0.1/32 и 10.10.0.2/32 соответственно.
wlc-30(config)# object-group network ADV_LABELS wlc-30(config-object-group-network)# ip prefix 10.10.0.1/32 wlc-30(config-object-group-network)# ip prefix 10.10.0.2/32
wlc-30(config)# object-group network ADV_LABELS wlc-30(config-object-group-network)# ip prefix 10.10.0.1/32 wlc-30(config-object-group-network)# ip prefix 10.10.0.2/32
Применим созданную object-group на обоих устройствах:
wlc-30(config)# mpls wlc-30(config-ldp)# ldp wlc-30(config-ldp)# advertise-labels ADV_LABELS
Проверка:
На WLC-30_B убедимся, что метка назначена для соответствующих префиксов:
wlc-30# sh mpls ldp bindings 10.10.0.1/32 10.10.0.1/32 local label: exp-null remote label: 75 lsr: 172.16.0.1
И не назначена для 192.168.2.0/24:
wlc-30# sh mpls ldp bindings 192.168.2.0/24 wlc-30#
Настройка сервиса L2VPN Martini mode
L2VPN позволяет организовать передачу ethernet-фреймов через MPLS-домен. Выделение и распространение туннельных меток, в данном режиме, осуществляется посредством протокола LDP. В реализации L2VPN можно условно выделить два случая:
- P2P — туннель создаваемый по схеме "точка-точка".
VPLS — туннель создаваемый по схеме "точка-многоточка".
В обоих случаях, для передачи ethernet-фреймов между устройствами создается виртуальный канал (далее pseudo-wire). Для согласования параметров pseudo-wire, а также для выделения и передачи туннельных меток между устройствами, устанавливается LDP-сессия в targeted-режиме.
Алгоритм настройки L2VPN VPWS
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP). | ||
2 | Создать pw-class в системе и осуществить переход в режим настройки параметров pw-class. | wlc-30(config-l2vpn)# pw-class <WORD> | <WORD> – имя pw-class длинной [1..31] символов. |
3 | Добавить описание для pw-class (не обязательно). | wlc-30(config-l2vpn-pw-class)# description <LINE> | <LINE> – описание. Задается в виде строки длинной [1..255] символов |
4 | Установить значение MTU для pseudo-wire входящих в pw-class (не обязательно). | wlc-30(config-l2vpn-pw-class)# encapsulation | <MTU> – значение MTU, принимает значение в диапазоне [552..10000] Значение по умолчанию: 1500. |
5 | Отключить обмен status-tlv сообщениями (не обязательно). | wlc-30(config-l2vpn-pw-class)# encapsulation | Значение по умолчанию: status-tlv enable |
6 | Создать p2p-туннель в системе и осуществить переход в режим настройки параметров p2p-туннеля. | wlc-30(config-l2vpn)# p2p <NAME> | <NAME> – имя p2p-сервиса, задается строкой до 31 символа. |
7 | Задать Attached Circuit интерфейс. | wlc-30(config-l2vpn-p2p)# interface | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе "Типы и порядок именования интерфейсов контроллера" справочника команд CLI; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе "Типы и порядок именования туннелей контроллера" справочника команд CLI. |
8 | Включить p2p-туннель. | wlc-30(config-l2vpn-p2p)# enable | |
9 | Задать транспортный режим (не обязательно). | wlc-30(config-l2vpn-p2p)# transport-mode | <ethernet> – режим при котором при входе в pseudo-wire из заголовка удаляется 802.1Q тег ; <vlan> – режим при котором 802.1Q тег может быть сохранен при передаче через pseudo-wire. Значение по умолчанию: ethernet |
10 | Создать pseudo-wire и осуществить переход в режим настройки его параметров. | wlc-30(config-l2vpn-p2p)# pw <PW_ID> <LSR_ID> | <PW_ID> – идентификатор psewdowire, задается в виде числа в диапазоне [1..4294967295 ] <LSR_ID> – идентификатор LSR, до которого строится pseudo-wire, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
11 | Добавить описание для pseudo-wire (не обязательно). | wlc-30(config-l2vpn-pw)# description <LINE> | <LINE> – описание. Задается в виде строки длинной [1..255] символов. |
12 | Задать pw-class для pseudo-wire. | wlc-30(config-l2vpn-pw)# pw-class <WORD> | <WORD> – имя pw-class длинной [1..31] символов. |
13 | Задать адрес LSR до которого устанавливается pseudo-wire (Не обязательно если neighbor address совпадает с LSR_ID). | wlc-30(config-l2vpn-pw)# neighbor-address <ADDR> | <ADDR> – IP-адрес контроллера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
14 | Включить pseudo-wire. | wlc-30(config-l2vpn-pw)# enable | |
В случае, если необходимо изменить параметры по умолчанию для targeted LDP-сессии, обратитесь к разделу Конфигурирование параметров сессии в протоколе targeted-LDP. |
Пример настройки L2VPN VPWS
Задача:
Настроить l2vpn таким образом чтобы интерфейс ge1/0/2.100 контроллера CE1 и интерфейс ge1/0/2.100 контроллера CE2 работали в рамках одного широковещательного домена.
Решение:
Предварительно нужно:
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1 и PE2 при помощи IGP-протокола (OSPF, IS-IS, RIP).
На контроллере PE1 создадим саб-интерфейс, на который будем принимать трафик от CE1:
PE1# configure PE1(config)# interface gigabitethernet 1/0/4.100 PE1(config-subif)# exit
Выставим на интерфейсе в сторону PE2 значение MTU равным 9600 для того, чтобы избежать ситуации с превышением MTU после инкапсуляции MPLS-заголовка, а также отключим межсетевой экран:
PE1#(config)# interface gigabitethernet 1/0/1 PE1(config-if-gi)# mtu 9600 PE1(config-if-gi)# ip firewall disable PE1(config-if-gi)# exit
Разрешим прием пакетов с MPLS-заголовком на интерфейсе в сторону MPLS-сети (В данном примере интерфейс в сторону PE2):
PE1(config)# mpls PE1(config-mpls)# forwarding interface gigabitethernet 1/0/1
Настроим протокол LDP и включим обнаружение соседей на интерфейсе в сторону PE2:
PE1(config-mpls)# ldp PE1(config-ldp)# router-id 1.1.1.1 PE1(config-ldp)# address-family ipv4 PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE1(config-ldp-af-ipv4-if)# exit PE1(config-ldp-af-ipv4)# transport-address 1.1.1.1 PE1(config-ldp-af-ipv4)# exit PE1(config-ldp)# enable PE1(config-ldp)# exit
Создадим pw-class, на основе которого в дальнейшем будет создан виртуальный канал (pw). Так как в данном примере на pw будут применяться параметры по умолчанию, достаточно будет указать имя класса:
PE1(config-mpls)# l2vpn PE1(config-l2vpn)# pw-class for_p2p_VLAN100 PE1(config-l2vpn-pw-class)# exit
Создадим новый l2vpn типа p2p и добавим pw до контроллера PE3, идентификатор pw для удобства возьмем равным VID (в данном случай = 100):
PE1(config-l2vpn)# p2p to_PE2_VLAN100 PE1(config-l2vpn-p2p)# interface gigabitethernet 1/0/4.100 PE1(config-l2vpn-p2p)# pw 100 3.3.3.3 PE1(config-l2vpn-pw)# pw-class for_p2p_VLAN100 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-p2p)# enable PE1(config-l2vpn-p2p)# end
Применим конфигурацию:
PE1# commit PE1# confirm
Проведем настройку контроллера PE2 по аналогии с PE1:
PE2# configure PE2(config)# interface gigabitethernet 1/0/4.100 PE2(config-subif)# exit PE2#(config)# interface gigabitethernet 1/0/1 PE2(config-if-gi)# mtu 9600 PE1(config-if-gi)# ip firewall disable PE1(config-if-gi)# exit PE2(config)# mpls PE2(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE2(config-mpls)# ldp PE2(config-ldp)# router-id 2.2.2.2 PE2(config-ldp)# address-family ipv4 PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# transport-address 2.2.2.2 PE2(config-ldp-af-ipv4)# exit PE2(config-ldp)# enable PE2(config-ldp)# exit PE2(config-mpls)# l2vpn PE2(config-l2vpn)# pw-class for_p2p_VLAN100 PE2(config-l2vpn-pw-class)# exit PE2(config-l2vpn)# p2p to_PE1_VLAN100 PE2(config-l2vpn-p2p)# interface gigabitethernet 1/0/4.100 PE2(config-l2vpn-p2p)# pw 100 1.1.1.1 PE2(config-l2vpn-pw)# pw-class for_p2p_VLAN100 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# exit PE2(config-l2vpn-p2p)# enable PE2(config-l2vpn-p2p)# end PE2# commit PE2# confirm
Убедимся в установлении соседства по протоколу LDP и выведем информацию по статусу виртуального канала (pseudowire) между PE1 и PE2.
PE2# show mpls ldp neighbor Peer LDP ID: 1.1.1.1; Local LDP ID 2.2.2.2 State: Operational TCP connection: 1.1.1.1:646 - 2.2.2.2:34625 Messages sent/received: 12/12 Uptime: 00:03:50 LDP discovery sources: 2.2.2.2 -> 1.1.1.1
PE2# show mpls l2vpn pseudowire Neighbor PW ID Type Status --------------------------------------- ---------- ---------- ------ 1.1.1.1 100 Ethernet Up
Соседство по протоколу LDP установлено, pseudowire перешел в статус 'UP'. Настройка l2vpn типа p2p завершена.
Алгоритм настройки L2VPN VPLS
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP). | ||
2 | Создать сетевой мост в системе без указания IP-адреса (см. раздел Настройка Bridge). | ||
3 | Создать pw-class в системе и осуществить переход в режим настройки параметров pw-class. | wlc-30(config-l2vpn)# pw-class <WORD> | <WORD> – имя pw-class длинной [1..31] символов. |
4 | Добавить описание для pw-class (не обязательно). | wlc-30(config-l2vpn-pw-class)# description <LINE> | <LINE> – описание, задается в виде строки длинной [1..255] символов. |
5 | Установить значение MTU для pseudo-wire входящих в pw-class (не обязательно). | wlc-30(config-l2vpn-pw-class)# encapsulation | <MTU> – значение MTU, принимает значение в диапазоне [552..10000] Значение по умолчанию: 1500. |
6 | Отключить обмен status-tlv сообщениями (не обязательно). | wlc-30(config-l2vpn-pw-class)# encapsulation | Значение по умолчанию: status-tlv enable. |
7 | Создать VPLS-домен в системе и осуществить переход в режим настройки параметров VPLS-домена. | wlc-30(config-l2vpn)# vpls <NAME> | <NAME> – имя p2p-сервиса, задается строкой до 31 символа. |
8 | Включить VPLS-туннель. | wlc-30(config-l2vpn-vpls)# enable | |
9 | Добавить бридж-домен. | wlc-30 (config-l2vpn-vpls)# bridge-group <ID> | <ID> – идентификатор бридж-домена, задается в виде числа в диапазоне [1..250]. |
10 | Задать транспортный режим (не обязательно). | wlc-30(config-l2vpn-vpls)# transport-mode | <ethernet> – режим, при котором при входе в pseudo-wire из заголовка удаляется 802.1Q тег; |
11 | Создать pseudo-wire и осуществить переход в режим настройки его параметров | wlc-30(config-l2vpn-vpls)# pw <PW_ID> <LSR_ID> | <PW_ID> – идентификатор psewdowire, задается в виде числа в диапазоне [1..4294967295 ] <LSR_ID> – идентификатор LSR, до которого строится pseudo-wire, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255] |
12 | Добавить описание для pseudo-wire (не обязательно). | wlc-30(config-l2vpn-pw)# description <LINE> | <LINE> – описание, задается в виде строки длинной [1..255] символов. |
13 | Задать pw-class для pseudo-wire | wlc-30(config-l2vpn-pw)# pw-class <WORD> | <WORD> – имя pw-class длинной [1..31] символов. |
14 | Задать адрес LSR, до которого устанавливается pseudo-wire (Не обязательно если neighbor address совпадает с LSR_ID). | wlc-30(config-l2vpn-pw)# neighbor-address <ADDR> | <ADDR> – IP-адрес устройства, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
15 | Включить pseudo-wire. | wlc-30(config-l2vpn-pw)# enable | |
16 | В случае если топология создаваемого VPLS-домена требует установить более одного pseudo-wire, повторить шаги с 10 по 14. | ||
17 | В случае, если необходимо изменить параметры по умолчанию для targeted LDP-сессии, обратитесь к разделу Конфигурирование параметров сессии в протоколе targeted-LDP . |
Пример настройки L2VPN VPLS
Задача:
Настроить l2vpn таким образом чтобы контроллеры CE1, CE2, CE3 имели L2-связность через интерфейсы gi1/0/2.100 и gi1/0/4 (CE2).
Решение:
Предварительно необходимо:
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1, PE2 и PE3 при помощи IGP-протокола (OSPF, IS-IS);
На контроллере PE1 создадим бридж-группу и включим ее:
PE1# configure PE1(config)# bridge 10 PE1(config-bridge)# enable PE1(config-bridge)# exit
Интерфейс в сторону CE1 включим в созданную бридж-группу:
PE1(config)# interface gigabitethernet 1/0/4.100 PE1(config-subif)# bridge-group 10 PE1(config-subif)# exit
Выставим на интерфейсе в сторону PE2 значение MTU равным 9600 для того, чтобы избежать ситуации с превышением MTU после инкапсуляции MPLS-заголовка, а также отключим межсетевой экран.
PE1#(config)# interface gigabitethernet 1/0/1 PE1(config-if-gi)# mtu 9600 PE1(config-if-gi)# ip firewall disable PE1(config-if-gi)# exit
Разрешим прием пакетов с MPLS-заголовком на интерфейсе в сторону MPLS-сети (В данном примере интерфейс в сторону PE2):
PE1(config)# mpls PE1(config-mpls)# forwarding interface gigabitethernet 1/0/1
Настроим протокол LDP и включим обнаружение соседей на интерфейсе в сторону PE2:
PE1(config-mpls)# ldp PE1(config-ldp)# router-id 1.1.1.1 PE1(config-ldp)# address-family ipv4 PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE1(config-ldp-af-ipv4-if)# exit PE1(config-ldp-af-ipv4)# transport-address 1.1.1.1 PE1(config-ldp-af-ipv4)# exit PE1(config-ldp)# enable PE1(config-ldp)# exit
Создадим pw-class. на основе которого в дальнейшем будет созданы виртуальные каналы (pw). Так как в данном примере на pw будут применяться параметры по умолчанию достаточно будет указать имя класса:
PE1(config-mpls)# l2vpn PE1(config-l2vpn)# pw-class for_vpls1 PE1(config-l2vpn-pw-class)# exit
Создадим новый l2vpn типа vpls и добавим pw до устройств PE2 и PE3, идентификатор pw для удобства возьмем равным VID (в данном случае = 100):
PE1(config-l2vpn)# vpls vpls1 PE1(config-l2vpn-vpls)# bridge-group 10 PE1(config-l2vpn-vpls)# pw 100 2.2.2.2 PE1(config-l2vpn-pw)# pw-class for_vpls1 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-vpls)# pw 100 3.3.3.3 PE1(config-l2vpn-pw)# pw-class for_vpls1 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-vpls)# enable PE1(config-l2vpn-vpls)# end
Применим созданную конфигурацию:
PE1# commit PE1# confirm
Проведем настройку контроллеров PE2 и PE3 по аналогии с PE1:
PE2# configure PE2(config)# bridge 10 PE2(config-bridge)# enable PE2(config-bridge)# exit PE2(config)# interface gigabitethernet 1/0/4.100 PE2(config-subif)# bridge-group 10 PE2(config-subif)# exit PE2(config)# interface gigabitethernet 1/0/2 PE2(config-if-gi)# mtu 9600 PE2(config-if-gi)# ip firewall disable PE2(config-if-gi)# exit PE2(config)# mpls PE2(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE2(config-mpls)# forwarding interface gigabitethernet 1/0/2 PE2(config-mpls)# ldp PE2(config-ldp)# enable PE2(config-ldp)# router-id 2.2.2.2 PE2(config-ldp)# address-family ipv4 PE2(config-ldp-af-ipv4)# transport-address 2.2.2.2 PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2 PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# exit PE2(config-ldp)# exit PE2(config-mpls)# l2vpn PE2(config-l2vpn)# pw-class for_vpls1 PE2(config-l2vpn-pw-class)# exit PE2(config-l2vpn)# vpls vpls1 PE2(config-l2vpn-vpls)# enable
PE2(config-l2vpn-vpls)# bridge-group 10 PE2(config-l2vpn-vpls)# pw 100 1.1.1.1 PE2(config-l2vpn-pw)# pw-class for_vpls1 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# exit PE2(config-l2vpn-vpls)# pw 100 3.3.3.3 PE2(config-l2vpn-pw)# pw-class for_vpls1 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# end PE2# commit PE2# confirm PE3(config)# bridge 10 PE3(config-bridge)# enable PE3(config-bridge)# exit PE3(config)# interface gigabitethernet 1/0/4.100 PE3(config-subif)# bridge-group 10 PE3(config-subif)# exit PE3(config)# interface gigabitethernet 1/0/1 PE3(config-if-gi)# mtu 9600 PE3(config-if-gi)# ip firewall disable PE3(config-if-gi)# exit PE3(config)# mpls PE3(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE3(config-mpls)# exit PE3(config)# mpls PE3(config-mpls)# ldp
PE3(config-ldp)# enable PE3(config-ldp)# router-id 3.3.3.3 PE3(config-ldp)# address-family ipv4 PE3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE3(config-ldp-af-ipv4-if)# exit PE3(config-ldp-af-ipv4)# transport-address 3.3.3.3 PE3(config-ldp-af-ipv4)# exit PE3(config-ldp)# exit PE3(config-mpls)# l2vpn PE3(config-l2vpn)# pw-class for_vpls PE3(config-l2vpn-pw-class)# exit PE3(config-l2vpn)# vpls vpls1 PE3(config-l2vpn-vpls)# enable PE3(config-l2vpn-vpls)# bridge-group 10 PE3(config-l2vpn-vpls)# pw 100 2.2.2.2 PE3(config-l2vpn-pw)# pw-class for_vpls PE3(config-l2vpn-pw)# enable PE3(config-l2vpn-pw)# exit PE3(config-l2vpn-vpls)# pw 100 1.1.1.1 PE3(config-l2vpn-pw)# pw-class for_vpls PE3(config-l2vpn-pw)# enable PE3(config-l2vpn-pw)# end PE3# commit PE3# confirm
Убедимся в установлении соседства по протоколу LDP и выведем информацию по статусу виртуального канала (pseudowire) между PE1, PE2 и PE3:
PE3# show mpls ldp neighbor Peer LDP ID: 1.1.1.1; Local LDP ID 3.3.3.3 State: Operational TCP connection: 1.1.1.1:646 - 3.3.3.3:45979 Messages sent/received: 22/22 Uptime: 00:13:16 LDP discovery sources: 3.3.3.3 -> 1.1.1.1 Peer LDP ID: 2.2.2.2; Local LDP ID 3.3.3.3 State: Operational TCP connection: 2.2.2.2:646 - 3.3.3.3:59627 Messages sent/received: 22/22 Uptime: 00:13:20 LDP discovery sources: 3.3.3.3 -> 2.2.2.2 gigabitethernet 1/0/1
PE3# show mpls l2vpn pseudowire Neighbor PW ID Type Status --------------------------------------- ---------- ---------- ------ 1.1.1.1 100 Ethernet Up 2.2.2.2 100 Ethernet Up
Соседство по протоколу LDP установлено, pseudowire перешел в статус 'UP'. Настройка l2vpn завершена.
Настройка сервиса L2VPN Kompella mode
В отличии от Martini mode, где вся работа ложится на LDP, в данном режиме LDP отводится только работа с транспортными метками. Автообнаружение и построение псевдопроводного соединения возложено на протокол BGP.
Алгоритм настройки L2VPN VPLS
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP). | ||
2 | Создать сетевой мост в системе без указания IP-адреса (см. раздел Настройка Bridge). | ||
3 | Создать VPLS-домен в системе и осуществить переход в режим настройки параметров vpls-домена. | wlc-30(config-l2vpn)# vpls <NAME> | <NAME> – имя p2p-сервиса, задается строкой до 31 символа. |
4 | Включить VPLS-туннель. | wlc-30(config-l2vpn-vpls)# enable | |
5 | Добавить бридж-домен. | wlc-30(config-l2vpn-vpls)# bridge-group <ID> | <ID> – идентификатор бридж-домена, задается в виде числа в диапазоне [1..250]. |
6 | Перейти в контекст настройки autodiscovery bgp. | wlc-30(config-l2vpn-vpls)# autodiscovery bgp | |
7 | Указать route distinguisher для данного экземпляра VPLS. | wlc-30(config-bgp)# rd <RD> | <RD> – значение Route distinguisher, задается в одном из следующем виде:
|
8 | Указать route target import для данного экземпляра VPLS. | wlc-30(config-bgp)# route-target import <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
9 | Указать route target export для данного экземпляра VPLS. | wlc-30(config-bgp)# route-target export <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
10 | Указать ve id. | wlc-30(config-bgp)# ve id <ID> | <ID> – идентификатор экземпляра VPLS, задается в виде числа в диапазоне [1..16384]. |
11 | Указать vpn id. | wlc-30 (config-bgp)# vpn id <ID> | <ID> – идентификатор VPN, задается в виде числа в диапазоне [1..4294967295]. |
12 | Указать ve range (не обязательно). | wlc-30 (config-bgp)# ve range <RANGE> | <RANGE> – диапазон идентификаторов пограничных устройств VPLS [8..100]. |
13 | Указать mtu (не обязательно). | wlc-30 (config-bgp)# mtu <VALUE> | <VALUE> – значение MTU [552..10000]. |
14 | Включить игнорирование типа инкапсуляции (не обязательно). | wlc-30(config-bgp)# ignore encapsulation-mismatch | |
15 | Включить игнорирование значений MTU (не обязательно). | wlc-30(config-bgp)# ignore mtu-mismatch | |
16 | В контексте настройки address-family l2vpn vpls протокола BGP включить передачу расширенных атрибутов. | wlc-30(config-bgp-neighbor-af)# send-community extended |
Пример настройки L2VPN VPLS
Задача:
Настроить L2VPN-сервис: все CE-устройства должны работать в рамках одного широковещательного домена.
Решение:
Предварительно необходимо:
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1, PE2, PE3 и RR при помощи IGP-протокола (OSPF, IS-IS).
Первым делом настроим устройство RR:
hostname RR system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.30.0.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.31.0.2/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.4/32 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.4 address-family ipv4 interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
Настроим BGP Route Reflector для address family l2vpn:
RR(config)# router bgp 65500 RR(config-bgp)# router-id 10.10.0.4 RR(config-bgp)# neighbor 10.10.0.1 RR(config-bgp-neighbor)# remote-as 65500 RR(config-bgp-neighbor)# route-reflector-client RR(config-bgp-neighbor)# update-source 10.10.0.4 RR(config-bgp-neighbor)# address-family l2vpn vpls RR(config-bgp-neighbor-af)# send-community extended RR(config-bgp-neighbor-af)# enable RR(config-bgp-neighbor-af)# exit RR(config-bgp-neighbor)# enable RR(config-bgp-neighbor)# exit RR(config-bgp)# neighbor 10.10.0.2 RR(config-bgp-neighbor)# remote-as 65500 RR(config-bgp-neighbor)# route-reflector-client RR(config-bgp-neighbor)# update-source 10.10.0.4 RR(config-bgp-neighbor)# address-family l2vpn vpls RR(config-bgp-neighbor-af)# send-community extended RR(config-bgp-neighbor-af)# enable RR(config-bgp-neighbor-af)# exit RR(config-bgp-neighbor)# enable RR(config-bgp-neighbor)# exit RR(config-bgp)# neighbor 10.10.0.3 RR(config-bgp-neighbor)# remote-as 65500 RR(config-bgp-neighbor)# route-reflector-client RR(config-bgp-neighbor)# update-source 10.10.0.4 RR(config-bgp-neighbor)# address-family l2vpn vpls RR(config-bgp-neighbor-af)# send-community extended RR(config-bgp-neighbor-af)# enable RR(config-bgp-neighbor-af)# exit RR(config-bgp-neighbor)# enable RR(config-bgp-neighbor)# exit RR(config-bgp)# enable
Переходим к настройке протокола BGP на PE-устройствах:
hostname PE1 system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/1 mtu 9500
ip firewall disable ip address 10.20.0.1/30 ip ospf instance 1 ip ospfexit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.30.0.1/30 ip ospf instance 1 ip ospf exitinterface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.22.0.1/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.1/32 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.1 address-family ipv4 interface gigabitethernet 1/0/1 exit interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/1 forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
Настройка протокола BGP:
PE1(config)# router bgp 65500 PE1(config-bgp)# neighbor 10.10.0.4 PE2(config-bgp)# router-id 10.10.0.1 PE1(config-bgp-neighbor)# remote-as 65500 PE1(config-bgp-neighbor)# update-source 10.10.0.1 PE1(config-bgp-neighbor)# address-family l2vpn vpls PE1(config-bgp-neighbor-af)# send-community extended PE1(config-bgp-neighbor-af)# enable PE1(config-bgp-neighbor-af)# exit PE1(config-bgp-neighbor)# enable PE1(config-bgp-neighbor)# exit PE1(config-bgp)# enable PE1(config-bgp)# exit
Проверим, что BGP-сессия успешно установлена с RR:
PE1# show bgp neighbors BGP neighbor is 10.10.0.4 BGP state: Established Neighbor address: 10.10.0.4 Neighbor AS: 65500 Neighbor ID: 10.10.0.4 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.0.1 Weight: 0 Hold timer: 110/180 Keepalive timer: 21/60 Uptime: 7375 s
Настройка BGP на PE2:
hostname PE2 system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit
interface gigabitethernet 1/0/1 mtu 9500 ip firewall disable ip address 10.20.0.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.21.0.1/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.31.0.1/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.2/32 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.2 address-family ipv4 interface gigabitethernet 1/0/1 exit interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/1 forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
PE2(config)# router bgp 65500 PE2(config-bgp)# router-id 10.10.0.2 PE2(config-bgp)# neighbor 10.10.0.4 PE2(config-bgp-neighbor)# remote-as 65500 PE2(config-bgp-neighbor)# update-source 10.10.0.2 PE2(config-bgp-neighbor)# address-family l2vpn vpls PE2(config-bgp-neighbor-af)# send-community extended PE2(config-bgp-neighbor-af)# enable PE2(config-bgp-neighbor-af)# exit PE2(config-bgp-neighbor)# enable PE2(config-bgp-neighbor)# exit PE2(config-bgp)# enable PE2(config-bgp)# exit
Убедимся, что сессия с RR поднялась успешно:
PE2# show bgp neighbors BGP neighbor is 10.10.0.4 BGP state: Established Neighbor address: 10.10.0.4 Neighbor AS: 65500 Neighbor ID: 10.10.0.4 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.0.2 Weight: 0 Hold timer: 113/180 Keepalive timer: 56/60 Uptime: 47 s
Настройка BGP на PE3:
hostname PE3 system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.21.0.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.22.0.2/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.3/24 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.3 address-family ipv4 interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
PE3(config)# router bgp 65500 PE3(config-bgp)# router-id 10.10.0.3 PE3(config-bgp)# neighbor 10.10.0.4 PE3(config-bgp-neighbor)# remote-as 65500 PE3(config-bgp-neighbor)# update-source 10.10.0.3 PE3(config-bgp-neighbor)# address-family l2vpn vpls PE3(config-bgp-neighbor-af)# send-community extended PE3(config-bgp-neighbor-af)# enable PE3(config-bgp-neighbor-af)# exit PE3(config-bgp-neighbor)# enable PE3(config-bgp-neighbor)# exit PE3(config-bgp)# enable PE3(config-bgp)# exit
Проверим, что сессия BGP установлена успешно:
PE3# show bgp neighbors BGP neighbor is 10.10.0.4 BGP state: Established Neighbor address: 10.10.0.4 Neighbor AS: 65500 Neighbor ID: 10.10.0.4 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.0.3 Weight: 0 Hold timer: 141/180 Keepalive timer: 27/60 Uptime: 77 s
Следующим этапом на каждом PE-устройстве создадим бридж-домен, и включим в него интерфейс (Attachment circuit , AC), смотрящий в сторону CE:
PE1:
PE1(config)# bridge 1 PE1(config-bridge)# enable PE1(config-bridge)# exit PE1(config)# interface gigabitethernet 1/0/4 PE1(config-if-gi)# mode switchport PE1(config-if-gi)# bridge-group 1
Проверим, что интерфейс включен в бридж-домен:
PE1# show interfaces bridge Bridges Interfaces ---------- -------------------------------------------------------------- bridge 1 gi1/0/4 PE1# sh interfaces status bridge 1 Interface 'bridge 1' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:ac:4d:15 Last change: 4 minutes and 22 seconds Mode: Routerport
PE2:
PE2(config)# bridge 1 PE2(config-bridge)# enable PE2(config-bridge)# exit PE2(config)# interface gigabitethernet 1/0/4 PE2(config-if-gi)# mode switchport PE2(config-if-gi)# bridge-group 1
PE2# show interfaces bridge 1 Bridges Interfaces ---------- -------------------------------------------------------------- bridge 1 gi1/0/4 PE2# sh interfaces status bridge 1 Interface 'bridge 1' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:ad:f2:45 Last change: 10 seconds Mode: routerport
PE3:
PE3(config)# bridge 1 PE3(config-bridge)# enable PE3(config-bridge)# exit PE3(config)# interface gigabitethernet 1/0/4 PE3(config-if-gi)# mode switchport PE3(config-if-gi)# bridge-group 1
PE3# show interfaces bridge Bridges Interfaces ---------- -------------------------------------------------------------- bridge 1 gi1/0/4 PE3# sh interfaces status bridge Interface Admin Link MTU MAC address Last change Mode state state ------------------ ----- ----- ------ ------------------ ------------------------- ---------- bridge 1 Up Up 1500 a8:f9:4b:ac:df:f0 1 minute and 21 seconds Routerport PE3# sh interfaces status bridge 1 Interface 'bridge 1' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:ac:df:f0 Last change: 1 minute and 24 seconds Mode: Routerport
Следующим шагом выполним настройку VPLS:
PE1:
Переходим в контекст настройки L2VPN и включим в него заранее созданный бридж-домен.
PE1(config)# mpls PE1(config-mpls)# l2vpn PE1(config-l2vpn)# vpls l2vpn PE1(config-l2vpn-vpls)# bridge-group 1
Укажем RD, RT, VE-ID, VPN ID согласно схеме сети и активируем сервис:
В некоторых случаях можно отказаться от ввода таких параметров как RD и RT: если указать только VPN ID, то они будут сформированы следующим образом: <номер AS> : <vpn-id>.
Например, у нас есть номер автономной системы AS 65550, vpn-id мы указали 10, тогда cгенерируются следующие параметры:
RD — 65550: 10.
RT import/export — 65550:10.
PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# rd 65500:100 PE1(config-bgp)# route-target import 65500:100 PE1(config-bgp)# route-target export 65500:100 PE1(config-bgp)# ve id 1 PE1(config-bgp)# vpn id 1 PE1(config-bgp)# exit PE1(config-l2vpn-vpls)# enable
После активации сервиса проверим, что в таблице l2vpn появилась маршрутная информация, и она анонсируется на RR:
PE1# show bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *> 65500:100 1 1 10 -- -- -- -- PE1# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes Origin codes: i - IGP, e - EGP, ? - incomplete Route Distinguisher VID VBO VBS Next hop Metric LocPrf Path --------------------- ----- ----- ----- --------------- ---------- ---------- ---------------------- 65500:100 1 1 10 10.10.0.1 -- 100 i * Подробный вывод анонсированного маршрута * PE1# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes ve-id 1 block -offset 1 BGP routing table entry for 65500:100 VE ID 1 VE Block Offset 1 VE Block Size: 10 Label Base: 86 Next hop: 10.10.0.1 AS path: -- Origin: IGP Local preference: 100 Extended Community: RT:65500:100 Layer2-info: encaps (VPLS), control flags(0x00), MTU (1500)
Переходим к настройке PE2:
PE2(config-mpls)# l2vpn PE2(config-l2vpn)# vpls l2vpn PE2(config-l2vpn-vpls)# bridge-group 1 PE2(config-l2vpn-vpls)# autodiscovery bgp PE2(config-bgp)# rd 65500:100
PE2(config-bgp)# route-target export 65500:100 PE2(config-bgp)# route-target import 65500:100 PE2(config-bgp)# vpn id 2 PE2(config-bgp)# ve id 2 PE2(config-bgp)# exit PE2(config-l2vpn-vpls)# enable
Проверяем, что PE2 анонсирует маршрутную информацию на RR:
PE2# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes Origin codes: i - IGP, e - EGP, ? - incomplete Route Distinguisher VID VBO VBS Next hop Metric LocPrf Path --------------------- ----- ----- ----- --------------- ---------- ---------- ---------------------- 65500:100 2 1 10 10.10.0.2 -- 100 i
В таблице l2vpn видны как и свои маршруты, так и от PE1:
PE2# show bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *> 65500:100 2 1 10 -- -- -- -- *>i 65500:100 1 1 10 10.10.0.1 -- 100 0 i
Просмотреть вычисленные сервисные метки можно следующим образом:
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
PE2# show mpls forwarding-table Local Outgoing Prefix Outgoing Next Hop label label or tunnel ID Interface -------- -------- ----------------- ---------------- ---------------------------------- 45 87 PW ID 2 -- 10.10.0.1
Проверим состояние сервиса:
PE2# show mpls l2vpn vpls l2vpn VPLS: l2vpn bridge 1: MTU: 1500 Status: Up ACs: gigabitethernet 1/0/4: MTU: 1500 Status: Up PWs: PW ID 2, Neighbor 10.10.0.1: MTU: 1500 Last change: 00:21:33 Status: Up
Переходим к настройке PE3:
PE3# config PE3(config)# mpls PE3(config-mpls)# l2vpn PE3(config-l2vpn)# vpls l2vpn PE3(config-l2vpn-vpls)# bridge-group 1 PE3(config-l2vpn-vpls)# autodiscovery bgp PE3(config-bgp)# rd 65500:100 PE3(config-bgp)# route-target export 65500:100 PE3(config-bgp)# route-target import 65500:100 PE3(config-bgp)# ve id 3 PE3(config-bgp)# vpn id 3 PE3(config-bgp)# exit PE3(config-l2vpn-vpls)# enable
Проверяем маршрутную информацию на PE3:
PE3# show bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *> 65500:100 3 1 10 -- -- -- -- *>i 65500:100 2 1 10 10.10.0.2 -- 100 0 i *>i 65500:100 1 1 10 10.10.0.1 -- 100 0 i
Убедимся, что PE3 анонсирует маршрутную информацию на RR:
PE3# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes Origin codes: i - IGP, e - EGP, ? - incomplete Route Distinguisher VID VBO VBS Next hop Metric LocPrf Path --------------------- ----- ----- ----- --------------- ---------- ---------- ---------------------- 65500:100 3 1 10 10.10.0.3 -- 100 i
Проверим, что псевдопровод построен до обеих PE и находится в статусе "UP":
PE3# show mpls l2vpn vpls l2vpn VPLS: l2vpn bridge 1: MTU: 1500 Status: Up ACs: gigabitethernet 1/0/4: MTU: 1500 Status: Up PWs: PW ID 3, Neighbor 10.10.0.2: MTU: 1500 Last change: 00:06:08 Status: Up PW ID 3, Neighbor 10.10.0.1: MTU: 1500 Last change: 00:06:08 Status: Up
Проверим сетевую доступность клиентских устройств (СЕ):
CE3# ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. !!!!! --- 192.168.0.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 0.173/0.208/0.290/0.045 ms CE3# ping 192.168.0.2 PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data. !!!!! --- 192.168.0.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 0.158/0.204/0.255/0.032 ms PE3# sh mac address-table bridge 1 VID MAC Address Interface Type ----- ------------------ ------------------------------ ------- -- a8:f9:4b:aa:11:08 gigabitethernet 1/0/4 Dynamic -- a8:f9:4b:aa:11:06 dypseudowire 3_10.10.0.1 Dynamic -- a8:f9:4b:aa:11:07 dypseudowire 3_10.10.0.2 Dynamic 3 valid mac entries
Настройка L2VPN-сервиса завершена.
Настройка сервиса L3VPN
Сервис L3VPN позволяет объединить распределенные клиентские IP-сети и обеспечить передачу трафика между ними в рамках единой VRF.
В текущей реализации протокола MP-BGP поддержана передача только VPN-IPv4 маршрутов (AFI = 1, SAFI = 128).
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить адресацию и один из протоколов IGP на всех P- и PE-устройствах | ||
2 | Настроить распространение транспортных меток по протоколу LDP (см. раздел Конфигурирование протокола LDP) | ||
3 | Создать VRF | wlc-30(config)# ip vrf <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
4 | Указать route distinguisher для данного VRF | wlc-30(config-vrf)# rd <RD> | <RD> – значение Route distinguisher, задается в одном из следующем виде:
|
5 | Указать route target import для данного VRF | wlc-30(config-vrf)# route-target import <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
6 | Указать route target export для данного VRF | wlc-30(config-vrf)# route-target export <RT> | <RT> – значение route-target, задается в одном из следующем виде:
|
7 | Указать разрешенное количество маршрутов для данного VRF | wlc-30(config-vrf)# ip protocols <PROTOCOLS> max-routes <VALUE> | <PROTOCOL> – вид протокола, принимает значения: rip (только в глобальном режиме), ospf, isis, bgp; <VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:
|
8 | В рамках настройки address-family VPNv4 протокола BGP включить передачу расширенный атрибутов | wlc-30(config-bgp-neighbor-af)# send-community extended |
Пример настройки
Задача:
Настроить L3VPN на базе технологии MPLS между WLC-30_A и WLC-30_C. Конечным результатом настройки является появление связности между узлами, подключенными к VRF на различных устройствах сети (то есть объединение VRF на разных устройствах через MPLS-транспорт). При этом должна быть обеспечена передача сервисных MPLS-меток для сервиса L3VPN посредством MP-BGP и передача транспортных меток для достижения nexthop-адресов полученных BGP-маршрутов.
Решение:
Настройка адресации и включение IGP на P/PE устройствах:
wlc-30-1(config)# router ospf log-adjacency-changes wlc-30-1(config)# router ospf 1 wlc-30-1(config-ospf)# router-id 1.1.1.1 wlc-30-1(config-ospf)# area 0.0.0.0 wlc-30-1(config-ospf-area)# enable wlc-30-1(config-ospf-area)# exit wlc-30-1(config-ospf)# enable wlc-30-1(config-ospf)# exit wlc-30-1(config)# wlc-30-1(config)# interface loopback 1 wlc-30-1(config-loopback)# ip address 1.1.1.1/32 wlc-30-1(config-loopback)# ip ospf instance 1 wlc-30-1(config-loopback)# ip ospf wlc-30-1(config-loopback)# exit wlc-30-1(config)# wlc-30-1(config)# interface gigabitethernet 1/0/1.10 wlc-30-1(config-subif)# ip firewall disable wlc-30-1(config-subif)# ip address 10.10.10.1/30 wlc-30-1(config-subif)# ip ospf instance 1 wlc-30-1(config-subif)# ip ospf wlc-30-1(config-subif)# exit wlc-30-1(config)# wlc-30-1(config)# interface gigabitethernet 1/0/1.40 wlc-30-1(config-subif)# ip firewall disable wlc-30-1(config-subif)# ip address 40.40.40.1/30 wlc-30-1(config-subif)# ip ospf instance 1 wlc-30-1(config-subif)# ip ospf wlc-30-1(config-subif)# exit wlc-30-1(config)# wlc-30-1(config)# system jumbo-frames wlc-30-1(config)# do commit wlc-30-1(config)# do confirm
wlc-30-2(config)# router ospf log-adjacency-changes wlc-30-2(config)# router ospf 1 wlc-30-2(config-ospf)# router-id 2.2.2.2 wlc-30-2(config-ospf)# area 0.0.0.0 wlc-30-2(config-ospf-area)# enable wlc-30-2(config-ospf-area)# exit wlc-30-2(config-ospf)# enable wlc-30-2(config-ospf)# exit wlc-30-2(config)# wlc-30-2(config)# interface loopback 1 wlc-30-2(config-loopback)# ip address 2.2.2.2/32 wlc-30-2(config-loopback)# ip ospf instance 1 wlc-30-2(config-loopback)# ip ospf wlc-30-2(config-loopback)# exit wlc-30-2(config)# wlc-30-2(config)# interface gigabitethernet 1/0/1.10 wlc-30-2(config-subif)# ip firewall disable wlc-30-2(config-subif)# ip address 10.10.10.2/30 wlc-30-2(config-subif)# ip ospf instance 1 wlc-30-2(config-subif)# ip ospf wlc-30-2(config-subif)# exit wlc-30-2(config)# wlc-30-2(config)# interface gigabitethernet 1/0/1.20 wlc-30-2(config-subif)# ip firewall disable wlc-30-2(config-subif)# ip address 20.20.20.2/30 wlc-30-2(config-subif)# ip ospf instance 1 wlc-30-2(config-subif)# ip ospf wlc-30-2(config-subif)# exit wlc-30-2(config)# wlc-30-2(config)# system jumbo-frames wlc-30-2(config)# do commit wlc-30-2(config)# do confirm
wlc-30-3(config)# router ospf log-adjacency-changes wlc-30-3(config)# router ospf 1 wlc-30-3(config-ospf)# router-id 3.3.3.3 wlc-30-3(config-ospf)# area 0.0.0.0 wlc-30-3(config-ospf-area)# enable wlc-30-3(config-ospf-area)# exit wlc-30-3(config-ospf)# enable wlc-30-3(config-ospf)# exit wlc-30-3(config)# wlc-30-3(config)# interface loopback 1 wlc-30-3(config-loopback)# ip address 3.3.3.3/32 wlc-30-3(config-loopback)# ip ospf instance 1 wlc-30-3(config-loopback)# ip ospf wlc-30-3(config-loopback)# exit wlc-30-3(config)# wlc-30-3(config)# interface gigabitethernet 1/0/1.20 wlc-30-3(config-subif)# ip firewall disable wlc-30-3(config-subif)# ip address 20.20.20.1/30 wlc-30-3(config-subif)# ip ospf instance 1 wlc-30-3(config-subif)# ip ospf wlc-30-3(config-subif)# exit wlc-30-3(config)# wlc-30-3(config)# interface gigabitethernet 1/0/1.30 wlc-30-3(config-subif)# ip firewall disable wlc-30-3(config-subif)# ip address 30.30.30.1/30 wlc-30-3(config-subif)# ip ospf instance 1 wlc-30-3(config-subif)# ip ospf wlc-30-3(config-subif)# exit wlc-30-3(config)# wlc-30-3(config)# system jumbo-frames wlc-30-3(config)# do commit wlc-30-3(config)# do confirm
wlc-30-4(config)# router ospf log-adjacency-changes wlc-30-4(config)# router ospf 1 wlc-30-4(config-ospf)# router-id 4.4.4.4 wlc-30-4(config-ospf)# area 0.0.0.0 wlc-30-4(config-ospf-area)# enable wlc-30-4(config-ospf-area)# exit wlc-30-4(config-ospf)# enable wlc-30-4(config-ospf)# exit wlc-30-4(config)# wlc-30-4(config)# interface loopback 1 wlc-30-4(config-loopback)# ip address 4.4.4.4/32 wlc-30-4(config-loopback)# ip ospf instance 1 wlc-30-4(config-loopback)# ip ospf wlc-30-4(config-loopback)# exit wlc-30-4(config)# wlc-30-4(config)# interface gigabitethernet 1/0/1.40 wlc-30-4(config-subif)# ip firewall disable wlc-30-4(config-subif)# ip address 40.40.40.2/30 wlc-30-4(config-subif)# ip ospf instance 1 wlc-30-4(config-subif)# ip ospf wlc-30-4(config-subif)# exit wlc-30-4(config)# wlc-30-4(config)# interface gigabitethernet 1/0/1.30 wlc-30-4(config-subif)# ip firewall disable wlc-30-4(config-subif)# ip address 30.30.30.2/30 wlc-30-4(config-subif)# ip ospf instance 1 wlc-30-4(config-subif)# ip ospf wlc-30-4(config-subif)# exit wlc-30-4(config)# wlc-30-4(config)# system jumbo-frames wlc-30-4(config)# do commit wlc-30-4(config)# do confirm
Необходимо убедиться, что протокол OSPF запущен на каждом устройстве:
wlc-30-1# show ip ospf neighbors Router ID Pri State DTime Interface Router IP --------- --- ----- ----- ------------- --------- 2.2.2.2 128 Full/BDR 00:39 gi1/0/1.10 10.10.10.2 4.4.4.4 128 Full/BDR 00:32 gi1/0/1.40 40.40.40.2 wlc-301# show ip ospf O 40.40.40.0/30 [150/10] dev gi1/0/1.40 [ospf1 1970-01-08] (1.1.1.1) O * 30.30.30.0/30 [150/20] via 40.40.40.2 on gi1/0/1.40 [ospf1 1970-01-08] (3.3.3.3) O 1.1.1.1/32 [150/0] dev lo1 [ospf1 1970-01-08] (1.1.1.1) O * 4.4.4.4/32 [150/10] via 40.40.40.2 on gi1/0/1.40 [ospf1 1970-01-08] (4.4.4.4) O * 20.20.20.0/30 [150/20] via 10.10.10.2 on gi1/0/1.10 [ospf1 22:05:45] (3.3.3.3) O 10.10.10.0/30 [150/10] dev gi1/0/1.10 [ospf1 22:05:33] (1.1.1.1) O * 3.3.3.3/32 [150/20] multipath [ospf1 22:05:45] (3.3.3.3) via 40.40.40.2 on gi1/0/1.40 weight 1 O * 2.2.2.2/32 [150/10] via 10.10.10.2 on gi1/0/1.10 [ospf1 22:05:45] (2.2.2.2)
Настройка LDP на P/PE устройствах:
wlc-30-1# config wlc-30-1(config)# mpls wlc-30-1(config-mpls)# ldp wlc-30-1(config-ldp)# address-family ipv4 wlc-30-1(config-ldp-af-ipv4)# transport-address 1.1.1.1 wlc-30-1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10 wlc-30-1(config-ldp-af-ipv4-if)# exit wlc-301(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40 wlc-30-1(config-ldp-af-ipv4-if)# exit wlc-30-1(config-ldp-af-ipv4)# exit wlc-30-1(config-ldp)# enable wlc-30-1(config-ldp)# exit wlc-30-1(config-mpls)# forwarding interface gigabitethernet 1/0/1.10 wlc-30-1(config-mpls)# forwarding interface gigabitethernet 1/0/1.40 wlc-30-1(config-mpls)# exit wlc-30-1(config)# do commit wlc-30-1(config)# do confirm
wlc-30-2# config wlc-30-2(config)# mpls wlc-30-2(config-mpls)# ldp wlc-30-2(config-ldp)# address-family ipv4 wlc-30-2(config-ldp-af-ipv4)# transport-address 2.2.2.2 wlc-30-2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10 wlc-30-2(config-ldp-af-ipv4-if)# exit wlc-30-2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.20 wlc-30-2(config-ldp-af-ipv4-if)# exit wlc-30-2(config-ldp-af-ipv4)# exit wlc-30-2(config-ldp)# enable wlc-30-2(config-ldp)# exit wlc-30-2(config-mpls)# forwarding interface gigabitethernet 1/0/1.10 wlc-30-2(config-mpls)# forwarding interface gigabitethernet 1/0/1.20 wlc-30-2(config-mpls)# exit wlc-30-2(config)# do commit wlc-30-2(config)# do confirm
wlc-30-3# config wlc-30-3(config)# mpls wlc-30-3(config-mpls)# ldp wlc-30-3(config-ldp)# address-family ipv4 wlc-30-3(config-ldp-af-ipv4)# transport-address 3.3.3.3 wlc-30-3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.20 wlc-30-3(config-ldp-af-ipv4-if)# exit wlc-30-3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30 wlc-30-3(config-ldp-af-ipv4-if)# exit wlc-30-3(config-ldp-af-ipv4)# exit wlc-30-3(config-ldp)# enable wlc-30-3(config-ldp)# exit wlc-30-3(config-mpls)# forwarding interface gigabitethernet 1/0/1.20 wlc-30-3(config-mpls)# forwarding interface gigabitethernet 1/0/1.30 wlc-30-3(config-mpls)# exit wlc-30-3(config)# do commit wlc-30-3(config)# do confirm
wlc-30-4# config wlc-30-4(config)# mpls wlc-30-4(config-mpls)# ldp wlc-30-4(config-ldp)# address-family ipv4 wlc-30-4(config-ldp-af-ipv4)# transport-address 4.4.4.4 wlc-30-4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30 wlc-30-4(config-ldp-af-ipv4-if)# exit wlc-30-4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40 wlc-30-4(config-ldp-af-ipv4-if)# exit wlc-30-4(config-ldp-af-ipv4)# exit wlc-30-4(config-ldp)# enable wlc-30-4(config-ldp)# exit wlc-30-4(config-mpls)# forwarding interface gigabitethernet 1/0/1.30 wlc-30-4(config-mpls)# forwarding interface gigabitethernet 1/0/1.40 wlc-30-4(config-mpls)# exit wlc-30-4(config)# do commit wlc-30-4(config)# do confirm
Для проверки сходимости LDP можно воспользоваться одной из следующих команд:
wlc-30-1# show mpls ldp neighbor Peer LDP ID: 2.2.2.2; Local LDP ID 1.1.1.1 State: Operational TCP connection: 2.2.2.2:33933 - 1.1.1.1:646 Messages sent/received: 1059/1070 Uptime: 17:32:07 LDP discovery sources: gigabitethernet 1/0/1.10 Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1 State: Operational TCP connection: 4.4.4.4:40894 - 1.1.1.1:646 Messages sent/received: 1376/1386 Uptime: 22:38:38 LDP discovery sources: gigabitethernet 1/0/1.40
Настройка MP-BGP
Создадим VRF на WLC-30_A и WLC-30_C соответственно. Укажем RD, rt-export/import в соответствии с нашей схемой, настроим интерфейс для взаимодействия с CE (CE-SiteA и CE-SiteB). Дополнительно создадим route-map для разрешения анонсирования маршрутов по протоколу BGP:
Без указания атрибутов RD и RT маршрутная информация не попадет в таблицу VPNv4.
wlc-30-1(config)# ip vrf Customer1 wlc-30-1(config-vrf)# ip protocols bgp max-routes 1000 wlc-30-1(config-vrf)# rd 65500:100 wlc-30-1(config-vrf)# route-target import 65500:100 wlc-30-1(config-vrf)# route-target export 65500:100 wlc-30-1(config-vrf)# exit wlc-30-1(config)# interface gigabitethernet 1/0/2 wlc-30-1(config-if-gi)# ip vrf forwarding Customer1 wlc-30-1(config-if-gi)# description "Customer1" wlc-30-1(config-if-gi)# ip firewall disable wlc-30-1(config-if-gi)# ip address 192.168.32.1/30 wlc-30-1(config-if-gi)# exit wlc-30-1(config)# route-map OUTPUT wlc-30-1(config-route-map)# rule 1 wlc-30-1(config-route-map-rule)# action permit wlc-30-1(config-route-map-rule)# exit wlc-30-1(config-route-map)# exit wlc-30-1(config)# do commit wlc-30-1(config)# do confirm
wlc-30-3(config)# ip vrf Customer1 wlc-30-3(config-vrf)# ip protocols bgp max-routes 1000 wlc-30-3(config-vrf)# rd 65500:100 wlc-30-3(config-vrf)# route-target export 65500:100 wlc-30-3(config-vrf)# route-target import 65500:100 wlc-30-3(config-vrf)# exit wlc-30-3(config)# interface gigabitethernet 1/0/2 wlc-30-3(config-if-gi)# ip vrf forwarding Customer1 wlc-30-3(config-if-gi)# description "Customer1" wlc-30-3(config-if-gi)# ip firewall disable wlc-30-3(config-if-gi)# ip address 192.168.32.5/30 wlc-30-3(config-if-gi)# exit wlc-30-3(config)# route-map OUTPUT wlc-30-3(config-route-map)# rule 1 wlc-30-3(config-route-map-rule)# action permit wlc-30-3(config-route-map-rule)# exit wlc-30-3(config-route-map)# exit wlc-30-3(config)# do commit wlc-30-3(config)# do confirm
Настроим iBGP между WLC-30_A и WLC-30_C. Включим отправку extended community на обоих устройствах:
wlc-30-1(config)# router bgp log-neighbor-changes wlc-30-1(config)# router bgp 65500 wlc-30-1(config-bgp)# router-id 1.1.1.1 wlc-30-1(config-bgp)# enable wlc-30-1(config-bgp)# neighbor 3.3.3.3 wlc-30-1(config-bgp-neighbor)# remote-as 65500 wlc-30-1(config-bgp-neighbor)# update-source 1.1.1.1 wlc-30-1(config-bgp-neighbor)# enable wlc-30-1(config-bgp-neighbor)# address-family vpnv4 unicast wlc-30-1(config-bgp-neighbor-af)# send-community extended wlc-30-1(config-bgp-neighbor-af)# enable wlc-30-1(config-bgp-neighbor-af)# exit wlc-30-1(config-bgp-neighbor)# exit wlc-30-1(config-bgp)# exit wlc-30-1(config)# do commit wlc-30-1(config)# do confirm
wlc-30-3(config)# router bgp log-neighbor-changes wlc-30-3(config)# router bgp 65500 wlc-30-3(config-bgp)# router-id 3.3.3.3 wlc-30-3(config-bgp)# enable wlc-30-3(config-bgp)# neighbor 1.1.1.1 wlc-30-3(config-bgp-neighbor)# remote-as 65500 wlc-30-3(config-bgp-neighbor)# update-source 3.3.3.3 wlc-30-3(config-bgp-neighbor)# enable wlc-30-3(config-bgp-neighbor)# address-family vpnv4 unicast wlc-30-3(config-bgp-neighbor-af)# send-community extended wlc-30-3(config-bgp-neighbor-af)# enable wlc-30-3(config-bgp-neighbor-af)# exit wlc-30-3(config-bgp-neighbor)# exit wlc-30-3(config-bgp)# exit wlc-30-3(config)# do commit wlc-30-3(config)# do confirm
Необходимо убедиться, что BGP-сессия успешно установлена:
wlc-30-1# show bgp neighbors BGP neighbor is 3.3.3.3 BGP state: Established Neighbor address: 3.3.3.3 Neighbor AS: 65500 Neighbor ID: 3.3.3.3 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 1.1.1.1 Weight: 0 Hold timer: 126/180 Keepalive timer: 40/60 Address family ipv4 unicast: Default originate: No Default information originate: No Uptime: 88495 s
Настройка маршрутизации PE-CE
Согласно нашей топологии, Customer1 анонсирует по BGP (AS65505) подсеть 10.100.0.0/24. Необходимо настроить соответствующие интерфейсы, eBGP между WLC-30_A и CE_SiteA. Также необходимо разрешить анонсирование маршрутов в сторону PE.
По умолчанию: для eBGP анонсирование маршрутов запрещено, необходимо настроить разрешающее правило. Для iBGP анонсирование маршрутов разрешено.
Необходимая конфигурация на устройстве CE-SiteA:
CE-SiteA(config)# interface gigabitethernet 1/0/2 CE-SiteA(config-if-gi)# ip firewall disable CE-SiteA(config-if-gi)# ip address 192.168.32.2/30 CE-SiteA(config-if-gi)# exit CE-SiteA(config)# interface loopback 1 CE-SiteA(config-loopback)# ip address 10.100.0.1/24 CE-SiteA(config-loopback)# exit CE-SiteA(config)# route-map OUTPUT CE-SiteA(config-route-map)# rule 1 CE-SiteA(config-route-map-rule)# match ip address 10.100.0.0/24 CE-SiteA(config-route-map-rule)# action permit CE-SiteA(config-route-map-rule)# exit CE-SiteA(config-route-map)# exit CE-SiteA(config)# router bgp log-neighbor-changes CE-SiteA(config)# router bgp 65505 CE-SiteA(config-bgp)# router-id 192.168.32.1 CE-SiteA(config-bgp)# neighbor 192.168.32.1 CE-SiteA(config-bgp-neighbor)# remote-as 65500 CE-SiteA(config-bgp-neighbor)# allow-local-as 1 CE-SiteA(config-bgp-neighbor)# update-source 192.168.32.2 CE-SiteA(config-bgp-neighbor)# address-family ipv4 unicast CE-SiteA(config-bgp-neighbor-af)# route-map OUTPUT out CE-SiteA(config-bgp-neighbor-af)# enable CE-SiteA(config-bgp-neighbor-af)# exit CE-SiteA(config-bgp-neighbor)# enable CE-SiteA(config-bgp-neighbor)# exit CE-SiteA(config-bgp)# address-family ipv4 unicast CE-SiteA(config-bgp-af)# network 10.100.0.0/24 CE-SiteA(config-bgp-af)# exit CE-SiteA(config-bgp)# enable CE-SiteA(config-bgp)# exit CE-SiteA(config)# do commit CE-SiteA(config)# do confirm
Переходим к настройке eBGP на контроллере WLC-30_A.
Создадим eBGP сессию с CE_SiteA и разрешим передачу маршрутов BGP-пиру:
wlc-30-1(config)# router bgp 65500 wlc-30-1(config-bgp)# vrf Customer1 wlc-30-1(config-bgp-vrf)# router-id 192.168.32.1 wlc-30-1(config-bgp-vrf)# neighbor 192.168.32.2 wlc-30-1(config-bgp-vrf-neighbor)# remote-as 65505 wlc-30-1(config-bgp-vrf-neighbor)# update-source 192.168.32.1 wlc-30-1(config-bgp-vrf-neighbor)# address-family ipv4 unicast wlc-30-1(config-bgp-neighbor-af-vrf)# route-map OUTPUT out wlc-30-1(config-bgp-neighbor-af-vrf)# enable wlc-30-1(config-bgp-neighbor-af-vrf)# exit wlc-30-1(config-bgp-vrf-neighbor)# enable wlc-30-1(config-bgp-vrf-neighbor)# exit wlc-30-1(config-bgp-vrf)# address-family ipv4 unicast wlc-30-1(config-bgp-vrf-af)# redistribute connected wlc-30-1(config-bgp-vrf-af)# redistribute bgp 65500 wlc-301(config-bgp-vrf-af)# exit wlc-30-1(config-bgp-vrf)# enable wlc-30-1(config-bgp-vrf)# exit wlc-30-1(config-bgp)# exit wlc-30-1(config)# do commit wlc-30-1(config)# do confirm
При передаче маршрутов из VRF в таблицу VPNv4 только connected и/или static сетей указывать команду enable не нужно. Включение необходимо только при наличии BGP пиров в VRF.
Пример конфигурации передачи в VPNv4 таблицу connected- и static-сетей:
wlc-30-1(config)# router bgp 65500 wlc-30-1(config-bgp)# router-id 1.1.1.1 wlc-30-1(config-bgp)# neighbor 3.3.3.3 wlc-30-1(config-bgp-neighbor)# remote-as 65500 wlc-30-1(config-bgp-neighbor)# update-source 1.1.1.1 wlc-30-1(config-bgp-neighbor)# enable wlc-30-1(config-bgp-neighbor)# address-family vpnv4 unicast wlc-30-1(config-bgp-neighbor-af)# send-community extended wlc-30-1(config-bgp-neighbor-af)# enable wlc-30-1(config-bgp-neighbor-af)# exit wlc-30-1(config-bgp-neighbor)# exit wlc-30-1(config-bgp)# enable wlc-30-1(config-bgp)# vrf Customer1 wlc-30-1(config-bgp-vrf)# address-family ipv4 unicast wlc-30-1(config-bgp-vrf-af)# redistribute connected wlc-30-1(config-bgp-vrf-af)# redistribute static wlc-30-1(config-bgp-vrf-af)# exit wlc-30-1(config-bgp-vrf)# exit wlc-30-1(config-bgp)# exit wlc-30-1(config)# do commit wlc-30-1(config)# do confirm
Для проверки принятых и анонсированных маршрутов можно воспользоваться следующими командами:
wlc-30-1# show bgp vpnv4 unicast vrf Customer1 neighbors 192.168.32.2 advertise-routes Status codes: u - unicast, b - broadcast, m - multicast, a - anycast * - valid, > - best Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> u 10.100.1.0/24 192.168.32.1 100 65500 i *> u 192.168.32.4/30 192.168.32.1 100 65500 i
Вывод анонсируемых маршрутов для определенного пира. Маршрутная информация отображается после применения фильтрации.
wlc-30-1# show bgp vpnv4 unicast vrf Customer1 neighbors 192.168.32.2 routes Status codes: u - unicast, b - broadcast, m - multicast, a - anycast * - valid, > - best Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> u 10.100.0.0/24 192.168.32.2 100 0 65505
Вывод принятой маршрутной информации от определенного пира. Маршрутная информация отображается после применения фильтрации.
CE-SiteB
Необходимо проделать схожие операции теперь уже между устройствами WLC-30_C и CE_SiteB.
Произвести настройку соответствующих интерфейсов и создать eBGP-сессию между WLC-30_C и CE_SiteB:
CE-SiteB(config)# interface gigabitethernet 1/0/2 CE-SiteB(config-if-gi)# ip firewall disable CE-SiteB(config-if-gi)# ip address 192.168.32.6/30 CE-SiteB(config-if-gi)# exit CE-SiteB(config)# CE-SiteB(config)# interface loopback 1 CE-SiteB(config-loopback)# ip address 10.100.1.1/24 CE-SiteB(config-loopback)# exit CE-SiteB(config)# CE-SiteB(config)# route-map OUTPUT CE-SiteB(config-route-map)# rule 1 CE-SiteB(config-route-map-rule)# match ip address 10.100.1.0/24 CE-SiteB(config-route-map-rule)# action permit CE-SiteB(config-route-map-rule)# exit CE-SiteB(config-route-map)# exit CE-SiteB(config)# CE-SiteB(config)# router bgp 65505 CE-SiteB(config-bgp)# router-id 192.168.32.6 CE-SiteB(config-bgp)# neighbor 192.168.32.5 CE-SiteB(config-bgp-neighbor)# remote-as 65500 CE-SiteB(config-bgp-neighbor)# allow-local-as 1 CE-SiteB(config-bgp-neighbor)# update-source 192.168.32.6 CE-SiteB(config-bgp-neighbor)# address-family ipv4 unicast CE-SiteB(config-bgp-neighbor-af)# route-map OUTPUT out CE-SiteB(config-bgp-neighbor-af)# enable CE-SiteB(config-bgp-neighbor-af)# exit CE-SiteB(config-bgp-neighbor)# enable CE-SiteB(config-bgp-neighbor)# exit CE-SiteB(config-bgp)# address-family ipv4 unicast CE-SiteB(config-bgp-af)# network 10.100.1.0/24 CE-SiteB(config-bgp-af)# exit CE-SiteB(config-bgp)# enable CE-SiteB(config-bgp)# exit CE-SiteB(config)# do commit CE-SiteB(config)# do confirm
Со стороны WLC-30_C также настроить eBGP и разрешить передачу маршрутной информации из VRF в таблицу VPNv4:
router bgp 65500 wlc-30-3(config)# router bgp 65500 wlc-30-3(config-bgp)# vrf Customer1 wlc-30-3(config-bgp-vrf)# router-id 192.168.32.5 wlc-30-3(config-bgp-vrf)# neighbor 192.168.32.6 wlc-30-3(config-bgp-vrf-neighbor)# remote-as 65505 wlc-30-3(config-bgp-vrf-neighbor)# update-source 192.168.32.5 wlc-30-3(config-bgp-vrf-neighbor)# address-family ipv4 unicast wlc-30-3(config-bgp-neighbor-af-vrf)# route-map OUTPUT out wlc-30-3(config-bgp-neighbor-af-vrf)# enable wlc-30-3(config-bgp-neighbor-af-vrf)# exit wlc-30-3(config-bgp-vrf-neighbor)# enable wlc-30-3(config-bgp-vrf-neighbor)# exit wlc-30-3(config-bgp-vrf)# address-family ipv4 unicast wlc-30-3(config-bgp-vrf-af)# redistribute connected wlc-30-3(config-bgp-vrf-af)# redistribute bgp 65500 wlc-30-3(config-bgp-vrf-af)# exit wlc-30-3(config-bgp-vrf)# enable wlc-30-3(config-bgp-vrf)# exit wlc-30-3(config-bgp)# exit wlc-30-3(config)# do commit wlc-30-3(config)# do confirm
Для просмотра VPNv4-таблицы можно воспользоваться одной из следующих команд:
wlc-30-1# show bgp vpnv4 unicast all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path ----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ---------------- *> 65500:100 10.100.0.0/24 -- -- 23 -- -- ? *>i 65500:100 192.168.32.4/30 3.3.3.3 -- 84 100 0 i *>i 65500:100 10.100.1.0/24 3.3.3.3 -- 84 100 0 i
Выводит все принятые VPNv4 маршруты после применения фильтрации.
Балансировка трафика MPLS
Контроллер WLC-30 имеет многоядерную архитектуру. Одним из первых звеньев обработки поступающего трафика является load balancer daemon(lbd), который выполняет две основных функции:
1) Равномерно распределяет нагрузку между всеми CPU контроллера.
2) Выявляет аномальные ситуации с высокой нагрузкой на отдельные CPU, и перераспределяет обработку с этих CPU на менее загруженные.
По умолчанию, lbd использует только MPLS-метки для вычисления хэша и дальнейшего распределения нагрузки на различные CPU. Данное поведение не всегда дает преимущество, особенное когда существуют "большие" однородные потоки MPLS-трафика. Для добавление энтропии в хэш можно включить дополнительный функционал:
cpu load-balance mpls passenger ip
Включает возможность "заглядывать" дальше MPLS-заголовка для поиска IP-заголовка, и добавления ip-src и ip-dst в расчет хэша.
cpu load-balance mpls passenger ip-over-ethernet-pseudowire-with-cw
cpu load-balance mpls passenger ip-over-ethernet-pseudowire-without-cw
Позволяет явно указать, используется ли при построении L2VPN функционал Control Word. Позволяет исключить возникновение ошибки, когда пакет с наличием Сontrol word может быть ошибочно распознан как пакет без Сontrol Word.
Пример настройки
Задача:
Включить балансировку L2VPN-трафика без использования функционала Control Word.
Решение:
wlc-30(config)# system cpu load-balance mpls passenger ip wlc-30(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
Работа с бридж-доменом в рамках MPLS
Для организации L2VPN-сервиса необходимо настроить на устройстве бридж-домен, создать требуемые AC, PW (LDP-signaling) и связать все данные элементы с бридж-доменом.
Для point-to-point бридж-домен создается автоматически.
Между элементами бридж-домена осуществляется коммутация трафика на основании перечисленных правил :
- Для каждого бридж-домена автоматически создается таблица MAC-адресов по аналогии с Ethernet-коммутаторами. Ethernet-кадры коммутируются на основании анализа MAC-адреса получателя (DST MAC).
- Кадры с известным DST MAC будут отправляться в соответствующие AC/PW.
- Кадры с неизвестным DST MAC, broadcast- и multicast-кадры (т.н. BUM-трафик, "Broadcast, Unknown unicast и Multicast") будут отправляться во все элементы бридж-домена, за исключением того элемента (AC либо PW), с которого вошли в бридж-домен.
- При коммутации учитываются DST MAC в кадрах, но не учитываются VLAN-теги, имеющиеся на кадрах — таким образом, коммутация внутри бридж-домена не является"VLAN-aware".
В текущей реализации, бридж-домен не пропускает трафик протоколов канального уровня таких так: STP, LLDP, CDP и т.д.
Бридж-домен может работать в двух транспортных режимах: ethernet или vlan. Транспортных режим задает правила обработки трафика на входе и выходе с бридж-домена.
В LDP signaling, по умолчанию используется ethernet mode (Raw mode, type 5). Для каждого отдельного экземпляра VPLS можно задать транспортный режим.
В BGP signaling, бридж-домен работает только в ethernet mode.
PE1# config PE1(config)# mpls PE1(config-mpls)# l2vpn PE1(config-l2vpn)# vpls MARTINI_br PE1(config-l2vpn-vpls)# transport-mode vlan PE1# sh mpls l2vpn pseudowire Neighbor PW ID Sig Type Status --------------------------------------- ---------- --- ---------- ------ 10.10.0.2 200 LDP Eth Tagged Up
В LDP signaling транспортный режим согласуется между PE в процессе создания псевдопровода, поэтому он должен совпадать на обоих PE.
Рассмотрим правила обработки трафика:
1. Ethernet (Raw) mode:
- Если AC является сабинтерфейсом, то vlan-тег перед помещением в бридж снимается. При выходе из бриджа vlan-тег восстанавливается.
- Если AC является интерфейсом, то тегированный и нетегированный трафик проходит в обоих направлениях без модификаций.
Предположим, PE1 и PE2 cконфигурированы в ethernet mode (на рисунке ниже). Со стороны PE1 в бридж-домен включен cабинтерфейс gigabitethernet 1/0/4.100, соответственно vlan-тег (vlan id 100) с входящего трафика будет удален перед помещением в Pseudowire 10 (соответственно, восстановлен при трафике в сторону АС). С другой стороны, AC на PE2, является интерфейсом, а значит, трафик будет проходить без модификаций в обоих направлениях.
2. Vlan (Tagged) mode:
- Если AC является сабинтерфейсом, то vlan-тег перед помещением в бридж сохраняется. При выходе из бриджа vlan-тег может быть сохранен или перезаписан в зависимости от конфигурации.
- Если АС является интерфейсом, то модификация трафика не происходит в обоих направлениях.
Назначение MTU при работе с MPLS
Очень важно понимать и правильно сконфигурировать параметр MTU на интерфейсах, через который передается пакет. Это справедливо и для установки псевдопровода и для передачи сервисного трафика.
Прежде всего, значение MTU участвует в сигнализации при построении псевдопровода как в LDP-signaling, так и в BGP-signaling. В LDP-signaling MTU задается в рамках настройки pw - class:
Для сигнализации (LDP, BGP) значение MTU по умолчанию — 1500.
Значения MTU, участвующие в сигнализации, не влияют на фактический размер пакета, проходящего по псевдопроводу.
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 также можно указать:
PE1(config)# mpls PE1(config-mpls)# l2vpn PE1(config-l2vpn)# vpls l2vpn_MTU PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# mtu 1500 PE2# sh mpls l2vpn vpls l2vpn_MTU VPLS: l2vpn_MTU ... PWs: PW ID 2, Neighbor 10.10.0.1: MTU: 1500 Last change: 01:27:42 Status: Up * Для сигнализации всех псевдо проводов данного VPLS будет выбрано MTU 1500 *
Если при согласовании значение MTU оказалось разным, то cтатус псевдопровода будет — "DOWN", " Reason: MTU mismatch"
PE1(config-l2vpn)# vpls l2vpn_MTU PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# mtu 2000 PE2# sh mpls l2vpn vpls l2vpn_MTU ... PWs: PW ID 2, Neighbor 10.10.0.1: MTU: 2000 Last change: 00:00:10 Status: Down Reason: MTU mismatch
При настройке VPLS (BGP-signaling) можно отключить проверку MTU при создании псевдопроводов:
PE1(config)# mpls PE1(config-mpls)# l2vpn PE1(config-l2vpn)# vpls l2vpn _MTU PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# ignore mtu-mismatch
Теперь, при согласовании, значение MTU будет игнорироваться.
По умолчанию бридж-домен имеет MTU равным 1500 байт. Стоит отметить, что bridge-domain автоматически выбирает наименьшее значение MTU, исходя из собственного MTU и MTU-интерфейсов, включенных в бридж-домен.
* Например, имеем бридж-домен 100, в который включены интерфейсы gi1/0/1 cо значением MTU 2000, и gi1/0/2 cо значением MTU 3000 * CE3(config)# bridge 100 CE3(config-bridge)# enable CE3(config-bridge)# exit CE3(config)# interface gigabitethernet 1/0/1 CE3(config-if-gi)# mtu 2000 CE3(config-if-gi)# bridge-group 100 CE3(config-if-gi)# exit CE3(config)# interface gigabitethernet 1/0/2 CE3(config-if-gi)# mtu 3000 CE3(config-if-gi)# bridge-group 100 CE3(config-if-gi)# do com * MTU бридж-домена будет равным 1500, так как по умолчанию сам бридж имеет MTU 1500 (значение по умолчанию), которое и стало наименьшим: MTU bridge 100 = 1500 <-- Наименьшее значение MTU MTU gi1/0/1 = 2000 MTU gi1/0/2 = 3000 * CE3# sh interfaces bridge Bridges Interfaces ---------- -------------------------------------------------------------- bridge 100 gi1/0/1-2 CE3# sh interfaces status bridge 100 Interface 'bridge 100' status information: Description: -- Operational state: UP Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:aa:11:00 Last change: 1 minute and 46 seconds Mode: Routerport * Изменим MTU на самом бридж-домене: * CE3(config)# bridge 100 CE3(config-bridge)# mtu 6000 CE3(config-bridge)# do com * MTU бридж-домена стало равным 2000 байт, так как gi1/0/2 имеет наименьшее MTU: MTU bridge 100 = 6000 MTU gi1/0/1 = 2000 <-- Наименьшее значение MTU MTU gi1/0/2 = 3000 * CE3# sh interfaces bridge Bridges Interfaces ---------- -------------------------------------------------------------- bridge 100 gi1/0/1-2 CE3# sh interfaces status bridge 100 Interface 'bridge 100' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 2000 MAC address: a8:f9:4b:aa:11:00 Last change: 6 minutes and 42 seconds Mode: Routerport
Рассмотрим пример прохождения трафика в L2VPN-сервисе:
PE1 имеет следующие значения MTU на интерфейсах:
PE1# sh interfaces status Interface Admin Link MTU MAC address Last change Mode state state ------------------ ----- ----- ------ ------------------ ------------------------- ---------- gi1/0/1 Up Up 9000 a8:f9:4b:ac:4d:16 5 hours, 25 minutes and 2 Routerport seconds gi1/0/2 Up Up 1500 a8:f9:4b:ac:4d:17 4 days, 4 hours, 49 Switchport minutes and 40 seconds gi1/0/3 Up Up 1800 a8:f9:4b:ac:4d:18 4 days, 1 hour, 49 Switchport minutes and 38 seconds bridge 2 Up Up 1500 a8:f9:4b:ac:4d:15 1 day, 1 hour, 27 minutes Routerport and 28 seconds
СE1 посылает пакеты размером 1500 байт, CE2 — 1800 байт соответственно. Так как MTU бридж-домена меньше, чем MTU пакета от CE2, то пакет от CE2 будет отброшен перед попаданием в бридж-домен. Аналогичные действия будут, если MTU-интерфейса, смотрящего в сторону mpls-core (gi1/0/1), меньше чем MTU, приходящих от СE-пакетов (с учетом mpls-заголовка).
Cхожее поведение и при прохождении трафика в L3VPN-сервисе:
Если СE1 пошлет пакет с большим MTU, чем на интерфейсе, смотрящим в сторону клиента (gi1/0/2) или в сторону mpls-core (gi1/0/1), то пакет будет отброшен.