Способ организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения
METHOD OF ORGANIZING AUTOMATIC BALANCING OF MULTI-THREADED CONNECTION FLOWS ON SWITCHING DEVICES USING AUTOMATIC LEARNING THEREOF

ОБЛАСТЬ ТЕХНИКИ
Техническое решение относится к области компьютерных сетей, а именно к технологиям повышения эффективности их работы с помощью реализации принципа многопоточной маршрутизации транспортных соединений. Указанный принцип подразумевает прозрачное для приложений разделение транспортных соединений на множество независимых с точки зрения сети потоков данных и балансировку этих потоков сразу по нескольким маршрутам между отправителем и получателем.
УРОВЕНЬ ТЕХНИКИ
Хотя из уровня техники известно множество различных способов балансировки трафика по нескольким разным маршрутам на графе топологии сети, большинство из них не предназначено для балансировки транспортных соединений.
Протокол Link Aggregation Control Protocol (LACP) позволяет объединять несколько параллельных линий связи между двумя коммутационными устройствами воедино, представляя эти связи в виде группы Link Aggregation Group (LAG). При этом возникает задача балансировки пакетов данных между линиями связи, объединенными в рамках одной группы. Однако выбор маршрута для каждого пакета здесь обычно происходит на основании заголовков протоколов канального (Ethernet) и сетевого (IP) уровня сетевого стека TCP/IP. Таким образом, LACP не только не способен балансировать трафик внутри одного и того же транспортного соединения, но и не способен балансировать соединения, установленные между одной и той же парой сетевых интерфейсов.
Технология Equal Cost Multi Path (ECMP) широко используется для балансировки трафика между альтернативными маршрутами с одинаковыми метриками качества многими современными протоколами маршрутизации (например, OSPF, EIGRP и другими). Данная технология обладает лучшей гранулярностью, нежели LACP - при выборе маршрута для отправки каждого конкретного пакета ЕСМР учитывает адреса не только сетевого (IP), но и транспортного (TCP, UDP и другие) уровней. Таким образом, сетевые устройства с ЕСМР не способны балансировать трафик одного и того же соединения - все пакеты соединения всегда будут отправляться по одному из доступных маршрутов.
Необходимо отметить, что LACP и ЕСМР не пытаются балансировать пакеты внутри одного соединения не столько из-за сложности построения надлежащего механизма перераспределения пакетов, сколько из-за технических ограничений протокола TCP. Поскольку данный протокол предназначен для надежной передачи пакетов данных через сеть, то он должен детектировать возможные потери пакетов при передаче, переотправляя потерянные пакеты повторно, пока они не будут доставлены получателю. Протокол TCP предполагает, что пакет с номером N потерян, если он все еще не был доставлен получателю на тот момент, когда тот получил уже несколько пакетов с большими номерами. При отправке пакетов одного и того же соединения разными маршрутами, пусть даже с одинаковыми метриками качества, время передачи этих пакетов может сильно варьироваться. Пакеты будут доставляться получателю не по порядку, и протокол TCP будет необоснованно детектировать потери пакетов там, где их не было. В то же время, при потере пакета протокол TCP предполагает, что сеть была перегружена, и снижает скорость передачи данных, что пагубно сказывается на общей производительности сети. Исследования показывают, что потери в скорости передачи данных вследствие неупорядоченной доставки пакетов значительно превышает выгоду от балансировки трафика соединения между несколькими маршрутами.
Протокол многопоточной маршрутизации МРТСР предлагает обойти указанную проблему, перенеся задачу переупорядочивания пакетов на конечные хосты. Отправитель МРТСР соединения самостоятельно разделяет пакеты каждого транспортного соединения на несколько самодостаточных TCP потоков, которые передают через сеть независимо друг от друга. Получатель МРТСР, в свою очередь, восстанавливает оригинальный порядок пакетов без снижения скорости передачи.
Совмещение технологий МРТСР и ЕСМР в ряде случаев может позволить балансировать пакеты одного транспортного соединения без снижения скорости передачи. Однако коммутатор с поддержкой ЕСМР не сможет выявлять зависимости между потоками: по воле случая ЕСМР может распределить на один маршрут сразу несколько потоков одного и того же МРТСР соединения. Таким образом, балансировка будет некорректной.
Еще одним недостатков связки МРТСР-ЕСМР является тот факт, что ЕСМР предлагает балансировать трафик между маршрутами лишь в том случае, если эти маршруты обладают одинаковыми (реже, близкими) метриками качества. В то же время критерии выбора маршрутов для соединений МРТСР могут быть несколько иными. Поскольку МРТСР соединения самостоятельно балансируют количество данных переданных по каждому потоку, то они могут увеличить эффективность работы сети и в том случае, когда задействованные ими потоки имеют разные метрики. Обычно основным критерием выбора альтернативных маршрутов для МРТСР является количество пересекающихся ребер в соответствующих им путях. Чем меньше это количество, тем больше вероятность того, что соединение сможет обойти узкое место и обеспечить большую скорость передачи данных.
Из уровня техники известен ряд работ, предлагающих обойти ограничения, которые возникают при облуживании многопоточных соединений МРСР с помощью технологии ЕСМР, в рамках программно-конфигурируемых сетей (ПКС). Протокол FDMP предлагает использовать контроллер ПКС для перехвата всех пакетов, передающиеся между отправителем и получателем на этапе установки каждого TCP потока, и определять принадлежность TCP потока к тому или иному соединению на основании анализа заголовков перехваченных пакетов. Обладая информацией о том, что несколько потоков относятся к одному и тому же МРТСР соединению, контроллер ПКС сможет маршрутизировать их таким образом, чтобы обеспечить каждый из них своим собственным маршрутом, имеющим минимальное пересечение с остальными маршрутами того же соединения.
Одной из основных проблем предложенного подхода к реализации маршрутизации многопоточных соединений в рамках ПКС является чрезмерная интенсивность обращения коммутаторов к контроллеру. Необходимость вовлечения контроллера для перехвата пакетов на этапе установки каждого TCP соединения накладывает серьезные ограничения на масштаб и интенсивность обмена данными внутри сети.
Одной из основных проблем при реализации указанной концепции на практике является сложность реализации привязки разных потоков данных к разным маршрутам. Представленное далее техническое решение предлагает одно из возможных решений указанной проблемы.
СУЩНОСТЬ ТЕХНИЧЕСКОГО РЕШЕНИЯ
Данное техническое решение направлено на устранение недостатков, присущих существующим аналогам.
Технический результат от использования данного технического решения заключается в расширении функциональности коммутационного устройства по детектированию отдельных потоков многопоточных соединений, определению связей между этими потоками и выбору надлежащих инструкций по обработке потоков на основании установленных связей.
Данный технический результат достигается за счет добавления двух новых таблиц - таблицы ключей и таблицы потоков, а так же изменений правил сопоставления пакетов с записями в таблице маршрутизации.
В одном из предпочтительных вариантов реализации предложен способ организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения, характеризующийся тем что: получают пакет данных с установленным флагом TCP SYN; осуществляют анализ опциональных заголовков уровня TCP; при обнаружении среди заголовков опции MP_CAPABLE обновляют таблицу ключей коммутационного устройства; осуществляют поиск в таблице по сигнатуре TCP потока - совокупности IP адресов и TCP портов для его отправителя и получателя: если в таблице ключей нет записи с соответствующей сигнатурой, формируют новую запись, включающую сигнатуру потока, ключ, содержащийся в опции MP_CAPABLE и текущую временную метку; если в таблице уже есть запись с указанной сигнатурой потока, обновляют указанную запись, актуализируя ключ МРТСР отправителя и временную метку, указанные внутри таблицы; если в таблице есть запись с обратной сигнатурой, которая соответствует сигнатуре перехваченного потока с точностью до перестановки адресов отправителя и получателя, то используя сохраненный в таблице ключ отправителя и ключ получателя, содержащийся в опции перехваченного потока, вычисляют значение НМАР - хэш-функции, используемой для идентификации многопоточного соединения; если в таблице потоков уже есть запись с указанной сигнатурой, то ее удаляют и создают запись о первом потоке нового соединения.
В случае обнаружения TCP SYN пакета с опцией MP_JOIN производят обновление таблицы потоков коммутационного устройства.
Проводят углубленный анализ заголовков так же и при перехвате пакетов с выставленными флагами TCP FIN и TCP RST.
При перехвате всякого TCP пакета осуществляют поиск соответствующей ему записи в таблице потоков по его сигнатуре, при ее нахождении обновляют значение ее временной метки.
Если в таблице коммутационного устройства не осталось свободного места, удаляют запись с самой старой временной меткой.
Данное техническое решение может быть выполнено в виде системы организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения, содержащую: по крайней мере, одно устройство обработки команд; по крайней мере, одно устройство хранения данных; одну или более компьютерных программ, загружаемых в, по крайней мере, одно вышеупомянутое устройство хранения данных и выполняемых на, по крайне мере, одном из вышеупомянутых устройств обработки команд, при этом одна или более компьютерных программ содержат следующие инструкции: получают пакет данных с установленным флагом TCP SYN; осуществляют анализ опциональных заголовков уровня TCP; при обнаружении среди заголовков опции MP_CAPABLE обновляют таблицу ключей коммутационного устройства; осуществляют поиск в таблице по сигнатуре TCP потока - совокупности IP адресов и TCP портов для его отправителя и получателя: если в таблице ключей нет записи с соответствующей сигнатурой, формируют новую запись, включающую сигнатуру потока, ключ, содержащийся в опции MP_CAPABLE и текущую временную метку; если в таблице уже есть запись с указанной сигнатурой потока, обновляют указанную запись, актуализируя ключ МРТСР отправителя и временную метку, указанные внутри таблицы; если в таблице есть запись с обратной сигнатурой, которая соответствует сигнатуре перехваченного потока с точностью до перестановки адресов отправителя и получателя, то используя сохраненный в таблице ключ отправителя и ключ получателя, содержащийся в опции перехваченного потока, вычисляют значение НМАР - хэш-функции, используемой для идентификации многопоточного соединения; если в таблице потоков уже есть запись с указанной сигнатурой, то ее удаляют и создают запись о первом потоке нового соединения.
В случае обнаружения TCP SYN пакета с опцией MP_JOIN производят обновление таблицы потоков коммутационного устройства.
Проводят углубленный анализ заголовков так же и при перехвате пакетов с выставленными флагами TCP FIN и TCP RST.
При перехвате всякого TCP пакета осуществляют поиск соответствующей ему записи в таблице потоков по его сигнатуре, при ее нахождении обновляют значение ее временной метки.
Если в таблице коммутационного устройства не осталось свободного места, удаляют запись с самой старой временной меткой.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 - фазы алгоритма дополнительной обработки пакетов многопоточных соединений;
Фиг. 2 - блок-схема способа организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения;
Фиг. 3 - система для реализации способа организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения.
ПОДРОБНОЕ ОПИСАНИЕ ТЕХНИЧЕСКОГО РЕШЕНИЯ
В данном устройстве под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций).
Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).
Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические накопители информации (CD, DVD, Blue-Ray диски).
Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.
Данное техническое решение обеспечивает расширение функциональности коммутационного устройства по детектированию отдельных потоков многопоточных соединений, определению связей между этими потоками и выбору надлежащих инструкций по обработке потоков на основании установленных связей за счет добавления двух новых таблиц - таблицы ключей и таблицы потоков, а так же изменений правил сопоставления пакетов с записями в таблице маршрутизации.
Согласно предлагаемому техническому решению, предложен способ организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения, характеризующийся тем что: получают пакет данных с установленным флагом TCP SYN; осуществляют анализ опциональных заголовков уровня TCP; при обнаружении среди заголовков опции MP_CAPABLE обновляют таблицу ключей коммутационного устройства; осуществляют поиск в таблице по сигнатуре TCP потока - совокупности IP адресов и TCP портов для его отправителя и получателя: если в таблице ключей нет записи с соответствующей сигнатурой, формируют новую запись, включающую сигнатуру потока, ключ, содержащийся в опции MP_CAPABLE и текущую временную метку; если в таблице уже есть запись с указанной сигнатурой потока, обновляют указанную запись, актуализируя ключ МРТСР отправителя и временную метку, указанные внутри таблицы; если в таблице есть запись с обратной сигнатурой, которая соответствует сигнатуре перехваченного потока с точностью до перестановки адресов отправителя и получателя, то используя сохраненный в таблице ключ отправителя и ключ получателя, содержащийся в опции перехваченного потока, вычисляют значение НМАР - хэш-функции, используемой для идентификации многопоточного соединения; если в таблице потоков уже есть запись с указанной сигнатурой, то ее удаляют и создают запись о первом потоке нового соединения.
На Фиг. 1 изображены фазы алгоритма дополнительной обработки пакетов многопоточных соединений.
Предлагаемое техническое решение дополняет алгоритм обработки поступающих на коммутационные устройства пакеты данных с тем, чтобы направлять разные потоки многопоточных соединений по разным маршрутам через сеть. В процессе разбора и анализа заголовков пакетов коммутационное устройство, реализующее предложенный способ маршрутизации многопоточных соединений, должно опираться не только адреса второго и третьего (например, MAC и IP) уровней стека TCP/IP, но и учитывать некоторую информацию, передающуюся в заголовках протокола TCP.
В случае перехвата пакета с установленным флагом TCP SYN, коммутационное устройство должно осуществить анализ опциональных заголовков уровня TCP. При обнаружении среди заголовков опции MP_CAPABLE коммутатор должен обновить свою таблицу ключей. Для этого коммутатор осуществляет поиск в таблице по сигнатуре TCP потока - совокупности IP адресов и TCP портов для его отправителя и получателя. Действия коммутатора определяются одним из следующих сценариев:
В таблице ключей нет записи с соответствующей сигнатурой. Коммутатор формирует новую запись, включающую сигнатуру потока, ключ, содержащийся в опции MP_CAPABLE и текущую временную метку;
В таблице уже есть запись с указанной сигнатурой потока. Коммутатор обновляет указанную запись, актуализируя ключ МРТСР отправителя и временную метку, указанные внутри таблицы;
В таблице есть запись с обратной сигнатурой, которая соответствует сигнатуре перехваченного потока с точностью до перестановки адресов отправителя и получателя. Используя сохраненный в таблице ключ отправителя и ключ получателя, содержащийся в опции перехваченного потока, коммутатор вычисляет значение НМАР - хэш-функции, используемой для идентификации многопоточного соединения. Найденная в таблице ключей запись удаляется, а значения хэш-функции используется для формирования соответствующей записи в таблице потоков. Если в таблице потоков уже есть запись с указанной сигнатурой, то она удаляется, и коммутатор создает запись о первом потоке нового соединения;
В случае обнаружения TCP SYN пакета с опцией MP_JOIN - она используется многопоточным соединением при открытии дополнительного потока к уже существующим, коммутатор производит обновление своей таблицу потоков:
Содержащееся в опции значение НМАР используется для поиска записей, соответствующих ранее открытым потокам многопоточного соединения. Если таких потоков в таблице не найдено, то коммутатор сбрасывает пакет - он некорректен, поскольку пакет с выставленной опцией MP_JOIN не может быть первым. Многопоточное соединение обязано было начать свою работу с передачи пакетов с выставленной опцией MP_JOIN, которая бы использовалась коммутатором для формирования записи первого потока;
Если таблицу потоков содержит одну или несколько записей с указанным значением НМАР, то коммутатор добавляет к ним новую запись. При этом в качестве индекса потока используется значение, превышающее максимум среди индексов существующих потоков на единицу;
При формировании всякой новой записи в таблице значений коммутатор проверяет, используются ли пары адресов из сигнатуры потока в других записях таблицы. Если пара адресов задействуется в соединении с другим значением НМАР, то соответствующая запись из таблицы удаляется - тем самым гарантируется своевременное удаление устаревших записей, которые могут привести к нарушению консистентности таблицы потоков;
Коммутатор проводит углубленный анализ заголовков так же и при перехвате пакетов с выставленными флагами TCP FIN и TCP RST. Если указанные пакеты несут в себе опции многопоточного соединения, коммутатор удаляет соответствующие записи из содержащейся в нем таблицы потоков. В том случае, если заголовки пакета несут в себе опцию МРТСР FIN или МРТСР RST, коммутатор удаляет так же и другие записи, относящиеся к тому же многопоточному соединению.
Необходимо отметить, что как отдельные потоки, так и целые многопоточные соединения могут завершаться без пересылки пакетов с выставленными флагами FIN или RST. Поэтому таблица потоков может содержать в себе устаревшие и неактуальные записи. В результате, при достаточно продолжительной работе коммутатора, его таблица потоков неизбежно окажется переполненной. Для решения указанной проблемы коммутатор реализует механизм старения записей:
При перехвате всякого TCP пакета коммутатор осуществляет поиск соответствующей ему записи в таблице потоков по его сигнатуре. Если указанная запись была найдена, коммутатор обновляет значение ее временной метки;
Впоследствии, если на каком-то этапе своей работы коммутатор пытается сформировать новую запись, а в таблице коммутатора не осталось свободного места, он удаляет запись с самой старой временной меткой.
В результате сопоставления поступившего на коммутатор пакета с записями из таблицы потоков, коммутационное устройство получает порядковый номер соответствующего потока внутри многопоточного соединения, к которому он относится. В дальнейшем этот номер используется для того, чтобы дифференцировать маршрутизацию указанных потоков несмотря на то, что они направляются к одному и тому же абоненту сети. Существует несколько способов реализовать эту идею на практике:
Коммутационное устройство может иметь несколько таблиц маршрутизации, каждая из которых функционирует независимо от других таблиц. При обслуживании пакета, относящегося к k-му потоку многопоточного соединения, коммутатор использует таблицу k-м номером. Если номер потока превышает количество таблиц n, то маршрутизация пакета производится по правилам таблицы с номером k mod n;
Поскольку многие правила в таблицах могут совпадать, то более эффективным методом реализации указанного подхода, может оказаться использование единственной таблицы маршрутизации, роль ключа в которой будет играть совокупность маски для IP адреса назначения и номера потока. При этом появится возможность совместить многие правила, которые не могли быть объединены при представлении в виде множества таблиц.
Необходимо отметить, что оба приведенных способа могут быть реализованы на современных коммутационных устройствах с поддержкой протокола OpenFlow без необходимости дополнения их функциональных возможностей. Указанный протокол предоставляет как возможности для построения конвейеров обработки пакетов, состоящих из множества таблиц, так и выбирать наборы атрибутов пакетов, по которым осуществляется сопоставление в той или иной таблице. Например, если коммутатор запишет в атрибут METADATA порядковый номер пакета, вычисленный на начальном этапе его обработки, то его смогут использовать все последующие таблицы конвейера OpenFlow.
На Фиг. 2 изображена блок-схема способа организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения.
Согласно Фиг. 3, примерная система для реализации технического решения включает в себя устройство обработки данных 300. Устройство обработки данных 300 может быть сконфигурировано как клиент, сервер, мобильное устройство или любое другое вычислительное устройство, которое взаимодействует с данными в системе совместной работы, основанной на сети. В самой базовой конфигурации устройство обработки данных 300, как правило, включает в себя, по меньшей мере, один процессор 301 и устройство хранения данных 302. В зависимости от точной конфигурации и типа вычислительного устройства системная память 302 может быть энергозависимой (например, оперативное запоминающее устройство (ОЗУ, RAM)), энергонезависимой (например, постоянное запоминающее устройство (ПЗУ, ROM)) или некоторой их комбинацией. Устройство хранения данных 302, как правило, включает в себя одну или более прикладных программ 303 и может включать в себя данные 304 программ. Настоящее техническое решение как способ, описанное в деталях выше, реализовано в прикладных программах 303.
Устройство обработки данных 300 может иметь дополнительные особенности или функциональные возможности. Например, устройство обработки данных 300 может также включать в себя дополнительные устройства хранения данных (съемные и несъемные), такие как, например, магнитные диски, оптические диски или лента. Такие дополнительные хранилища проиллюстрированы на Фиг. 3 посредством несъемного хранилища 307 и съемного хранилища 308. Компьютерные носители данных могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или при помощи любой технологии для хранения информации. Устройство хранения данных 302, несъемное хранилище 307 и съемное хранилище 308 являются примерами компьютерных носителей данных. Компьютерные носители данных включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память или память, выполненную по другой технологии, ПЗУ на компакт-диске (CD-ROM), универсальные цифровые диски (DVD) или другие оптические запоминающие устройства, магнитные кассеты, магнитные ленты, хранилища на магнитных дисках или другие магнитные запоминающие устройства, или любую другую среду, которая может быть использована для хранения желаемой информации и к которой может получить доступ устройство обработки данных 300. Любой такой компьютерный носитель данных может быть частью устройства 300. Устройство обработки данных 300 может также включать в себя устройство(а) 305 ввода, такие как клавиатура, мышь, перо, устройство с речевым вводом, устройство сенсорного ввода, и так далее. Устройство (а) 306 вывода, такие как дисплей, динамики, принтер и тому подобное, также могут быть включены в состав устройства.
Устройство обработки данных 300 содержит коммуникационные соединения, которые позволяют устройству связываться с другими вычислительными устройствами, например по сети. Сети включают в себя локальные сети и глобальные сети наряду с другими большими масштабируемыми сетями, включая, но не в ограничительном смысле, корпоративные сети и экстрасети. Коммуникационное соединение является примером коммуникационной среды. Как правило, коммуникационная среда может быть реализована при помощи машиночитаемых инструкций, структур данных, программных модулей или других данных в модулированном информационном сигнале, таком как несущая волна, или в другом транспортном механизме, и включает в себя любую среду доставки информации. Термин «модулированный информационный сигнал» означает сигнал, одна или более из его характеристик изменены или установлены таким образом, чтобы закодировать информацию в этом сигнале. Для примера, но без ограничения, коммуникационные среды включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Термин «машиночитаемый носитель», как употребляется в этом документе, включает в себя как носители данных, так и коммуникационные среды.
Специалисту в данной области, очевидно, что конкретные варианты осуществления способа и системы организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения описаны здесь в целях иллюстрации, допустимы различные модификации, не выходящие за рамки и сущности объема изобретения.