Программно-конфигурируемые сети (1187415), страница 4
Текст из файла (страница 4)
Вторая группаобрабатывает пришедшие пакеты извне, и рассылает на соответствующие порты. Инаконец последняя команда обрабатывает arp unicast пакеты и ip пакеты.В итоге, поставленная задача решена полностью – arp-broadcast пробрасываютсятолько на хосты из одной подгруппы и отлкик(ping) есть только у хостов из однойподгруппы. Этим можно дополнительно контролировать трафик между различнымиподсетями.Данная задача имеет приложение и в области безопасности – например пользователь виртуальной машины сделав даже ARP broadcast запрос не узнает, какие естьвиртуальные машины в облаке, кроме тех, к которым у него есть доступ.Дополнительно был создана компонента для POX контроллера, которая по входным данным(топологии сети) генерирует для каждой VPN свой уникальный широковещательный адрес и делает соответствующие записи в маршрутизаторах, с кото-– 22 –рыми соединены хосты.6.2Реализация распределенной версии POX-контролллера.Среди контроллеров, которые сравниваются в данной работе, только в POX[11]не реализована распределенная версия.POX поддерживает версию 1.0 протокола OpenFlow, в которой не реализованасинхронизация между несколькими подключенными контроллерами одновременно,но маршрутизатор можно настроить так, чтобы он подключался сразу к экземплярамсразу:host$ ovs-vsctl set-controller <BRIDGE> controller1 ..
controllerNПроблема заключается в том, что при подключении все контроллеры будут иметьравные права на запись и удаление flow-потоков в таблицах маршрутизатора.Следовательно возникает проблема синхронизации – в спецификации OpenFlow1.3 добавлен обмен сообщениями между маршрутизатором и подключенными контроллерами для выбора главного(master) и дочерних(slave) экземпляров. Master имеет права на запись и удаление flow-потоков, а дочерние экземпляры имеют правалишь на чтение данных с маршрутизатора(аггрегирование статистики, чтение состояния flow-таблиц).6.2.1Алгоритм работы.Distributed POX Controller(POXController Wrapper)CPU-Load MessagesController1host-1 IP:6633Controller2host-2 IP:6633Master-Controller(Controller3)host-3 IP:6633TCP/SSLOpen vSwitch• Список хостов(IP - адрес, порт), на которых будет запущен экземпляр контроллера определяется заранее администратором, после чего в базу данных– 23 –маршрутизатора записываются эти адреса• В единый момент времени, активен только 1 контролллер(таким образом исключается возможность раcсинхронизации), остальные члены кластера проводят мониторинг хоста на котором запущен контроллер.• master-controller с определенной периодичностью рассылает сообщения, в которых указывает загрузку своего CPU и также этим сигнализирует о том, чтосвязь не потеряна.• Если по какой-либо причине происходит потеря связи с активным контроллером либо загрузка его CPU превышает некоторый заранее установленныйпредел, запускается атомарный процесс выбора нового активного контроллера.Выбранный хост, запускает у себя экземпляр контроллера.• Хост, первый заметивший потерю сигнала от главного контроллера запускаетатомарный процесс смены мастера.
В случае “развала” кластера на нескольконесвязных компонент, в каждой из них будет выбран свой мастер(это можетпривести к рассиннхронизации, поэтому за такой ситуацией должен следитьадминистратор), но как только связь между компонентами будет восставлена– автоматически запустится процесс слияния компонент.6.2.2Особенности реализации. Тестирование.Программа представляет собой “обертку”, которая проводит процесс мониторинга соединения между хостами, на которых запущен контроллер.
При запуске программы на удаленных хостах, программа рассылает BROADCAST UDP сообщения,с помощью которых члены кластера ”находят“ друг друга и отправляют запрос наподключение.В основу программы легла библиотека JGroups[10](www.jgroups.org), которая предоставляет возможность создания кластерных приложений и обмена сообщениями между членами кластера(можно отметить, что Floodlight Project и OpenDaylight Projectтакже используют эту библиотеку для распределенных версий). JGroups предоставляет возможность использовать атомарные операции и shared-variables внутри кластера.Тесты проводились на (2-7) виртуальных машинах, время переключения на нового мастера составляло порядка 2-2.5 секунд при нарушении связи(резком выклю-– 24 –чении виртуальной машины с запущенным мастером). С учетом того, что время нарегистрацию утери связи проходило около 2с., выбор нового master-controller происходил за 0.1-0.3 секунды, независимо от количества запущенных контроллеров.Ссылка на репозиторий проекта:https://github.com/fedor-goncharov/PoxWrapper6.3Сравнение производительности Open vSwitch и библиотеки brctl.На схеме(см.внизу) представлена модель тестирования производительности:netperf clientnetperf serverOpen vSwitchOpenVZContainerCT101veth101.0OpenVZContainerCT102veth102.0netperf servernetperf clientbrctl(bridge)OpenVZContainerCT101veth101.0OpenVZContainerCT102veth102.0Был проведен набор стандартных тестов при помощи утилиты netperf.
Измеренапропускная способность, а также частота передачи сообщений(request-response persecond).Пропускная способность:– 25 –Каждое измерение повторялось по 15 раз, затем результаты усреднялись и вычислялось стандартное отклонение. Из данных графиков видно преимущество OpenvSwitch в скорости обмена сообщениями по протоколу UDP(прирост в скорости составил в среднем 20%, причем стоит заметить, что области стандартных отклоненийне пересекаются – это говорит в пользу достоверности сделанных выводов).
В тестах с использованием протокола TCP, при размерах сообшений от 64 байт и вышеприрост в скорости составил не менее 18%(максимум 30% при размере сообщений– 4096 байт)(к сожалению при проведении тестов, обеспечить малость стандартногоотклонения не удалось).Частота транзакций:– 26 –По частоте обмена сообщениями request-response Open vSwitch также превосходитмост из библиотеки brctl(в тесте TCP в среднем на 23%, UDP в среднем на 21%);Стоит также отметить что интервалы стандартных отклонений не пересекаются, чтосвидетельствует о корректности сделанных выводов.Все тесты проводились при одной записи во flow-таблице, где в качестве поляaction было задано действие NORMAL, т.е. стандартная обработка пакетов L2/L3маршрутизатора.7Заключение.В данной работе проведен обзор основных элементов ПКС(SDN), показано, чтоOpen vSwitch полностью соответствует спецификации OpenFlow Switch, а также содержит ряд удобных расширений и дополнений(Nicira Extensions).
Обработка входящего трафика полностью определяется записями во flow-таблицах, которые можноконфигурировать вручную при помощи утилиты ovs-ofctl, или автоматически подключая к маршрутизатору OpenFlow-контролллер. Гибкость настройки OpenFlow– 27 –маршрутизатора достигается при помощи модели обработки трафика - Forwardingpipeline; данная модель основана на использовании ряда flow-таблиц и возможности передавать обработку пакета из одной таблицы в другую – это позволяет делатьнастройки расширяемыми и облегчает настройку маршрутизатора для сетевого администратора.Итогом обзора OpenFlow маршрутизатора стало сравнение производительностиOpen vSwitch и библиотеки brctl : тесты на OpenVZ контейнерах показали, что OpenvSwitch превосходит brctl(bridge) как и в STREAM PERFOMANCE тестах, так и вTRANSACTION PERFOMANCE тестах(для протоколов TCP,UDP).Также в работе проведено качественное сравнение современных OpenFlow-контроллеров,показаны сильные и слабые стороны рассмотренных проектов(POX, Floodlight Project,OpenDaylight Project) – указаны приоритетные цели использования данных проектов:Так POX и Floodlight представляют скорее научный инструмент, для быстрой разработки и тестирования парадигмы ПКС, в то время как OpenDaylight Project и егопоследняя версия Hydrogen подходят для интеграции и решения реальных бизнес задач.
В отличие от других проектов OpenDaylight поддерживает не только протоколOpenFlow, но возможны встраивания других Southbound протоколов и имеет наибольшее число спонсоров, среди которых такие крупные как Linux Foundation, Cisco,Citrix, Juniper, IBM, RedHat, Windows и некоторые другие.Итогом сравнения контроллеров является таблица, которая находится в параграфе “OpenFlow-контролллеры”, в которой указаны основные интересующие характеристики.В конце можно упомянуть реализацию распределенной версии POX-контроллераоснованной на использовании библиотеки JGroups; приоритетом написания даннойверсии было решить задачу отказоустойчивости, тесты показали, что время переключения на новый экземпляр составляет порядка 0.1-0.3 секунды, независимо отколичества запущенных контроллеров.В целом можно сказать, что идеологически все проекты контроллеров не сильноразличаются, т.к. по сути делают одно и то же(предоставляют удобное API программистам для работы с сетью), следовательно приоритетным является тот проект,который предоставляет наиболее удобное и гибкое API.– 28 –8Приложения.8.1Структура MAC адресаСтандарты IEEE определяют 48-разрядный (6 октетов) MAC-адрес, который разделен на четыре части.Первые 3 октета (в порядке их передачи по сети; старшие 3 октета, если рассматривать их в традиционной бит-реверсной шестнадцатеричной записи MAC-адресов)содержат 24-битный уникальный идентификатор организации (OUI), или (Код MFG— Manufacturing, производителя), который производитель получает в IEEE.
Приэтом используются только младшие 22 разряда (бита), 2 старшие имеют специальноеназначение:• первый бит (младший бит первого байта) указывает, для одиночного (0) илигруппового (1) адресата предназначен кадр• следующий бит указывает, является ли MAC-адрес глобально (0) или локально(1) администрируемым.• Следующие три октета выбираются изготовителем для каждого экземпляраустройства. За исключением сетей системной сетевой архитектуры SNA.Список литературы[1] K.Calvert, S.Bhattacharjee, E.Zegura, and J.Sterbenz, «Directions in ActiveNetworks» IEEE Communications magazine, стр.