Назад в библиотеку

Предлагаемая архитектура для интеграции активных сетей и MPLS

Автор: Sanda Dragos , Martin Collier
Автор перевода - Ткаченко М.А
Источник: http://elm.eeng.dcu.ie/~bssl/papers/SDragos-Softcom02.pdf

Аннотация

Многопротокольная коммутация по меткам (MPLS) была первоначально задумана как технология быстрой коммутации для базовых сетей, но оказалась очень полезной для обеспечения управления трафиком и возможности QoS маршрутизации в Интернете. Таким образом, MPLS начинает появляться на границе сети, а также в ядре сети. Современные пограничные маршрутизаторы, как правило, имеют возможность многоуровневой коммутации для поддержки пакетных услуг внутри сети, в то время как MPLS использует коммутацию второго уровня. Эта статья описывает способ для эмуляции возможностей многоуровневых коммутаторов MPLS путем объединения его с концепцией активных сетей.

Ключевые слова: MPLS, активные сети, сети доступа, Linux.

1.Введение

Основной функцией сети является передача пакетов из одной конечной точки к другой. Тем не менее, существуют ситуации, в которых пакеты должны быть обработаны внутри сети. Примерами таких ситуаций являются межсетевые экраны, веб-прокси, широковещательные маршрутизаторы, мобильные маршрутизаторы или другие подобные услуги, которые должны получить доступ к информации из заголовка пакета, чтобы решить, отбросить текущий пакет или определить по какому пути его следует направить. В более общем случае заголовок пакета или данные могут быть изменены.

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

В этой статье мы предлагаем интеграцию многопротокольной коммутации по меткам с концепцией активных сетей в качестве решения для будущего сетей доступа. В результате сеть будет предоставлять все возможности MPLS, и, кроме того, будет использовать активные пакеты для обработки пакетов. Обзор MPLS и активных сетей,а также мотивация для их интеграции представлены в разделе 2. В разделе 3 предлагается архитектура для такой интеграции, а в разделе 4 описывается реализация, которая доказывает, что такая интеграция возможна.

2. Основная часть

2.1 Обзор MPLS

MPLS [1, 2, 3] это технология коммутации на основе меток, которая первоначально была разработана для выполнения быстрой коммутации в ядре сети. Аргументом для этого было то, что алгоритм «определение самого длинного префикса», является более сложным и трудоемким, чем точное соответствие используемого в MPLS, где метка является индексом в таблице.

Со временем, технология MPLS доказала, что имеет другие качества даже более привлекательные, чем быстрая коммутация [4]. Будучи относительно простым протоколом с установлением соединения, она оказалась подходящей для реализации управления трафиком и поддержания необходимого уровня качества обслуживания (QoS), более простым способом, чем с помощью IP. Заголовки пакетов (заголовок транспортного уровня (TCP) и заголовок сетевого уровня (IP)) анализируются только один раз, когда пакет входит в MPLS сеть, чтобы определить его метку.

После этого коммутация основана на этой метке – следующий узел MPLS проверяет эту метку и решает, что делать с этим пакетом: оставить ту же метку, добавить метку или поменять метку и пересылает пакет на другой узел MPLS. Желание обеспечить QoS возможности MPLS из конца-в-конец побуждает ее развертывание не только в базовой сети, но и в сети доступа. Таким образом, многие сейчас выступают за использование сетей MPLS в сети доступа[5].

Однако недостатком MPLS является то, что процесс пересылки непрозрачен из-за того, что сеть не чувствительна к пакетам, которые передает, и они передаются между узлами MPLS без изменений. Но в сети бывают ситуации, когда такие изменения необходимы. В современных сетях, есть два метода реализации таких вычислений в сети: В традиционном («пассивном») методе, обработка в сети в основном ограничена для маршрутизации, управления перегрузкой и QoS схем, которые выполняют такие вычисления фиксированных элементов в сети. Такая сеть создает трудности в интеграции новых технологий и стандартов в общую сетевую инфраструктуру, в сокращении избыточных операций на нескольких уровнях протоколов и в размещении новых услуг в рамках существующей архитектурной модели.

Инновационная идея была предложена в работе [6] в качестве решения этой проблемы: дать пользователю возможность программировать сеть. Эта технология называется активные сети [7, 8, 9].

2.2 Активные сети

Активные сети являются «активными» в двух случаях: узлы в сети могут выполнять вычисления для пакетов, проходящих через них; пользователи могут «программировать» сеть, предоставляя свои собственные программы для выполнения таких расчетов [7]. Есть три архитектуры подходов к осуществлению активных сетей. Они отличаются по размещению кода в сети.

2.2.1 Архитектура активных узлов

В работах [7, 8] определяют ее как дискретную модель или подход программируемого переключения, потому что программы и данные, осуществляются отдельно (то есть являются дискретными), в то время как [9] относится к нему как подход активного узла.

При таком подходе, пакеты переносят некоторые идентификаторы или ссылки на встроенные функции, которые находятся в активных узлах. Пакеты решают, какие функции будут выполняться по их данным, но фактический код находится в активном узле.

