Научная статья на тему 'Программно-конфигурируемые сети на основе протокола OpenFLOW'

Программно-конфигурируемые сети на основе протокола OpenFLOW Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1086
161
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММНО-КОНФИГУРИРУЕМЫЕ СЕТИ / ПОТЕРИ ПАКЕТОВ / OPENFLOW / SOFTWARE DEFINED NETWORKS / PACKET LOSS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Лихачев В.А.

В статье рассмотрено применение программно-конфигурируемых сетей для решения задачи определения потерь пакетов в сети. Разработан алгоритм, который позволяет решить эту задачу, не создавая дополнительной нагрузки на коммутаторы.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SOFTWARE-DEFINED NETWORKS BASED ON OPENFLOW PROTOCOL

N this article the use of software-defined networks for solving the problem of determination of packet loss in network is considered. The algorithm is developed which allows solving this problem without additional load on switches.

Текст научной работы на тему «Программно-конфигурируемые сети на основе протокола OpenFLOW»

УДК 004.77

В.А. Лихачев

бакалавр техники и технологии по направлению «Информатика и вычислительная техника», ФГБОК ВПО «Владимирский государственный университет А.Г. и Н.Г. Столетовых»

ПРОГРАММНО-КОНФИГУРИРУЕМЫЕ СЕТИ НА ОСНОВЕ ПРОТОКОЛА OPENFLOW

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

Ключевые слова: программно-конфигурируемые сети, потери пакетов, OpenFLOW.

V.A. Likhachev, Vladimir State University named after Alexander and Nicolay Stoletovs

SOFTWARE-DEFINED NETWORKS BASED ON OPENFLOW PROTOCOL

Abstract. In this article the use of software-defined networks for solving the problem of determination of packet loss in network is considered. The algorithm is developed which allows solving this problem without additional load on switches.

Keywords: software defined networks, packet loss, OpenFLOW.

Введение

Современные сети являются статичными, в отличие от серверов, которые обязаны этим технологии виртуализации. Для оптимизации загрузки серверов виртуальные машины в крупных центрах обработки данных часто мигрируют, что меняет точки привязки трафика. Существующие способы адресации, деления сетей и конфигурирования сетевого оборудования в таких сетях становятся неэффективными [1]. Для решения этих проблем была разработана концепция SDN (Software-Defined Network). Она зародилась в Стэндфордском университете, когда понадобилось создать сеть для экспериментов, а строить отдельную было дорого.

Протокол OpenFLOW

Протокол OpenFLOW использует концепции потоков для описания трафика. В любом OpenFLOW-коммутаторе имеется таблица потоков, каждый из которых определяется тремя параметрами: поля соответствия, счетчики и инструкции. Поля соответствия позволяют определить, к какому потоку относится проходящий через него пакет. Протокол стирает грань между 2, 3 и 4 уровнем модели OSI, и пакет можно выбрать на основании одновременно mac-адреса, ip-адреса и номер порта в tcp- или udp-датаграмме. Деление на коммутаторы и маршрутизаторы исчезает.

Поле счетчиков позволяет реализовать съем статистики по любым показателям, что в классических сетях является сложно реализуемым. Например, можно определить, с какого ip-адреса было больше всего запросов к web-серверам. С этой целью для каждого из требуемых ip-адресов в таблице потоков создается запись с этим адресом, типом протокола - TCP, и портом назначения - 80 [2]. Поле инструкций при этом для всех таких записей будет одинаковым. В нем может быть реализована как простая коммутация (направить пакет в выходной порт), так и аппаратный файрвол (отбросить пакет, подходящий под эти условия) и модификация заголовков пакета (например, уменьшение значения TTL) и т.д.

Централизованный контроль

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

Поскольку это является самым слабым звеном SDN, можно поставить в сети 2 контроллера. Пока 1-й работает, 2-й только синхронизируется с ним, чтобы иметь актуальное представление сети. После того, как связь с первым контроллером пропадает, OpenFLOW-коммутаторы, после таймаута обращения к 1-му контроллеру, будут устанавливать связь со 2-м.

Детектирование потерь пакетов

Часто возникает задача определения, на каком участке сети наблюдаются потери пакетов. Причин может быть несколько: повреждение кабелей, перегрузка каналов, перегрузка оборудования. Для решения этой задачи «научим» контроллер отслеживать потери пакетов. Для этого создавать потоки надо не только на основе адреса назначения (классическая коммутация), но и адреса источника.

Рассмотрим линейную сеть из трех коммутаторов и трех хостов, показанную на рисунке 1. Если использовать только адрес назначения, то количество пакетов, предназначенных h3, на s3 может быть равно 100, в то время как количество таких пакетов на si и s2 может быть равно 40 и 60 соответственно. Если учитывать и адрес источника, то такой проблемы не возникнет, но количество потоков будет расти экспоненциально.

Sl S2 ЁЗ

