Для перемещения по дереву справки используйте строки заголовка.

Справка по NSG Linux 2.1.3
Дерево команд: mpls.…далее…

Что это такое?

Это коммутация MPLS (Multi Protocol Label Switching).

Зачем это нужно?

Для ускоренной и эффективной передачи пакетов различных протоколов через ядро сети. В отличие от IP-маршрутизации, дальнейший путь пакета на всех узлах внутри сети MPLS (label switching router, LSR) определяется не наилучшим совпадением IP-адреса и маски (переменной длины), а точным совпадением метки. Длина метки небольшая и фиксированная — 20 байт. Эта операция, во-первых, требует значительно меньше ресурсов, а во-вторых, может быть реализована аппаратно. Это критично для узлов с большим трафиком внутри сети. IP-маршрутизация выполняется только в узлах на границе сети MPLS (label edge router, LER). Таким образом, трудоёмкая задача интеллектуальной обработки пакетов сосредотачивается на периферии сети и может решаться простым увеличением числа периферийных устройств.

Как это настроить?

MPLS работает по принципу виртуальных каналов, образуемых между каждой парой смежных MPLS-маршрутизаторов. Каждый канал описывается уникальной меткой. Метка присваивается пакету на входе в сеть MPLS и удаляется на выходе. На промежуточных маршрутизаторах в ядре сети выполняется коммутация пакетов из одного виртуального канала в другой. Вся цепочка виртуальных каналов от входа до выхода из MPLS-сети образует виртуальный путь (label switched path, LSP).

В более сложном случае, заголовок пакета может содержать произвольное число меток MPLS. В этом случае они используются всегда по принципу стека, т.е. для коммутации используется только самая первая метка. Новые метки могут добавляться только в начало заголовка, а на выходе из MPLS-сегмента также удаляется первая или несколько первых меток.

Как можно видеть, концепция MPLS в значительной степени схожа с логическими каналами (LC) сетей X.25, виртуальными каналами (DLCI) сетей Frame Relay и виртуальными соединениями (VCI) сетей ATM. И формально, и по существу пакеты различных протоколов (IP и др.) инкапсулируются в пакет MPLS. В связи с этим виртуальный путь в сети MPLS называется также туннелем.

Чтобы настроить передачу пакетов IP через сеть MPLS, необходимо:

  1. На всех маршрутизаторах внутри и на периферии сети включить MPLS на всех портах, в которые должны приходить пакеты MPLS.
  2. На всех маршрутизаторах MPLS установить максимальное значение метки.
  3. На входных периферийных маршрутизаторах MPLS (ingress LER) для требуемых пакетов указать IP-маршрут с присвоением метки MPLS.
  4. На промежуточных маршрутизаторах в ядре сети (LSR) настроить коммутацию, которая формально заключается в замене одной метки на другую.
  5. На выходном периферийном маршрутизаторе (egress LER) указать особый случай коммутации — на локальный интерфейс lo. В этом случае пакет лишается метки MPLS и передаётся в процедуру IP-маршрутизации.

По сравнению с другими технологиями коммутации пакетов, настройка MPLS имеет следующие существенные особенности:

Значения меток от 0 до 15 зарезервированы для специальных целей. Максимальное значение метки MPLS составляет 220–1=1048575.

Что делать, если это не работает?

  1. Проверить, что нужные записи созданы в таблицах IP-маршрутизации на входном маршрутизаторе сети MPLS и в таблице MPLS-коммутации на промежуточных и выходном маршрутизаторах.
  2. Убедиться, что построен обратный MPLS-туннель.
  3. Последовательно проверить получение и отправку пакетов на всех узлах виртуального пути с помощью tcpdump.
ВНИМАНИЕ! Во всех случаях неправильной настройки MPLS пакеты MPLS просто уничтожаются, безо всяких попыток маршрутизировать их как-либо иначе. Это относится, в частности, к следующим случаям:

Пример конфигурации. Имеется сеть из трёх маршрутизаторов. Требуется обеспечить передачу пакетов между локальными сетями 192.168.0.0/24 и 192.168.2.0/24 по MPLS. Нечётные поезда едут, как известно, с востока на запад, чётные — с запада на восток. 8-))

Порты:
port 
: eth0 
: : ifAddress 
: : : prefix = "192.168.0.1/24"
: eth1 
: : ifAddress 
: : : prefix = "10.0.0.2/24"
: : mpls-in = true
system
: hostname = "SPB"
port 
: eth0 
: : ifAddress 
: : : prefix = "10.0.0.1/24"
: : mpls-in = true
: eth1 
: : ifAddress 
: : : prefix = "192.168.1.1/24"
: eth2 
: : ifAddress 
: : : prefix = "10.0.2.1/24"
: : mpls-in = true
system
: hostname = "NSK"
port 
: eth0 
: : ifAddress 
: : : prefix = "192.168.2.1/24"
: eth1 
: : ifAddress 
: : : prefix = "10.0.2.2/24"
: : mpls-in = true
system
: hostname = "VLD"
Входящие пакеты в сеть MPLS:
ip 
: route 
: : 1 
: : : network = "192.168.2.0/24"
: : : gateway = "10.0.0.1"
: : : mpls-label = "22"
 
ip 
: route 
: : 1 
: : : network = "192.168.0.0/24"
: : : gateway = "10.0.2.1"
: : : mpls-label = "31"
Коммутация внутри сети MPLS:
 
mpls 
: platform-labels = 1048575
: route 
: : 22 
: : : as = 32
: : : gateway = "10.0.2.2"
: : : device = "eth1"
: : 31 
: : : as = 21
: : : gateway = "10.0.0.2"
: : : device = "eth0"
 
Исходящие пакеты из сети MPLS:
mpls 
: platform-labels = 1048575
: route 
: : 21 
: : : device = "lo"
 
mpls 
: platform-labels = 1048575
: route 
: : 32 
: : : device = "lo"

© Network Systems Group 2015–2024 Отдел документации