Оглавление | ||
---|---|---|
|
Scroll Pagebreak |
---|
Якорь | ||||
---|---|---|---|---|
|
LDP — протокол распределения меток. Для нахождения соседей используется рассылка hello-сообщений на мультикастный адрес 224.0.0.2. При обмене hello-сообщениями маршрутизаторы узнают транспортные адреса друг друга. Маршрутизатор с большим адресом инициализирует TCP-сессию. После проверки параметров , LDP-сессия считается установленной.
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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 { <ID> | <IF> | <TUN> } | <ID> – идентификатор маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. <IF> – интерфейс, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора. <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
3 | В контексте настройки address family ipv4 указать transport-address (не обязательно, если указан router-id). | esr(config-ldp-af-ipv4)# transport-address <ADDR> | <ADDR> - – задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
34 | В контексте настройки address family ipv4 указать интерфейсы для включение включения на них процесса LDP. | esr(config-ldp-af-ipv4)# interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
45 | Включить процесс LDP. | esr(config-ldp)# enable | |
56 | Включить функционал explicit-null (не обязательно). | esr(config-ldp)# egress-label-type explicit-null | |
67 | В режиме конфигурирования соседа LDP задать пароль командой password (не обязательно). | esr(config-ldp-neig)# password {<TEXT> | ENCRYPTED-TEXT>} | <CLEAR-TEXT> – пароль, задаётся строкой , длинной длиной [8..16] символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером [8..16] байт ([16..32] символа) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
В рамках настройки протокола LDP также доступен следующий функционал:
|
Примечание |
---|
Если изменить значение router-id, то новое значение будет применено только после рестарта данного протокола. Для рестарта mpls ldp используется команда clear mpls ldp. |
Scroll Pagebreak |
---|
Задача:
Настроить взаимодействие по протоколу LDP между пирами.
...
Предварительно на интерфейсы , должны быть назначены IP-адреса, отключен межсетевой экран и настроен один из протоков внутренней маршрутизации.
Scroll Pagebreak |
---|
Блок кода |
---|
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 |
Scroll Pagebreak |
---|
...
На одном из пиров ввести следующие команды:
Вывод покажет параметры соседнего пира, полученные из мультикастовых 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 |
scroll-pagebreakВывод покажет параметры соседнего пира, полученные из мультикастовых hello-сообщений.
Сессия LDP должна находиться в статусе "Operational".
...
Конфигурирование параметров сессии в протоколе LDP
По умолчанию , в рассылаемых hello-сообщениях установлены следующие значения:
Параметр | LDP |
---|---|
Hello interval | 5 секунд |
Hold timer | 15 секунд |
Keepalive holdtime | 180 секунд |
Scroll Pagebreak |
---|
Блок кода |
---|
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.
Scroll Pagebreak |
---|
...
Если параметры 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 |
Scroll Pagebreak |
---|
...
Блок кода |
---|
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: |
Scroll Pagebreak |
---|
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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] |
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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 |
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации LDP задать параметр Keepalive | esr(config-ldp)# keepalive <TIME> | <TIME> – Время время в секундах в интервале [3..65535] Значение по умолчанию: 180 |
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP) | ||
2 | В режиме конфигурации соседа задать параметр Keepalive holdtime | esr(config-ldp-neig)# keepalive <TIME> | <TIME> – Время время в секундах в интервале [3..65535] Значение по умолчанию: 180 |
...
Задача:
Переопределить параметры hello Hello holdtime (40 секунд) и hello 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 |
Scroll Pagebreak |
---|
Проверка:
Для просмотра 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 |
Scroll Pagebreak |
---|
...
Якорь | ||||
---|---|---|---|---|
|
По умолчанию , для targeted LDP-сессии установлены следующие значения:
Параметр | targeted-LDP |
---|---|
hello Hello interval | 5 секунд |
Hold timer | 45 секунд |
Keepalive holdtime | 180 секунд |
...
Scroll Pagebreak |
---|
...
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 |
...
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 Hello holdtime (120 секунд) и hello Hello interval (30 секунд ) для всего процесса targeted-LDP. Для соседа с адресом 4.4.4.4 установить Keepalive holdtime равным 150 секунд.
...
Настройка фильтрации 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 символа. |
Информацияnote |
---|
Метки будут выделяться ТОЛЬКО на описанные в object-group подсети, независимо от того, как они были изучены (connected, local, IGP и т.д.). |
Информацияnote |
---|
В object-group необходимо описывать префиксы. Префикс должен иметь точное совпадение с маршрутом из FIB. |
...
На 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 |
...
И не назначена для 192.168.2.0/24:
Блок кода |
---|
esr# sh mpls ldp bindings 192.168.2.0/24 esr# |
...
L2VPN позволяет организовать передачу ethernet-фреймов через MPLS-домен. Выделение и распространение туннельных меток , в данном режиме , осуществляется по средствам протокола LDP. В реализации L2VPN можно условно выделить два случая:
- P2P – туннель, создаваемый по схеме "точка-точка".
VPLS – туннель, создаваемый по схеме "точка-многоточка".
В обоих случаях , для передачи ethernet-фреймов между маршрутизаторами создается виртуальный канал (далее pseudo-wire). Для согласования параметров pseudo-wire, а также для выделения и передачи туннельных меток между маршрутизаторами, устанавливается LDP-сессия в targeted-режиме.
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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 типа 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 |
Scroll Pagebreak |
---|
Блок кода |
---|
PE1# commit PE1# confirm |
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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. |
...
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1, PE2 и PE3 при помощи IGP протокола (OSPF, IS-IS);.
На маршрутизаторе PE1 создадим бридж-группу и включим ее:
...
Блок кода |
---|
PE1(config)# interface gigabitethernet 1/0/4.100 PE1(config-subif)# bridge-group 10 PE1(config-subif)# exit |
Scroll Pagebreak |
---|
...
Создадим новый 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 |
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить протокол LDP (см. раздел Конфигурирование протокола LDP). | ||
2 | Создать сетевой мост в системе без указания IP-адреса (см. раздел Настройка Bridge). | ||
3 | Создать VPLS-домен в системе и осуществить переход в режим настройки параметров vplsVPLS-домена. | 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-сервис: все 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 |
...
Блок кода |
---|
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-маршрутизаторах:
...
Следующим этапом на каждом PE-маршрутизаторе создадим бридж-домен , и включим в него интерфейс (Attachment circuit, AC), смотрящий в сторону CE:
...
Блок кода |
---|
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:
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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 |
...
Блок кода |
---|
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 |
...
Создадим VRF на ESR1 и ESR3 соответственно. Укажем RD, rt-export/import в соответствии с нашей со схемой, настроим интерфейс для взаимодействия с CE (CE-SiteA и CE-SiteB). Дополнительно создадим route-map для разрешения анонсирования маршрутов по протоколу BGP:
Информацияnote |
---|
Без указание указания атрибутов RD и RT маршрутная информация не попадет в таблицу VPNv4. |
...
Scroll Pagebreak |
---|
Создадим 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# 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 |
...
Необходимо проделать схожие операции теперь уже между маршрутизаторами ESR3 и CE_SiteB.
...
Для просмотра 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-маршруты после применения фильтрации.
...
Маршрутизаторы ESR имеют многоядерную архитектуру. Одним из первых звеньев обработки поступающего трафика является load balancer daemon (lbd), который выполняет две основных функции:1)
- Равномерно распределяет нагрузку между всеми CPU маршрутизатора.
...
- Выявляет аномальные ситуации с высокой нагрузкой на отдельные CPU
...
- и перераспределяет обработку с этих CPU на менее загруженные.
По умолчанию lbd использует только MPLS-метки для вычисления хеша и дальнейшего распределения нагрузки на различные CPU. Данное поведение не всегда дает преимущество, особенное особенно когда существуют "большие" однородные потоки MPLS-трафика. Для добавления энтропии в хеш можно включить дополнительный функционал:
Информацияtip |
---|
cpu load-balance mpls passenger ip Включает возможность "заглядывать" дальше MPLS-заголовка для поиска IP-заголовка , и добавления ip-src и ip-dst в расчет хеша: Для L3VPN: Идет идет поиск пары ip-src и ip-dst в ip-заголовке, находящимся за mpls заголовком.
Для L2VPN: ESR попытается "заглянуть" в ethernet-фрейм (который находится за mpls-заголовком) и получить ip-src и ip-dst в ip-заголовке для добавления в расчет хеша.
|
Информацияtip |
---|
cpu load-balance mpls passenger ip-over-ethernet-pseudowire-with-cw cpu load-balance mpls passenger ip-over-ethernet-pseudowire-without-cw Позволяет явно указать, используется ли при построении L2VPN функционал Control Word. Это позволяет исключить возникновение ошибки, когда пакет с наличием Сontrol word может быть ошибочно распознан как пакет без него. |
При хешировании MPLS-меток действуют следующие ограничения:
- В расчет не добавляются метки 0-15 (Special-Purpose Labels) – см. RFC 7274;
- В расчет не добавляется метка, если непосредственно перед ней следует метка 15 (Extension Label) – см. RFC 7274;
- В расчет хеша добавляется не более трёх меток.
Примечание |
---|
Во избежание падения LDP-сессии при большой нагрузке на СPU маршрутизатора на моделях : ESR-200, ESR-1000, ESR-1200, ESR-1500, ESR-1700 после включения функционала все пакеты протокола LDP будут обрабатываться управляющими CPU (Management CPU), которые не участвуют в обработке трафика. Для ESR-200, ESR-1000, ESR-1200, ESR-1500 – это СPU 0, ESR-1700 – CPU 0-1. |
Пример настройки
Задача:
Включить балансировку L2VPN-трафика без использования функционала Control Word.
...
Примечание |
---|
В текущей реализации , бридж-домен не пропускает трафик протоколов канального уровня, таких так: STP, LLDP, CDP и т.д. |
Бридж-домен может работать в двух транспортных режимах: ethernet или vlan. Транспортных режим задает правила обработки трафика на входе и выходе с бридж-домена.
В LDP signaling , по умолчанию используется ethernet mode (Raw mode, type 5). Для каждого отдельного экземпляра VPLS можно задать транспортный режим.
В BGP signaling , бридж-домен работает только в ethernet mode.
...
1. Ethernet (Raw) mode:
- Если AC является сабинтерфейсомсаб-интерфейсом, то vlan-тег перед помещение в бридж снимается. При выходе из бриджа vlan-тег восстанавливается.
- Если AC является интерфейсом, то тегированный и нетегированный трафик проходит в обоих направлениях без модификаций.
...
Предположим, PE1 и PE2 cконфигурированы в ethernet mode. Со стороны PE1 в бридж-домен включен cабинтерфейс cаб-интерфейс gigabitethernet 1/0/4.100, поэтому vlan-тег (vlan id 100) с входящего трафика будет удален перед помещением в Pseudowire 10 (соответственно, восстановлен при трафике в сторону АС). С другой стороны, AC на PE2 , является интерфейсом, значит трафик будет проходить без модификаций в обоих направлениях.
...
- Если AC является саб-интерфейсом, то vlan-тег перед помещением в бридж сохраняется. При выходе из бриджа vlan-тег может быть сохранен или перезаписан в зависимости от конфигурации.
- Если АС является интерфейсом, то модификации модификация тегов не происходит в обоих направлениях.
...
- Размер Ethernet-заголовка (18 байт), inner tag (4 байта), outer tag (4 байта) не учитываются на AC-интерфейсах;
- На интерфейсах, принимающих участие в пересылке mplsMPLS-трафика, необходимо увеличить MTU на количество меток (каждая метка равна 4 байтам).
...
На рисунке выше , РЕ1 поднимает два псевдо-провода: pseudowire 10 до PE2, и pseudowire 20 до PE3 соответственно. Для сигнализации с PE2 MTU будет выбрано MTU равным 2000 (pw-class TO_PE2), для PE3 – MTU будет равным 3000 (pw-class TO_PE3).
Для BGP-signaling MTU указывается в рамках конфигурации l2vpn-сервиса: Scroll Pagebreak
...
По умолчанию бридж-домен имеет 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 |
...
Рассмотрим примеры настройки на базе построения сервисов l3vpn и l2vpn. Главная особенность inter-AS option Option A – отсутствие mpls-меток в трафике при передаче между ABSR. Для разделения трафика клиентских сервисов между ASBR , обычно используют VRF для l3vpn , или тегирование (dot1q, q-in-q) для сервисов l2vpn.
...
Настроим ASBR1 и ASBR2. Для разделения трафика от CE1 и CE2 в сторону ASBR2 сделаем интерфейс gi1/0/1 транковым. Vlan 100 и 200 будут предназначены для трафика от CE1 и СE2 соответственно.:
Блок кода | ||
---|---|---|
| ||
ESR(config)# hostname ASBR1 ESR(config)# ESR(config)# system jumbo-frames ESR(config)# ESR(config)# vlan 100,200 ESR(config-vlan)# exit ESR(config)# ESR(config)# router bgp 65500 ESR(config-bgp)# router-id 10.10.1.2 ESR(config-bgp)# neighbor 10.10.1.1 ESR(config-bgp-neighbor)# remote-as 65500 ESR(config-bgp-neighbor)# update-source 10.10.1.2 ESR(config-bgp-neighbor)# address-family l2vpn vpls ESR(config-bgp-neighbor-af)# send-community extended ESR(config-bgp-neighbor-af)# enable ESR(config-bgp-neighbor-af)# exit ESR(config-bgp-neighbor)# enable ESR(config-bgp-neighbor)# exit ESR(config-bgp)# enable ESR(config-bgp)# exit ESR(config)# ESR(config)# router ospf 1 ESR(config-ospf)# area 0.0.0.0 ESR(config-ospf-area)# enable ESR(config-ospf-area)# exit ESR(config-ospf)# enable ESR(config-ospf)# exit ESR(config)# ESR(config)# bridge 10 ESR(config-bridge)# vlan 100 ESR(config-bridge)# enable ESR(config-bridge)# exit ESR(config)# bridge 20 ESR(config-bridge)# vlan 200 ESR(config-bridge)# enable ESR(config-bridge)# exit ESR(config)# ESR(config)# interface gigabitethernet 1/0/1 ESR(config-if-gi)# description "to ASBR2" ESR(config-if-gi)# mode switchport ESR(config-if-gi)# spanning-tree disable ESR(config-if-gi)# switchport forbidden default-vlan ESR(config-if-gi)# switchport mode trunk ESR(config-if-gi)# switchport trunk allowed vlan add 100,200 ESR(config-if-gi)# exit ESR(config)# interface gigabitethernet 1/0/2 ESR(config-if-gi)# description "to PE1" ESR(config-if-gi)# mtu 1522 ESR(config-if-gi)# ip firewall disable ESR(config-if-gi)# ip address 10.100.0.2/30 ESR(config-if-gi)# ip ospf instance 1 ESR(config-if-gi)# ip ospf ESR(config-if-gi)# exit ESR(config)# interface loopback 1 ESR(config-loopback)# ip address 10.10.1.2/32 ESR(config-loopback)# ip ospf instance 1 ESR(config-loopback)# ip ospf ESR(config-loopback)# exit ESR(config)# mpls ESR(config-mpls)# ldp ESR(config-ldp)# router-id 10.10.1.2 ESR(config-ldp)# address-family ipv4 ESR(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2 ESR(config-ldp-af-ipv4-if)# exit ESR(config-ldp-af-ipv4)# exit ESR(config-ldp)# enable ESR(config-ldp)# exit ESR(config-mpls)# l2vpn ESR(config-l2vpn)# vpls CE1 ESR(config-l2vpn-vpls)# bridge-group 10 ESR(config-l2vpn-vpls)# autodiscovery bgp ESR(config-bgp)# vpn id 1 ESR(config-bgp)# ve id 1 ESR(config-bgp)# rd 65500:1 ESR(config-bgp)# route-target export 65500:1 ESR(config-bgp)# route-target import 65500:1 ESR(config-bgp)# exit ESR(config-l2vpn-vpls)# enable ESR(config-l2vpn-vpls)# exit ESR(config-l2vpn)# vpls CE2 ESR(config-l2vpn-vpls)# bridge-group 20 ESR(config-l2vpn-vpls)# autodiscovery bgp ESR(config-bgp)# vpn id 2 ESR(config-bgp)# ve id 1 ESR(config-bgp)# rd 65500:2 ESR(config-bgp)# route-target export 65500:2 ESR(config-bgp)# route-target import 65500:2 ESR(config-bgp)# exit ESR(config-l2vpn-vpls)# enable ESR(config-l2vpn-vpls)# exit ESR(config-l2vpn)# exit ESR(config-mpls)# forwarding interface gigabitethernet 1/0/2 ESR(config-mpls)# exit ESR(config)# do com ESR(config)# do conf |
...
Scroll Pagebreak |
---|
Блок кода | ||
---|---|---|
| ||
ASBR2# sh bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *>i 65500:1 2 1 10 10.11.1.1 -- 100 0 i *>i 65500:2 2 1 10 10.11.1.1 -- 100 0 i *> 65500:1 1 1 10 -- -- -- -- *> 65500:2 1 1 10 -- -- -- -- ASBR2# sh mpls forwarding-table Local Outgoing Prefix Outgoing Next Hop label label or tunnel ID Interface -------- -------- ------------------------------------------- ---------------- --------------------------------------- 56 imp-null 10.11.1.1/32 gi1/0/2 10.101.0.1 47 37 PW ID 1 -- 10.11.1.1 37 47 PW ID 2 -- 10.11.1.1 |
...
Настроим ASBR1 и ASBR2. Для передачи маршрутной информации между ними воспользуемся протоколов протоколом OSPF в соответствующих VRF:
...
Блок кода |
---|
PE1# sh bgp vpnv4 unicast all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path ----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ---------------- *> 65500:1 10.110.0.1/32 -- -- 37 100 -- 65501 i *> 65500:1 10.111.0.1/32 -- -- 35 100 -- 65501 i *>i 65500:1 10.113.0.1/32 10.10.1.2 -- 43 100 0 ? *>i 65500:1 10.114.0.1/32 10.10.1.2 -- 48 100 0 ? CE1# ping 10.113.0.1 source ip 10.110.0.1 detailed PING 10.113.0.1 (10.113.0.1) from 10.110.0.1 : 56 bytes of data. 64 bytes from 10.113.0.1: icmp_seq=1 ttl=0 time=1.31 ms 64 bytes from 10.113.0.1: icmp_seq=2 ttl=0 time=1.14 ms 64 bytes from 10.113.0.1: icmp_seq=3 ttl=0 time=1.08 ms 64 bytes from 10.113.0.1: icmp_seq=4 ttl=0 time=1.06 ms 64 bytes from 10.113.0.1: icmp_seq=5 ttl=0 time=1.16 ms |
Scroll Pagebreak |
---|
В отличие от Option A, между ASBR ASBR нет необходимости использовать VRF: при передачи передаче трафика между ASBR ASBR будет навешиваться mpls-метка. Данная схема имеет более лучшую маштабируемостьмасштабируемость.
Примечание |
---|
В текущие текущей реализации Option B поддержана только для VPN-IPv4 маршрутов (AFI = 1, SAFI = 128). |
L3VPN
Scroll Pagebreak |
---|
Блок кода | ||
---|---|---|
| ||
ESR(config)# hostname CE1 ESR(config)# ESR(config)# route-map BGP ESR(config-route-map)# rule 1 ESR(config-route-map-rule)# exit ESR(config-route-map)# exit ESR(config)# router bgp 65501 ESR(config-bgp)# neighbor 192.168.1.2 ESR(config-bgp-neighbor)# remote-as 65500 ESR(config-bgp-neighbor)# address-family ipv4 unicast ESR(config-bgp-neighbor-af)# route-map BGP out ESR(config-bgp-neighbor-af)# enable ESR(config-bgp-neighbor-af)# exit ESR(config-bgp-neighbor)# enable ESR(config-bgp-neighbor)# exit ESR(config-bgp)# address-family ipv4 unicast ESR(config-bgp-af)# network 10.110.0.1/32 ESR(config-bgp-af)# exit ESR(config-bgp)# enable ESR(config-bgp)# exit ESR(config)# interface gigabitethernet 1/0/1.100 ESR(config-subif)# ip firewall disable ESR(config-subif)# ip address 192.168.1.1/30 ESR(config-subif)# exit ESR(config)# interface loopback 1 ESR(config-loopback)# ip address 10.110.0.1/32 ESR(config-loopback)# exit ESR(config)# do com ESR(config)# do conf |
...
Блок кода | ||
---|---|---|
| ||
ASBR2(config)# hostname ASBR2 ASBR2(config)# ASBR2(config)# system jumbo-frames ASBR2(config)# ASBR2(config)# route-map VPNv4 ASBR2(config-route-map)# rule 1 ASBR2(config-route-map-rule)# exit ASBR2(config-route-map)# exit ASBR2(config)# router bgp 65500 ASBR2(config-bgp)# router-id 10.11.1.2 ASBR2(config-bgp)# neighbor 10.101.0.2 ASBR2(config-bgp-neighbor)# remote-as 65501 ASBR2(config-bgp-neighbor)# address-family vpnv4 unicast ASBR2(config-bgp-neighbor-af)# route-map VPNv4 out ASBR2(config-bgp-neighbor-af)# send-community extended ASBR2(config-bgp-neighbor-af)# enable ASBR2(config-bgp-neighbor-af)# exit ASBR2(config-bgp-neighbor)# enable ASBR2(config-bgp-neighbor)# exit ASBR2(config-bgp)# neighbor 10.11.1.1 ASBR2(config-bgp-neighbor)# remote-as 65500 ASBR2(config-bgp-neighbor)# update-source 10.11.1.2 ASBR2(config-bgp-neighbor)# address-family vpnv4 unicast ASBR2(config-bgp-neighbor-af)# next-hop-self ASBR2(config-bgp-neighbor-af)# send-community extended ASBR2(config-bgp-neighbor-af)# enable ASBR2(config-bgp-neighbor-af)# exit ASBR2(config-bgp-neighbor)# enable ASBR2(config-bgp-neighbor)# exit ASBR2(config-bgp)# enable ASBR2(config-bgp)# exit ASBR2(config)# ASBR2(config)# router ospf 1 ASBR2(config-ospf)# router-id 10.11.1.2 ASBR2(config-ospf)# area 0.0.0.0 ASBR2(config-ospf-area)# enable ASBR2(config-ospf-area)# exit ASBR2(config-ospf)# enable ASBR2(config-ospf)# exit ASBR2(config)# ASBR2(config)# interface gigabitethernet 1/0/1 ASBR2(config-if-gi)# description "to ASBR1" ASBR2(config-if-gi)# ip firewall disable ASBR2(config-if-gi)# ip address 10.101.0.1/30 ASBR2(config-if-gi)# exit ASBR2(config)# interface gigabitethernet 1/0/2 ASBR2(config-if-gi)# description "to PE2" ASBR2(config-if-gi)# mtu 1522 ASBR2(config-if-gi)# ip firewall disable ASBR2(config-if-gi)# ip address 10.102.0.2/30 ASBR2(config-if-gi)# ip ospf instance 1 ASBR2(config-if-gi)# ip ospf ASBR2(config-if-gi)# exit ASBR2(config)# interface loopback 1 ASBR2(config-loopback)# ip address 10.11.1.2/32 ASBR2(config-loopback)# ip ospf instance 1 ASBR2(config-loopback)# ip ospf ASBR2(config-loopback)# exit ASBR2(config)# mpls ASBR2(config-mpls)# ldp ASBR2(config-ldp)# router-id 10.11.1.2 ASBR2(config-ldp)# address-family ipv4 ASBR2(config-ldp-af-ipv4)# interface gigabitethernet 1/0/2 ASBR2(config-ldp-af-ipv4-if)# exit ASBR2(config-ldp-af-ipv4)# exit ASBR2(config-ldp)# enable ASBR2(config-ldp)# exit ASBR2(config-mpls)# forwarding interface gigabitethernet 1/0/1 ASBR2(config-mpls)# forwarding interface gigabitethernet 1/0/2 ASBR2(config-mpls)# exit ASBR2(config)# do com ASBR2(config)# do conf |
После завершения настройки проверим распространение маршрутной информации и сетевую доступность узлов:
Блок кода |
---|
PE1# sh bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>i 65501:2 10.104.0.1/32 10.10.1.2 -- 23 100 0 65500 65513 i
*>i 65501:1 10.103.0.1/32 10.10.1.2 -- 19 100 0 65500 65512 i
*> 65501:2 10.101.0.1/32 -- -- 29 100 -- 65511 i
*> 65501:1 10.100.0.1/32 -- -- 28 100 -- 65510 i
ASBR1# sh bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*> 65501:2 10.104.0.1/32 10.101.0.1 -- 24 100 0 65500 65513 i
*> 65501:1 10.103.0.1/32 10.101.0.1 -- 20 100 0 65500 65512 i
*>i 65501:2 10.101.0.1/32 10.10.1.1 -- 29 100 0 65511 i
*>i 65501:1 10.100.0.1/32 10.10.1.1 -- 28 100 0 65510 i
ASBR2# sh bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*>i 65501:2 10.104.0.1/32 10.11.1.1 -- 19 100 0 65513 i
*>i 65501:1 10.103.0.1/32 10.11.1.1 -- 18 100 0 65512 i
*> 65501:2 10.101.0.1/32 10.101.0.2 -- 30 100 0 65501 65511 i
*> 65501:1 10.100.0.1/32 10.101.0.2 -- 31 100 0 65501 65510 i
PE2# sh bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*> 65501:2 10.104.0.1/32 -- -- 19 100 -- 65513 i
*> 65501:1 10.103.0.1/32 -- -- 18 100 -- 65512 i
*>i 65501:2 10.101.0.1/32 10.11.1.2 -- 29 100 0 65501 65511 i
*>i 65501:1 10.100.0.1/32 10.11.1.2 -- 30 100 0 65501 65510 i
CE4# ping 10.104.0.1 source ip 10.101.0.1 detailed
PING 10.104.0.1 (10.104.0.1) from 10.101.0.1 : 56 bytes of data.
64 bytes from 10.104.0.1: icmp_seq=1 ttl=0 time=2.25 ms
64 bytes from 10.104.0.1: icmp_seq=2 ttl=0 time=2.08 ms
64 bytes from 10.104.0.1: icmp_seq=3 ttl=0 time=2.15 ms
64 bytes from 10.104.0.1: icmp_seq=4 ttl=0 time=2.12 ms
64 bytes from 10.104.0.1: icmp_seq=5 ttl=0 time=2.09 ms
CE1# ping 10.103.0.1 source ip 10.100.0.1 detailed
PING 10.103.0.1 (10.103.0.1) from 10.100.0.1 : 56 bytes of data.
64 bytes from 10.103.0.1: icmp_seq=1 ttl=0 time=2.22 ms
64 bytes from 10.103.0.1: icmp_seq=2 ttl=0 time=2.11 ms
64 bytes from 10.103.0.1: icmp_seq=3 ttl=0 time=2.09 ms
64 bytes from 10.103.0.1: icmp_seq=4 ttl=0 time=2.09 ms
64 bytes from 10.103.0.1: icmp_seq=5 ttl=0 time=2.11 ms
|
MPLS over GRE
В этом разделе приведен пример настройки сервисов VPN, построенных через GRE-туннель.
L2VPN
В качестве сервиса l2vpn произведем настройку EoMPLS over GRE. Также возможно построение VPLS over GRE ( BGP или LDP signaling).
Примечание |
---|
При настройке MTU на туннеле необходимо учитывать следующее:
Ниже представлена примерная структура пакета: |
Настройки CE1 и CE2:
Блок кода | ||
---|---|---|
| ||
hostname CE1
interface gigabitethernet 1/0/2
ip firewall disable
ip address 10.100.0.1/24
exit
|
Блок кода | ||
---|---|---|
| ||
hostname CE2
interface gigabitethernet 1/0/2
ip firewall disable
ip address 10.100.0.2/24
exit
|
Конфигурация ESR1 и ESR2:
Блок кода | ||
---|---|---|
| ||
ESR1(config)# hostname ESR1
ESR1(config)#
ESR1(config)# system cpu load-balance mpls passenger ip
ESR1(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
ESR1(config)# security zone trusted
ESR1(config-zone)# exit
ESR1(config)# security zone untrusted
ESR1(config-zone)# exit
ESR1(config)#
ESR1(config)# router ospf 1
ESR1(config-ospf)# area 0.0.0.0
ESR1(config-ospf-area)# enable
ESR1(config-ospf-area)# exit
ESR1(config-ospf)# enable
ESR1(config-ospf)# exit
ESR1(config)#
ESR1(config)# interface gigabitethernet 1/0/1
ESR1(config-if-gi)# security-zone untrusted
ESR1(config-if-gi)# ip address 192.0.2.1/30
ESR1(config-if-gi)# exit
ESR1(config)# interface gigabitethernet 1/0/2
ESR1(config-if-gi)# description "From CE1"
ESR1(config-if-gi)# mode switchport
ESR1(config-if-gi)# exit
ESR1(config)# interface loopback 1
ESR1(config-loopback)# ip address 10.100.0.1/32
ESR1(config-loopback)# ip ospf instance 1
ESR1(config-loopback)# ip ospf
ESR1(config-loopback)# exit
ESR1(config)# tunnel gre 1
ESR1(config-gre)# key 60
ESR1(config-gre)# ttl 64
ESR1(config-gre)# mtu 1458
ESR1(config-gre)# ip firewall disable
ESR1(config-gre)# local address 192.0.2.1
ESR1(config-gre)# remote address 192.0.2.2
ESR1(config-gre)# ip address 10.0.0.1/30
ESR1(config-gre)# ip ospf instance 1
ESR1(config-gre)# ip ospf network point-to-point
ESR1(config-gre)# ip ospf
ESR1(config-gre)# enable
ESR1(config-gre)# exit
ESR1(config)#
ESR1(config)# mpls
ESR1(config-mpls)# ldp
ESR1(config-ldp)# router-id 10.100.0.1
ESR1(config-ldp)# address-family ipv4
ESR1(config-ldp-af-ipv4)# interface gre 1
ESR1(config-ldp-af-ipv4-if)# exit
ESR1(config-ldp-af-ipv4)# exit
ESR1(config-ldp)# enable
ESR1(config-ldp)# exit
ESR1(config-mpls)# l2vpn
ESR1(config-l2vpn)# pw-class VPWS
ESR1(config-l2vpn-pw-class)# exit
ESR1(config-l2vpn)# p2p EoMPLS
ESR1(config-l2vpn-p2p)# interface gigabitethernet 1/0/2
ESR1(config-l2vpn-p2p)# pw 100 10.100.0.2
ESR1(config-l2vpn-pw)# pw-class VPWS
ESR1(config-l2vpn-pw)# enable
ESR1(config-l2vpn-pw)# exit
ESR1(config-l2vpn-p2p)# enable
ESR1(config-l2vpn-p2p)# exit
ESR1(config-l2vpn)# exit
ESR1(config-mpls)# forwarding interface gre 1
ESR1(config-mpls)# exit
ESR1(config)# security zone-pair untrusted self
ESR1(config-zone-pair)# rule 1
ESR1(config-zone-pair-rule)# action permit
ESR1(config-zone-pair-rule)# match protocol gre
ESR1(config-zone-pair-rule)# enable
ESR1(config-zone-pair-rule)# exit
ESR1(config-zone-pair)# exit
ESR1(config)# do com
ESR1(config)# do conf |
Блок кода | ||
---|---|---|
| ||
ESR2(config)# hostname ESR2
ESR2(config)#
ESR2(config)# system cpu load-balance mpls passenger ip
ESR2(config)# system cpu load-balance mpls passenger ipoe-pw-without-cw
ESR2(config)# security zone trusted
ESR2(config-zone)# exit
ESR2(config)# security zone untrusted
ESR2(config-zone)# exit
ESR2(config)#
ESR2(config)# router ospf 1
ESR2(config-ospf)# area 0.0.0.0
ESR2(config-ospf-area)# enable
ESR2(config-ospf-area)# exit
ESR2(config-ospf)# enable
ESR2(config-ospf)# exit
ESR2(config)#
ESR2(config)# interface gigabitethernet 1/0/1
ESR2(config-if-gi)# security-zone untrusted
ESR2(config-if-gi)# ip address 192.0.2.2/30
ESR2(config-if-gi)# exit
ESR2(config)# interface gigabitethernet 1/0/2
ESR2(config-if-gi)# description "From CE2"
ESR2(config-if-gi)# mode switchport
ESR2(config-if-gi)# exit
ESR2(config)# interface loopback 1
ESR2(config-loopback)# ip address 10.100.0.2/32
ESR2(config-loopback)# ip ospf instance 1
ESR2(config-loopback)# ip ospf
ESR2(config-loopback)# exit
ESR2(config)# tunnel gre 1
ESR2(config-gre)# key 60
ESR2(config-gre)# ttl 64
ESR2(config-gre)# mtu 1458
ESR2(config-gre)# ip firewall disable
ESR2(config-gre)# local address 192.0.2.2
ESR2(config-gre)# remote address 192.0.2.1
ESR2(config-gre)# ip address 10.0.0.2/30
ESR2(config-gre)# ip ospf instance 1
ESR2(config-gre)# ip ospf network point-to-point
ESR2(config-gre)# ip ospf
ESR2(config-gre)# enable
ESR2(config-gre)# exit
ESR2(config)#
ESR2(config)# mpls
ESR2(config-mpls)# ldp
ESR2(config-ldp)# router-id 10.100.0.2
ESR2(config-ldp)# address-family ipv4
ESR2(config-ldp-af-ipv4)# interface gre 1
ESR2(config-ldp-af-ipv4-if)# exit
ESR2(config-ldp-af-ipv4)# exit
ESR2(config-ldp)# enable
ESR2(config-ldp)# exit
ESR2(config-mpls)# l2vpn
ESR2(config-l2vpn)# pw-class VPWS
ESR2(config-l2vpn-pw-class)# exit
ESR2(config-l2vpn)# p2p EoMPLS
ESR2(config-l2vpn-p2p)# interface gigabitethernet 1/0/2
ESR2(config-l2vpn-p2p)# pw 100 10.100.0.1
ESR2(config-l2vpn-pw)# pw-class VPWS
ESR2(config-l2vpn-pw)# enable
ESR2(config-l2vpn-pw)# exit
ESR2(config-l2vpn-p2p)# enable
ESR2(config-l2vpn-p2p)# exit
ESR2(config-l2vpn)# exit
ESR2(config-mpls)# forwarding interface gre 1
ESR2(config-mpls)# exit
ESR2(config)# security zone-pair untrusted self
ESR2(config-zone-pair)# rule 1
ESR2(config-zone-pair-rule)# action deny
ESR2(config-zone-pair-rule)# match protocol gre
ESR2(config-zone-pair-rule)# enable
ESR2(config-zone-pair-rule)# exit
ESR2(config-zone-pair)# exit
ESR2(config)# do com
ESR2(config)# do conf |
Scroll Pagebreak |
---|
Блок кода |
---|
* Конфигурация туннеля*
ESR2# sh tunnels configuration gre 1
State: Enabled
Description: --
Mode: ip
Bridge group: --
VRF: --
Local address: 192.0.2.2
Remote address: 192.0.2.1
Calculates checksums for outgoing GRE packets: No
Requires that all input GRE packets were checksum: No
key: 60
TTL: 64
DSCP: Inherit
MTU: 1458
Path MTU discovery: Enabled
Don't fragment bit suppression: Disabled
Security zone: --
Multipoint mode: Disabled
Keepalive:
State: Disabled
Timeout: 10
Retries: 6
Destination address: --
*Статус cервиса и выделенные метки*
sh mpls l2vpn p2p
P2P: EoMPLS
gigabitethernet 1/0/2:
MTU: 1500
Status: Up
PW ID 100, Neighbor 10.100.0.1:
MTU: 1500
Status TLV: Enable
Last change: 00:14:27
Status: Up
ESR2# sh mpls forwarding-table
Local Outgoing Prefix Outgoing Next Hop
label label or tunnel ID Interface
-------- -------- ------------------------------------------- ---------------- ---------------------------------------
17 imp-null 10.100.0.1/32 gre 1 10.0.0.1
16 16 PW ID 100 -- 10.100.0.1
*Доступность*CE1# ping 10.100.0.2 detailed
PING 10.100.0.2 (10.100.0.2) 56 bytes of data.
64 bytes from 10.100.0.2: icmp_seq=1 ttl=0 time=1.38 ms
64 bytes from 10.100.0.2: icmp_seq=2 ttl=0 time=1.22 ms
64 bytes from 10.100.0.2: icmp_seq=3 ttl=0 time=1.33 ms
64 bytes from 10.100.0.2: icmp_seq=4 ttl=0 time=1.26 ms
64 bytes from 10.100.0.2: icmp_seq=5 ttl=0 time=1.17 ms
|
L3VPN
Примечание |
---|
При настройке MTU на туннеле необходимо учитывать следующее:
Ниже представлена примерная структура пакета: |
Scroll Pagebreak |
---|
Блок кода | ||
---|---|---|
| ||
CE1(config)# hostname CE1
CE1(config)#
CE1(config)# route-map BGP_OUT
CE1(config-route-map)# rule 1
CE1(config-route-map-rule)# exit
CE1(config-route-map)# exit
CE1(config)# router bgp 65501
CE1(config-bgp)# neighbor 10.10.0.2
CE1(config-bgp-neighbor)# remote-as 65500
CE1(config-bgp-neighbor)# address-family ipv4 unicast
CE1(config-bgp-neighbor-af)# route-map BGP_OUT out
CE1(config-bgp-neighbor-af)# enable
CE1(config-bgp-neighbor-af)# exit
CE1(config-bgp-neighbor)# enable
CE1(config-bgp-neighbor)# exit
CE1(config-bgp)# address-family ipv4 unicast
CE1(config-bgp-af)# network 10.100.0.0/24
CE1(config-bgp-af)# exit
CE1(config-bgp)# enable
CE1(config-bgp)# exit
CE1(config)#
CE1(config)#
CE1(config)# interface gigabitethernet 1/0/2
CE1(config-if-gi)# description "to ESR1"
CE1(config-if-gi)# ip firewall disable
CE1(config-if-gi)# ip address 10.10.0.1/30
CE1(config-if-gi)# exit
CE1(config)# interface loopback 1
CE1(config-loopback)# ip address 10.100.0.1/24
CE1(config-loopback)# exit |
Блок кода | ||
---|---|---|
| ||
CE2(config)# hostname CE2
CE2(config)#
CE2(config)# route-map BGP_OUT
CE2(config-route-map)# rule 1
CE2(config-route-map-rule)# exit
CE2(config-route-map)# exit
CE2(config)# router bgp 65502
CE2(config-bgp)# neighbor 10.10.0.5
CE2(config-bgp-neighbor)# remote-as 65500
CE2(config-bgp-neighbor)# address-family ipv4 unicast
CE2(config-bgp-neighbor-af)# route-map BGP_OUT out
CE2(config-bgp-neighbor-af)# enable
CE2(config-bgp-neighbor-af)# exit
CE2(config-bgp-neighbor)# enable
CE2(config-bgp-neighbor)# exit
CE2(config-bgp)# address-family ipv4 unicast
CE2(config-bgp-af)# network 10.101.0.0/24
CE2(config-bgp-af)# exit
CE2(config-bgp)# enable
CE2(config-bgp)# exit
CE2(config)#
CE2(config)#
CE2(config)# interface gigabitethernet 1/0/2
CE2(config-if-gi)# description "to ESR2"
CE2(config-if-gi)# ip firewall disable
CE2(config-if-gi)# ip address 10.10.0.6/30
CE2(config-if-gi)# exit
CE2(config)# interface loopback 1
CE2(config-loopback)# ip address 10.101.0.1/24
CE2(config-loopback)# exit
|
Конфигурация ESR1 и ESR2:
Блок кода | ||
---|---|---|
| ||
ESR1(config)# hostname ESR1
ESR1(config)#
ESR1(config)# ip vrf l3vpn_service
ESR1(config-vrf)# ip protocols bgp max-routes 100
ESR1(config-vrf)# rd 65500:1
ESR1(config-vrf)# route-target export 65500:1
ESR1(config-vrf)# route-target import 65500:1
ESR1(config-vrf)# exit
ESR1(config)#
ESR1(config)#
ESR1(config)# system cpu load-balance mpls passenger ip
ESR1(config)# security zone untrusted
ESR1(config-zone)# exit
ESR1(config)# security zone trusted
ESR1(config-zone)# exit
ESR1(config)#
ESR1(config)# route-map BGP_OUT
ESR1(config-route-map)# rule 1
ESR1(config-route-map-rule)# exit
ESR1(config-route-map)# exit
ESR1(config)# router bgp 65500
ESR1(config-bgp)# router-id 10.12.0.1
ESR1(config-bgp)# neighbor 10.12.0.2
ESR1(config-bgp-neighbor)# remote-as 65500
ESR1(config-bgp-neighbor)# update-source 10.12.0.1
ESR1(config-bgp-neighbor)# address-family vpnv4 unicast
ESR1(config-bgp-neighbor-af)# send-community extended
ESR1(config-bgp-neighbor-af)# enable
ESR1(config-bgp-neighbor-af)# exit
ESR1(config-bgp-neighbor)# enable
ESR1(config-bgp-neighbor)# exit
ESR1(config-bgp)# enable
ESR1(config-bgp)# vrf l3vpn_service
ESR1(config-bgp-vrf)# neighbor 10.10.0.1
ESR1(config-bgp-vrf-neighbor)# remote-as 65501
ESR1(config-bgp-vrf-neighbor)# address-family ipv4 unicast
ESR1(config-bgp-neighbor-af-vrf)# route-map BGP_OUT out
ESR1(config-bgp-neighbor-af-vrf)# enable
ESR1(config-bgp-neighbor-af-vrf)# exit
ESR1(config-bgp-vrf-neighbor)# enable
ESR1(config-bgp-vrf-neighbor)# exit
ESR1(config-bgp-vrf)# address-family ipv4 unicast
ESR1(config-bgp-vrf-af)# redistribute bgp 65500 route-map BGP_OUT
ESR1(config-bgp-vrf-af)# exit
ESR1(config-bgp-vrf)# enable
ESR1(config-bgp-vrf)# exit
ESR1(config-bgp)# exit
ESR1(config)#
ESR1(config)# router ospf 1
ESR1(config-ospf)# router-id 10.12.0.1
ESR1(config-ospf)# area 0.0.0.0
ESR1(config-ospf-area)# enable
ESR1(config-ospf-area)# exit
ESR1(config-ospf)# enable
ESR1(config-ospf)# exit
ESR1(config)#
ESR1(config)# interface gigabitethernet 1/0/1
ESR1(config-if-gi)# security-zone untrusted
ESR1(config-if-gi)# ip address 192.0.2.1/30
ESR1(config-if-gi)# exit
ESR1(config)# interface gigabitethernet 1/0/2
ESR1(config-if-gi)# ip vrf forwarding l3vpn_service
ESR1(config-if-gi)# description "from CE1"
ESR1(config-if-gi)# ip firewall disable
ESR1(config-if-gi)# ip address 10.10.0.2/30
ESR1(config-if-gi)# exit
ESR1(config)# interface loopback 1
ESR1(config-loopback)# ip address 10.12.0.1/32
ESR1(config-loopback)# ip ospf instance 1
ESR1(config-loopback)# ip ospf
ESR1(config-loopback)# exit
ESR1(config)# tunnel gre 1
ESR1(config-gre)# key 60
ESR1(config-gre)# ttl 64
ESR1(config-gre)# mtu 1472
ESR1(config-gre)# ip firewall disable
ESR1(config-gre)# local address 192.0.2.1
ESR1(config-gre)# remote address 192.0.2.2
ESR1(config-gre)# ip address 10.11.0.1/30
ESR1(config-gre)# ip ospf instance 1
ESR1(config-gre)# ip ospf
ESR1(config-gre)# enable
ESR1(config-gre)# exit
ESR1(config)#
ESR1(config)# mpls
ESR1(config-mpls)# ldp
ESR1(config-ldp)# router-id 10.12.0.1
ESR1(config-ldp)# address-family ipv4
ESR1(config-ldp-af-ipv4)# interface gre 1
ESR1(config-ldp-af-ipv4-if)# exit
ESR1(config-ldp-af-ipv4)# exit
ESR1(config-ldp)# enable
ESR1(config-ldp)# exit
ESR1(config-mpls)# forwarding interface gre 1
ESR1(config-mpls)# exit
ESR1(config)# security zone-pair untrusted self
ESR1(config-zone-pair)# rule 1
ESR1(config-zone-pair-rule)# action permit
ESR1(config-zone-pair-rule)# match protocol gre
ESR1(config-zone-pair-rule)# enable
ESR1(config-zone-pair-rule)# exit
ESR1(config-zone-pair)# exit |
Блок кода |
---|
ESR2(config)# hostname ESR2
ESR2(config)#
ESR2(config)# ip vrf l3vpn_service
ESR2(config-vrf)# ip protocols bgp max-routes 100
ESR2(config-vrf)# rd 65500:1
ESR2(config-vrf)# route-target export 65500:1
ESR2(config-vrf)# route-target import 65500:1
ESR2(config-vrf)# exit
ESR2(config)#
ESR2(config)#
ESR2(config)# system cpu load-balance mpls passenger ip
ESR2(config)# security zone untrusted
ESR2(config-zone)# exit
ESR2(config)# security zone trusted
ESR2(config-zone)# exit
ESR2(config)#
ESR2(config)# route-map BGP_OUT
ESR2(config-route-map)# rule 1
ESR2(config-route-map-rule)# exit
ESR2(config-route-map)# exit
ESR2(config)# router bgp 65500
ESR2(config-bgp)# router-id 10.12.0.2
ESR2(config-bgp)# neighbor 10.12.0.1
ESR2(config-bgp-neighbor)# remote-as 65500
ESR2(config-bgp-neighbor)# update-source 10.12.0.2
ESR2(config-bgp-neighbor)# address-family vpnv4 unicast
ESR2(config-bgp-neighbor-af)# send-community extended
ESR2(config-bgp-neighbor-af)# enable
ESR2(config-bgp-neighbor-af)# exit
ESR2(config-bgp-neighbor)# enable
ESR2(config-bgp-neighbor)# exit
ESR2(config-bgp)# enable
ESR2(config-bgp)# vrf l3vpn_service
ESR2(config-bgp-vrf)# neighbor 10.10.0.6
ESR2(config-bgp-vrf-neighbor)# remote-as 65502
ESR2(config-bgp-vrf-neighbor)# address-family ipv4 unicast
ESR2(config-bgp-neighbor-af-vrf)# route-map BGP_OUT out
ESR2(config-bgp-neighbor-af-vrf)# enable
ESR2(config-bgp-neighbor-af-vrf)# exit
ESR2(config-bgp-vrf-neighbor)# enable
ESR2(config-bgp-vrf-neighbor)# exit
ESR2(config-bgp-vrf)# address-family ipv4 unicast
ESR2(config-bgp-vrf-af)# redistribute bgp 65500 route-map BGP_OUT
ESR2(config-bgp-vrf-af)# exit
ESR2(config-bgp-vrf)# enable
ESR2(config-bgp-vrf)# exit
ESR2(config-bgp)# exit
ESR2(config)#
ESR2(config)# router ospf 1
ESR2(config-ospf)# router-id 10.12.0.2
ESR2(config-ospf)# area 0.0.0.0
ESR2(config-ospf-area)# enable
ESR2(config-ospf-area)# exit
ESR2(config-ospf)# enable
ESR2(config-ospf)# exit
ESR2(config)#
ESR2(config)# interface gigabitethernet 1/0/1
ESR2(config-if-gi)# security-zone untrusted
ESR2(config-if-gi)# ip address 192.0.2.2/30
ESR2(config-if-gi)# exit
ESR2(config)# interface gigabitethernet 1/0/2
ESR2(config-if-gi)# ip vrf forwarding l3vpn_service
ESR2(config-if-gi)# description "from CE2"
ESR2(config-if-gi)# ip firewall disable
ESR2(config-if-gi)# ip address 10.10.0.5/30
ESR2(config-if-gi)# exit
ESR2(config)# interface loopback 1
ESR2(config-loopback)# ip address 10.12.0.2/32
ESR2(config-loopback)# ip ospf instance 1
ESR2(config-loopback)# ip ospf
ESR2(config-loopback)# exit
ESR2(config)# tunnel gre 1
ESR2(config-gre)# key 60
ESR2(config-gre)# ttl 64
ESR2(config-gre)# mtu 1472
ESR2(config-gre)# ip firewall disable
ESR2(config-gre)# local address 192.0.2.2
ESR2(config-gre)# remote address 192.0.2.1
ESR2(config-gre)# ip address 10.11.0.2/30
ESR2(config-gre)# ip ospf instance 1
ESR2(config-gre)# ip ospf
ESR2(config-gre)# enable
ESR2(config-gre)# exit
ESR2(config)#
ESR2(config)# mpls
ESR2(config-mpls)# ldp
ESR2(config-ldp)# router-id 10.12.0.2
ESR2(config-ldp)# address-family ipv4
ESR2(config-ldp-af-ipv4)# interface gre 1
ESR2(config-ldp-af-ipv4-if)# exit
ESR2(config-ldp-af-ipv4)# exit
ESR2(config-ldp)# enable
ESR2(config-ldp)# exit
ESR2(config-mpls)# forwarding interface gre 1
ESR2(config-mpls)# exit
ESR2(config)# security zone-pair untrusted self
ESR2(config-zone-pair)# rule 1
ESR2(config-zone-pair-rule)# action permit
ESR2(config-zone-pair-rule)# match protocol gre
ESR2(config-zone-pair-rule)# enable
ESR2(config-zone-pair-rule)# exit
ESR2(config-zone-pair)# exit
|
После завершения настройки проверим статус сервиса и доступность узлов в сети:
Блок кода |
---|
*Конфигурация туннеля GRE*
ESR2# sh tunnels configuration
Tunnel State Description
---------------- -------- ------------------------------
gre 1 Enabled --
ESR2# sh tunnels configuration gre 1
State: Enabled
Description: --
Mode: ip
Bridge group: --
VRF: --
Local address: 192.0.2.2
Remote address: 192.0.2.1
Calculates checksums for outgoing GRE packets: No
Requires that all input GRE packets were checksum: No
key: 60
TTL: 64
DSCP: Inherit
MTU: 1472
Path MTU discovery: Enabled
Don't fragment bit suppression: Disabled
Security zone: --
Multipoint mode: Disabled
Keepalive:
State: Disabled
Timeout: 10
Retries: 6
Destination address: --
*Наличие vpnv4-маршрутов*
SR2# sh bgp vpnv4 unicast all
Status codes: * - valid, > - best, i - internal, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Codes Route Distinguisher IP Prefix Next hop Metric Label LocPrf Weight Path
----- --------------------- ------------------ --------------- ---------- ------- ---------- ------ ----------------
*> 65500:1 10.101.0.0/24 -- -- 34 100 -- 65502 i
*>i 65500:1 10.100.0.0/24 10.12.0.1 -- 16 100 0 65501 i
*Состояние протокола LDP*
ESR2# sh mpls ldp neighbor
Peer LDP ID: 10.12.0.1; Local LDP ID 10.12.0.2
State: Operational
TCP connection: 10.12.0.1:646 - 10.12.0.2:46444
Messages sent/received: 60/60
Uptime: 00:53:59
LDP discovery sources:
gre 1
ESR2# sh mpls forwarding-table
Local Outgoing Prefix Outgoing Next Hop
label label or tunnel ID Interface
-------- -------- ------------------------------------------- ---------------- ---------------------------------------
35 imp-null 10.12.0.1/32 gre 1 10.11.0.1
*Доступность узлов в сети*
CE2# ping 10.100.0.1 source ip 10.101.0.1 detailed
PING 10.100.0.1 (10.100.0.1) from 10.101.0.1 : 56 bytes of data.
64 bytes from 10.100.0.1: icmp_seq=1 ttl=0 time=1.32 ms
64 bytes from 10.100.0.1: icmp_seq=2 ttl=0 time=1.12 ms
64 bytes from 10.100.0.1: icmp_seq=3 ttl=0 time=1.14 ms
64 bytes from 10.100.0.1: icmp_seq=4 ttl=0 time=1.09 ms
64 bytes from 10.100.0.1: icmp_seq=5 ttl=0 time=1.15 ms
|