Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Специальные аппаратно-программируемые коммутаторы



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

Работа коммутатора SDN состоит в том, чтобы выделить из поступающего пакета данных заголовок. Если коммутатор «знает», как обрабатывать пакеты с такими заголовками, то действует по заранее загруженной в него программе. В противном случае по защищенному каналу OpenFlow он отправляет запрос на контроллер, а тот в ответ по тому же каналу загружает программу для обработки пакетов с соответствующими заголовками.

Контроллер представляет собой сервер, работой которого управляет сетевая операционная система (СОС). Схоже традиционной операционной системе, сетевая операционная система управляет всеми ресурсами сети. В терминологии программно-коммутируемой сети контроллером принято называть СОС. На контроллере работают приложения, которые программно реализуют сетевые сервисы, управляющие потоками данных: маршрутизация, балансировка нагрузки, разнообразные протоколы, шлюзы, сетевые экраны (Firewall), шифрование, DPI(англ. Deep Packet Inspection, технология накопления статистических данных, проверки и фильтрации сетевых пакетов по их содержимому), NAT(англ. Network Address Translation - преобразование сетевых адресов) и т. п. Приложение на основании информации о сети, получаемой им от контроллера, управляющего данной сетью, формирует наборы правил, которые контроллер загружает в надлежащие коммутаторы.

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

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

 

Рис. 12. Реализация SDN на базе специальных коммутаторов.

У каждого из вышеприведенных подходов есть свои недостатки и достоинства.

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

Преимущества реализации SDN на базе OpenFlow: высокая производительность благодаря отсутствию накладных расходов на инкапсуляцию и работу программных коммутаторов; управление качеством транспорта; гибкое управление трафиком; автоматизация диагностики и устранения неполадок (troubleshooting); виртуализация и абстракция; достаточно простое сетевое оборудование.

Но этот способ предполагает внедрение специального сетевого оборудования. Уже сегодня лидеры рынка: Cisco, Extreme Networks, Juniper, Brocade, IBM, NEC, Huawei и другие, предлагают своим клиентам третий путь, который предусматривает использование дорогого специального аппаратного обеспечения.

А вот начинающие компании, которым важно на данном этапе привлечь к себе клиентов и получить свою долю рынка, предлагают нестандартные, недорогие решения для реализации. К таковым можно отнести компанию Arista, образованную только в 2008 году, которая предлагает не только коммутаторы, работающие исключительно с сетями SDN, но и собственную операционную систему Extensible Operating System (EOS). С ее помощью инженеры могут программировать сети и создавать полностью изолированные сетевые сегменты для приложений.

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

 

Протокол OpenFlow

Реализовать концепцию разъединения уровня передачи данных и уровня управления можно с помощью протокола OpenFlow.

OpenFlow - открытый стандарт, который описывает требования, предъявляемые к коммутатору, поддерживающий протокол OpenFlow для удаленного управления.

Контроллер с коммутатором взаимодействуют посредством протокола OpenFlow - каждый коммутатор содержит одну или более таблиц потоков (flow tables), групповую таблицу(group table), поддерживает канал (OpenFlow channel) для связи с сервером (удаленным контроллером). Таблицы потоков содержат набор записей (flow entries) о потоках или правила. Каждая запись состоит из полей-признаков (match fields), набора инструкций (instructions), счетчиков (counters).

Механизм работы коммутатора OpenFlow очень прост. У каждого пришедшего пакета «вырезается» заголовок (битовая строка определенной длины). Для этой битовой строки в таблицах потоков, начиная с первой, ищется правило, у которого поле признаков ближе всего соответствует (совпадает) заголовку пакета. Если есть совпадения, над пакетом и его заголовком выполняются преобразования, которые определяются набором инструкций, указанных в найденном правиле. Инструкции, систематизированные с каждой записью таблицы, описывают действия, которые связанны с пересылкой пакета, обработкой в таблице групп, модификацией его заголовка, обработкой в конвейере, пересылкой пакета на определенный порт коммутатора. Инструкции конвейера обработки дают возможность пересылать пакеты в следующие таблицы для дальнейшей обработки, затем в виде метаданных передавать информацию между таблицами.

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

Управление данными в OpenFlow осуществляется на уровне потоков, а не отдельных пакетов. Правила в коммутаторе устанавливаются с участием контроллера только для первого пакета, потом все последующие пакеты потока его используют.

Основные понятия и термины, использующиеся в описаниях принципов работы протокола OpenFlow и его основных компонентов:

1) Пакет данных (Packet) - кадр Ethernet, который включает в себя заголовок и полезные данные (payload).

2) Конвейер (Pipeline) - набор связанных таблиц, которые обеспечивают проверку заголовков, пересылку и модификацию пакетов в OpenFlow коммутаторе.

3) Порт (Port) - место, куда поступают и откуда пересылаются пакеты в OpenFlow-коммутаторе.

4) Метаданные (Metadata) - маскируемое значение регистра, который используется для переноса информации от одной таблицы к другой.

5) Инструкции, команды (Instruction) - операция, содержащая или множество действий для того, чтобы добавить их в набор действий (action set), или содержит список действий, немедленно применяющиеся к пакету или изменяют процесс обработки пакетов на конвейере.

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