Рисунок 1 - Тестовая топология

Также необходимо периодически считывать показания по всем потокам и сравнивать количество байт или пакетов, прошедших по связанным потокам. Чтобы определить, что поток X на s1 соответствует потоку Y на s2, проверяется значение поля cookie в потоке. Это значение устанавливается контроллером при создании потока. Оно же возвращается коммутатором контроллеру при запросе информации о потоках. Под соответствием подразумевается, что потоки соответствуют одной паре «адрес источника - адрес назначения». Контроллер должен гарантировать, что для каждого потока будет использовано уникальное значение cookie.

Контроллер может получать статистику по всем потокам всех коммутаторов в сети. На основе этих данных он определяет, какими путями, какой трафик и в каком объеме прошел. Вследствие природы SDN, невозможно сказать о состоянии сети в каждый конкретный момент времени, так как между запросом статистики и ее получением проходит некоторый промежуток времени, и полученные данные в загруженной сети всегда будут отличаться от реального состояния. Для учета этого факта ставится определенный допуск на отклонение показаний для связанных потоков в рамках некоторого пути в сети. Степень допуска уменьшается по мере того, как по этому пути проходят все новые пакеты.

Чтобы избавиться от ограничения, по которому надо создавать поток для каждой пары адресов источник-приемник, нужно определить, к какому коммутатору приемник (хост) подключен напрямую. В таком случае, для определения потерь пакетов достаточно будет сравнить

количество пакетов на этом коммутаторе и суммарно на всех остальных, предназначенных для одного и того же хоста.

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

Таблица 1 - Сравнение двух способов хранения информации о потоках

Количество хостов Метод 1 Метод 2

2 2 2

3 6 3

4 9 4

N N * (N-1) N

Для проведения экспериментов использовалась топология, показанная на рисунке 1. Полезная нагрузка моделировалась посредством flood-ping, когда запросы посылаются без ожидания ответа. Трафик запускался с узла hi на узел h3. В первые 5 секунд при таком виде трафика отклонения на коммутаторах достигали значения в 5%. В дальнейшем, еще через 5 секунд, эти значения уменьшались до 1%. По причине, описанной выше, необходимо использовать некоторое пороговое значение (например, 1000 пакетов на поток), чтобы можно было полагаться на получаемые значения отклонений.

Для моделирования проблем в сети периодически выключался сетевой интерфейс на коммутаторе h3. Результаты тестов показывают, что описанный подход удовлетворителен только на начальных порах работы алгоритма, а именно - когда количество прошедших через поток пакетов не достигло больших значений. В дальнейшем потери пакетов будут вносить малые отклонения. Именно поэтому нужна следующая модификация - периодический сброс собранных статистических данных. Самый простой способ - просто начинать считать заново, обнулив все счетчики. Но такой подход является неудовлетворительным с точки зрения необходимости дождаться порогового значения (в это время не будут отслеживаться потери).

Поэтому мы используем подход, основанный на хранении предыдущего и текущего состояния сети (до сброса и после). Когда пройдет очередной интервал в N секунд, запускается новый анализ отклонений. При этом значения счетчиков на всех коммутаторах сбрасываются. Новый анализ начинает работать по описанному выше алгоритму, но в течение некоторого интервала (K секунд или L пакетов) не участвует в принятии решений. Вместо этого, статистика считается в ранее запущенном анализе. Когда новый анализ достигнет порогового значения, предыдущий останавливается. При этом на сеть не создается дополнительной нагрузки, так как собранные данные можно использовать многократно.

Таблица 2 - Зависимость способности алгоритма детектировать потери пакетов

от длительности работы

Длительность работы, секунд Детектирование потерь в последнюю секунду

10% 50% 100%

10 Да Да Да

30 Нет Да Да

60 Нет Нет Да

120 Нет Нет Нет

Зависимость способности детектирования потерь пакетов от длительности работы алгоритма приведена в таблице 2. Считается, что в секунду через поток проходит 1000 пакетов. В таблице указано, способен ли алгоритм определить определенное количество потерь пакетов в

последнюю секунду работы. Такой способ подсчета связан с тем, что обычно проблемы возникают в неожиданные моменты времени и не являются распределенными по всему временному интервалу, а привязаны к конкретным моментам.

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

Заключение

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

Список литературы:

1. Барсков А. «SDN: кому и зачем это надо?» [Электронный ресурс] // Журнал сетевых решений/LAN. 2012. № 12. URL: http://www.osp.ru/lan/2012/12/13033012/

2. Plug-n-Serve: Load-Balancing Web Traffic using OpenFlow [Электронный ресурс] / M. Flajslik [etc.] // ACM Sigcomm conference, 2009. URL: http://conferences.sigcomm.org/ sigcomm/2009/demos/sigcomm-pd-2009-final26.pdf

i Надоели баннеры? Вы всегда можете отключить рекламу.