Конфигурирование протокола LDP
LDP - протокол распределения меток. Для нахождения соседей используется рассылка hello-сообщений на мультикастный адрес 224.0.0.2. При обмене hello-сообщениями, маршрутизаторы узнают транспортные адреса друг друга. Маршрутизатор с большим адресом инициализирует TCP-сессию. После проверки параметров, LDP-сессия считается установленной.
В маршрутизаторах ESR поддержаны следующие режимы работы LDP:
- Режим обмена информации о меткаx - Downstream Unsolicited;
- Механизм контроля за распространением меток - Independent Label Distribution Control;
- Режим сохранения меток - Liberal Label Retention;
На интерфейсах где включены протокол LDP и MPLS-коммутация, firewall должен быть отключен.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | В контексте настройки параметров MPLS указать интерфейсы, участвующие в процессе MPLS-коммутации | esr(config-mpls)# forwarding interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
2 | Задать router-id для LDP (не обязательно, если указан transport-address). | esr(config-ldp)# router-id <ID> | <ID> -идентификатор маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
3 | В контексте настройки address family ipv4 указать transport-address (не обязательно , если указан router-id). | esr(config-ldp-af-ipv4)# transport-address <ADDR> | <ADDR> - задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
3 | В контексте настройки address family ipv4 указать интерфейсы для включение на них процесса LDP. | esr(config-ldp-af-ipv4)# interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
4 | Включить процесс LDP. | esr(config-ldp)# enable | |
5 | Включить функционал explicit-null (не обязательно). | esr(config-ldp)# egress-label-type explicit-null | |
6 | В режиме конфигурирование соседа LDP задать пароль командой password (не обязательно). | esr(config-ldp-neig)# password {<TEXT> | ENCRYPTED-TEXT>} | <CLEAR-TEXT> – пароль, задаётся строкой, длинной [8..16] символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером [8..16] байт ([16..32] символа) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
В рамках настройки протокола LDP также доступен следующий функционал:
|
Пример настройки
Задача:
Настроить взаимодействие по протоколу LDP между пирами.
Решение:
Предварительная конфигурация ESR:
Предварительно на интерфейсы, должны быть назначены IP-адреса, отключен межсетевой экран и настроен один из протоков внутренней маршрутизации
Предварительная конфигурация ESR:
hostname ESR
router ospf 1
area 0.0.0.0
enable
exit
enable
exit
interface gigabitethernet 1/0/1
ip firewall disable
ip address 10.10.10.1/30
ip ospf instance 1
ip ospf
exit
interface loopback 1
ip address 1.1.1.1/32
ip ospf instance 1
ip ospf
exit
Предварительная конфигурация ESR1:
hostname ESR1
router ospf 1
area 0.0.0.0
enable
exit
enable
exit
interface gigabitethernet 1/0/1
ip firewall disable
ip address 10.10.10.2/30
ip ospf instance 1
ip ospf
exit
interface loopback 1
ip address 4.4.4.4/32
ip ospf instance 1
ip ospf
exit
Настройка на ESR:
ESR# 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] |
3 | В режиме конфигурации address familly протокола LDP установить Hello interval на нужном интерфейсе | esr(config-ldp-af-ipv4-if)# discovery hello interval <TIME> | <TIME> - Время в секундах в интервале [3..65535] |
Алгоритм настройки параметра Keepalive holdtime в глобальной конфигурации LDP
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации LDP задать параметр Keepalive | esr(config-ldp)# keepalive <TIME> | <TIME> - Время в секундах в интервале [3..65535] |
Алгоритм настройки параметра Keepalive holdtime для определенного соседа
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации соседа задать параметр Keepalive holdtime | esr(config-ldp-neig)# keepalive <TIME> | <TIME> - Время в секундах в интервале [3..65535] |
Пример настройки
Задача:
Переопределить параметры 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] |
3 | В режиме конфигурации протокола LDP задать Hello interval | esr(config-ldp)# discovery targeted- hello interval <TIME> | <TIME> - Время в секундах в интервале [1..65535] |
4 | В режиме конфигурации протокола LDP задать Keepalive holdtime | esr(config-ldp)# keepalive <TIME> | <TIME> - Время в секундах в интервале [3..65535] |
Алгоритм настройки параметров 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] |
3 | В режиме конфигурации LDP-соседа задать Hello interval | esr(config-ldp-neig)# discovery targeted- hello interval <TIME> | <TIME> - Время в секундах в интервале [1..65535] |
4 | В режиме конфигурации LDP-соседа задать Keepalive holdtime | esr(config-ldp-neig)# keepalive <TIME> | <TIME> - Время в секундах в интервале [3..65535] |
Пример настройки
Задача:
Переопределить параметры 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 необходимо описывать префиксы.
Данный функционал поддержан для протокола IPv4.
Пример настройки
Задача:
Назначить mpls метки только FEC 10.10.0.0/24
Решение:
На ESR_A и ESR_B создадим object-group ADV_LABELS типа network и добавим в нее подсеть 10.10.0.0/24. На ESR_B также дополнительно добавим 192.168.2.0/24.
esr(config)# object-group network ADV_LABELS esr(config-object-group-network)# ip prefix 10.10.0.0/24
esr(config)# object-group network ADV_LABELS esr(config-object-group-network)# ip prefix 10.10.0.0/24 esr(config-object-group-network)# ip prefix 192.168.2.0/24
Применим созданную object-group на обоих маршрутизаторах.
esr(config)# mpls esr(config-ldp)# ldp esr(config-ldp)# advertise-labels ADV_LABELS
Проверка:
На ESR_B убедимся, что метка назначена для адресов из подсети 10.10.0.0/24
И не назначена для 192.168.2.0/24
Конфигурирование L2VPN Martini
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. |
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] |
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)# transport-mode | <ethernet> - Режим при котором при входе в pseudo-wire из заголовка удаляется 802.1Q тэг; |
10 | Создать pseudo-wire и осуществить переход в режим настройки его параметров | esr(config-l2vpn-vpls)# pw <PW_ID> <LSR_ID> | <PW_ID> - идентификатор psewdowire, задается в виде числа в диапазоне [1..4294967295 ] <LSR_ID> - идентификатор LSR до которого строится pseudo-wire, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255] |
11 | Добавить описание для pseudo-wire (не обязательно). | esr(config-l2vpn-pw)# description <LINE> | <LINE> - Описание. Задается в виде строки длинной [1..255] символов |
12 | Задать pw-class для pseudo-wire | esr(config-l2vpn-pw)# pw-class <WORD> | <WORD> - Имя pw-class длинной [1..31] символов. |
13 | Задать адрес LSR до которого устанавливается pseudo-wire(Не обязательно если neighbor address совпадает с LSR_ID). | esr(config-l2vpn-pw)# neighbor-address <ADDR> | <ADDR> – IP-адрес маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
14 | Включить pseudo-wire. | esr(config-l2vpn-pw)# enable | |
15 | В случае если топология создаваемого VPLS домена требует установить более одного pseudo-wire, повторить шаги с 10 по 14. | ||
16 | В случае если необходимо изменить параметры по умолчанию для targeted LDP сессии, обратитесь к разделу Конфигурирование параметров сессии в протоколе targeted-LDP. |
Пример настройки L2VPN VPLS
Задача:
Настроить l2vpn таким образом чтобы маршрутизаторы CE1,CE2,CE3 имели L2 связность через интерфейсы gi1/0/2.100
Решение:
Предварительно необходимо:
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке;
- Организовать обмен маршрутами между PE1, PE2 и PE3 при помощи IGP протокола (OSPF, IS-IS, RIP);
На маршрутизаторе PE1 создадим бридж-группу и включим ее:
PE1# configure PE1(config)# bridge 10 PE1(config-bridge)# enable PE1(config-bridge)# exit
Интерфейсе в сторону CE1 включим в созданную бридж-группу:
PE1(config)# interface gigabitethernet 1/0/4.100 PE1(config-subif)# bridge-group 10 PE1(config-subif)# exit
Выставим на интерфейсе в сторону PE2 значение MTU равным 9600 для того чтобы избежать ситуации с превышением MTU после инкапсуляции MPLS заголовка, а также отключим межсетевой экран
PE1#(config)# interface gigabitethernet 1/0/1 PE1(config-if-gi)# mtu 9600 PE1(config-if-gi)# ip firewall disable PE1(config-if-gi)# exit
Разрешим прием пакетов с mpls заголовком на интерфейсе в сторону mpls сети (В данном примере интерфейс в сторону PE2):
PE1(config)# mpls PE1(config-mpls)# forwarding interface gigabitethernet 1/0/1
Настроим протокол LDP и включим обнаружение соседей на интерфейсе в сторону PE2:
PE1(config-mpls)# ldp PE1(config-ldp)# router-id 1.1.1.1 PE1(config-ldp)# address-family ipv4 PE1(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE1(config-ldp-af-ipv4-if)# exit PE1(config-ldp-af-ipv4)# transport-address 1.1.1.1 PE1(config-ldp-af-ipv4)# exit PE1(config-ldp)# enable PE1(config-ldp)# exit
Создадим pw-class на основе которого в дальнейшем будет созданы виртуальные каналы (pw). Так как в данном примере на pw будут применяться параметры по умолчанию достаточно будет указать имя класса:
PE1(config-mpls)# l2vpn PE1(config-l2vpn)# pw-class for_vpls1 PE1(config-l2vpn-pw-class)# exit
Создадим новый l2vpn типа vpls и добавим pw до маршрутизаторов PE2 и PE3, идентификатор pw для удобства возьмем равным VID (в данном случай = 100):
PE1(config-l2vpn)# vpls vpls1 PE1(config-l2vpn-vpls)# bridge-group 10 PE1(config-l2vpn-vpls)# pw 100 2.2.2.2 PE1(config-l2vpn-pw)# pw-class for_vpls1 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-vpls)# pw 100 3.3.3.3 PE1(config-l2vpn-pw)# pw-class for_vpls1 PE1(config-l2vpn-pw)# enable PE1(config-l2vpn-pw)# exit PE1(config-l2vpn-vpls)# enable PE1(config-l2vpn-vpls)# end
Применим созданную конфигурацию:
PE1# commit PE1# confirm
Проведем настройку маршрутизатора PE2 и PE3 по аналогии с PE1:
PE2# configure PE2(config)# bridge 10 PE2(config-bridge)# enable PE2(config-bridge)# exit PE2(config)# interface gigabitethernet 1/0/4.100 PE2(config-subif)# bridge-group 10 PE2(config-subif)# exit PE2(config)# interface gigabitethernet 1/0/2 PE2(config-if-gi)# mtu 9600 PE2(config-if-gi)# ip firewall disable PE2(config-if-gi)# exit PE2(config)# mpls PE2(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE2(config-mpls)# forwarding interface gigabitethernet 1/0/2 PE2(config-mpls)# ldp PE2(config-ldp)# enable PE2(config-ldp)# router-id 2.2.2.2 PE2(config-ldp)# address-family ipv4 PE2(config-ldp-af-ipv4)# transport-address 2.2.2.2 PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1
PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2 PE2(config-ldp-af-ipv4-if)# exit PE2(config-ldp-af-ipv4)# exit PE2(config-ldp)# exit PE2(config-mpls)# l2vpn PE2(config-l2vpn)# pw-class for_vpls1 PE2(config-l2vpn-pw-class)# exit PE2(config-l2vpn)# vpls vpls1 PE2(config-l2vpn-vpls)# enable PE2(config-l2vpn-vpls)# bridge-group 10 PE2(config-l2vpn-vpls)# pw 100 1.1.1.1 PE2(config-l2vpn-pw)# pw-class for_vpls1 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# exit PE2(config-l2vpn-vpls)# pw 100 3.3.3.3 PE2(config-l2vpn-pw)# pw-class for_vpls1 PE2(config-l2vpn-pw)# enable PE2(config-l2vpn-pw)# end PE2# commit PE2# confirm PE3(config)# bridge 10 PE3(config-bridge)# enable PE3(config-bridge)# exit PE3(config)# interface gigabitethernet 1/0/4.100 PE3(config-subif)# bridge-group 10 PE3(config-subif)# exit PE3(config)# interface gigabitethernet 1/0/1 PE3(config-if-gi)# mtu 9600 PE3(config-if-gi)# ip firewall disable PE3(config-if-gi)# exit PE3(config)# mpls PE3(config-mpls)# forwarding interface gigabitethernet 1/0/1 PE3(config-mpls)# exit PE3(config)# mpls PE3(config-mpls)# ldp PE3(config-ldp)# enable PE3(config-ldp)# router-id 3.3.3.3 PE3(config-ldp)# address-family ipv4 PE3(config-ldp-af-ipv4)# interface gigabitethernet 1/0/1 PE3(config-ldp-af-ipv4-if)# exit PE3(config-ldp-af-ipv4)# transport-address 3.3.3.3 PE3(config-ldp-af-ipv4)# exit PE3(config-ldp)# exit PE3(config-mpls)# l2vpn PE3(config-l2vpn)# pw-class for_vpls PE3(config-l2vpn-pw-class)# exit PE3(config-l2vpn)# vpls vpls1 PE3(config-l2vpn-vpls)# enable PE3(config-l2vpn-vpls)# bridge-group 10 PE3(config-l2vpn-vpls)# pw 100 2.2.2.2 PE3(config-l2vpn-pw)# pw-class for_vpls PE3(config-l2vpn-pw)# enable PE3(config-l2vpn-pw)# exit PE3(config-l2vpn-vpls)# pw 100 1.1.1.1 PE3(config-l2vpn-pw)# pw-class for_vpls PE3(config-l2vpn-pw)# enable PE3(config-l2vpn-pw)# end PE3# commit PE3# confirm
Убедимся в установлении соседства по протоколу LDP и выведем информацию по статусу виртуального канала (pseudowire) между PE1, PE2 и PE3
PE3# show mpls ldp neighbor Peer LDP ID: 1.1.1.1; Local LDP ID 3.3.3.3 State: Operational TCP connection: 1.1.1.1:646 - 3.3.3.3:45979 Messages sent/received: 22/22 Uptime: 00:13:16 LDP discovery sources: 3.3.3.3 -> 1.1.1.1 Peer LDP ID: 2.2.2.2; Local LDP ID 3.3.3.3 State: Operational TCP connection: 2.2.2.2:646 - 3.3.3.3:59627 Messages sent/received: 22/22 Uptime: 00:13:20 LDP discovery sources: 3.3.3.3 -> 2.2.2.2 gigabitethernet 1/0/1
PE3# show mpls l2vpn pseudowire Neighbor PW ID Type Status --------------------------------------- ---------- ---------- ------ 1.1.1.1 100 Ethernet Up 2.2.2.2 100 Ethernet Up
Соседство по протоколу LDP установлено, pseudowire перешел в статус 'UP'. Настройка l2vpn типа vpls завершена.
Конфигурирование L3VPN
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить адресацию и один из протоколов IGP на всех P и PE маршрутизаторах | ||
2 | Настроить распространение транспортных меток по протоколу LDP | ||
3 | Создать VRF | esr(config)# ip vrf <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
4 | Указать route distinguisher для данного VRF | esr(config-vrf)# rd <RD> | <RD> – значение Route distinguisher, задается в одном из следующем виде:
|
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 на маршрутизаторах
router ospf log-adjacency-changes router ospf 1 router-id 1.1.1.1 area 0.0.0.0 enable exit enable exit interface loopback 1 ip address 1.1.1.1/32 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.10 ip firewall disable ip address 10.10.10.1/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.40 ip firewall disable ip address 40.40.40.1/30 ip ospf instance 1 ip ospf exit system jumbo-frames
router ospf log-adjacency-changes router ospf 1 router-id 2.2.2.2 area 0.0.0.0 enable exit enable exit interface loopback 1 ip address 2.2.2.2/32 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.10 ip firewall disable ip address 10.10.10.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.20 ip firewall disable ip address 20.20.20.2/30 ip ospf instance 1 ip ospf exit system jumbo-frames
router ospf log-adjacency-changes router ospf 1 router-id 3.3.3.3 area 0.0.0.0 enable exit enable exit interface loopback 1 ip address 3.3.3.3/32 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.20 ip firewall disable ip address 20.20.20.1/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.30 ip firewall disable ip address 30.30.30.1/30 ip ospf instance 1 ip ospf exit system jumbo-frames
router ospf log-adjacency-changes router ospf 1 router-id 4.4.4.4 area 0.0.0.0 enable exit enable exit interface loopback 1 ip address 4.4.4.4/32 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.40 ip firewall disable ip address 40.40.40.2/30 ip ospf instance 1 ip ospf exit interface gigabitethernet 1/0/1.30 ip firewall disable ip address 30.30.30.2/30 ip ospf instance 1 ip ospf exit system jumbo-frames
Необходимо убедиться, что протокол запущен на каждом маршрутизаторе.
ESR1# show ip ospf neighbors
Router ID Pri State DTime Interface Router IP
--------- --- ----- ----- ------------- ---------
2.2.2.2 128 Full/BDR 00:39 gi1/0/1.10 10.10.10.2
4.4.4.4 128 Full/BDR 00:32 gi1/0/1.40 40.40.40.2
ESR1# show ip ospf
O 40.40.40.0/30 [150/10] dev gi1/0/1.40 [ospf1 1970-01-08] (1.1.1.1)
O * 30.30.30.0/30 [150/20] via 40.40.40.2 on gi1/0/1.40 [ospf1 1970-01-08] (3.3.3.3)
O 1.1.1.1/32 [150/0] dev lo1 [ospf1 1970-01-08] (1.1.1.1)
O * 4.4.4.4/32 [150/10] via 40.40.40.2 on gi1/0/1.40 [ospf1 1970-01-08] (4.4.4.4)
O * 20.20.20.0/30 [150/20] via 10.10.10.2 on gi1/0/1.10 [ospf1 22:05:45] (3.3.3.3)
O 10.10.10.0/30 [150/10] dev gi1/0/1.10 [ospf1 22:05:33] (1.1.1.1)
O * 3.3.3.3/32 [150/20] multipath [ospf1 22:05:45] (3.3.3.3)
via 40.40.40.2 on gi1/0/1.40 weight 1
O * 2.2.2.2/32 [150/10] via 10.10.10.2 on gi1/0/1.10 [ospf1 22:05:45] (2.2.2.2)
Настройка LDP:
mpls ldp address-family ipv4 transport-address 1.1.1.1 interface gigabitethernet 1/0/1.10 exit interface gigabitethernet 1/0/1.40 exit exit enable exit forwarding interface gigabitethernet 1/0/1.10 forwarding interface gigabitethernet 1/0/1.40 exit
mpls ldp address-family ipv4 transport-address 2.2.2.2 interface gigabitethernet 1/0/1.10 exit interface gigabitethernet 1/0/1.20 exit exit enable exit forwarding interface gigabitethernet 1/0/1.10 forwarding interface gigabitethernet 1/0/1.20 exit
mpls ldp address-family ipv4 transport-address 3.3.3.3 interface gigabitethernet 1/0/1.20 exit interface gigabitethernet 1/0/1.30 exit exit enable exit forwarding interface gigabitethernet 1/0/1.20 forwarding interface gigabitethernet 1/0/1.30 exit
mpls ldp address-family ipv4 transport-address 4.4.4.4 interface gigabitethernet 1/0/1.30 exit interface gigabitethernet 1/0/1.40 exit exit enable exit forwarding interface gigabitethernet 1/0/1.30 forwarding interface gigabitethernet 1/0/1.40 exit
Для проверки сходимости LDP можно воспользоваться одной из команд:
ESR1# show mpls ldp neighbor
Peer LDP ID: 2.2.2.2; Local LDP ID 1.1.1.1
State: Operational
TCP connection: 2.2.2.2:33933 - 1.1.1.1:646
Messages sent/received: 1059/1070
Uptime: 17:32:07
LDP discovery sources:
gigabitethernet 1/0/1.10
Peer LDP ID: 4.4.4.4; Local LDP ID 1.1.1.1
State: Operational
TCP connection: 4.4.4.4:40894 - 1.1.1.1:646
Messages sent/received: 1376/1386
Uptime: 22:38:38
LDP discovery sources:
gigabitethernet 1/0/1.40
Настройка MP-BGP
Создадим VRF на ESR1 и ESR3 соответственно. Укажем RD, rt-export/import в соответствии с нашей схемой.
Без указание атрибутов RD и RT маршрутная информация не попадет в таблицу VPNv4.
ESR1(config)# ip vrf Customer1 ESR1(config-vrf)# ip protocols bgp max-routes 1000 ESR1(config-vrf)# rd 65500:100 ESR1(config-vrf)# route-target import 65500:100 ESR1(config-vrf)# route-target export 65500:100
ESR3(config)# ip vrf Customer1 ESR3(config-vrf)# ip protocols bgp max-routes 1000 ESR3(config-vrf)# rd 65500:100 ESR3(config-vrf)# route-target export 65500:100 ESR3(config-vrf)# route-target import 65500:100 ESR3(config-vrf)# exit
Настроим iBGP между ESR1 и ESR3. Включим отправку extended community на обоих устройствах.
ESR1(config)# router bgp log-neighbor-changes ESR1(config)# router bgp 65500 ESR1(config-bgp)# router-id 1.1.1.1 ESR1(config-bgp)# enable ESR1(config-bgp)# neighbor 3.3.3.3 ESR1(config-bgp-neighbor)# remote-as 65500 ESR1(config-bgp-neighbor)# update-source 1.1.1.1 ESR1(config-bgp-neighbor)# enable ESR1(config-bgp-neighbor)# address-family ipv4 unicast ESR1(config-bgp-neighbor-af)# enable ESR1(config-bgp-neighbor-af)# exit ESR1(config-bgp-neighbor)# address-family vpnv4 unicast ESR1(config-bgp-neighbor-af)# send-community extended ESR1(config-bgp-neighbor-af)# enable
ESR3(config)# router bgp log-neighbor-changes ESR3(config)# router bgp 65500 ESR3(config-bgp)# router-id 3.3.3.3 ESR3(config-bgp)# enable ESR3(config-bgp)# neighbor 1.1.1.1 ESR3(config-bgp-neighbor)# remote-as 65500 ESR3(config-bgp-neighbor)# update-source 3.3.3.3 ESR3(config-bgp-neighbor)# enable ESR3(config-bgp-neighbor)# address-family ipv4 unicast ESR3(config-bgp-neighbor-af)# enable ESR3(config-bgp-neighbor-af)# exit ESR3(config-bgp-neighbor)# address-family vpnv4 unicast ESR3(config-bgp-neighbor-af)# send-community extended ESR3(config-bgp-neighbor-af)# enable
Необходимо убедиться, что BGP-сессия успешно установлена.
Настройка маршрутизации PE-CE
Customer1 анонсирует по BGP(AS65505) подсеть 10.100.0.0/24. Настроим eBGP-сессию между CE_SiteA и PE.
По-умолчанию: для EBGP анонсирование маршрутов запрещено, необходимо сконфигурировать разрешающее правило; для IBGP-анонсирование маршрутов разрешено.
CE_SiteA
Настроим соответствующие интерфейсы. Также создадим route-map, в котором укажем подсети, разрешенные для анонсирования.
interface gigabitethernet 1/0/2 ip firewall disable ip address 192.168.32.2/30 exit interface loopback 1 ip address 10.100.0.1/24 exit route-map OUTPUT rule 1 match ip address 10.100.0.0/24 action permit
Настроим eBGP между ESR1 и CE_SiteA.
router bgp log-neighbor-changes router bgp 65505 router-id 192.168.32.1 neighbor 192.168.32.1 remote-as 65500 allow-local-as 1 update-source 192.168.32.2 address-family ipv4 unicast route-map OUTPUT out enable exit enable exit address-family ipv4 unicast network 10.100.0.0/24 exit enable
ESR1
Настроим интерфейс в сторону CE. Также создадим route-map, в котором укажем подсети, разрешенные для анонсирования.
interface gigabitethernet 1/0/2 ip vrf forwarding Customer1 description "Customer1" ip firewall disable ip address 192.168.32.1/30 Создаем route-map route-map OUTPUT rule 1 action permit
Настроим eBGP между ESR1 и CE_SiteA.
router bgp 65500 vrf Customer1 router-id 192.168.32.1 neighbor 192.168.32.2 remote-as 65505 update-source 192.168.32.1 address-family ipv4 unicast
Разрешим передачу маршрутов BGP пиру.
route-map OUTPUT out enable exit enable exit
Разрешим пересылку маршрутов из VRF в таблицу VPNv4 unicast
address-family ipv4 unicast redistribute connected redistribute bgp 65500 exit enable exit
Для проверки принятых и анонсированных маршрутов можно воспользоваться следующими командами:
ESR1# show ip bgp 65500 vrf Customer1 neighbors 192.168.32.2 advertise-routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 10.100.1.0/24 192.168.32.1 100 65500 i
*> u 192.168.32.4/30 192.168.32.1 100 65500 i
Вывод аноснируемых маршрутов для определенного пира. Маршрутная информация отображается после применения фильтрации.
ESR1# show ip bgp 65500 vrf Customer1 neighbors 192.168.32.2 routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 10.100.0.0/24 192.168.32.2 100 0 65505
Вывод принятой маршрутной информации от определенного пира. Маршрутная информация отображается после применения фильтрации.
CE_SiteB
Настроим соответствующие интерфейсы.
interface gigabitethernet 1/0/2 ip firewall disable ip address 192.168.32.6/30 exit interface loopback 1 ip address 10.100.1.1/24 exit route-map OUTPUT rule 1 match ip address 10.100.1.0/24 action permit
Настроим eBGP между ESR3 и CE_SiteB.
router bgp 65505 router-id 192.168.32.6 neighbor 192.168.32.5 remote-as 65500 allow-local-as 1 update-source 192.168.32.6 address-family ipv4 unicast route-map OUTPUT out enable exit enable exit address-family ipv4 unicast network 10.100.1.0/24 exit enable
ESR3
Настроим интерфейс в сторону CE.
interface gigabitethernet 1/0/2 ip vrf forwarding Customer1 description "Customer1" ip firewall disable ip address 192.168.32.5/30
Cоздадим route-map, в котором укажем подсети, разрешенные для анонсирования.
route-map OUTPUT rule 1 action permit
Настроим eBGP c между ESR3 и CE_SiteB.
router bgp 65500 vrf Customer1 router-id 192.168.32.5 neighbor 192.168.32.6 remote-as 65505 update-source 192.168.32.5 address-family ipv4 unicast
Разрешим передачу маршрутов BGP пиру.
route-map OUTPUT out enable exit enable exit
Разрешим пересылку маршрутов из VRF в VPNV4 для address-family IPv4.
address-family ipv4 unicast redistribute connected redistribute bgp 65500 exit enable exit
Для просмотра VPNv4 таблицы можно воспользоваться одной из следущих команд:
ESR1# show ip bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*> 65500:100 10.100.0.0/24 -- -- 23 -- -- ?
*>i 65500:100 192.168.32.4/30 3.3.3.3 -- 84 100 0 i
*>i 65500:100 10.100.1.0/24 3.3.3.3 -- 84 100 0 i
Выводит все принятые VPNv4 маршруты после применения фильтрации
Балансировка трафика MPLS
Маршутизаторы ESR имеют многоядерную архитектуру. Одним из первых звеньев обработки поступающего трафика является load balancer daemon(lbd), который выполняет две основных функции:
1) Равномерно распределяет нагрузку между всеми CPU маршрутизатора.
2) Выявляет аномальные ситуации с высокой нагрузкой на отдельные CPU, и перераспределяет обработку с этих CPU на менее загруженные.
По-умолчанию, lbd использует только MPLS метки для вычисления хэша и дальнейшего распределения нагрузки на различные CPU. Данное поведение не всегда дает преимущество, особенное когда существует "большие" однородные потоки MPLS трафика. Для добавление энтропии в хэш можно включить дополнительный функционал:
cpu load-balance mpls passenger ip
Включает возможность "заглядывать" дальше MPLS заголовка для поиска IP-заголовка, и добавления ip-src и ip-dst в расчет хэша.
cpu load-balance mpls passenger ip-over-ethernet-pseudowire-with-cw
cpu load-balance mpls passenger ip-over-ethernet-pseudowire-without-cw
Позволяет явно указать, используется ли при построении L2VPN функционал Control Word. Позволяет исключить возникновение ошибки, когда пакет с наличием Сontrol word может быть ошибочно распознан как пакет без Сontrol Word.
Пример настройки
Задача:
Включить балансировку L2VPN трафика без использования функционала Control Word.
Решение:
ESR(config)# system cpu load-balance mpls passenger ip ESR(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw