Лекция 1. Технологии SDN. OpenFlow
Описание файла
PDF-файл из архива "Лекция 1. Технологии SDN. OpenFlow", который расположен в категории "". Всё это находится в предмете "программно-конфигурируемые сети (sdn)" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Технологии SDN/OpenFlowМатематический спецкурс“Программно Конфигурируемые Сети”к.ф.-м.н., м.н.с., Шалимов А.В.ashalimov@lvk.cs.msu.su@alex_shali@arccnnewsЧасть I: SDNПрограммно-Конфигурируемые СетиШалимов А.В.Уникальное время“Россия и SDN – это идеальный брак, который долженсостояться на небесах”Nick McKeownПрограммно-Конфигурируемые СетиШалимов А.В.SDN уже здесьGoogle перевел сеть между ЦОД на SDN в 2012году, сейчас анонсирована внутренняя облачнаяплатформа Andromeda.Microsoft перевел сеть между ЦОД на SDN в конце2013 года, на очереди публичное облако Azure.NTT перевел всю свою сетевуюинфраструктуру на SDN в 2013 году.В июне 2015 года AT&T объявило SDN своимосновным стратегическим направлением развития ипереориентацию на разработку ПО.Gartner: “Рынок SDN решений к 2018 году достигнетобъема $35 млрд”.Программно-Конфигурируемые СетиШалимов А.В.А что с SDN в России?• «Ростелеком» начал работу над внедрением перспективныхтехнологических направлений «Программно-конфигурируемых сетей»(SDN) и «виртуализации сетевых функций» (NFV).• «Ростелеком» и впредь намерен укреплять технологическое лидерство.Новые технологии позволят упростить сетевую инфраструктуру иснизить стоимость эксплуатации сети.– старший Вице-Президент по эксплуатации сетей связи «Ростелекома» АлександрЦейтлин• «Считаю, что технологии SDN и NFV позволят существенно сократитькапитальные затраты и ускорить ввод в строй новых сервисов»– исполнительный директор по технической стратегии и архитектуре «Ростелекома»Эдуард Василенко• «Ростелеком» разыскивает стартапы, которые занимаются разработкойтехнологий в области SDN и NFV– Руководитель направления Департамента управления венчурными активамикомпании Сергей ШлыковПрограммно-Конфигурируемые СетиШалимов А.В.Проблемы традиционных сетейФунция...ФунцияОперационнаясистемаСпециальноеустройство передачиданных• Зависимость от производителя• Ошибки в реализациях сетевых протоколов• Миллионы строк закрытого проприетарногокода (6000+ RFC)• Высокая стоимость оборудования• Высокая стоимость эксплуатации• Сложность управления большими сетями• Сложность отладки• “Закрытость” оборудования и программногообеспечения• Сложность внедрения новых идей• Неэффективность использования аппаратныхресурсов, энергоэффективностьПрограммно-Конфигурируемые СетиШалимов А.В.Постоянный рост сложностиПрограммно-Конфигурируемые СетиШалимов А.В.ВнедренияОсновные принципы•••Физическое разделение уровня передачи данных от уровня управлениясетевых устройств.Логически централизованное управление.Программируемость.•Открытый единый интерфейс управления.Преимущества•••...Упрощение управления сетью(OPEX)Удешевление оборудования(CAPEX)Разработка ранеенедоступных сервисов“SDN means thinking differently about networking”Переход к SDNAppAppAppControllerApp App AppApp App AppOSOSForwardingForwardingApp App AppOSForwardingПрограммно-Конфигурируемые СетиШалимов А.В.Архитектура SDNAppAppAppControllerControlProtocolUsable GUIOSServicesSwitchSwitchSwitchПрограммно-Конфигурируемые СетиШалимов А.В.Пример применения• Уменьшениеэнергопотребления в ЦОД– Отключениенеиспользуемыхкоммутаторов и каналов наоснове собраннойинформации о сети– ElasticTree (Stanford):сокращениеэнергопотребления до 60%– Применение в GoogleПрограммно-Конфигурируемые СетиШалимов А.В.Часть II: OpenFlowПрограммно-Конфигурируемые СетиШалимов А.В.OpenFlowOpenFlowSwitch/RouterкоммутаторSoftwareHardwareКонтроллерPCУправле OpenFlowControl(API)ниеТаблицапотоковПрограммно-Конфигурируемые СетиШалимов А.В.• Добавление/удалениепотоков• ИнкапсулированныепакетыOpenFlow протоколПоддерживается три типа сообщений:• Сообщения контроллер-коммутатор––––Конфигурирование коммутатораУправление и контроль состоянияУправление таблицами потоковFeatures, Configuration, Modify-State (flow-mod), Read-State(multipart request), Packet-out, Barrier, Role-Request• Симметричные сообщения– Отправка в обоих направлениях– Обнаружение проблем соединения контроллера с коммутатором– Hello, Echo• Ассиметричные сообщения– Отправка от коммутатора к контроллеру– Объявляют об изменении состояния сети, состояниякоммутаторов– Packet-in, flow-removed, port-status, errorПрограммно-Конфигурируемые СетиШалимов А.В.OpenFlow 1.0Flow TableRuleActionRuleAction СчетчикиStats пакетов и байтовRuleRuleRuleSwitchPortMACsrcStatsActionStats1.Пересылка пакетов на порт(ы) с перезаписьюзаголовкаActionStats2.Принудительная отправка пакета на контроллер3.Сброс пакетаActionStats4.Свои расширенияMACdstEthtypeVLANIDIPSrcIPDst+ маска по полямПрограммно-Конфигурируемые СетиШалимов А.В.IPProtTCPsportTCPdportПримеры правил OpenFlowSwitchingSwitch MACPort src*MAC Ethdsttype00:1f:..
**VLAN IPIDSrcIPDstIPProtTCPTCPActionsport dport****IPDstIPProtTCPTCPActionsport dport**port6Flow SwitchingSwitch MACPort srcMAC Ethdsttypeport3 00:20.. 00:1f.. 0800VLAN IPIDSrcvlan1 1.2.3.4 5.6.7.8417264 80port6FirewallSwitch MACPort src**MAC Ethdsttype**VLAN IPIDSrcIPDstIPProtTCPTCPActionsport dport*****Программно-Конфигурируемые СетиШалимов А.В.22dropЧем плохо одна таблица?Программно-Конфигурируемые СетиШалимов А.В.OpenFlow 1.1• Продвижение пакета только вперед• Переход: модификация пакета, обновлениенабора действий, обновление метаданныхПрограммно-Конфигурируемые СетиШалимов А.В.Групповые таблицы••Экономия места для одинаковых действийТакже для реализации сетевых механизмов:– Multicast– ECMP– Active/Standby маршрутыПрограммно-Конфигурируемые СетиШалимов А.В.Meter table• Для реализации QoS и ограниченияскорости– Для каждого потока или группы потоков– Следит за превышение значений счетчиков– Действия: drop или dscp remarkПрограммно-Конфигурируемые СетиШалимов А.В.Несколько контроллеров• Протокол OpenFlow 1.2:– Множество контроллеров– Механизм ролей– Роли: Master, Slave, Equal– По умолчанию:контроллер находится вроли Equal длякоммутаторов.– Смена роли:OFPT_ROLE_REQUEST– Распределение ролей:возложено наконтроллеры.Программно-Конфигурируемые СетиШалимов А.В.OpenFlow 1.0, 1.1OpenFlow 1.2 – 1.5OpenFlow контроллер• Программа, TCP/IP сервер, ожидающийподключения коммутаторов• Отвечает за обеспечение взаимодействиеприложения-коммутатор.• Предоставляет важные сервисы (например,построение топологии, мониторинг хостов)• API сетевой ОС или контроллер предоставляетвозможность создавать приложения на основецентрализованной моделипрограммирования.Программно-Конфигурируемые СетиШалимов А.В.Список OpenFlow контроллеров• Их действительно много– Nox, Pox, MUL, Ruy, Beacon, OpenDaylight,Floodlight, Maestro, McNettle, Flower, Runos– Different programming form Python to Haskell,Erlang• Для образования - Pox.• Два больших комьюнити– ONOS (Stanford)– OpenDayLight (Cisco)• В России – наш Runos– arccn.github.io/runosПрограммно-Конфигурируемые СетиШалимов А.В.Схема работы OpenFlowРеактивный режим работыOpenFlow agentFlow tableMACsrc12:34MACdst56:78port 11.1.1.1IPSrcIPDst1.1.1.15.5.5.5port 2TCPTCPsport dport47341port 380Actionport 4port 45.5.5.5Программно-Конфигурируемые СетиШалимов А.В.ControllerТолько дляпервого пакетаДля всех остальныхпакетовСхема работы OpenFlowПроактивный режим работыOpenFlow agentFlow tableMACsrcMACdstIPSrcIPDst***5.5.5.5port 11.1.1.1port 2TCPTCPsport dport*port 3*ActionControllerport 4port 45.5.5.5Программно-Конфигурируемые СетиШалимов А.В.Для каждого пакетаМаршрутизация с SDN/OpenFlowABA -> BAB• Неизвестный пакет отправляется на контроллер (OF_PACKET_IN).• Контроллер вычисляет лучший маршрут через всю сеть (с наименьшейстоимостью и удовлетворяющий политикам маршрутизации).• Соответствующие правила OpenFlow устанавливаются на коммутаторы + сразуи обратный маршрут (OF_PACKET_OUT/FLOW_MOD).Программно-Конфигурируемые СетиШалимов А.В.Маршрутизация с SDN/OpenFlowABAB• Неизвестный пакет отправляется на контроллер (OF_PACKET_IN).• Контроллер вычисляет лучший маршрут через всю сеть (с наименьшейстоимостью и удовлетворяющий политикам маршрутизации).• Соответствующие правила OpenFlow устанавливаются на коммутаторы + сразуи обратный маршрут (OF_PACKET_OUT/FLOW_MOD).• Динамическая переконфигурация в случае ошибки сети.Программно-Конфигурируемые СетиШалимов А.В.Построение топологии?Программно-Конфигурируемые СетиШалимов А.В.Требования к контроллеру ПКС• Производительность– Пропускная способность• events per second– Задержка• ЦОД требует обработку>10M событий в секунду• Реактивныеконтроллеры более“чувствительные”• us• Надежность и безопасность– 24/7• Программируемость– Функциональность: приложения и сервисы– Интерфейс программированияАрхитектура OpenFlow контроллераМаршрутизация, виртуалилазция, мониторинг,балансровка, фильтрация, аутентифкация, NAT,ARP, DNS, DHCP, BGPАлгоритмы на графах, распределенныесистемы и базы данных, webМногопоточные алгоритмыБыстрая обработка пакетовЧасть III: Runos OpenFlowконтроллерПрограммно-Конфигурируемые СетиШалимов А.В.Система управления сетью первый российский SDN-контроллер RUNOSRUssian Network Operation SystemЕсть разные варианты контроллера с единой базой иразличным набором сервисов и приложений• Открытая версия на Github http://arccn.github.io/runos/ Своя база на C++11/14, а не Java цель: упростить разработку сетевых приложений и незабывать о производительности приложения: топология, маршрут, перестроение в случаеобрыва, REST, WebUI, проактивная загрузка правил,резервирование Active-Passive• Внутренняя ядерная версия Супер-производительность 30 млн событий в секунду Разработка приложений под заказчика• Внутренняя версия с приложениями под операторасвязи База такая же, как и на Github.
Заказчики сами могутразрабатывать приложения. Учиться по доступнымматериалам Сервисы B2C, B2B (p2p, mp2mp, multicast, и т.п.) Active-Standby режим• Алгоритмические политики (генерация правил)– Распределение приоритетов, комбинация правил– LOAD, MATCH, READ абстракции– На основе MAPLEПриложенияСервисы• Дружественный API на основе EDSL грамматики(низкоуровневые детали скрыты в системевыполнения – overloading, templates)–––––“pkt[eth src] == eth addr”“if (ethsrc == A || ethdst == B) doA else doB”“test((eth_src & “ff0…..0”) == “….”)”“modify(ip_dst >> “10.0.0.1”)”decision are “unicast()”, “broadcast()”, “drop()”OpenFlowKernelspaceFeatures:-• Композиция приложений (параллельная ипоследовательная композация)– dpi + (lb >> forwarding)Userspace-Algorithmic policies(rule generation)Client-friendly API usingEDSL grammar (lowlevel details are hiddeninside the runtime –overloading, templates)Modules composition(parallel and sequentialcomposition)Ключевые слова: C++11/14, QT, Boost (asio, proto, graph)Основные сторонние компоненты:•libfluid project (_base, _msg)– для взаимодействия со свитчами и разбор OpenFlow 1.3 сообщений•libtins– разбор пакетов внутри OpenFlow сообщений•glog (google log)– логирование, многопоточное•tcmalloc (google performance tools)– альтернативная более быстрая реализация malloc/free•json11– разбор конфигурационного файла•boost graph– Хранение топологии, поиск маршрутаСейчас версия 0.5• ядро контроллера• построение топологии• построение маршрута через всю сеть• первая версия системы генерации правил• Rest API (совместимый с Floodlight)• WebUI (мониторинг загрузки, просмотр таблиц,удаление и добавление правил)• Проактивная загрузка правил• Холодное резервирование• ARP кешированиеВерсия 0.6 - следующий большой релиз (апрель)• Полное обновление структуры ядра контроллера.