...
- Режим обмена информации о меткаx — Downstream Unsolicited;
- Механизм контроля за распространением меток — Independent Label Distribution Control;
- Режим сохранения меток — Liberal Label Retention.
Предупреждение |
---|
На интерфейсах, где включены протокол LDP и MPLS-коммутация, firewall должен быть отключен. |
Примечание |
---|
В текущей реализации протокол LDP работает только с IPv4-адресами. |
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | В контексте настройки параметров MPLS указать интерфейсы, участвующие в процессе MPLS-коммутации. | esr(config-mpls)# forwarding interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
2 | Задать router-id для LDP (не обязательно, если указан transport-address). | esr(config-ldp)# router-id { <ID> | <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]. |
4 | В контексте настройки address family ipv4 указать интерфейсы для включения на них процесса LDP. | esr(config-ldp-af-ipv4)# interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
5 | Включить процесс LDP. | esr(config-ldp)# enable | |
6 | Включить функционал explicit-null (не обязательно). | esr(config-ldp)# egress-label-type explicit-null | |
7 | В режиме конфигурирования соседа 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 |
---|
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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> [ unit <ID> ] | <ADDR/LEN> – IP-адрес и маска подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. <ID> – номер юнита, принимает значения [1..2]. |
4 | В контексте настройки LDP применить созданную object-group. | esr(config-ldp)# advertise-labels <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
Примечание |
---|
Метки будут выделяться ТОЛЬКО на описанные в object-group подсети, независимо от того, как они были изучены (connected, local, IGP и т. д.). |
Информация |
---|
Данный функционал поддержан для протокола IPv4. |
Пример настройки
Задача:
Назначить MPLS-метки только FEC 10.10.0.2/32 и 10.10.0.1/32.
Scroll Pagebreak |
---|
Решение:
На ESR_A и ESR_B создадим object-group ADV_LABELS типа network и добавим в нее префиксы 10.10.0.1/32 и 10.10.0.2/32 соответственно:
...
Включить поддержку Jumbo-фреймов с помощью команды system jumbo-frames (для вступления изменений в силу требуется перезагрузка устройства);
- Настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке выше;
- Организовать обмен маршрутами между PE1 и PE2 при помощи IGP-протокола (OSPF, IS-IS, RIP).
Scroll Pagebreak |
---|
...
Блок кода |
---|
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 |
...
Блок кода |
---|
PE2# configure PE2(config)# interface gigabitethernet 1/0/4.100 PE2(config-if-sub)# 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 |
Scroll Pagebreak |
---|
Убедимся в установлении соседства по протоколу LDP и выведем информацию по статусу виртуального канала (pseudowire) между PE1 и PE2:
...
Укажем RD, RT, VE-ID, VPN ID согласно схеме сети и активируем сервис:
Подсказка |
---|
В некоторых случаях можно отказаться от ввода таких параметров, как RD и RT: если указать только VPN ID, то они будут сформированы следующим образом: <номер AS> : <vpn-id>. Например, есть номер автономной системы AS 65550, vpn-id указан 10, тогда cгенерируются следующие параметры: RD - 65550: 10. RT import/export - 65550:10. |
Блок кода |
---|
PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# rd 65500:100 PE1(config-bgp)# route-target import 65500:100 PE1(config-bgp)# route-target export 65500:100 PE1(config-bgp)# ve id 1 PE1(config-bgp)# vpn id 1 PE1(config-bgp)# exit PE1(config-l2vpn-vpls)# enable |
...
Блок кода |
---|
PE2# show bgp l2vpn vpls all Status codes: * - valid, > - best, i - internal, S - stale Origin codes: i - IGP, e - EGP, ? - incomplete Codes Route Distinguisher VID VBO VBS Next hop Metric LocPrf Weight Path ----- --------------------- ----- ----- ----- --------------- ---------- ---------- ------ ------------------- *> 65500:100 2 1 10 -- -- -- -- *>i 65500:100 1 1 10 10.10.0.1 -- 100 0 i |
Подсказка | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Просмотреть вычисленные сервисные метки можно следующим образом:
|
...
Сервис L3VPN позволяет объединить распределенные клиентские IP-сети и обеспечить передачу трафика между ними с рамках единой VRF.
Примечание |
---|
В текущей реализации протокола MP-BGP поддержана передача только VPN-IPv4 маршрутов (AFI = 1, SAFI = 128). |
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить адресацию и один из протоколов IGP на всех P и PE-маршрутизаторах. | ||
2 | Настроить распространение транспортных меток по протоколу LDP. | ||
3 | Создать VRF. | esr(config)# ip vrf <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
4 | Указать route distinguisher для данного VRF. | esr(config-vrf)# rd <RD> | <RD> – значение Route distinguisher, задается в одном из следующих видов:
|
5 | Указать route target import для данного VRF. | esr(config-vrf)# route-target import <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
6 | Указать route target export для данного VRF. | esr(config-vrf)# route-target export <RT> | <RT> – значение route-target, задается в одном из следующих видов:
|
7 | Указать разрешенное количество маршрутов для данного VRF. | esr(config-vrf)# ip protocols <PROTOCOLS> max-routes <VALUE> | <PROTOCOL> – вид протокола, принимает значения: rip (только в глобальном режиме), ospf, isis, bgp; <VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:
|
8 | В рамках настройки address-family VPNv4 протокола BGP включить передачу расширенных атрибутов. | esr(config-bgp-neighbor-af)# send-community extended |
...
Создадим VRF на ESR1 и ESR3 соответственно. Укажем RD, rt-export/import в соответствии со схемой, настроим интерфейс для взаимодействия с CE (CE-SiteA и CE-SiteB). Дополнительно создадим route-map для разрешения анонсирования маршрутов по протоколу BGP:
Примечание |
---|
Без указания атрибутов RD и RT маршрутная информация не попадет в таблицу VPNv4. |
Блок кода | ||
---|---|---|
| ||
ESR1(config)# ip vrf Customer1 ESR1(config-vrf)# ip protocols bgp max-routes 1000 ESR1(config-vrf)# rd 65500:100 ESR1(config-vrf)# route-target import 65500:100 ESR1(config-vrf)# route-target export 65500:100 ESR1(config-vrf)# exit ESR1(config)# interface gigabitethernet 1/0/2 ESR1(config-if-gi)# ip vrf forwarding Customer1 ESR1(config-if-gi)# description "Customer1" ESR1(config-if-gi)# ip firewall disable ESR1(config-if-gi)# ip address 192.168.32.1/30 ESR1(config-if-gi)# exit ESR1(config)# route-map OUTPUT ESR1(config-route-map)# rule 1 ESR1(config-route-map-rule)# action permit ESR1(config-route-map-rule)# exit ESR1(config-route-map)# exit ESR1(config)# do commit ESR1(config)# do confirm |
...
Согласно топологии, Customer1 анонсирует по BGP (AS65505) подсеть 10.100.0.0/24. Необходимо настроить соответствующие интерфейсы, eBGP между ESR1 и CE_SiteA. Также необходимо разрешить анонсирование маршрутов в сторону PE.
Предупреждение |
---|
По умолчанию для eBGP анонсирование маршрутов запрещено, необходимо настроить разрешающее правило. Для iBGP анонсирование маршрутов разрешено. |
Scroll Pagebreak |
---|
Необходимая конфигурация на маршрутизаторе CE-SiteA:
...
Блок кода | ||
---|---|---|
| ||
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 достаточно настроить передачу (redistribute) маршрутов в этом VRF. Пример конфигурации передачи в VPNv4 таблицу connected- и static-сетей:
|
...
Подсказка |
---|
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-заголовке для добавления в расчет хеша.
|
Подсказка |
---|
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.
...
Для организации L2VPN-сервиса необходимо настроить на устройстве бридж-домен, создать требуемые AC, PW (LDP-signaling) и связать все данные элементы с бридж-доменом.
Информация |
---|
Для point-to-point бридж-домен создается автоматически. |
Между элементами бридж-домена осуществляется коммутация трафика на основании перечисленных правил:
...
Блок кода |
---|
PE1# config PE1(config)# mpls PE1(config-mpls)# l2vpn PE1(config-l2vpn)# vpls MARTINI_br PE1(config-l2vpn-vpls)# transport-mode vlan PE1# sh mpls l2vpn pseudowire Neighbor PW ID Sig Type Status --------------------------------------- ---------- --- ---------- ------ 10.10.0.2 200 LDP Eth Tagged Up |
Примечание |
---|
В LDP signaling транспортный режим согласуется между PE в процессе создания псевдо-провода, поэтому он должен совпадать на обоих PE. |
Рассмотрим правила обработки трафика:
...
Значение MTU также участвует в сигнализации при построении псевдо-провода как в LDP-signaling, так и в BGP-signaling. Ниже рассмотрены примеры настройки для обоих случаев:
Подсказка |
---|
Для сигнализации (LDP, BGP) значение MTU по умолчанию – 1500. |
Предупреждение |
---|
Значения MTU, участвующие в сигнализации, не влияют на фактический размер пакета, проходящего по псевдо-проводу. |
Scroll Pagebreak |
---|
...
Блок кода |
---|
PE1(config-l2vpn)# vpls l2vpn_MTU PE1(config-l2vpn-vpls)# autodiscovery bgp PE1(config-bgp)# mtu 2000 PE2# sh mpls l2vpn vpls l2vpn_MTU ... PWs: PW ID 2, Neighbor 10.10.0.1: MTU: 2000 Last change: 00:00:10 Status: Down Reason: MTU mismatch |
Примечание | ||
---|---|---|
В BGP-signaling можно отключить проверку MTU для сервиса:
Теперь при согласовании значение MTU будет игнорироваться. |
По умолчанию бридж-домен имеет MTU равным 1500 байт. Стоит отметить, что бридж-домен автоматически выбирает наименьшее значение MTU, исходя из собственного MTU и MTU интерфейсов, включенных в бридж-домен.
...
В отличие от Option A, между ASBR нет необходимости использовать VRF: при передаче трафика между ASBR будет навешиваться mpls-метка. Данная схема имеет лучшую масштабируемость.
Примечание |
---|
В текущей реализации Option B поддержана только для VPN-IPv4 маршрутов (AFI = 1, SAFI = 128). |
L3VPN
Scroll Pagebreak |
---|
...
В качестве сервиса 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 |
...
Блок кода |
---|
* Конфигурация туннеля* 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 |
---|
...