2.2.2 Архитектура активных пакетов

Подход активных пакетов, называют комплексным подходом в [7, 8], он характеризуется тем, что код располагается в пакете. Узлы также активны, поскольку они позволяют использовать прикладной уровень для определения места, но в них нет активного кода. Это является причиной, почему [9] называет этот подход как подход активных пакетов. Код, который располагается в пакете, в активном узле не может быть очень большим, он состоит только из «примитивных» инструкций, которые выполняют основные расчеты на содержание пакета.

2.2.3 Архитектура активных пакетов и активных узлов

Третий подход представляет собой комбинацию двух предыдущих, где активные пакеты переносят фактический код или другие более сложные коды, которые находятся в активных узлах. Используя этот метод, пользователь может выбрать либо подход активных пакетов, либо подход активных узлов в зависимости от характера их применения.

2.3 Терминология в MPLS

Основными элементами сети MPLS являются узлы/маршрутизаторы MPLS, которые называются Label Switching Routers- маршрутизаторы, коммутирующие по меткам (LSR,). Они пересылают пакеты в сети MPLS. Маршрутизаторы на границе сети MPLS, называются Label Edge Routers(LERs) – пограничными маршрутизаторами, они изучают заголовки пакетов и на основе информации в этих заголовках пакету присваивается класс сетевого уровня – Forwarding Equivalence Class (FEC). Все пакеты в пределах одного класса будут помечены одинаковой меткой и будут рассматриваться в сети в равной степени.

Примечание: Мы в статье в дальнейшем будем называть узел MPLS с активными возможностями как «активный LSR».

3. MPLS и активные сети

Учитывая аргументы в предыдущем разделе, мы предлагаем интеграцию MPLS с активными сетями в качестве возможного решения для будущих сетей доступа.

На рисунке 1 показано, как маршрутизаторы IP-сети могут быть дополнены, чтобы стать активными маршрутизаторами. Активные маршрутизаторы могут сосуществовать и взаимодействовать с существующими IP-маршрутизаторами, которые прозрачно пересылают пакеты в традиционной манере.

Рисунок 1 – Обработка пакета в узлах прежней активной сети

Рисунок 1 – Обработка пакета в узлах прежней активной сети

На рисунке 2 предлагается сеть, в которой некоторые LSR дополнены активными возможностями. Прежние и активные LSR могут сосуществовать и взаимодействовать.

Рисунок 2 – Обработка пакета в узлах активной сети с MPLS

Рисунок 2 – Обработка пакета в узлах активной сети с MPLS

Более подробно архитектура активного LSR показана на рисунке 3. Пакет определяется как «активный» пакет или не содержащий метку. Если пакет является «активным», он отправляется на IP уровень, а оттуда на соответствующий активный код для обработки. После обработки, пакет отправляется обратно в MPLS, как будто это было локально. Затем для пакета определяется его класс сетевого уровня и пакету назначается метка, в соответствии с этим классом.

Рисунок 3 – Архитектура активного MPLS

Рисунок 3 – Архитектура активного MPLS

Использование этой архитектуры только для активных пакетов (как идентификацию по метке), позволяет активным LSR обрабатываться активными кодами. Обычные пакеты будут обработаны в соответствии со стандартным протоколом MPLS.

4. Реализация

Для доказательства концепции интеграции MPLS и активных сетей, мы создали минимальную сеть MPLS с помощью MPLS-Linux реализации [10], как показано на рисунке 4. Мы установили метки, и отослали пакеты от LSR А к LSR С через LSR B.

Рисунок 4 – Минимальная MPLS сеть

Рисунок 4 – Минимальная MPLS сеть

Мы задали метки так, чтобы активные пакеты, которые проходят из LSR А к LSR С, прибыв в LSR B идентифицировались по определенной метке и, следовательно, отправлялись на IP уровень. Затем, используя Netfilter структуру, мы реализовали тривиальный пример модификации пакета. Netfilter [11, 12, 13] является частью сети программного обеспечения Linux ядра. Эта система предлагает возможность «изменения пакета» (т.е. изменение заголовка или содержимого). Для каждого сетевого протокола Netfilter использует «метки», которые показывают изменения в пакете в стеке протоколов.

В IPv4 существует 5 таких «меток» как показано на рисунке 5:

Части ядра могут анализировать различные метки для каждого протокола. Если кто-то уже назначил метку для конкретного протокола, пакеты, входящие в стек протоколов, могут быть направлены в структуру Netfilter, где они могут быть отброшены (NF Drop), приняты (NF принимает) или поставлены в очередь (NF ОЧЕРЕДЬ).

Пакеты в очереди посылаются в интерфейс пользователя, где пакет можно изменить, проверить или оставить для него такую же метку,с которой он вышел из ядра.

Пакеты также могут быть обработаны непосредственно в ядре. Однако, нагрузка на ядро будет увеличена, что может отрицательно повлиять на производительность операционной системы. Процесс принятия пакетов, поступающих после прихода активного пакета, будет замедлен, пока активный пакет находится в стадии обработки. Когда обрабатывается активный пакет в интерфейсе пользователя, обычные пакеты, которые смогли пройти, не задерживаются, а активные пакеты поступают асинхронно (при необходимости) в поток пакетов после обработки.