7) Набор действия (Action Set) - набор действий, которые связаны с накапливающимся пакетом, в то время, когда пакет обрабатывается каждой таблицей на конвейере, и которые выполняются при выходе пакета из конвейера обработки.

8) Действие (Action) - операция, пересылающая пакет в порт или изменяет пакет (например, уменьшает значение поля TTL). Действия могут быть определены как часть набора инструкций, которые связаны с потоком или контейнер действий, связанный с группой.

9) Тег (Tag) - заголовок, который может быть добавлен или удален из пакета с помощью действий push и pop.

10) Внешний тег (Outermost tag) - тег, являющийся ближайшим к началу пакета.

11) Контейнер действий (Action Bucket) - набор действий и связанных параметров, которые определёны для группы.

 

Таблицы OpenFlow


Таблица потоков (Flow Table) состоит из следующего набора записей: [8]

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

2) Счётчики - обновляются для соответствующих пакетов.

3) Инструкции - модифицируют набор действий или процесс конвейерной обработки.

 

Конвейерная обработка

Коммутаторы, поддерживающие протокол OpenFlow, можно разделить на два типа:

1) OpenFlow-only - это коммутаторы, которые поддерживают только OpenFlow операции. В таких коммутаторах все пакеты обрабатываются OpenFlow конвейером и не могут быть обработаны иным способом.

2) OpenFlow-hybrid – это коммутаторы, которые поддерживают одновременно как OpenFlow операции, так и обычные операции Ethernet-коммутации, VLAN и QoS обработку. OpenFlow-hybrid коммутаторы должны обеспечивать механизм классификации трафика, маршрутизируя его либо в конвейер OpenFlow, либо в обычный конвейер обработки. Например, коммутатор может использовать тег VLAN или входной порт пакета, чтобы принять решение о том, каким образом обрабатывать пакет. Этот механизм классификации находится за рамками спецификации и настоящей работы.

 

Таблица потоков (Flow table)

OpenFlow конвейер каждого OpenFlow коммутатора содержит множество таблиц потоков, и каждая таблица потоков содержит множество записей.

Процедура обработки пакетов OpenFlow конвейером определяет, как пакеты взаимодействуют с этими таблицами потоков. Если OpenFlow коммутатор имеет только одну таблицу потоков, то в этом случае конвейерная обработка значительно упрощается.


Рис. 13. Пакет потока, проходящий конвейер обработки.

Таблицы потоков OpenFlow коммутатора последовательно пронумерованы, начиная с 0. Конвейерная обработка начинается с нулевой таблицы потоков: пакет сначала сравнивается с записями таблицы потоков с номером 0.

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

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

Если пакет не находит соответствующей записи в таблице, то такую ситуацию неудачи при поиске в таблице будем называть промахом. Поведение при промахе зависит от конфигурации таблицы; по умолчанию пакеты посылаются контроллеру по управляющему каналу с помощью сообщения типа packet-in, другой вариант – это сбросить пакет. Таблица может также указать, что при промахе обработка пакета должна быть продолжена; в этом случае пакет переходит для обработки в следующую по номеру таблицу.

 

Таблица групп потоков (Group Table)

Таблица групп состоит из записей групп.

1) Идентификатор группы – 32-х битное беззнаковое целое число, уникальным образом идентифицирующее группу.

2) Тип группы – определяет семантику группы.

3) Счётчики – обновляются, когда пакеты обрабатываются группой.

4) Контейнеры действий – упорядоченный список контейнеров действий, где каждый контейнер действий содержит набор действий для выполнения и связанные с ними параметры.

Типы групп. Определены следующие типы групп: [8]

1) All - выполняются все контейнеры действий в группе. Эта группа используется для многоадресной и широковещательной пересылки пакетов. Пакет эффективно копируется для каждого контейнера действий; каждый пакет обрабатывается в каждом контейнере группы.

2) Select - выполняется только один контейнер действий в группе. Пакеты посылаются в единственный контейнер действий в группе на основе алгоритма выбора, вычисляемого коммутатором. Все конфигурации и состояния для алгоритмов выбора являются внешними к OpenFlow. Если порт, указанный в контейнере действий в выбранной группе, не отвечает, коммутатор может ограничить выбор контейнера оставшимся набором (т.е. с действиями пересылки на «существующие, живые» порты) вместо удаления пакетов, предназначенных для этого порта. Такое поведение может уменьшить разрушение сети из-за нефункционирующей линии связи или коммутатора.

3) Indirect - выполняется один определённый контейнер действий в группе. Позволяет нескольким потокам или группам указать общий групповой идентификатор, поддерживающий более быстрое и эффективное слияние (например, следующие хопы для IP-пересылки). Этот тип группы одинаково эффективен для всех групп с одним контейнером.

4) Fast failover - выполняется первый существующий (живой) контейнер действий. Каждый контейнер действий ассоциируется с конкретным портом и/или группой, которая контролирует их живучесть. Позволяет коммутатору изменять пересылку, не требуя обращения туда-обратно к контроллеру. Если нет «живых» контейнеров, пакеты сбрасываются.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 2208; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.033 с.)
Главная | Случайная страница | Обратная связь