Настройка протокола LDP
LDP — протокол распределения меток. Для нахождения соседей используется рассылка hello-сообщений на мультикастный адрес 224.0.0.2. При обмене hello-сообщениями маршрутизаторы узнают транспортные адреса друг друга. Маршрутизатор с большим адресом инициализирует TCP-сессию. После проверки параметров, LDP-сессия считается установленной.
В маршрутизаторах ESR поддержаны следующие режимы работы LDP:
- Режим обмена информации о меткаx — Downstream Unsolicited;
- Механизм контроля за распространением меток — Independent Label Distribution Control;
- Режим сохранения меток — Liberal Label Retention;
На интерфейсах, где включены протокол LDP и MPLS-коммутация, firewall должен быть отключен.
В текущей реализации протокол LDP работает только с IPv4-адресами.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | В контексте настройки параметров MPLS указать интерфейсы, участвующие в процессе MPLS-коммутации. | esr(config-mpls)# forwarding interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
2 | Задать router-id для LDP (не обязательно, если указан transport-address). | esr(config-ldp)# router-id <ID> | <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# 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# 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 interval | 5 секунд |
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] |
3 | В режиме конфигурации протокола LDP задать Hello interval | esr(config-ldp)# discovery hello interval <TIME> | <TIME> - Время в секундах в интервале [3..65535] |
Алгоритм настройки параметров 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(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# 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# 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 является согласуемым параметром - выбирается наименьший. В данном примере показано, что 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(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-сессии:
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# sh mpls ldp neighbor 4.4.4.4 Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1 State: Operational TCP connection: 4.4.4.4:34879 - 1.1.1.1:646 Messages sent/received: 11/11 Uptime: 00:01:05 Peer holdtime: 150 Keepalive interval: 50 LDP discovery sources: 1.1.1.1 -> 4.4.4.4: Hello interval: 10 seconds Holdtime: 40 seconds ...
Настройка фильтрации LDP-меток
По умолчанию, маршрутизаторы выделяют на каждый FEC отдельную метку. Существуют сценарии, когда необходимо выделять MPLS-метки только для определенных FEC.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP). | ||
2 | Создать object-group типа network. | esr(config)# object-group network <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
3 | Описать префиксы, для которых будут назначаться метки. | esr(config-object-group-network)# ip prefix <ADDR/LEN> | <ADDR/LEN> – IP-адрес и маска подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]; |
4 | В контексте настройки LDP применить созданную object-group. | esr(config-ldp)# advertise-labels <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
Метки будут выделяться ТОЛЬКО на описанные в object-group подсети, независимо от того, как они были изучены (connected, local, IGP и т.д.).
В object-group необходимо описывать префиксы.
Префикс должен иметь точное совпадение с маршрутом из FIB.
Данный функционал поддержан для протокола IPv4.
Пример настройки
Задача:
Назначить MPLS-метки только FEC 10.10.0.2/32 и 10.10.0.1/32.
Решение:
На ESR_A и ESR_B создадим object-group ADV_LABELS типа network и добавим в нее префиксы 10.10.0.1/32 и 10.10.0.2/32 соответственно.
esr(config)# object-group network ADV_LABELS esr(config-object-group-network)# ip prefix 10.10.0.1/32 esr(config-object-group-network)# ip prefix 10.10.0.2/32
esr(config)# object-group network ADV_LABELS esr(config-object-group-network)# ip prefix 10.10.0.1/32 esr(config-object-group-network)# ip prefix 10.10.0.2/32
Применим созданную object-group на обоих маршрутизаторах:
esr(config)# mpls esr(config-ldp)# ldp esr(config-ldp)# advertise-labels ADV_LABELS
Проверка:
На ESR_B убедимся, что метка назначена для соответствующих префиксов:
esr# sh mpls ldp bindings 10.10.0.1/32 10.10.0.1/32 local label: exp-null remote label: 75 lsr: 172.16.0.1
И не назначена для 192.168.2.0/24
esr# sh mpls ldp bindings 192.168.2.0/24 esr#
Настройка сервиса L2VPN Martini mode
L2VPN позволяет организовать передачу ethernet-фреймов через MPLS-домен. Выделение и распространение туннельных меток, в данном режиме, осуществляется по средствам протокола LDP. В реализации L2VPN можно условно выделить два случая:
- P2P – туннель создаваемый по схеме "точка-точка".
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 | <MTU> – значение MTU, принимает значение в диапазоне [552..10000] Значение по умолчанию: 1500. |
5 | Отключить обмен status-tlv сообщениями (не обязательно). | esr(config-l2vpn-pw-class)# encapsulation | Значение по умолчанию: status-tlv enable |
6 | Создать p2p-туннель в системе и осуществить переход в режим настройки параметров p2p-туннеля. | esr(config-l2vpn)# p2p <NAME> | <NAME> – имя p2p-сервиса, задается строкой до 31 символа. |
7 | Задать Attached Circuit интерфейс. | esr(config-l2vpn-p2p)# interface | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
8 | Включить p2p-туннель. | esr(config-l2vpn-p2p)# enable | |
9 | Задать транспортный режим (не обязательно). | esr(config-l2vpn-p2p)# transport-mode | <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 | <MTU> - значение MTU, принимает значение в диапазоне [552..10000] Значение по умолчанию: 1500. |
6 | Отключить обмен status-tlv сообщениями (не обязательно). | esr(config-l2vpn-pw-class)# encapsulation | Значение по умолчанию: status-tlv enable |
7 | Создать VPLS-домен в системе и осуществить переход в режим настройки параметров VPLS-домена. | esr(config-l2vpn)# vpls <NAME> | <NAME> - имя p2p-сервиса, задается строкой до 31 символа. |
8 | Включить VPLS-туннель. | esr(config-l2vpn-vpls)# enable | |
9 | Добавить бридж-домен. | esr (config-l2vpn-vpls)# bridge-group <ID> | <ID> - идентификатор бридж -домена , задается в виде числа в диапазоне [1..250 ] |
10 | Задать транспортный режим (не обязательно). | esr(config-l2vpn-vpls)# transport-mode | <ethernet> - Режим при котором при входе в pseudo-wire из заголовка удаляется 802.1Q тэг; |
11 | Создать pseudo-wire и осуществить переход в режим настройки его параметров | esr(config-l2vpn-vpls)# pw <PW_ID> <LSR_ID> | <PW_ID> - идентификатор psewdowire, задается в виде числа в диапазоне [1..4294967295 ] <LSR_ID> - идентификатор LSR до которого строится pseudo-wire, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255] |
12 | Добавить описание для pseudo-wire (не обязательно). | esr(config-l2vpn-pw)# description <LINE> | <LINE> - описание. Задается в виде строки длинной [1..255] символов |
13 | Задать pw-class для pseudo-wire | esr(config-l2vpn-pw)# pw-class <WORD> | <WORD> - имя pw-class длинной [1..31] символов. |
14 | Задать адрес LSR до которого устанавливается pseudo-wire(Не обязательно если neighbor address совпадает с LSR_ID). | esr(config-l2vpn-pw)# neighbor-address <ADDR> | <ADDR> – IP-адрес маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
15 | Включить pseudo-wire. | esr(config-l2vpn-pw)# enable | |
16 | В случае если топология создаваемого VPLS-домена требует установить более одного pseudo-wire, повторить шаги с 10 по 14. | ||
17 | В случае если необходимо изменить параметры по умолчанию для targeted LDP-сессии, обратитесь к разделу Конфигурирование параметров сессии в протоколе targeted-LDP . |
Пример настройки L2VPN VPLS
Задача:
Настроить l2vpn таким образом, чтобы маршрутизаторы CE1, CE2, CE3 имели L2 связность через интерфейсы gi1/0/2.100 и gi1/0/4 (CE2).
Решение:
Предварительно необходимо:
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1, PE2 и PE3 при помощи IGP протокола (OSPF, IS-IS);
На маршрутизаторе PE1 создадим бридж-группу и включим ее:
PE1# configure PE1(config)# bridge 10 PE1(config-bridge)# enable PE1(config-bridge)# exit
Интерфейсе в сторону CE1 включим в созданную бридж-группу:
PE1(config)# interface gigabitethernet 1/0/4.100 PE1(config-subif)# bridge-group 10 PE1(config-subif)# exit
Выставим на интерфейсе в сторону PE2 значение MTU равным 9600, для того чтобы избежать ситуации с превышением MTU после инкапсуляции MPLS-заголовка, а также отключим межсетевой экран:
PE1#(config)# interface gigabitethernet 1/0/1 PE1(config-if-gi)# mtu 9600 PE1(config-if-gi)# ip firewall disable PE1(config-if-gi)# exit
Разрешим прием пакетов с MPLS-заголовком на интерфейсе в сторону MPLS-сети (В данном примере интерфейс в сторону PE2):
PE1(config)# mpls PE1(config-mpls)# forwarding interface gigabitethernet 1/0/1
Настроим протокол LDP и включим обнаружение соседей на интерфейсе в сторону PE2:
PE1(config-mpls)# ldp PE1(config-ldp)# router-id 1.1.1.1 PE1(config-ldp)# address-family ipv4 PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE1(config-ldp-af-ipv4-if)# exit PE1(config-ldp-af-ipv4)# transport-address 1.1.1.1 PE1(config-ldp-af-ipv4)# exit PE1(config-ldp)# enable PE1(config-ldp)# exit
Создадим pw-class на основе которого в дальнейшем будет созданы виртуальные каналы (pw). Так как в данном примере на pw будут применяться параметры по умолчанию достаточно будет указать имя класса:
PE1(config-mpls)# l2vpn PE1(config-l2vpn)# pw-class for_vpls1 PE1(config-l2vpn-pw-class)# exit
Создадим новый l2vpn типа vpls и добавим pw до маршрутизаторов PE2 и PE3, идентификатор pw для удобства возьмем равным VID (в данном случае = 100):
PE1(config-l2vpn)# vpls vpls1 PE1(config-l2vpn-vpls)# bridge-group 10 PE1(config-l2vpn-vpls)# pw 100 2.2.2.2 PE1(config-l2vpn-pw)# pw-class for_vpls1 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-vpls)# pw 100 3.3.3.3 PE1(config-l2vpn-pw)# pw-class for_vpls1 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-vpls)# enable PE1(config-l2vpn-vpls)# end
Применим созданную конфигурацию:
PE1# commit PE1# confirm
Проведем настройку маршрутизатора PE2 и PE3 по аналогии с PE1:
PE2# configure PE2(config)# bridge 10 PE2(config-bridge)# enable PE2(config-bridge)# exit PE2(config)# interface gigabitethernet 1/0/4.100 PE2(config-subif)# bridge-group 10 PE2(config-subif)# exit PE2(config)# interface gigabitethernet 1/0/2 PE2(config-if-gi)# mtu 9600 PE2(config-if-gi)# ip firewall disable PE2(config-if-gi)# exit PE2(config)# mpls PE2(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE2(config-mpls)# forwarding interface gigabitethernet 1/0/2 PE2(config-mpls)# ldp PE2(config-ldp)# enable PE2(config-ldp)# router-id 2.2.2.2 PE2(config-ldp)# address-family ipv4 PE2(config-ldp-af-ipv4)# transport-address 2.2.2.2 PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2 PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# exit PE2(config-ldp)# exit PE2(config-mpls)# l2vpn PE2(config-l2vpn)# pw-class for_vpls1 PE2(config-l2vpn-pw-class)# exit PE2(config-l2vpn)# vpls vpls1 PE2(config-l2vpn-vpls)# enable PE2(config-l2vpn-vpls)# bridge-group 10 PE2(config-l2vpn-vpls)# pw 100 1.1.1.1 PE2(config-l2vpn-pw)# pw-class for_vpls1 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# exit PE2(config-l2vpn-vpls)# pw 100 3.3.3.3 PE2(config-l2vpn-pw)# pw-class for_vpls1 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# end PE2# commit PE2# confirm PE3(config)# bridge 10 PE3(config-bridge)# enable PE3(config-bridge)# exit PE3(config)# interface gigabitethernet 1/0/4.100 PE3(config-subif)# bridge-group 10 PE3(config-subif)# exit PE3(config)# interface gigabitethernet 1/0/1 PE3(config-if-gi)# mtu 9600 PE3(config-if-gi)# ip firewall disable PE3(config-if-gi)# exit PE3(config)# mpls PE3(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE3(config-mpls)# exit PE3(config)# mpls PE3(config-mpls)# ldp
PE3(config-ldp)# enable PE3(config-ldp)# router-id 3.3.3.3 PE3(config-ldp)# address-family ipv4 PE3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE3(config-ldp-af-ipv4-if)# exit PE3(config-ldp-af-ipv4)# transport-address 3.3.3.3 PE3(config-ldp-af-ipv4)# exit PE3(config-ldp)# exit PE3(config-mpls)# l2vpn PE3(config-l2vpn)# pw-class for_vpls PE3(config-l2vpn-pw-class)# exit PE3(config-l2vpn)# vpls vpls1 PE3(config-l2vpn-vpls)# enable PE3(config-l2vpn-vpls)# bridge-group 10 PE3(config-l2vpn-vpls)# pw 100 2.2.2.2 PE3(config-l2vpn-pw)# pw-class for_vpls PE3(config-l2vpn-pw)# enable PE3(config-l2vpn-pw)# exit PE3(config-l2vpn-vpls)# pw 100 1.1.1.1 PE3(config-l2vpn-pw)# pw-class for_vpls PE3(config-l2vpn-pw)# enable PE3(config-l2vpn-pw)# end PE3# commit PE3# confirm
Убедимся в установлении соседства по протоколу LDP, и выведем информацию по статусу виртуального канала (pseudowire) между PE1, PE2 и PE3:
PE3# show mpls ldp neighbor Peer LDP ID: 1.1.1.1; Local LDP ID 3.3.3.3 State: Operational TCP connection: 1.1.1.1:646 - 3.3.3.3:45979 Messages sent/received: 22/22 Uptime: 00:13:16 LDP discovery sources: 3.3.3.3 -> 1.1.1.1 Peer LDP ID: 2.2.2.2; Local LDP ID 3.3.3.3 State: Operational TCP connection: 2.2.2.2:646 - 3.3.3.3:59627 Messages sent/received: 22/22 Uptime: 00:13:20 LDP discovery sources: 3.3.3.3 -> 2.2.2.2 gigabitethernet 1/0/1
PE3# show mpls l2vpn pseudowire Neighbor PW ID Type Status --------------------------------------- ---------- ---------- ------ 1.1.1.1 100 Ethernet Up 2.2.2.2 100 Ethernet Up
Соседство по протоколу LDP установлено, pseudowire перешел в статус 'UP'. Настройка l2vpn завершена.
Настройка сервиса L2VPN Kompella mode
В отличии от Martini mode, где вся работа ложится на LDP, в данном режиме LDP отводится только работа с транспортными метками. Автообнаружение и построение псевдопроводного соединения возложено на протокол BGP.
Алгоритм настройки L2VPN VPLS
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP). | ||
2 | Создать сетевой мост в системе без указания IP-адреса (см. раздел Настройка Bridge). | ||
3 | Создать VPLS-домен в системе и осуществить переход в режим настройки параметров vpls-домена. | esr(config-l2vpn)# vpls <NAME> | <NAME> – имя p2p-сервиса, задается строкой до 31 символа. |
4 | Включить VPLS-туннель. | esr(config-l2vpn-vpls)# enable | |
5 | Добавить бридж-домен. | esr(config-l2vpn-vpls)# bridge-group <ID> | <ID> – идентификатор бридж-домена, задается в виде числа в диапазоне [1..250]. |
6 | Перейти в контекст настройки autodiscovery bgp. | esr(config-l2vpn-vpls)# autodiscovery bgp | |
7 | Указать route distinguisher для данного экземпляра VPLS. | esr(config-bgp)# rd <RD> | <RD> – значение Route distinguisher, задается в одном из следующем виде:
|
8 | Указать route target import для данного экземпляра VPLS. | esr(config-bgp)# route-target import <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
9 | Указать route target export для данного экземпляра VPLS. | esr(config-bgp)# route-target export <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
10 | Указать ve id. | esr(config-bgp)# ve id <ID> | <ID> – идентификатор экземпляра VPLS, задается в виде числа в диапазоне [1..16384]. |
11 | Указать vpn id. | esr (config-bgp)# vpn id <ID> | <ID> – идентификатор VPN, задается в виде числа в диапазоне [1..4294967295]. |
12 | Указать ve range (не обязательно). | esr (config-bgp)# ve range <RANGE> | <RANGE> – диапазон идентификаторов пограничных устройств VPLS [8..100]. |
13 | Указать mtu (не обязательно). | esr (config-bgp)# mtu <VALUE> | <VALUE> – значение MTU [552..10000]. |
14 | Включить игнорирование типа инкапсуляции (не обязательно). | esr(config-bgp)# ignore encapsulation-mismatch | |
15 | Включить игнорирование значений MTU (не обязательно). | esr(config-bgp)# ignore mtu-mismatch | |
16 | В контексте настройки address-family l2vpn vpls протокола BGP включить передачу расширенных атрибутов. | esr(config-bgp-neighbor-af)# send-community extended |
Пример настройки L2VPN VPLS
Задача:
Настроить L2VPN-сервис: все CE устройства должны работать в рамках одного широковещательного домена.
Решение:
Предварительно необходимо:
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1, PE2, PE3 и RR при помощи IGP протокола (OSPF, IS-IS).
Первым делом настроим маршрутизатор RR:
hostname RR system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.30.0.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.31.0.2/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.4/32 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.4 address-family ipv4 interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
Настроим BGP Route Reflector для address family l2vpn:
RR(config)# router bgp 65500 RR(config-bgp)# router-id 10.10.0.4 RR(config-bgp)# neighbor 10.10.0.1 RR(config-bgp-neighbor)# remote-as 65500 RR(config-bgp-neighbor)# route-reflector-client RR(config-bgp-neighbor)# update-source 10.10.0.4 RR(config-bgp-neighbor)# address-family l2vpn vpls RR(config-bgp-neighbor-af)# send-community extended RR(config-bgp-neighbor-af)# enable RR(config-bgp-neighbor-af)# exit RR(config-bgp-neighbor)# enable RR(config-bgp-neighbor)# exit RR(config-bgp)# neighbor 10.10.0.2 RR(config-bgp-neighbor)# remote-as 65500 RR(config-bgp-neighbor)# route-reflector-client RR(config-bgp-neighbor)# update-source 10.10.0.4 RR(config-bgp-neighbor)# address-family l2vpn vpls RR(config-bgp-neighbor-af)# send-community extended RR(config-bgp-neighbor-af)# enable RR(config-bgp-neighbor-af)# exit RR(config-bgp-neighbor)# enable RR(config-bgp-neighbor)# exit RR(config-bgp)# neighbor 10.10.0.3 RR(config-bgp-neighbor)# remote-as 65500 RR(config-bgp-neighbor)# route-reflector-client RR(config-bgp-neighbor)# update-source 10.10.0.4 RR(config-bgp-neighbor)# address-family l2vpn vpls RR(config-bgp-neighbor-af)# send-community extended RR(config-bgp-neighbor-af)# enable RR(config-bgp-neighbor-af)# exit RR(config-bgp-neighbor)# enable RR(config-bgp-neighbor)# exit RR(config-bgp)# enable
Переходим к настройке протокола BGP на PE-маршрутизаторах:
hostname PE1 system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/1 mtu 9500
ip firewall disable ip address 10.20.0.1/30 ip ospf instance 1 ip ospfexit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.30.0.1/30 ip ospf instance 1 ip ospf exitinterface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.22.0.1/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.1/32 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.1 address-family ipv4 interface gigabitethernet 1/0/1 exit interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/1 forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
Настройка протокола BGP:
PE1(config)# router bgp 65500 PE1(config-bgp)# neighbor 10.10.0.4 PE2(config-bgp)# router-id 10.10.0.1 PE1(config-bgp-neighbor)# remote-as 65500 PE1(config-bgp-neighbor)# update-source 10.10.0.1 PE1(config-bgp-neighbor)# address-family l2vpn vpls PE1(config-bgp-neighbor-af)# send-community extended PE1(config-bgp-neighbor-af)# enable PE1(config-bgp-neighbor-af)# exit PE1(config-bgp-neighbor)# enable PE1(config-bgp-neighbor)# exit PE1(config-bgp)# enable PE1(config-bgp)# exit
Проверим, что BGP-сессия успешно установлена с RR:
PE1# show bgp neighbors BGP neighbor is 10.10.0.4 BGP state: Established Neighbor address: 10.10.0.4 Neighbor AS: 65500 Neighbor ID: 10.10.0.4 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.0.1 Weight: 0 Hold timer: 110/180 Keepalive timer: 21/60 Uptime: 7375 s
Настройка BGP на PE2:
hostname PE2 system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit
interface gigabitethernet 1/0/1 mtu 9500 ip firewall disable ip address 10.20.0.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.21.0.1/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.31.0.1/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.2/32 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.2 address-family ipv4 interface gigabitethernet 1/0/1 exit interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/1 forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
PE2(config)# router bgp 65500 PE2(config-bgp)# router-id 10.10.0.2 PE2(config-bgp)# neighbor 10.10.0.4 PE2(config-bgp-neighbor)# remote-as 65500 PE2(config-bgp-neighbor)# update-source 10.10.0.2 PE2(config-bgp-neighbor)# address-family l2vpn vpls PE2(config-bgp-neighbor-af)# send-community extended PE2(config-bgp-neighbor-af)# enable PE2(config-bgp-neighbor-af)# exit PE2(config-bgp-neighbor)# enable PE2(config-bgp-neighbor)# exit PE2(config-bgp)# enable PE2(config-bgp)# exit
Убедимся, что сессия с RR поднялась успешно:
PE2# show bgp neighbors BGP neighbor is 10.10.0.4 BGP state: Established Neighbor address: 10.10.0.4 Neighbor AS: 65500 Neighbor ID: 10.10.0.4 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.0.2 Weight: 0 Hold timer: 113/180 Keepalive timer: 56/60 Uptime: 47 s
Настройка BGP на PE3:
hostname PE3 system jumbo-frames router ospf 1 area 0.0.0.0 enable exit enable exit interface gigabitethernet 1/0/2 mtu 9500 ip firewall disable ip address 10.21.0.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/3 mtu 9500 ip firewall disable ip address 10.22.0.2/30 ip ospf instance 1 ip ospf exit interface loopback 1 ip address 10.10.0.3/24 ip ospf instance 1 ip ospf exit mpls ldp router-id 10.10.0.3 address-family ipv4 interface gigabitethernet 1/0/2 exit interface gigabitethernet 1/0/3 exit exit enable exit forwarding interface gigabitethernet 1/0/2 forwarding interface gigabitethernet 1/0/3 exit
PE3(config)# router bgp 65500 PE3(config-bgp)# router-id 10.10.0.3 PE3(config-bgp)# neighbor 10.10.0.4 PE3(config-bgp-neighbor)# remote-as 65500 PE3(config-bgp-neighbor)# update-source 10.10.0.3 PE3(config-bgp-neighbor)# address-family l2vpn vpls PE3(config-bgp-neighbor-af)# send-community extended PE3(config-bgp-neighbor-af)# enable PE3(config-bgp-neighbor-af)# exit PE3(config-bgp-neighbor)# enable PE3(config-bgp-neighbor)# exit PE3(config-bgp)# enable PE3(config-bgp)# exit
Проверим, что сессия BGP установлена успешно:
PE3# show bgp neighbors BGP neighbor is 10.10.0.4 BGP state: Established Neighbor address: 10.10.0.4 Neighbor AS: 65500 Neighbor ID: 10.10.0.4 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.0.3 Weight: 0 Hold timer: 141/180 Keepalive timer: 27/60 Uptime: 77 s
Следующим этапом на каждом PE-маршрутизаторе создадим бридж-домен, и включим в него интерфейс (Attachment circuit , AC), смотрящий в сторону CE:
PE1:
PE1(config)# bridge 1 PE1(config-bridge)# enable PE1(config-bridge)# exit PE1(config)# interface gigabitethernet 1/0/4 PE1(config-if-gi)# mode switchport PE1(config-if-gi)# bridge-group 1
Проверим, что интерфейс включен в бридж-домен:
PE1# show interfaces bridge Bridges Interfaces ---------- -------------------------------------------------------------- bridge 1 gi1/0/4 PE1# sh interfaces status bridge 1 Interface 'bridge 1' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:ac:4d:15 Last change: 4 minutes and 22 seconds Mode: Routerport
PE2:
PE2(config)# bridge 1 PE2(config-bridge)# enable PE2(config-bridge)# exit PE2(config)# interface gigabitethernet 1/0/4 PE2(config-if-gi)# mode switchport PE2(config-if-gi)# bridge-group 1
PE2# show interfaces bridge 1 Bridges Interfaces ---------- -------------------------------------------------------------- bridge 1 gi1/0/4 PE2# sh interfaces status bridge 1 Interface 'bridge 1' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:ad:f2:45 Last change: 10 seconds Mode: routerport
PE3:
PE3(config)# bridge 1 PE3(config-bridge)# enable PE3(config-bridge)# exit PE3(config)# interface gigabitethernet 1/0/4 PE3(config-if-gi)# mode switchport PE3(config-if-gi)# bridge-group 1
PE3# show interfaces bridge Bridges Interfaces ---------- -------------------------------------------------------------- bridge 1 gi1/0/4 PE3# sh interfaces status bridge Interface Admin Link MTU MAC address Last change Mode state state ------------------ ----- ----- ------ ------------------ ------------------------- ---------- bridge 1 Up Up 1500 a8:f9:4b:ac:df:f0 1 minute and 21 seconds Routerport PE3# sh interfaces status bridge 1 Interface 'bridge 1' status information: Description: -- Operational state: Up Administrative state: Up Supports broadcast: Yes Supports multicast: Yes MTU: 1500 MAC address: a8:f9:4b:ac:df:f0 Last change: 1 minute and 24 seconds Mode: Routerport
Следующим шагом выполним настройку VPLS:
PE1:
Переходим в контекст настройки L2VPN и включим в него заранее созданный бридж-домен.
PE1(config)# mpls PE1(config-mpls)# l2vpn PE1(config-l2vpn)# vpls l2vpn PE1(config-l2vpn-vpls)# bridge-group 1
Укажем RD, RT, VE-ID, VPN ID согласно схеме сети и активируем сервис:
В некоторых случаях можно отказаться от ввода таких параметров как RD и RT: если указать только VPN ID, то они будут сформированы следующим образом: <номер AS> : <vpn-id>.
Например, у нас есть номер автономной системы AS 65550, vpn-id мы указали 10, тогда cгенерируются следующие параметры:
RD - 65550: 10.
RT import/export - 65550:10.
PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# rd 65500:100 PE1(config-bgp)# route-target import 65500:100 PE1(config-bgp)# route-target export 65500:100 PE1(config-bgp)# ve id 1 PE1(config-bgp)# vpn id 1 PE1(config-bgp)# exit PE1(config-l2vpn-vpls)# enable
После активации сервиса проверим, что в таблице l2vpn появилась маршрутная информация, и она анонсируется на RR:
PE1# show bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *> 65500:100 1 1 10 -- -- -- -- PE1# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes Origin codes: i - IGP, e - EGP, ? - incomplete Route Distinguisher VID VBO VBS Next hop Metric LocPrf Path --------------------- ----- ----- ----- --------------- ---------- ---------- ---------------------- 65500:100 1 1 10 10.10.0.1 -- 100 i * Подробный вывод анонсированного маршрута * PE1# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes ve-id 1 block -offset 1 BGP routing table entry for 65500:100 VE ID 1 VE Block Offset 1 VE Block Size: 10 Label Base: 86 Next hop: 10.10.0.1 AS path: -- Origin: IGP Local preference: 100 Extended Community: RT:65500:100 Layer2-info: encaps (VPLS), control flags(0x00), MTU (1500)
Переходим к настройке PE2:
PE2(config-mpls)# l2vpn PE2(config-l2vpn)# vpls l2vpn PE2(config-l2vpn-vpls)# bridge-group 1 PE2(config-l2vpn-vpls)# autodiscovery bgp PE2(config-bgp)# rd 65500:100
PE2(config-bgp)# route-target export 65500:100 PE2(config-bgp)# route-target import 65500:100 PE2(config-bgp)# vpn id 2 PE2(config-bgp)# ve id 2 PE2(config-bgp)# exit PE2(config-l2vpn-vpls)# enable
Проверяем, что PE2 анонсирует маршрутную информацию на RR:
PE2# show bgp l2vpn vpls all neighbor 10.10.0.4 advertise-routes Origin codes: i - IGP, e - EGP, ? - incomplete Route Distinguisher VID VBO VBS Next hop Metric LocPrf Path --------------------- ----- ----- ----- --------------- ---------- ---------- ---------------------- 65500:100 2 1 10 10.10.0.2 -- 100 i
В таблице l2vpn видны как и свои маршруты, так и от PE1:
PE2# show bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *> 65500:100 2 1 10 -- -- -- -- *>i 65500:100 1 1 10 10.10.0.1 -- 100 0 i
Просмотреть вычисленные сервисные метки можно следующим образом:
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. | ||
3 | Создать VRF. | esr(config)# ip vrf <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
4 | Указать route distinguisher для данного VRF. | esr(config-vrf)# rd <RD> | <RD> – значение Route distinguisher, задается в одном из следующем виде:
|
5 | Указать route target import для данного VRF. | esr(config-vrf)# route-target import <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
6 | Указать route target export для данного VRF. | esr(config-vrf)# route-target export <RT> | <RT> – значение route-target, задается в одном из следующем виде:
|
7 | Указать разрешенное количество маршрутов для данного VRF. | esr(config-vrf)# ip protocols <PROTOCOLS> max-routes <VALUE> | <PROTOCOL> – вид протокола, принимает значения: rip (только в глобальном режиме), ospf, isis, bgp; <VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:
|
8 | В рамках настройки address-family VPNv4 протокола BGP включить передачу расширенный атрибутов. | esr(config-bgp-neighbor-af)# send-community extended |
Пример настройки
Задача:
Настроить L3VPN на базе технологии MPLS между ESR1 и ESR3. Конечным результатом настройки является появление связности между узлами, подключенными к VRF на различных маршрутизаторах сети (то есть объединение VRF на разных маршрутизаторах через MPLS-транспорт). При этом должна быть обеспечена передача сервисных MPLS-меток для сервиса L3VPN посредством MP-BGP и передача транспортных меток для достижения nexthop-адресов полученных BGP-маршрутов.
Решение:
Настройка адресации и включение IGP на P/PE-маршрутизаторах:
ESR1(config)# router ospf log-adjacency-changes ESR1(config)# router ospf 1 ESR1(config-ospf)# router-id 1.1.1.1 ESR1(config-ospf)# area 0.0.0.0 ESR1(config-ospf-area)# enable ESR1(config-ospf-area)# exit ESR1(config-ospf)# enable ESR1(config-ospf)# exit ESR1(config)# ESR1(config)# interface loopback 1 ESR1(config-loopback)# ip address 1.1.1.1/32 ESR1(config-loopback)# ip ospf instance 1 ESR1(config-loopback)# ip ospf ESR1(config-loopback)# exit ESR1(config)# ESR1(config)# interface gigabitethernet 1/0/1.10 ESR1(config-subif)# ip firewall disable ESR1(config-subif)# ip address 10.10.10.1/30 ESR1(config-subif)# ip ospf instance 1 ESR1(config-subif)# ip ospf ESR1(config-subif)# exit ESR1(config)# ESR1(config)# interface gigabitethernet 1/0/1.40 ESR1(config-subif)# ip firewall disable ESR1(config-subif)# ip address 40.40.40.1/30 ESR1(config-subif)# ip ospf instance 1 ESR1(config-subif)# ip ospf ESR1(config-subif)# exit ESR1(config)# ESR1(config)# system jumbo-frames ESR1(config)# do commit ESR1(config)# do confirm
ESR2(config)# router ospf log-adjacency-changes ESR2(config)# router ospf 1 ESR2(config-ospf)# router-id 2.2.2.2 ESR2(config-ospf)# area 0.0.0.0 ESR2(config-ospf-area)# enable ESR2(config-ospf-area)# exit ESR2(config-ospf)# enable ESR2(config-ospf)# exit ESR2(config)# ESR2(config)# interface loopback 1 ESR2(config-loopback)# ip address 2.2.2.2/32 ESR2(config-loopback)# ip ospf instance 1 ESR2(config-loopback)# ip ospf ESR2(config-loopback)# exit ESR2(config)# ESR2(config)# interface gigabitethernet 1/0/1.10 ESR2(config-subif)# ip firewall disable ESR2(config-subif)# ip address 10.10.10.2/30 ESR2(config-subif)# ip ospf instance 1 ESR2(config-subif)# ip ospf ESR2(config-subif)# exit ESR2(config)# ESR2(config)# interface gigabitethernet 1/0/1.20 ESR2(config-subif)# ip firewall disable ESR2(config-subif)# ip address 20.20.20.2/30 ESR2(config-subif)# ip ospf instance 1 ESR2(config-subif)# ip ospf ESR2(config-subif)# exit ESR2(config)# ESR2(config)# system jumbo-frames ESR2(config)# do commit ESR2(config)# do confirm
ESR3(config)# router ospf log-adjacency-changes ESR3(config)# router ospf 1 ESR3(config-ospf)# router-id 3.3.3.3 ESR3(config-ospf)# area 0.0.0.0 ESR3(config-ospf-area)# enable ESR3(config-ospf-area)# exit ESR3(config-ospf)# enable ESR3(config-ospf)# exit ESR3(config)# ESR3(config)# interface loopback 1 ESR3(config-loopback)# ip address 3.3.3.3/32 ESR3(config-loopback)# ip ospf instance 1 ESR3(config-loopback)# ip ospf ESR3(config-loopback)# exit ESR3(config)# ESR3(config)# interface gigabitethernet 1/0/1.20 ESR3(config-subif)# ip firewall disable ESR3(config-subif)# ip address 20.20.20.1/30 ESR3(config-subif)# ip ospf instance 1 ESR3(config-subif)# ip ospf ESR3(config-subif)# exit ESR3(config)# ESR3(config)# interface gigabitethernet 1/0/1.30 ESR3(config-subif)# ip firewall disable ESR3(config-subif)# ip address 30.30.30.1/30 ESR3(config-subif)# ip ospf instance 1 ESR3(config-subif)# ip ospf ESR3(config-subif)# exit ESR3(config)# ESR3(config)# system jumbo-frames ESR3(config)# do commit ESR3(config)# do confirm
ESR4(config)# router ospf log-adjacency-changes ESR4(config)# router ospf 1 ESR4(config-ospf)# router-id 4.4.4.4 ESR4(config-ospf)# area 0.0.0.0 ESR4(config-ospf-area)# enable ESR4(config-ospf-area)# exit ESR4(config-ospf)# enable ESR4(config-ospf)# exit ESR4(config)# ESR4(config)# interface loopback 1 ESR4(config-loopback)# ip address 4.4.4.4/32 ESR4(config-loopback)# ip ospf instance 1 ESR4(config-loopback)# ip ospf ESR4(config-loopback)# exit ESR4(config)# ESR4(config)# interface gigabitethernet 1/0/1.40 ESR4(config-subif)# ip firewall disable ESR4(config-subif)# ip address 40.40.40.2/30 ESR4(config-subif)# ip ospf instance 1 ESR4(config-subif)# ip ospf ESR4(config-subif)# exit ESR4(config)# ESR4(config)# interface gigabitethernet 1/0/1.30 ESR4(config-subif)# ip firewall disable ESR4(config-subif)# ip address 30.30.30.2/30 ESR4(config-subif)# ip ospf instance 1 ESR4(config-subif)# ip ospf ESR4(config-subif)# exit ESR4(config)# ESR4(config)# system jumbo-frames ESR4(config)# do commit ESR4(config)# do confirm
Необходимо убедиться, что протокол OSPF запущен на каждом маршрутизаторе:
ESR1# show ip ospf neighbors Router ID Pri State DTime Interface Router IP --------- --- ----- ----- ------------- --------- 2.2.2.2 128 Full/BDR 00:39 gi1/0/1.10 10.10.10.2 4.4.4.4 128 Full/BDR 00:32 gi1/0/1.40 40.40.40.2 ESR1# show ip ospf O 40.40.40.0/30 [150/10] dev gi1/0/1.40 [ospf1 1970-01-08] (1.1.1.1) O * 30.30.30.0/30 [150/20] via 40.40.40.2 on gi1/0/1.40 [ospf1 1970-01-08] (3.3.3.3) O 1.1.1.1/32 [150/0] dev lo1 [ospf1 1970-01-08] (1.1.1.1) O * 4.4.4.4/32 [150/10] via 40.40.40.2 on gi1/0/1.40 [ospf1 1970-01-08] (4.4.4.4) O * 20.20.20.0/30 [150/20] via 10.10.10.2 on gi1/0/1.10 [ospf1 22:05:45] (3.3.3.3) O 10.10.10.0/30 [150/10] dev gi1/0/1.10 [ospf1 22:05:33] (1.1.1.1) O * 3.3.3.3/32 [150/20] multipath [ospf1 22:05:45] (3.3.3.3) via 40.40.40.2 on gi1/0/1.40 weight 1 O * 2.2.2.2/32 [150/10] via 10.10.10.2 on gi1/0/1.10 [ospf1 22:05:45] (2.2.2.2)
Настройка LDP на P/PE-маршрутизаторах:
ESR1# config ESR1(config)# mpls ESR1(config-mpls)# ldp ESR1(config-ldp)# address-family ipv4 ESR1(config-ldp-af-ipv4)# transport-address 1.1.1.1 ESR1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10 ESR1(config-ldp-af-ipv4-if)# exit ESR1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40 ESR1(config-ldp-af-ipv4-if)# exit ESR1(config-ldp-af-ipv4)# exit ESR1(config-ldp)# enable ESR1(config-ldp)# exit ESR1(config-mpls)# forwarding interface gigabitethernet 1/0/1.10 ESR1(config-mpls)# forwarding interface gigabitethernet 1/0/1.40 ESR1(config-mpls)# exit ESR1(config)# do commit ESR1(config)# do confirm
ESR2# config ESR2(config)# mpls ESR2(config-mpls)# ldp ESR2(config-ldp)# address-family ipv4 ESR2(config-ldp-af-ipv4)# transport-address 2.2.2.2 ESR2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.10 ESR2(config-ldp-af-ipv4-if)# exit ESR2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.20 ESR2(config-ldp-af-ipv4-if)# exit ESR2(config-ldp-af-ipv4)# exit ESR2(config-ldp)# enable ESR2(config-ldp)# exit ESR2(config-mpls)# forwarding interface gigabitethernet 1/0/1.10 ESR2(config-mpls)# forwarding interface gigabitethernet 1/0/1.20 ESR2(config-mpls)# exit ESR2(config)# do commit ESR2(config)# do confirm
ESR3# config ESR3(config)# mpls ESR3(config-mpls)# ldp ESR3(config-ldp)# address-family ipv4 ESR3(config-ldp-af-ipv4)# transport-address 3.3.3.3 ESR3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.20 ESR3(config-ldp-af-ipv4-if)# exit ESR3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30 ESR3(config-ldp-af-ipv4-if)# exit ESR3(config-ldp-af-ipv4)# exit ESR3(config-ldp)# enable ESR3(config-ldp)# exit ESR3(config-mpls)# forwarding interface gigabitethernet 1/0/1.20 ESR3(config-mpls)# forwarding interface gigabitethernet 1/0/1.30 ESR3(config-mpls)# exit ESR3(config)# do commit ESR3(config)# do confirm
ESR4# config ESR4(config)# mpls ESR4(config-mpls)# ldp ESR4(config-ldp)# address-family ipv4 ESR4(config-ldp-af-ipv4)# transport-address 4.4.4.4 ESR4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.30 ESR4(config-ldp-af-ipv4-if)# exit ESR4(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1.40 ESR4(config-ldp-af-ipv4-if)# exit ESR4(config-ldp-af-ipv4)# exit ESR4(config-ldp)# enable ESR4(config-ldp)# exit ESR4(config-mpls)# forwarding interface gigabitethernet 1/0/1.30 ESR4(config-mpls)# forwarding interface gigabitethernet 1/0/1.40 ESR4(config-mpls)# exit ESR4(config)# do commit ESR4(config)# do confirm
Для проверки сходимости LDP можно воспользоваться одной из следующих команд:
ESR1# show mpls ldp neighbor Peer LDP ID: 2.2.2.2; Local LDP ID 1.1.1.1 State: Operational TCP connection: 2.2.2.2:33933 - 1.1.1.1:646 Messages sent/received: 1059/1070 Uptime: 17:32:07 LDP discovery sources: gigabitethernet 1/0/1.10 Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1 State: Operational TCP connection: 4.4.4.4:40894 - 1.1.1.1:646 Messages sent/received: 1376/1386 Uptime: 22:38:38 LDP discovery sources: gigabitethernet 1/0/1.40
Настройка MP-BGP
Создадим VRF на ESR1 и ESR3 соответственно. Укажем RD, rt-export/import в соответствии с нашей схемой, настроим интерфейс для взаимодействия с CE (CE-SiteA и CE-SiteB). Дополнительно создадим route-map для разрешения анонсирования маршрутов по протоколу BGP:
Без указание атрибутов RD и RT маршрутная информация не попадет в таблицу VPNv4.
ESR1(config)# ip vrf Customer1 ESR1(config-vrf)# ip protocols bgp max-routes 1000 ESR1(config-vrf)# rd 65500:100 ESR1(config-vrf)# route-target import 65500:100 ESR1(config-vrf)# route-target export 65500:100 ESR1(config-vrf)# exit ESR1(config)# interface gigabitethernet 1/0/2 ESR1(config-if-gi)# ip vrf forwarding Customer1 ESR1(config-if-gi)# description "Customer1" ESR1(config-if-gi)# ip firewall disable ESR1(config-if-gi)# ip address 192.168.32.1/30 ESR1(config-if-gi)# exit ESR1(config)# route-map OUTPUT ESR1(config-route-map)# rule 1 ESR1(config-route-map-rule)# action permit ESR1(config-route-map-rule)# exit ESR1(config-route-map)# exit ESR1(config)# do commit ESR1(config)# do confirm
ESR3(config)# ip vrf Customer1 ESR3(config-vrf)# ip protocols bgp max-routes 1000 ESR3(config-vrf)# rd 65500:100 ESR3(config-vrf)# route-target export 65500:100 ESR3(config-vrf)# route-target import 65500:100 ESR3(config-vrf)# exit ESR3(config)# interface gigabitethernet 1/0/2 ESR3(config-if-gi)# ip vrf forwarding Customer1 ESR3(config-if-gi)# description "Customer1" ESR3(config-if-gi)# ip firewall disable ESR3(config-if-gi)# ip address 192.168.32.5/30 ESR3(config-if-gi)# exit ESR3(config)# route-map OUTPUT ESR3(config-route-map)# rule 1 ESR3(config-route-map-rule)# action permit ESR3(config-route-map-rule)# exit ESR3(config-route-map)# exit ESR3(config)# do commit ESR3(config)# do confirm
Настроим iBGP между ESR1 и ESR3. Включим отправку extended community на обоих устройствах:
ESR1(config)# router bgp log-neighbor-changes ESR1(config)# router bgp 65500 ESR1(config-bgp)# router-id 1.1.1.1 ESR1(config-bgp)# enable ESR1(config-bgp)# neighbor 3.3.3.3 ESR1(config-bgp-neighbor)# remote-as 65500 ESR1(config-bgp-neighbor)# update-source 1.1.1.1 ESR1(config-bgp-neighbor)# enable ESR1(config-bgp-neighbor)# address-family vpnv4 unicast ESR1(config-bgp-neighbor-af)# send-community extended ESR1(config-bgp-neighbor-af)# enable ESR1(config-bgp-neighbor-af)# exit ESR1(config-bgp-neighbor)# exit ESR1(config-bgp)# exit ESR1(config)# do commit ESR1(config)# do confirm
ESR3(config)# router bgp log-neighbor-changes ESR3(config)# router bgp 65500 ESR3(config-bgp)# router-id 3.3.3.3 ESR3(config-bgp)# enable ESR3(config-bgp)# neighbor 1.1.1.1 ESR3(config-bgp-neighbor)# remote-as 65500 ESR3(config-bgp-neighbor)# update-source 3.3.3.3 ESR3(config-bgp-neighbor)# enable ESR3(config-bgp-neighbor)# address-family vpnv4 unicast ESR3(config-bgp-neighbor-af)# send-community extended ESR3(config-bgp-neighbor-af)# enable ESR3(config-bgp-neighbor-af)# exit ESR3(config-bgp-neighbor)# exit ESR3(config-bgp)# exit ESR3(config)# do commit ESR3(config)# do confirm
Необходимо убедиться, что BGP-сессия успешно установлена:
ESR1# show bgp neighbors BGP neighbor is 3.3.3.3 BGP state: Established Neighbor address: 3.3.3.3 Neighbor AS: 65500 Neighbor ID: 3.3.3.3 Neighbor caps: refresh enhanced-refresh restart-aware AS4 Session: internal multihop AS4 Source address: 1.1.1.1 Weight: 0 Hold timer: 126/180 Keepalive timer: 40/60 Address family ipv4 unicast: Default originate: No Default information originate: No Uptime: 88495 s
Настройка маршрутизации PE-CE
Согласно нашей топологии, Customer1 анонсирует по BGP (AS65505) подсеть 10.100.0.0/24. Необходимо настроить соответствующие интерфейсы, eBGP между ESR1 и CE_SiteA. Также необходимо разрешить анонсирование маршрутов в сторону PE.
По умолчанию: для eBGP анонсирование маршрутов запрещено, необходимо настроить разрешающее правило. Для iBGP анонсирование маршрутов разрешено.
Необходимая конфигурация на маршрутизаторе CE-SiteA:
CE-SiteA(config)# interface gigabitethernet 1/0/2 CE-SiteA(config-if-gi)# ip firewall disable CE-SiteA(config-if-gi)# ip address 192.168.32.2/30 CE-SiteA(config-if-gi)# exit CE-SiteA(config)# interface loopback 1 CE-SiteA(config-loopback)# ip address 10.100.0.1/24 CE-SiteA(config-loopback)# exit CE-SiteA(config)# route-map OUTPUT CE-SiteA(config-route-map)# rule 1 CE-SiteA(config-route-map-rule)# match ip address 10.100.0.0/24 CE-SiteA(config-route-map-rule)# action permit CE-SiteA(config-route-map-rule)# exit CE-SiteA(config-route-map)# exit CE-SiteA(config)# router bgp log-neighbor-changes CE-SiteA(config)# router bgp 65505 CE-SiteA(config-bgp)# router-id 192.168.32.1 CE-SiteA(config-bgp)# neighbor 192.168.32.1 CE-SiteA(config-bgp-neighbor)# remote-as 65500 CE-SiteA(config-bgp-neighbor)# allow-local-as 1 CE-SiteA(config-bgp-neighbor)# update-source 192.168.32.2 CE-SiteA(config-bgp-neighbor)# address-family ipv4 unicast CE-SiteA(config-bgp-neighbor-af)# route-map OUTPUT out CE-SiteA(config-bgp-neighbor-af)# enable CE-SiteA(config-bgp-neighbor-af)# exit CE-SiteA(config-bgp-neighbor)# enable CE-SiteA(config-bgp-neighbor)# exit CE-SiteA(config-bgp)# address-family ipv4 unicast CE-SiteA(config-bgp-af)# network 10.100.0.0/24 CE-SiteA(config-bgp-af)# exit CE-SiteA(config-bgp)# enable CE-SiteA(config-bgp)# exit CE-SiteA(config)# do commit CE-SiteA(config)# do confirm
Переходим к настройке eBGP на маршрутизаторе ESR1.
Создадим eBGP сессию с CE_SiteA и разрешим передачу маршрутов BGP пиру:
ESR1(config)# router bgp 65500 ESR1(config-bgp)# vrf Customer1 ESR1(config-bgp-vrf)# router-id 192.168.32.1 ESR1(config-bgp-vrf)# neighbor 192.168.32.2 ESR1(config-bgp-vrf-neighbor)# remote-as 65505 ESR1(config-bgp-vrf-neighbor)# update-source 192.168.32.1 ESR1(config-bgp-vrf-neighbor)# address-family ipv4 unicast ESR1(config-bgp-neighbor-af-vrf)# route-map OUTPUT out ESR1(config-bgp-neighbor-af-vrf)# enable ESR1(config-bgp-neighbor-af-vrf)# exit ESR1(config-bgp-vrf-neighbor)# enable ESR1(config-bgp-vrf-neighbor)# exit ESR1(config-bgp-vrf)# address-family ipv4 unicast ESR1(config-bgp-vrf-af)# redistribute connected ESR1(config-bgp-vrf-af)# redistribute bgp 65500 ESR1(config-bgp-vrf-af)# exit ESR1(config-bgp-vrf)# enable ESR1(config-bgp-vrf)# exit ESR1(config-bgp)# exit ESR1(config)# do commit ESR1(config)# do confirm
При передаче маршрутов из VRF в таблицу VPNv4 ТОЛЬКО connected и/или static сетей указывать команду enable не нужно! Включение необходимо только при наличии BGP пиров в VRF.
Пример конфигурации передачи в VPNv4 таблицу connected и static сетей:
ESR1(config)# router bgp 65500 ESR1(config-bgp)# router-id 1.1.1.1 ESR1(config-bgp)# neighbor 3.3.3.3 ESR1(config-bgp-neighbor)# remote-as 65500 ESR1(config-bgp-neighbor)# update-source 1.1.1.1 ESR1(config-bgp-neighbor)# enable ESR1(config-bgp-neighbor)# address-family vpnv4 unicast ESR1(config-bgp-neighbor-af)# send-community extended ESR1(config-bgp-neighbor-af)# enable ESR1(config-bgp-neighbor-af)# exit ESR1(config-bgp-neighbor)# exit ESR1(config-bgp)# enable EESR1(config-bgp)# vrf Customer1 ESR1(config-bgp-vrf)# address-family ipv4 unicast ESR1(config-bgp-vrf-af)# redistribute connected ESR1(config-bgp-vrf-af)# redistribute static ESR1(config-bgp-vrf-af)# exit ESR1(config-bgp-vrf)# exit ESR1(config-bgp)# exit ESR1(config)# do commit ESR1(config)# do confirm
Для проверки принятых и анонсированных маршрутов можно воспользоваться следующими командами:
ESR1# show bgp vpnv4 unicast vrf Customer1 neighbors 192.168.32.2 advertise-routes Status codes: u - unicast, b - broadcast, m - multicast, a - anycast * - valid, > - best Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> u 10.100.1.0/24 192.168.32.1 100 65500 i *> u 192.168.32.4/30 192.168.32.1 100 65500 i
Вывод анонсируемых маршрутов для определенного пира. Маршрутная информация отображается после применения фильтрации.
ESR1# show bgp vpnv4 unicast vrf Customer1 neighbors 192.168.32.2 routes Status codes: u - unicast, b - broadcast, m - multicast, a - anycast * - valid, > - best Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> u 10.100.0.0/24 192.168.32.2 100 0 65505
Вывод принятой маршрутной информации от определенного пира. Маршрутная информация отображается после применения фильтрации.
CE-SiteB
Необходимо проделать схожие операции теперь уже между маршрутизаторами ESR3 и CE_SiteB.
Произвести настройку соответствующих интерфейсов и создать eBGP-сессию между ESR3 и CE_SiteB:
CE-SiteB(config)# interface gigabitethernet 1/0/2 CE-SiteB(config-if-gi)# ip firewall disable CE-SiteB(config-if-gi)# ip address 192.168.32.6/30 CE-SiteB(config-if-gi)# exit CE-SiteB(config)# CE-SiteB(config)# interface loopback 1 CE-SiteB(config-loopback)# ip address 10.100.1.1/24 CE-SiteB(config-loopback)# exit CE-SiteB(config)# CE-SiteB(config)# route-map OUTPUT CE-SiteB(config-route-map)# rule 1 CE-SiteB(config-route-map-rule)# match ip address 10.100.1.0/24 CE-SiteB(config-route-map-rule)# action permit CE-SiteB(config-route-map-rule)# exit CE-SiteB(config-route-map)# exit CE-SiteB(config)# CE-SiteB(config)# router bgp 65505 CE-SiteB(config-bgp)# router-id 192.168.32.6 CE-SiteB(config-bgp)# neighbor 192.168.32.5 CE-SiteB(config-bgp-neighbor)# remote-as 65500 CE-SiteB(config-bgp-neighbor)# allow-local-as 1 CE-SiteB(config-bgp-neighbor)# update-source 192.168.32.6 CE-SiteB(config-bgp-neighbor)# address-family ipv4 unicast CE-SiteB(config-bgp-neighbor-af)# route-map OUTPUT out CE-SiteB(config-bgp-neighbor-af)# enable CE-SiteB(config-bgp-neighbor-af)# exit CE-SiteB(config-bgp-neighbor)# enable CE-SiteB(config-bgp-neighbor)# exit CE-SiteB(config-bgp)# address-family ipv4 unicast CE-SiteB(config-bgp-af)# network 10.100.1.0/24 CE-SiteB(config-bgp-af)# exit CE-SiteB(config-bgp)# enable CE-SiteB(config-bgp)# exit CE-SiteB(config)# do commit CE-SiteB(config)# do confirm
Со стороны ESR3 также настроить eBGP и разрешить передачу маршрутной информации из VRF в таблицу VPNv4:
router bgp 65500 ESR3(config)# router bgp 65500 ESR3(config-bgp)# vrf Customer1 ESR3(config-bgp-vrf)# router-id 192.168.32.5 ESR3(config-bgp-vrf)# neighbor 192.168.32.6 ESR3(config-bgp-vrf-neighbor)# remote-as 65505 ESR3(config-bgp-vrf-neighbor)# update-source 192.168.32.5 ESR3(config-bgp-vrf-neighbor)# address-family ipv4 unicast ESR3(config-bgp-neighbor-af-vrf)# route-map OUTPUT out ESR3(config-bgp-neighbor-af-vrf)# enable ESR3(config-bgp-neighbor-af-vrf)# exit ESR3(config-bgp-vrf-neighbor)# enable ESR3(config-bgp-vrf-neighbor)# exit ESR3(config-bgp-vrf)# address-family ipv4 unicast ESR3(config-bgp-vrf-af)# redistribute connected ESR3(config-bgp-vrf-af)# redistribute bgp 65500 ESR3(config-bgp-vrf-af)# exit ESR3(config-bgp-vrf)# enable ESR3(config-bgp-vrf)# exit ESR3(config-bgp)# exit ESR3(config)# do commit ESR3(config)# do confirm
Для просмотра VPNv4-таблицы можно воспользоваться одной из следующих команд:
ESR1# show bgp vpnv4 unicast all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path ----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ---------------- *> 65500:100 10.100.0.0/24 -- -- 23 -- -- ? *>i 65500:100 192.168.32.4/30 3.3.3.3 -- 84 100 0 i *>i 65500:100 10.100.1.0/24 3.3.3.3 -- 84 100 0 i
Выводит все принятые VPNv4 маршруты после применения фильтрации.
Балансировка трафика MPLS
Маршрутизаторы ESR имеют многоядерную архитектуру. Одним из первых звеньев обработки поступающего трафика является load balancer daemon(lbd), который выполняет две основных функции:
1) Равномерно распределяет нагрузку между всеми CPU маршрутизатора.
2) Выявляет аномальные ситуации с высокой нагрузкой на отдельные CPU, и перераспределяет обработку с этих CPU на менее загруженные.
По умолчанию, lbd использует только MPLS-метки для вычисления хэша и дальнейшего распределения нагрузки на различные CPU. Данное поведение не всегда дает преимущество, особенное когда существует "большие" однородные потоки MPLS трафика. Для добавление энтропии в хэш можно включить дополнительный функционал:
cpu load-balance mpls passenger ip
Включает возможность "заглядывать" дальше MPLS-заголовка для поиска IP-заголовка, и добавления ip-src и ip-dst в расчет хэша.
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.
Во избежание падения LDP-сессии при большой нагрузке на СPU маршрутизатора на моделях: ESR-200, ESR-1000, ESR-1200, ESR-1500, ESR-1700 после включения функционала все пакеты протокола LDP будут обрабатываться управляющим CPU (Management CPU), которые не участвуют в обработке трафика. Для ESR-200, ESR-1000, ESR-1200, ESR-1500 – это СPU 0, ESR-1700 – CPU 0-1.
Пример настройки
Задача:
Включить балансировку L2VPN-трафика без использования функционала Control Word.
Решение:
ESR(config)# system cpu load-balance mpls passenger ip ESR(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
Работа с бридж-доменом в рамках MPLS
Для организации L2VPN-сервиса необходимо настроить на устройстве бридж-домен, создать требуемые AC, PW (LDP-signaling) и связать все данные элементы с бридж-доменом.
Для point-to-point бридж-домен создается автоматически.
Между элементами бридж-домена осуществляется коммутация трафика на основании перечисленных правил :
- Для каждого бридж-домена автоматически создается таблица 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 (Рисунок 2). Со стороны PE1 в бридж-домен включен cабинтерфейс gigabitethernet 1/0/4.100, соответственно vlan-тег (vlan id 100) с входящего трафика будет удален перед помещением в Pseudowire 10 (соответственно, восстановлен при трафике в сторону АС). С другой стороны, AC на PE2, является интерфейсом, а значит, трафик будет проходить без модификаций в обоих направлениях.
2. Vlan (Tagged) mode:
- Если AC является сабинтерфейсом, то vlan-тег перед помещением в бридж сохраняется. При выходе из бриджа vla-тег может быть сохранен или перезаписан в зависимости от конфигурации.
- Если АС является интерфейсом, то модификация трафика не происходит в обоих направлениях.
Назначение 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), то пакет будет отброшен.