MPLS — MultiProtocol Label Switching, технология коммутации пакетов по меткам. Данная технология позволяет существенно повысить скорость доставки пакетов из точки А в точку Б через маршрутизируемые сети, за счет кэширования маршрута по принципу работы технологии CEF (Cisco Express Forwarding).
Скорость обработки пакетов маршрутизатором увеличивается за счет уменьшения количества обрабатываемой маршрутной информации, помещения ее в кэшируемую память маршрутизатора и перехода на второй уровень модели OSI. При использовании технологии MPLS, маршрутизатор более не сверяется с таблицей маршрутизации, не вычисляет next-hop IP адрес, а обрабатывает и перенаправляет пакеты согласно номеру метки «прилепленной» к каждому пакету. Данная метка размещается в заголовке пакета между mac-адресом и IP адресом. Величина метки равна 32 битам или 4 байтам.
LSR — Label Switch Router, маршрутизатор, на котором включена функция MPLS. После включения MPLS, маршрутизатор сразу присваивает уникальные метки в виде номера всем сетям, содержащимся в его таблице маршрутизации (таблицу маршрутизации можно посмотреть командой show ip route), и помещает их в таблицу LIB (Label Information Base), в которой содержаться метки для существующих в таблице маршрутизации сетей, например, 7 = 172.16.1.0/24, 8 = 172.16.2.0/24, 9 = 172.16.3.0/24 и т.д. И так поступает каждый LSR.
Далее им предстоит обменяться своими метками с помощью протокола LDP (Label Distribution Protocol) подобно тому, как обмениваются маршрутами по протоколам RIP, OSPF, EIGRP и т.п. Результаты обмена заносятся в таблицу LFIB (Label Forwarding Information Base), которая определяет маршрут по меткам.
В процессе работы протокола LDP, маршрутизатор не составляет полную топологию сети, он всего лишь заносит в свою память метку и номер интерфейса, через который доступна требуемая сеть.
Представим топологию:
172.16.1.0——-(S0)Router1(S1)———-(S0)Router2(S1)———(S0)Router3(S1)———
Допустим на каждом маршрутизаторе правильно настроен динамический протокол маршрутизации и в их таблицах маршрутизации есть сеть 172.16.1.0. Включив MPLS, маршрутизаторы присвоят сети 172.16.1.0 свою метку и занесут ее в LIB, например:
- Router1: 45 = 172.16.1.0
- Router2: 780 = 172.16.1.0
- Router3: 67 = 172.16.1.0
С помощью протокола LDP они составят таблицу маршрутизации подобно представленной ниже:
- Router1: 45 -> pop
- Router2: 780 -> 45 -> S0
- Router3: 67 -> 780 -> S0
Алгоритм обработки меток маршрутизаторами примерно такой:
- 1. Когда Router3 получит пакет с меткой 67, он «оторвет» ее, «приклеит» на ее место метку с номером 780 и отправит через интерфейс Serial 0 для Router2.
- 2. Когда Router2 получит пакет с меткой 780, он «оторвет» ее, «приклеит» на ее место метку с номером 45 и отправит через интерфейс Serial 0 для Router1.
- 3. Когда Router1 получит пакет с меткой 45, он «оторвет» метку, развернет пакет (перейдет на уровень 3 модели OSI) и «увидит» IP адрес, который направит по назначению согласно таблице маршрутизации.
Маршрутизаторы могут расставить метки так: Router1: 45 = 172.16.1.0, Router2: 45 = 172.16.1.0, Router3: 45 = 172.16.1.0, что никоим образом не повлияет на функциональность, но они не могут расставить метки, например, так: Router1: 76 = 172.16.1.0, 76 = 172.16.2.0.
С 2003 года на устройствах Cisco по умолчанию включена технология CEF, которая необходима для функционирования MPLS. Если вы не уверены, включена она или нет, в режиме глобальной конфигурации наберите команду ip cef.
Простейший функционал MPLS настраивается в режиме конфигурации интерфеса командой mpls ip. LDP включается с помощью команды mpls label protocol ldp. Чтобы избежать фрагментацию пакетов, необходимо увеличить его размер на 12 байт задав значение командой mpls mtu 1512 также в режиме конфигурации интерфейса.
Все устройства, через которые проходят пакеты MPLS, должны поддерживать функцию обработки jumbo frames, в противном случае пакеты, превосходящие по размеру 1500 байт, будут отбрасываться.
Пример:
172.16.1.0-------(S0)Router1(S1)----------(S0)Router2(S1)-------- Router1(config)#ip cef Router1(config)#interface serial1 Router1(config-if)#mpls ip Router1(config-if)#mpls label protocol ldp Router1(config-if)#mpls mtu 1512 Router2(config)#ip cef Router2(config)#interface serial0 Router2(config-if)#mpls ip Router2(config-if)#mpls label protocol ldp Router2(config-if)#mpls mtu 1512