С помощью Netfilter структуры была назначена метка для идентификации IPv4 (NF PRE IP Routing), которая находится на входе пакета в стеке протоколов, сразу после метки проверки готовности к работе. Мы проанализировали пакеты, которым присвоены метки и которые стояли в очереди, в интерфейсе пользователя.

Рисунок 5 - Изменение узла MPLS

Рисунок 5 - Изменение узла MPLS

Мы написали одно из таких приложений, которое модифицирует исходный адрес пакета. Мы протестировали систему, посылая ICMP (Internet Control Message Protocol) cообщения от LSR A к LSR C, это показано на рисунке 6.

Ответное ICMP сообщение должно быть получено LSR A как ответ на каждое отправленное ICMP сообщение, но т. к. пакеты от LSR A адресованные LSR С проходят через LSR В, их адрес источника был изменен на адрес LSR D

Рисунок 6 – Проведенный эксперимент

Рисунок 6 – Проведенный эксперимент

LSR C получив ICMP сообщения, увидит, что пакеты пришли из другого назначения (в качестве пункта назначения адрес был изменен) и отправит ответ на это назначение, а именно на LSR D.

Несмотря на то,что это всего лишь интерпретация «доказательство концепции», это необходимо для симуляции активной сети MPLS, в которой мы рассмотрели LSR B, как «активный» LSR, поэтому он направляет пакеты, полученные с определенной меткой по стеку IP протокола. С IP стека мы взяли пакет, и отправили его в приложение, которое изменяет пакет (например, адреса источника). Модифицированный пакет затем добавили метку и отправили на следующий узел.

В предыдущих LSR транзитный пакет будет отправлен на уровень MPLS, где используя метки, пакет направится на следующий узел. В предложенной нами структуре активные LSR и поступающие пакеты с метками, которые указывают, что они «активные» направляются на сетевой уровень (IP), а оттуда на активный код. Этот эксперимент используется для обеспечения активной поддержки пакетов в сетях MPLS. Преимущества предоставления такой поддержки зависят от возможностей активного кода и его взаимодействия с программным обеспечением MPLS. Мы в настоящее время разработки интерфейса между Linux-MPLS и реализации наших активных модулей кода, что позволит активным пакетам, которые будут использоваться для тонкой настройки работы MPLS таким образом, чтобы эмулировать особенности многоуровневых технологий коммутации. Эта функция может быть использована в решении проблем, таких как MPLS на основе балансировки нагрузки [14].

5.Выводы

Мы предлагаем в этой статье интеграцию двух технологий, многопротокольной коммутации по меткам и активных сетей. Интеграция этих технологий преодолевает значительное ограничение MPLS в сетях доступа, а именно ее неспособность коммутации выше второго уровня. Мы реализовали прототип сети с помощью Linux, что доказывает справедливость этой концепции. Будущая работа будет на реализацию гибкой концепции активной MPLS для решения такой задачи, как межсетевой экран, без проверки IP или TCP заголовков.

Список использованной литературы

1.E. Rosen, A. Viswanathan, and R. Callon. Multiprotocol label switching architecture. Technical Report RFC3031, IETF, 2001.
2.Eric W. Gray. MPLS Implementing the technology. Addison-Wesley, 2001.
3.Uyless Black. MPLS and Label Switching Networks. Prentice Hall, 2001.
4.Sanda Dragos, Radu Dragos, and Martin Collier. Bandwidth management in mpls networks, 2001. http://telecoms.eeng.dcu.ie/symposium/papers/B1.pdf.
5.Guy Chenard. Mpls in the access: Creating differentiated cos for ip-based services http://www.mplsworld.com/archi news/itv/itv 10 gchenard.htm
6.Active networks. http://www.darpa.mil/ato/programs/activenetworks/actnet.htm
7.D. L. Tennenhouse and D. J. Wetherall. Towards an active network architecture. Computer Communication Review, 26(2), April 1996.
8.David L. Tennenhouse, Jonathan M. Smith, W. David Sin-coskie, David J. Wetherall, and Gary J. Minden. A survey of active network research. IEEE Communications Magazine, 35(1):80–86, 1997.
9.Konstantinos Psounis. Active networks: Applications, security, safety, and architectures. IEEE Communications Surveys, pages 1–16, First Quarter 1999.
10.Mpls for linux project http://mpls-linux.sourceforge.net/.
11.Rusty Russell. Linux netfilter hacking howto. http://netfilter.samba.org/unreliable-guides/netfilter-hacking-HOWTO/index.html.
12.Rusty Russell. Netfilter: Packet mangling in 2.4. September 1999. Augsburg.
13.Rusty Russell. Writing a module for netfilter. Linux Magazine, June 2000.
14. Radu Dragos, Sanda Dragos, and Martin Collier. Design and implementation of an mpls based load balancing architecture for web switching. to be published on the 15th ITC Specialist Seminar: Internet Traffic Engineering and Traffic Management, 2002.