SDN — разделяй и властвуй. Часть II

17 январь, 2014 - 10:05Леонід Бараш

Сегодня на многих конференциях и в специализированной прессе активно обсуждается новое направление развития сетевых технологий, называемое Software-defined Networking (SDN). Предлагаемая публикация основана на подборке статей и материалов, доступных в Интернете. (С первой частью можно ознакомиться по данной ссылке).

SDN: базовые сведения

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

Логическая структура архитектуры SDN представлена на рис. 1. Мы видим, что она состоит из трех основных уровней: инфраструктуры, управления и приложений.

SDN — разделяй и властвуй. Часть II

Рис. 1. Архитектура SDN

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

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

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

Но что наиболее важно, сетевые операторы и администраторы могут с помощью программирования конфигурировать эту упрощенную сетевую абстракцию, а не писать вручную десятки тысяч строк конфигурационных файлов, рассеянных среди тысяч устройств. Вдобавок, используя централизованный «интеллект» SDN-контроллеров, специалисты могут изменять поведение сети в режиме реального времени и разворачивать новые приложения и сервисы, по сути, за часы или дни, а не за недели и месяцы, как это делается сегодня. За счет централизации состояния сети на уровне управления SDN предоставляют администраторам гибкость при конфигурировании, управляемость, безопасность и оптимизацию сетевых ресурсов с помощью динамических SDN-программ. Более того, они могут писать эти программы сами, а не ждать реализации производителями проприетарных технологий в ядре сети.

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

Таким образом, посредством открытых API между уровнями управления и прикладным бизнес-приложения могут оперировать с абстракцией сети, используя сетевые сервисы и возможности, не вдаваясь в детали их реализации. В результате вычислительные и сетевые ресурсы, а также СХД могут быть оптимизированы.

Протокол OpenFlow

Протокол OpenFlow был разработан в Стэнфорде, и его первая версия была опубликована в конце 2009 г. В марте 2011 г. была создана организация Open Network Foundation (ONF), и права на интеллектуальную собственность были переданы ей.

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

OpenFlow можно сравнить с набором команд для ЦП. Как показано на рис. 2, протокол определяет основные примитивы, которые могут использоваться внешним ПО для программирования уровня продвижения данных сетевых устройств точно так же, как набор команд для ЦП программирует компьютерную систему.

SDN — разделяй и властвуй. Часть II

Рис. 2. Пример набора команд OpenFlow в таблице переходов

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

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

OpenFlow-коммутаторы

Большинство современных Ethernet-коммутаторов и маршрутизаторов содержат таблицы переходов (в типичном случае поддерживаемые троичной памятью, адресуемой по контенту, — Ternary Content Addressable Memory, TCAM), которые работают построчно и используются для выполнения функций продвижения пакетов, основываясь на заголовках пакетов уровня L2, L3 и L4 (см. рис. 2).

Хотя у каждого производителя своя таблица, имеется общий набор функций, поддерживаемых широким разнообразием коммутаторов и маршрутизаторов. Этот общий набор функций используется в OpenFlow, который является открытым протоколом между OpenFlow-контроллером и OpenFlow-коммутатором.

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

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

Выделенные OpenFlow-коммутаторы являются «тупыми» элементами тракта, которые продвигают пакеты между портами, как им предписал удаленный процесс управления. На рис. 3 показан пример такого коммутатора.

SDN — разделяй и властвуй. Часть II

Рис. 3. Идеализированный OpenFlow-коммутатор. Таблица переходов управляется удаленным контроллером через защищенный канал

Каждый описатель потока содержит простое действие, связанное с потоком. Выделенный коммутатор должен поддерживать, по крайней мере, три базовых:

  1. Направлять пакеты потока в заданный порт (или порты). Это обеспечивает маршрутизацию пакетов через сеть.

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

  3. Отбрасывать пакеты потока. Это может быть использовано в целях безопасности, для сдерживания DoS-атак или для уменьшения паразитного широковещательного трафика от конечных хостов.

Как уже упоминалось выше, некоторые коммерческие коммутаторы могут быть модифицированы посредством добавления таблицы переходов, защищенного канала и протокола OpenFlow. В типичном случае таблица переходов будет использовать существующие аппаратные средства, такие как TCAM. Защищенный канал и протокол должны быть портированы, чтобы работать под управлением ОС коммутатора. На рис. 4 показана сеть с использованием таких модифицированных коммерческих коммутаторов и точек доступа.

SDN — разделяй и властвуй. Часть II

Рис. 4. Пример сети на модифицированных коммерческих коммутаторах

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

Некоторые следствия

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

Поскольку SDN-контроллеры предоставляют полную обозримость и управление всей сетью, они могут обеспечить, чтобы управление доступом, регулировка трафика, QoS и другие политики выполнялись последовательно для всех проводных и беспроводных сетевых инфраструктур, включая филиалы, кампусы и ЦОД.

Судя по всему, будущие сети все больше будут опираться на ПО, что ускорит внедрение инноваций в сетях, как это уже имеет место в области вычислений и хранения данных.