СПОСОБ АВТОМАТИЧЕСКОГО ЗАДАНИЯ КОНФИГУРАЦИИ OpenFlow-КОММУТАТОРОВ И OpenFlow-МАРШРУТИЗАТОРОВ
METHOD FOR AUTOMATIC CONFIGURATION OF OpenFlow SWITCHES AND OpenFlow ROUTERS

Изобретение относится к области автоматизации управления OpenFlow совместимыми коммутаторами и маршрутизаторами, составляющими сетевую инфраструктуру программно-конфигурируемых сетей, на основе динамического изменения приоритетов записей в таблицах потоков на сетевом оборудовании в соответствии с классом трафика, определяемым на основе параметров качества передачи сетевых пакетов.
В связи с развитием вычислительных сетей актуализируется задача создания нового подхода к управлению сетевым оборудованием. В настоящее время активно развивается технология программно-конфигурируемых сетей, в основе которой лежит разделение функций управления сетевой инфраструктурой и функций собственно передачи данных по сети. Функции управления реализуются в выделенном компоненте программно-конфигурируемой сети - в контроллере программно-конфигурируемой сети, представляющем собой компьютер-сервер, управляющий сетевым OpenFlow совместимым оборудованием по протоколу OpenFlow.
Используемые в настоящее время методы управления сетевым оборудованием реализуют способ удаленного управления сетевым оборудованием по принципу «вручную» и не обладают достаточной гибкостью и быстродействием для обеспечения расширения (масштабирования) сети и равномерного распределения сетевой нагрузки в больших сетях со сложной топологией, к которым относятся программно-конфигурируемые сети. Традиционное конфигурирование каждого сетевого устройства выполняется человеком (системным администратором, администратором сети или оператором сетевого оборудования) по командным или файловым протоколам управления SNMP, Telnet, SSH, FTP. В основе архитектуры программно-конфигурируемых сетей лежит другой подход, основанный на использовании открытого протокола OpenFlow, позволяющего не «вручную», а программно управлять сетевой архитектурой. Протокол OpenFlow позволяет задавать конфигурацию сетевых устройств программно с централизованного компонента управления сетью - контроллера программно-конфигурируемой сети. Основными функциями контроллера программно-конфигурируемой сети являются добавление и удаление записей из таблицы сетевых потоков на контролируемом сетевом устройстве, подключенном к контроллеру и совместимом с протоколом OpenFlow. В таком случае контроллер обеспечивает динамический анализ текущего состояния всех подключенных устройств. На контроллере программно-конфигурируемой сети установлена сетевая операционная система, которая обеспечивает работу программной системы управления сетью. К задачам такой системы управления сетью относятся: сбор сведений о сетевом оборудовании, сбор данных о сетевых взаимодействиях сетевого оборудования и о текущем состоянии сетевого оборудования, настройка сетевого оборудования в зависимости от уровня сетевой нагрузки и текущего состояния.
В программно-конфигурируемых сетях сетевые устройства (коммутаторы и маршрутизаторы), управляемые по протоколу OpenFlow, называют OpenFlow-коммутаторами и OpenFlow-маршрутизаторами. Для каждого поступающего сетевого пакета OpenFlow-коммутатор (OpenFlow-маршрутизатор) принимает решение о направлении его дальнейшей пересылки. Направление пересылки пакета определяется, исходя из управляющей таблицы сетевых потоков. Каждая таблица в сетевом устройстве, поддерживающем протокол OpenFlow и подключаемом к контроллеру, состоит из набора записей. Каждая запись содержит идентификационные параметры сетевых пакетов, для которых данная запись применяется, статистическую информацию и набор инструкций, которые должны быть применены к сетевым пакетам. Определение маршрута для каждого поступившего сетевого пакета осуществляется путем сопоставления параметров данного сетевого пакета с параметрами, указанными в каждой записи таблицы сетевых потоков, хранящейся на OpenFlow-коммутаторе и OpenFlow-маршрутизаторе. В случае выявления совпадения сетевой пакет обрабатывается согласно инструкции, указанной в соответствующей записи, и вследствие этого направляется по маршруту, указанному в инструкции. Если ни одна запись для данного пакета в таблице сетевых потоков не найдена, то пакет передается на обработку контроллеру программно-конфигурируемой сети, который формирует новую запись для данного сетевого потока, а именно данного сетевого пакета и для всех однотипных с ним последующих сетевых пакетов, занося новый маршрут для данного сетевого потока в таблицу сетевых потоков соответствующего OpenFlow-коммутатора и OpenFlow-маршрутизатора.
Контроллер программно-конфигурируемой сети осуществляет конфигурацию OpenFlow-коммутаторов и OpenFlow-маршрутизаторов, изменяя записи в таблицах сетевых потоков, тем самым изменяя направление передачи пакетов в сети. Во всех существующих конфигурациях OpenFIow-оборудования таблицы сетевых потоков задаются с записями, для которых указаны одинаковые приоритеты. Вследствие этого записи в таблице располагаются в произвольном порядке. В существующих решениях, обеспечивающих управление OpenFlow-коммутаторами и OpenFlow-маршрутизаторами, все записи в таблицах сетевых потоков равноправны и порядок их обработки в таблице не задан, что приводит к необходимости перебора всех записей таблицы сетевых потоков в поисках искомой записи и, соответственно, к временным задержкам при передаче сетевых пакетов (US 2011286324, H04L 12/26, опубл. 2011-11-24; EP 2408155, H04L 12/56, опубл. 2012-01-18).
Однако OpenFlow-оборудование позволяет задавать приоритеты записей и тем самым управлять очередностью обработки сетевых пакетов данным устройством. Таким образом, повышение быстродействия OpenFlow-коммутаторов и OpenFlow-маршрутизаторов при обработке сетевых пакетов заключается в создании такой системы управления в программно-конфигурируемых сетях, которая базируется на переконфигурировании таблиц сетевых потоков на основе расчета приоритета записей в таблицах. В основу такого расчета приоритета положено разбиение байта ToS сетевого пакета на набор указателей классификации данного пакета и распределения сетевого трафика по программируемым классам сетевых пакетов.
В основу изобретения положена задача создания способа автоматического задания конфигурации OpenFlow-коммутаторов и OpenFlow-маршрутизаторов, который повышает быстродействие OpenFlow-коммутаторов и OpenFlow-маршрутизаторов при обработке сетевых пакетов за счет реализации управления сетевой инфраструктурой в компьютерной программно-конфигурируемой сети, инфраструктуру которой составляет OpenFlow-коммутатор (OpenFlow-маршрутизатор) и контроллер программно-конфигурируемой сети. Решение данной задачи обеспечивается за счет динамического изменения приоритетов записей в таблицах сетевых потоков в соответствии с параметрами качества сетевого трафика и статистики OpenFlow-оборудования. Данный способ позволяет оптимизировать процесс обработки сетевого пакета за счет установления приоритетного порядка сопоставления параметров пакета с параметрами записей в таблице сетевых потоков и дальнейшего выполнения действий, указанных в таблице сетевых потоков для соответствующей пакету записи. За счет организации очередей записей на основе приоритетов и классификации сетевых пакетов применение данного способа обеспечивает сокращение времени поиска записей в таблицах сетевых потоков и, как следствие, повышение производительности сетевого OpenFlow совместимого сетевого оборудования.
Решение поставленной технической задачи обеспечивается за счет передачи сетевого пакета, для которого не было найдено соответствия с записями в таблице сетевых потоков OpenFlow-коммутаторов и OpenFlow-маршрутизаторов, контроллеру программно-конфигурируемой сети для формирования им в таблице сетевых потоков новой записи. Данная запись таблицы сетевых потоков, соответствующая данному сетевому пакету, формируется в зависимости от того, установлен ли байт ToS. Первые три бита байта ToS соответствуют приоритету данного IP-пакета, четвертый бит - требованию ко времени задержки передачи IP-пакета, пятый бит - требованию к пропускной способности маршрута, по которому должен быть передан IP-пакет, шестой бит - требованию к надежности передачи IP-пакета. В случае если байт ToS не задан, сетевому пакету присваивается наименьший приоритет записи в таблице сетевых потоков. Пакет, для которого задан байт ToS, относят к одному из трех классов трафик. Далее данному пакету присваивается приоритет записи в таблице сетевых потоков, расчет которого производится с учетом весового коэффициента и параметра Open Flow-статистики, соответствующих выбранному классу трафика, а также с учетом приоритета пакета, заданного первыми тремя битами байта ToS.
j
j
В соответствии со структурой байта ToS выделены три класса (K, 1≤j≤3) обрабатываемого сетевого трафика, каждый из которых характеризуется центром класса (µ, 1≤j≤3):
1
- трафик, к которому предъявляются особые требования к временной задержке передачи (D-трафик, от англ. Delay). Центр класса - вектор µ=〈00010000〉;
2
- трафик, к которому предъявляются особые требования к пропускной способности маршрута (Т-трафик, от англ. Throughput). Центр класса - вектор µ=〈00001000〉;
3
- трафик, к которому предъявляются особые требования к надежности передачи (R-трафик, от англ. Reliability). Центр класса - вектор µ=〈00000100〉.
j
Каждому классу изначально задают значение весового коэффициента (w, 1≤j≤3), влияющее на приоритет записи в таблице сетевых потоков, создаваемой в соответствии с анализируемым сетевым пакетом.
j
Каждому классу трафика в соответствие ставится параметр Open Flow-статистики для порта (S, 1≤j≤3), который будет учитываться при расчете приоритета записи в таблице сетевых потоков:
- для D-трафика учитывается отношение количества отправленных пакетов (TransmPack) к количеству принятых пакетов (RecPack);
- для Т-трафика учитывается отношение количества отправленных байтов (TransmBytes) к количеству принятых байтов (RecBytes);
- для R-трафика учитывается отношение суммы количества отброшенных при приеме пакетов (RecDrops) и количества отброшенных при приеме пакетов (TransmDrops) к количеству принятых пакетов (RecPack).
На фиг.1 представлена схема управления сетевыми потоками в программно-конфигурируемых сетях. Взаимодействие между OpenFlow-коммутатором (OpenFlow-маршрутизатором) и контроллером программно-конфигурируемой сети осуществляется посредством протокола OpenFlow. Для поступающего на сетевое оборудование сетевого пакета выполняется поиск записи в таблице сетевых потоков. Если запись найдена, пакет передается далее в сеть согласно инструкциям, указанным в данной записи. В случае отсутствия в таблице сетевых потоков записи, соответствующей сетевому пакету, данный пакет передается контроллеру программно-конфигурируемой сети для генерации новой записи в таблице сетевых потоков. На фиг.2 представлена схема работы контроллера программно-конфигурируемой сети. На вход контроллеру поступает пакет, для которого не было найдено соответствие с записями в таблице сетевых потоков сетевого оборудования, на выходе контроллер формирует новую запись в таблице сетевых потоков, содержащую параметры, статистику и инструкции, а также устанавливает приоритет данной записи в таблице сетевых потоков. При вычислении приоритета записи в таблице сетевых потоков контроллер программно-конфигурируемой сети учитывает тип трафика, к которому относится сетевой пакет, полученный контроллером, и приоритет данного сетевого пакета, заданный первыми тремя битами байта ToS, в случае если байт ToS не задан, сетевому пакету присваивается наименьший приоритет записи в таблице сетевых потоков.
Для отнесения сетевого пакета, полученного контроллером программно-конфигурируемой сети, к одному из определенных классов трафика вычисляется расстояние Хэмминга [Скляр Б. Цифровая связь: Теоретические основы и практическое применение. М.: Вильямс, 2003] между вектором центра соответствующего класса и вектором, представляющим байт ToS анализируемого пакета.
<mrow><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><msubsup><mi>Σ</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>L</mi></msubsup><mrow><mo>|</mo><mrow><msub><mi>x</mi><mrow><msub><mi>i</mi><mi>k</mi></msub></mrow></msub><mo>−</mo><msub><mi>x</mi><mrow><msub><mi>j</mi><mi>k</mi></msub></mrow></msub></mrow><mo>|</mo></mrow></mrow>
Весовой коэффициент Хэмминга бинарного вектора определяется как число ненулевых элементов данного вектора. Расстоянием Хэмминга - число позиций, на которых различаются соответствующие векторы значений:
, где L - длина вектора.
Согласно свойствам сложения по модулю 2, сумма двух бинарных векторов является другим бинарным вектором, двоичные единицы которого расположены на тех позициях, которыми эти векторы отличаются.
Расстояние Хэмминга между двумя векторами равно весовому коэффициенту Хэмминга их суммы. Также, весовой коэффициент Хэмминга бинарного вектора равен его расстоянию Хэмминга до нулевого вектора. Расстояние Хэмминга является метрикой на множестве бинарных векторов длины L, удовлетворяя аксиомам метрики.
<mrow><msubsup><mi>x</mi><mi>i</mi><mo>*</mo></msubsup></mrow>
<mrow><msubsup><mi>x</mi><mi>i</mi><mo>*</mo></msubsup></mrow>
<mrow><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><msubsup><mi>Σ</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></msubsup><mrow><mo>|</mo><mrow><msubsup><mi>x</mi><mi>i</mi><mo>*</mo></msubsup><msub><mrow /><mi>k</mi></msub><mo>−</mo><msub><mi>μ</mi><mrow><msub><mi>j</mi><mi>k</mi></msub></mrow></msub></mrow><mo>|</mo></mrow></mrow>
<mrow><msubsup><mi>x</mi><mi>i</mi><mo>*</mo></msubsup></mrow>
<mrow><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><munder><mrow><mi>min</mi></mrow><mrow><mn>1</mn><mo>≤</mo><mi>j</mi><mo>≤</mo><mn>3</mn></mrow></munder><mtext> </mtext><mtext> </mtext><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub></mrow>
<mrow><msubsup><mi>x</mi><mi>i</mi><mo>*</mo></msubsup></mrow>
<mrow><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><munder><mrow><mi>min</mi></mrow><mrow><mn>1</mn><mo>≤</mo><mi>j</mi><mo>≤</mo><mn>3</mn></mrow></munder><mtext> </mtext><mtext> </mtext><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub></mrow>
1≤j≤3
ij
j
Анализируемый байт ToS сетевого пакета, полученного контроллером программно-конфигурируемой сети, представляется в виде вектора
. Между полученным вектором
и текущими центрами классов вычисляется расстояние Хэмминга:
, 1≤j≤3. Вектор
относят к классу, которому соответствует наименьшее расстояние Хэмминга min d. Если для нескольких j выполняется равенство
, то вектор
может быть отнесен к любому классу K, для которого
.
<mrow><msubsup><mi>x</mi><mi>i</mi><mo>*</mo></msubsup></mrow>
j
j
j
i
j
j
j
j
i
В соответствии с установленной принадлежностью вектора
к классу K вычисляется значение приоритета записи в таблице сетевых потоков, соответствующей сетевому пакета, полученному контроллером программно-конфигурируемой сети: F=w·S+P, где w - весовой коэффициент, соответствующий классу K, S - учитываемый параметр OpenFlow-статистики для порта, соответствующий классу K, P - приоритет, заданный первыми тремя битами байта ToS, указанный в десятичной системе счисления.
j
Данный метод является универсальным за счет того, что для каждой системы взаимодействия в программно-конфигурируемых сетях, в состав инфраструктуры которых входят OpenFlow-коммутаторы и OpenFlow-маршрутизаторы, могут быть определены свои значения весовых коэффициентов w, 1≤j≤3.
<mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup><mo>=</mo><mrow><mo>〈</mo><mrow><mn>10110100</mn></mrow><mo>〉</mo></mrow></mrow>
Рассмотрим пример вычисления приоритета записи в таблице сетевых потоков OpenFlow-коммутатора (OpenFlow-маршрутизатора), соответствующей сетевому пакету, полученному контроллером программно-конфигурируемой сети, с заданным байтом ToS, которому соответствует двоичный вектор
.
<mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup></mrow>
<mrow><msub><mi>d</mi><mrow><mn>0</mn><mi>j</mi></mrow></msub><mo>=</mo><msubsup><mi>Σ</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></msubsup><mrow><mo>|</mo><mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup><msub><mrow /><mi>k</mi></msub><mo>−</mo><msub><mi>μ</mi><mrow><msub><mi>j</mi><mi>k</mi></msub></mrow></msub></mrow><mo>|</mo></mrow></mrow>
Вычислим расстояние Хэмминга между вектором
и текущими центрами классов
, 1≤j≤3:
<mrow><msub><mi>d</mi><mrow><mn>01</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><mrow><mrow><mo>|</mo><mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup><msub><mrow /><mi>k</mi></msub><mo>−</mo><msub><mi>μ</mi><mrow><msub><mn>1</mn><mi>k</mi></msub></mrow></msub></mrow><mo>|</mo></mrow></mrow></mstyle><mo>=</mo><mn>3</mn></mrow>
;
<mrow><msub><mi>d</mi><mrow><mn>02</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><mrow><mrow><mo>|</mo><mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup><msub><mrow /><mi>k</mi></msub><mo>−</mo><msub><mi>μ</mi><mrow><msub><mn>2</mn><mi>k</mi></msub></mrow></msub></mrow><mo>|</mo></mrow></mrow></mstyle><mo>=</mo><mn>5</mn></mrow>
;
<mrow><msub><mi>d</mi><mrow><mn>03</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><mrow><mrow><mo>|</mo><mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup><msub><mrow /><mi>k</mi></msub><mo>−</mo><msub><mi>μ</mi><mrow><msub><mn>3</mn><mi>k</mi></msub></mrow></msub></mrow><mo>|</mo></mrow></mrow></mstyle><mo>=</mo><mn>3</mn></mrow>
.
<mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup></mrow>
Определим наименьшее значение расстояния Хэмминга между вектором
и центрами классов:
<mrow><munder><mrow><mi>min</mi></mrow><mrow><mn>1</mn><mo>≤</mo><mi>j</mi><mo>≤</mo><mn>3</mn></mrow></munder><mtext> </mtext><msub><mi>d</mi><mrow><mn>0</mn><mi>j</mi></mrow></msub><mo>=</mo><mi>min</mi><mrow><mo>{</mo><mrow><mn>3</mn><mo>;</mo><mn>5</mn><mo>;</mo><mn>3</mn></mrow><mo>}</mo></mrow><mo>=</mo><mn>3</mn><mo>=</mo><msub><mi>d</mi><mrow><mn>01</mn></mrow></msub><mo>=</mo><msub><mi>d</mi><mrow><mn>03</mn></mrow></msub></mrow>
.
0j
1≤j≤3
0j
1
3
1
1
<mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup></mrow>
<mrow><msubsup><mi>x</mi><mn>0</mn><mo>*</mo></msubsup><mo>=</mo><mrow><mo>〈</mo><mrow><mn>10110100</mn></mrow><mo>〉</mo></mrow></mrow>
Так как для j=1 и для j=3 выполняется равенство d=min d, то, в соответствии с предложенным алгоритмом, вектор
может быть отнесен как к классу K, так и к классу K. Отнесем вектор
к классу K с центром µ=〈00010000〉.
j
j
1
2
3
Допустим, заданы следующие весовые коэффициенты w, соответствующие классам K, 1≤j≤3: w=20; w=15; w=30.
1
Согласно предложенному алгоритму, класс K соответствует D-трафику, для которого необходимо вычислить следующий параметр OpenFlow-статистики для порта:
<mrow><msub><mi>S</mi><mn>1</mn></msub><mo>=</mo><mfrac><mrow><mi>T</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mi>m</mi><mi>P</mi><mi>a</mi><mi>c</mi><mi>k</mi></mrow><mrow><mi>Re</mi><mi>c</mi><mi>P</mi><mi>a</mi><mi>c</mi><mi>k</mi></mrow></mfrac></mrow>
,
где TransmPack - количество отправленных пакетов, RecPack - количество принятых пакетов.
<mrow><msub><mi>S</mi><mn>1</mn></msub><mo>=</mo><mfrac><mrow><mn>90</mn></mrow><mrow><mn>100</mn></mrow></mfrac><mo>=</mo><mn>0</mn><mo>,</mo><mn>9</mn></mrow>
Пусть TransmPack = 90, RecPack = 100. Тогда
.
0
Приоритет, заданный первыми тремя битами байта ToS, указанный в десятичной системе счисления, равен P=5.
Вычислим значение приоритета записи в таблице сетевых потоков, советующей рассматриваемому сетевому пакету:
1
1
0
F=w·S+P=20·0,9+5=23.
Все сетевые потоки, которым в таблице сетевых потоков соответствуют записи с более высоким приоритетом, будут обработаны раньше. Приоритезация записей в таблице сетевых потоков OpenFlow-коммутатора (Open Flow-маршрутизатора) и, соответственно, сетевых потоков позволяет сократить время обнаружения записи в таблице сетевых потоков за счет задания очередности записей.
Описанный способ обеспечивает повышение производительности OpenFlow-коммутаторов и OpenFlow-маршрутизаторов в программно-конфигурируемой сети, повышение пропускной способности программно-конфигурируемой сети, упрощение процесса классификации трафика, снижение числа ошибок при осуществлении настройки программно-конфигурируемой сети.