Основы MPLS

25 октября 2010 г.

Добрый день. Сейчас я попытаюсь простым и ясным языком донести до вас саму суть технологии, которая стремительно набирает популярность в средне-крупных компаниях, но почему-то считается среди населения чем-то невероятно сложным. Я постараюсь не углубляться в специфику конкретных вендоров. Кроме того, я сделаю ряд упрощений, которые позволят читателю легче понять материал — например, я буду рассматривать исключительно Ethernet в роли протокола канального уровня и IP — в роли сетевого протокола. Кроме того, я опущу ряд деталей, которые принципиально ни на что не влияют, но могут существенно усложнить описание протокола.

Сначала — коротко о том, как MPLS работает.
Каждый маршрутизатор в сети MPLS просматривает свою таблицу маршрутизации и назначает каждому префиксу (маршруту) метку, которую заносит в базу LIB (Label Information Base). Метка — просто некоторое случайное число, от 16 (0-15 зарезервированы) до 2^20. Между всеми соседними маршрутизаторами с включенным MPLS поднимаются соседства по соответствующему протоколу, на данный момент практически всегда используется LDP — Label Distribution Protocol. По этому протоколу маршрутизатор сообщает всем поголовно соседям, какие метки каким префиксам он назначил, и соседи заносят эту информацию в таблицу под названием LFIB (Label Forwarding Information Base), вместе с меткой, которую они назначили каждому префиксу. Процесс повторяется на каждом следующем устройстве.

Итак, представим себе, что в сеть MPLS входит IP пакет. Первый LSR (Label Switched Router — маршрутизатор с включенным MPLS) анализирует IP-заголовок и находит у себя в таблице LFIB нужный маршрут. Рядом с ним будет сказано, по какому интерфейсу следует передать пакет, и какую метку ожидает увидеть сосед, получив пакет до указанной подсети. На пакет между заголовками канального и сетевого уровня вешается заголовок MPLS, в котором, самое главное, содержится метка, и пакет отправляется соседу.

Далее самое интересное. Получив пакет с меткой, соседний маршрутизатор изучает ТОЛЬКО метку. Он не смотрит ни на mac-адреса, ни на IP-адреса. Он просматривает свою LFIB и находит пункт, в котором в поле Local Label (т.е. «назначенная им же метка») светится полученная сетка. В соседних графах будет сказано, по какому интерфейсу следует отправить пакет и какую метку ожидает увидеть сосед на пакете до этой подсети. Метка в пакете заменяется и пакет следует дальше.

Процесс продолжается, пока пакет не дойдет до последнего в цепочке LSR. Тот опять смотрит на принятую метку, открывает LFIB и видит, что дальше пакет следует посылать уже без метки. Заголовок срывается с пакета, роутер смотрит в таблицу маршрутизации, находит mac и IP следующего устройства, заменяет маки в заголовке канального уровня, и отправляет пакет дальше.

Важно понимать, что на данном этапе MPLS никак не влияет на маршрут пакета. Вы спросите — так зачем нужны такие сложности? Объясню. Изначально MPLS разрабатывался в конце 90-х годов для того, чтобы обеспечить максимальное быстродействие маршрутизации пакетов в сети провайдера. И MPLS действительно давал существенный выигрыш по сравнению с традиционной маршрутизацией. Но прошли годы, все вендоры разработали средства, позволяющие добиться максимального ускорения маршрутизации, у той же Cisco появился CEF, были выпущены L3 коммутаторы, производительность которых, по сути, ограничена лишь физической пропускной способностью интерфейсов (мы сейчас не будем рассматривать ограничения, связанные с backplane и т.д., это тема для отдельной статьи). На данный момент производительность коммутации MPLS примерно равна производительности маршрутизации IP.

Вся прелесть MPLS начинается, когда на пакет вешается несколько меток, которые все вместе называются стеком. В следующей серии я расскажу вкратце о двух наиболее популярных технологиях, реализованных поверх MPLS — MPLS VPN (содержание нескольких независимых таблиц маршрутизации на одном устройстве) и MPLS TE (безгранично гибкий способ управления трафиком в MPLS сети с равномерным распределением нагрузки по разным каналам).

p.s. если кому интересно, как конфигурируется MPLS в указанном виде на устройствах Cisco — тут все проще некуда. С обоих сторон каждого интерфейса между LSR введите команду «mpls ip». Вот и все.

Теги:
рубрика Интернет