SDN сегодня.
LVEE Winter 2014
Программно-управляемые сети
Концепция SDN (Software-defined networking) основана на идее разделения уровня передачи данных и уровня управления правилами, по которым данные передаются. Обычно говорят, что на уровне управления действует Контроллер, а на уровне передачи данных – Свич. Контроллер при этом не только устанавливает правила для Свича, но и принимает от него сообщения о событиях, происходящих в сети, обеспечивая обратную связь.
OpenFlow
Ясно, что одним из ключевых элементов SDN является протокол взаимодействия между Свичом и Контроллером. В настоящий момент таким протоколом в основном является OpenFlow. Ключевое понятие этого протокола – Flow или правило, по которому обрабатываются пактеы внутри Свича. Flows объединены в таблицу Flow Table, которые, в свою очередь, объединены в конвейер.
Фактически, Flows представляют собой микрокоманды для программирования сети. Как средство управления сетью, OpenFlow прошел большой путь от примитивной концепции, включающей в себя одну Flow Table и весьма ограниченный набор критериев, в версии 1.0, до версии 1.3 (готовится к выпуску версия 1.4), с конвейером таблиц, улучшенной обратной связью между Свичом и Контроллером, поддержкой множества критериев сравнения как то MPLS, IPv6 и т.д., и возможностью писать весьма сложные “программы” для управления сетью.
Открытые лицензии для открытого стандарта
Уже сейчас наиболее интересные и полные решения, позволяющие строить OpenFlow топологии, опубликованы под различными Open Source лицензиями. Интересно то, что большая часть из них поддерживается крупными корпорациями – поставщиками сетевого обурудования и программного обеспечения. Решения эти используют очень разнообразные стеки технологий. Ниже представлен краткий список наиболее интересных, на мой взгляд, сообществ и их решений.
- Project Floodlight (бывший OpenFlowHub.org)
Представляют контроллер OpenFlow Floodlight, базирующиеся на нём решения для управления сетью, Java API, REST API, а также средства для тестирования OpenFlow устройств. Основные языки программирования – Java, Python, C - CPqD
Представляют OpenFlow свич и контроллер, OpenFlow драйвер с API для создания кастомных контроллеров, поддерживают дистрибутив OpenWRT с поддержкой OpenFlow. Основные языки – С/С++ и Python - Ryu SDN framework
Очень функциональный фреймворк для создания контроллеров, написанный на Питоне. Оттестирован с большим числом свичей, поддерживается OpenStack’ом - FlowForwarding.org
Представляет решения с использованием двух различных стеков:- Erlang VM: LINC Switch, Loom controller, Tapestry – анализатор сети
- Java VM: Warp OpenFlow драйвер с API для создания кастомных контроллеров и Warp Controller на базе фреймворка Akka
Высокоуровневое программирование
И все же OpenFlow остается низкоуровневым “языком программирования”; энтузаистами SDN был запущен проект Frenetiс, ставящий своей целью создание и развитие высокоуровневого языка программирования для сетей. С запуском же проекта Pyretic (Python + Frenetic) эта инициатива приобрела черты вполне реального domain-specific language.
Прогулки с монстрами
Усилиями SDN-сообщества, The Linux Foundation и корпораций-доноров был запущен весьма амбициозный проект OpenDaylight, представляющий собой SDN-стек и фреймворк для создания SDN-сетей.
Поскольку технологии SDN прекрасно подходят для создания виртуальных сетей, они широко используются в проекте OpenStack
Оптимизм
Будущее SDN, еще недавно весьма туманное, теперь вызывает сдержанный оптимизм. Множество решений опубликованных под свободными лицензиями позволяют привлечь энтузиастов и стимулируют активное развитие области.
Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license
Назад