АДАПТИВНАЯ БАЛАНСИРОВКА НАГРУЗКИ ПРИ ОБРАБОТКЕ ПАКЕТОВ
ADAPTIVE LOAD BALANCING DURING PACKAGE PROCESSING

Область техники, к которой относится изобретение
Варианты осуществления изобретения касаются области сетевых технологий: и более конкретно, касаются адаптивной балансировки нагрузки в системе обработки пакетов.
Уровень техники
Виртуализация (NFV) сетевых функций является идеей сетевой архитектуры, которая реализует конкретные функции или целые классы функций сетевых устройств в виде строительных блоков, которые могут быть объединены или выстроены в цепочку с целью создания услуг связи. Эти функции реализуются в виртуализированной программной среде, которая позволяет их распространять и исполнять на стандартных аппаратных средствах, размещенных в сети.
NFV опирается на традиционные технологии виртуализации серверов, такие как технологии, используемые в программном обеспечении корпоративного уровня, но отличается от них. Виртуализированная сетевая функция или VNF может быть реализована с помощью одной или нескольких виртуальных машин, выполняющих различное программное обеспечение и процессы, поверх стандартных архитектур сетевых устройств или серверов, таких как сетевые коммутаторы и системы запоминающих устройств, или даже в облачной вычислительной инфраструктуре, вместо обладания специальными аппаратными устройствами для каждой сетевой функции.
VNF может быть реализована для осуществления обработки пакетов и перенаправления трафика уровня 2, уровня 2,5 или уровня 3 и может называться перенаправляющей VNF. Пакеты, принятые сетевым элементом, реализующим перенаправляющую VNF, распределяют по потокам обработки пакетов и осуществляющим задачу перенаправления. Потоки обработки пакетов могут использовать модель «выполнение до завершения», в которой каждый поток исполняет экземпляр перенаправляющего программного обеспечения (например, функциональные возможности вход/выход или сжатый вход/выход). Для распределения пакетов по потокам обработки пакетов могут быть использованы разных подходы.
Раскрытие сущности изобретения
Описан способ перенаправления пакетов в сетевом устройстве. Этот способ включает в себя этапы, на которых: принимают пакет в сетевом устройстве; приписывают пакет к потоку обработки пакетов из множества потоков обработки пакетов; и определяют состояние первого потока обработки пакетов, при этом состояние установлено на основе отслеживания длины очереди первого потока обработки пакетов, и при этом состояние определяют как одно из нескольких состояний, в том числе переполненное состояние и нормальное состояние. В ответ на определение того, что состояние первого потока обработки пакетов представляет собой нормальное состояние, способ дополнительно включает в себя этапы, на которых: сопоставляют пакет первому потоку обработки пакетов, обрабатывают пакет в первом потоке обработки пакетов и перенаправляют этот пакет. В ответ на определение того, что состояние первого потока обработки пакетов представляет собой переполненное состояние, способ включает в себя этапы, на которых: сопоставляют пакет второму потоку обработки пакетов из некоторого пула потоков обработки пакетов, что делают на основе схемы балансировки нагрузки, при этом пул потоков обработки пакетов содержит некоторое подмножество потоков обработки пакетов из нескольких потоков обработки пакетов, и состояние каждого из потоков обработки пакетов из указанного пула представляет собой переполненное состояние, обрабатывают пакет во втором потоке обработки пакетов и перенаправляют пакет в соответствии с некоторым заранее заданным порядком, при этом этот заранее заданный порядок основан на положении пакета относительно положений других пакетов при их приеме сетевым устройством.
Долговременный считываемый машиной носитель, который предоставляет команды, исполнение которых процессором сетевого устройства, побуждает указанный процессор осуществлять операции, которые включают в себя следующее: приписывают принятый пакет первому потоку обработки пакетов из множества потоков обработки пакетов; и определяют состояние первого потока обработки пакетов, при этом состояние было установлено на основе отслеживания длины очереди первого потока обработки пакетов, и при этом состояние определяют как одно из нескольких состояний, в том числе переполненное состояние и нормальное состояние. В ответ на определение того, что состояние первого потока обработки пакетов представляет собой нормальное состояние, операции дополнительно включают в себя следующее: сопоставляют пакет первому потоку обработки пакетов, обрабатывают пакет в первом потоке обработки пакетов и побуждают перенаправить указанный пакет. В ответ на определение того, что состояние первого потока обработки пакетов представляет собой переполненное состояние, операции дополнительно включают в себя следующее: сопоставляют пакет второму потоку обработки пакетов из некоторого пула потоков обработки пакетов, что делают на основе схемы балансировки нагрузки, при этом пул потоков обработки пакетов содержит некоторое подмножество потоков обработки пакетов из нескольких потоков обработки пакетов и состояние каждого из потоков обработки пакетов из указанного пула представляет собой переполненное состояние, обрабатывают пакет во втором потоке обработки пакетов и побуждают перенаправить указанный пакет в соответствии с некоторым заранее заданным порядком, при этом этот заранее заданный порядок основан на положении пакета относительно положений других пакетов при их приеме сетевым устройством.
Описано сетевое устройство. Сетевое устройство содержит процессор; и долговременный считываемый машиной носитель с кодом, который хранится на указанном носителе и при исполнении которого процессором, осуществляют операции, включающие в себя следующее: приписывают принятый пакет первому потоку обработки пакетов из нескольких потоков обработки пакетов, определяют состояние первого потока обработки пакетов, при этом состояние было установлено на основе отслеживания длины очереди первого потока обработки пакетов, и при этом состояние определяют как одно из нескольких состояний, в том числе переполненное состояние и нормальное состояние. В ответ на определение того, что состояние первого потока обработки пакетов представляет собой нормальное состояние, операции дополнительно включают в себя этапы, на которых: сопоставляют пакет первому потоку обработки пакетов, обрабатывают пакет в первом потоке обработки пакетов и побуждают перенаправить указанный пакет. В ответ на определение того, что состояние первого потока обработки пакетов представляет собой переполненное состояние, операции дополнительно включают в себя следующее: сопоставляют пакет второму потоку обработки пакетов из некоторого пула потоков обработки пакетов, что делают на основе схемы балансировки нагрузки, при этом пул потоков обработки пакетов содержит некоторое подмножество потоков обработки пакетов из нескольких потоков обработки пакетов и состояние каждого из потоков обработки пакетов из указанного пула представляет собой переполненное состояние, обрабатывают пакет во втором потоке обработки пакетов и побуждают перенаправить указанный пакет в соответствии с некоторым заранее заданным порядком, при этом этот заранее заданный порядок основан на положении пакета относительно положений других пакетов при их приеме сетевым устройством.
Варианты осуществления описанных технологий обеспечивают механизм адаптивной обработки пакетов в сетевом устройстве, который направлен на то, чтобы обеспечить высокоэффективную обработку пакетов путем выбора между прямым сопоставлением потока и сопоставлением с балансировкой нагрузки для каждого принятого потока, что делают на основе состояния потока обработки пакетов и приписанного к указанным пакетам. Варианты осуществления описанных технологий позволяют большую часть потоков обрабатывать в соответствии с прямым сопоставлением (поток - поток выполнения), исключая затраты на переупорядочивание для указанной части потоков. Варианты осуществления описанных технологий дополнительно позволяют осуществлять балансировку нагрузки потоков по некоторому подмножеству потоков обработки пакетов только при необходимости. Таким образом, адаптивная обработка пакетов переупорядочивает пакеты только при необходимости.
Краткое описание чертежей
Изобретение будет лучше понятно из последующего описания и приложенных чертежей, используемых для иллюстрации вариантов осуществления изобретения. На чертежах:
фиг. 1 - вид, показывающий операции, осуществляемые в сетевом устройстве для адаптивной балансировки нагрузки при обработке пакетов, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 2 - 3 - виды, показывающие блок-схемы операций для осуществления адаптивной балансировки нагрузки в сетевом устройстве, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 4 - вид, показывающий операции, осуществляемые в сетевом устройстве для адаптивной балансировки нагрузки при обработке пакетов, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 5 - вид, показывающий блок-схему, подробно иллюстрирующую операции, осуществляемые в сетевом устройстве, когда поток обработки пакетов сопоставляют с некоторым сегментом памяти, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 6 - вид, показывающий блок-схему, подробно иллюстрирующую операции, осуществляемые в сетевом устройстве с целью переупорядочивания пакетов, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 7А - вид, показывающий соединения между сетевыми устройствами (ND) в некотором примере сети, а также три примера реализаций ND, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 7В - вид, показывающий пример реализации специализированного сетевого устройства 702, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 7С - вид, показывающий различные примеры, в которых виртуальные сетевые элементы (VNE) могут быть связаны в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 7D - вид, показывающий сеть с единственным сетевым элементом (NE) в каждом ND и в рамках этого прямого подхода отличаются традиционный распределенный подход (обычно используемый традиционными маршрутизаторами) и централизованный подход для поддержания информации о достижимости и перенаправлении (также называемый управлением сетью), в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 7Е - вид, показывающий простой случай, в котором каждое ND реализует единственный NE, но централизованная плоскость управления абстрактно рассматривает несколько NE в разных ND как (для представления) единственный NE в одной из виртуальных сетей, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 7F - вид, показывающий случай, в котором несколько VNE реализованы в разных ND и связаны друг с другом и в котором централизованная плоскость управления абстрактно рассматривает эти несколько VNE так, что они кажутся единым VNE в одной из виртуальных сетей, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 8 - вид, показывающий операции, осуществляемые сетевым устройством для адаптивной балансировки нагрузки при обработке пакетов с минимальным влиянием на хорошо ведущие себя потоки, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 9 - вид, показывающий блок-схему, подробно иллюстрирующую операции, осуществляемые сетевым устройством и направленные на адаптивную обработку пакетов с минимальным влиянием на хорошо ведущие себя потоки, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 10А - вид, показывающий блок-схему, подробно иллюстрирующую операции, осуществляемые сетевым устройством и направленные на сопоставление пакета с потоком обработки пакетов, когда состояние потока обработки пакетов является нормальным состоянием, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 10В - вид, показывающий блок-схему, подробно иллюстрирующую операции, осуществляемые сетевым устройством и направленные на сопоставление пакета с потоком обработки пакетов, когда состояние потока обработки пакетов является переполненным состоянием, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 10С - вид, показывающий блок-схему, подробно иллюстрирующую операции, осуществляемые в сетевом устройстве и направленных на сопоставление пакета с потоком обработки пакетов, когда состояние потока обработки пакетов является переходным состоянием, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 11 - вид, показывающий схему обновления состояния потока обработки пакетов, в соответствии с некоторыми вариантами осуществления изобретения;
фиг. 12 - вид, показывающий соединения между сетевыми устройствами (ND) в некотором примере сети, а также три примера реализаций ND, в соответствии с некоторыми вариантами осуществления изобретения.
Осуществление изобретения
В приведенном ниже описании рассмотрены способы и устройства, выполненные с возможностью динамической балансировки нагрузки при обработке пакетов. В последующем описании для обеспечения более глубокого понимания настоящего изобретения приведено большое количество конкретных деталей, таких как реализации логики, коды операций, средства определения операндов, реализации разделения/совместного использования/дублирования ресурсов, типы и взаимосвязи системных компонентов и логические альтернативы разделения/объединения. Тем не менее, специалистам в рассматриваемой области следует понимать, что настоящее изобретение может быть реализовано без подобных конкретных деталей. В других примерах структуры управления, схемы уровня логических элементов и полные последовательности команд программного обеспечения не показаны подробно, чтобы сделать изобретение более понятным. С помощью приведенных описаний специалисты в рассматриваемой области могут реализовать соответствующие функциональные возможности без проведения лишних экспериментов.
В этом описании слова «один вариант осуществления», «вариант осуществления», «пример варианта осуществления» и так далее показывают, что описанный вариант осуществления изобретения может содержать конкретный признак, структуру или характеристику, но каждый вариант осуществления не обязательно содержит конкретный признак, структуру или характеристику. Более того, такие фразы не обязательно относятся к одному и тому же варианту осуществления изобретения. Далее, когда в связи с некоторым вариантом осуществления изобретения описан конкретный признак, структура или характеристика, считается, что в рамках своих знаний средний специалист в рассматриваемой области может осуществить такой признак, структуру или характеристику в связи с другими вариантами осуществления изобретения, описано ли это ясно или нет.
Текст в скобках и блоки с штрихованными границами (например, большие штрихи, маленькие штрихи, штрихи с точками и точки) могут быть использованы в настоящем документе для иллюстрации необязательных операций, которые добавляют дополнительные признаки вариантам осуществления изобретения. Тем не менее, такую договоренность не нужно рассматривать как то, что указанное является только вариантами или необязательными операциями и/или как то, что блоки с непрерывными границами не являются необязательными в определенных вариантах осуществления изобретения.
В приведенном ниже описании и формуле изобретения могут быть использованы термины «связанный» и «соединенный», а также их производные. Надо понимать, что эти термины не являются синонимами. «Связанный» используют для указания на то, что два или более элементов, которые могут быть в непосредственном физическом или электрическом контакте друг с другом или могут не быть в непосредственном физическом или электрическом контакте друг с другом, взаимодействуют друг с другом. «Соединенный» используют для указания на установление соединения между двумя или более элементами, которые связаны друг с другом.
Электронное устройство сохраняет и передает (внутри и/или на другие электронные устройства с помощью сети) код (который состоит из программных команд и который иногда называют компьютерным программным кодом или компьютерной программой) и/или данные с использованием считываемого машиной носителя (так же называется считываемым компьютером носителем), таким как считываемое машиной запоминающее устройство (например, магнитные диски, оптические диски, постоянное запоминающее устройство (ROM), устройства флеш-памяти, память на фазовых переходах) и считываемая машиной среда передачи (также называемая несущей) (например, электрическая, оптическая, радио, акустическая или другая форма распространяемых сигналов - таких как несущие волны, инфракрасные сигналы). Таким образом, электронное устройство (например, компьютер) содержит аппаратное обеспечение и программное обеспечение, такое как некоторый набор из одного или нескольких процессоров, связанных с одним или несколькими считываемыми машиной запоминающими устройствами с целью хранения кода для исполнения с помощью указанного набора процессоров и/или с целью хранения данных. Например, электронное устройство может содержать энергонезависимую память, которая содержит код, так как энергонезависимая память может хранить код/данные даже тогда, когда электронное устройство выключено (когда нет подачи электроэнергии) и, когда электронное устройство включено, эту часть кода, которая должны быть исполнена процессором (процессорами) электронного устройства, обычно копируют из более медленной энергонезависимой памяти в энергозависимую память (то есть динамическое оперативное запоминающее устройство (DRAM), статическое оперативное запоминающее устройство (SRAM)) этого электронного устройства. Обычные электронные устройства также содержат некоторый набор, или одно или несколько физических сетевых интерфейсов для установки сетевых соединений (для передачи и/или приема кода и/или данных с использованием распространения сигналов) с другими электронными устройствами. Одна или несколько частей некоторого варианта осуществления изобретения могут быть реализованы с использованием других комбинаций программного обеспечения, аппаратнореализованного программного обеспечения и/или аппаратного обеспечения.
Сетевое устройство (ND) представляет собой электронное устройство, которое соединено с возможностью связи с другими электронными устройствами сети (например, другими сетевыми устройствами, устройствами конечного пользователя). Некоторые сетевые устройства являются «сетевыми устройствами нескольких служб», которые обеспечивают поддержку нескольких сетевых функций (например, маршрутизации, передачи в режиме моста, коммутации, агрегирования уровня 2, управления границами сеанса связи, качества обслуживания и/или управления абонентами) и/или обеспечивает поддержку нескольких прикладных служб (например, данные, голос и видео). Сетевое устройство (ND) может содержать один или несколько сетевых элементов, что более подробно описано ниже в настоящем документе.
Проблемы при распределении потоков при обработке пакетов
В сетевом устройстве, которое реализует перенаправляющий сетевой элемент, принятые пакеты могут пройти классификацию и могут быть сопоставлены потокам обработки пакетов. Например, перенаправляющий сетевой элемент является частью перенаправляющей плоскости в архитектуре перенаправления пакетов. Перенаправляющий сетевой элемент может быть реализован так, чтобы содержать один или несколько потоков обработки пакетов и выполняющих задачи перенаправления. Каждый поток обработки пакетов осуществляет для принятых пакетов некоторый набор подходящих функций поиска и перенаправления. Перенаправляющему сетевому элементу нужно быть уверенным, что пакеты некоторого потока не переупорядочиваются сетевым элементом в ходе процесса перенаправления и подаются на выход в том же порядке, в каком они были приняты сетевым элементом. Для распределения пакетов, принятых сетевым элементом, по потокам обработки пакетов может быть использовано несколько подходов.
В соответствии с первым подходом, пакеты из некоторого потока сопоставляют для обработки одному и тому же потоку обработки пакетов. В этом примере пакеты обрабатывают в указанном потоке обработки пакетов и подают на выход сетевого элемента в том же порядке, в котором они были приняты. Тем не менее, этот подход не работает хорошо тогда, когда присутствует большое количество пакетов из одного и того же потока, или когда поток является тяжелым потоком (иногда называется «слоновьим потоком»), в результате чего происходит превышение пределов для потока обработки пакетов, что может приводить к отбрасыванию пакетов. Слоновьи потоки могут забрать большую часть (или все) время обработки потока обработки пакетов. Кроме того, поток обработки пакетов может превысить пределы даже в отсутствии тяжелых потоков, когда некоторое количество сравнительно тяжелых потоков пакетов или большое количество потоков (асимметрия хеширования) сопоставлены с одним потоком обработки пакетов. Превышение пределов для потока обработки пакетов приведет к переполнению очереди потока выполнения и отбрасыванию пакета, при этом другие потоки обработки пакетов сетевого элемента могут обладать достаточным количеством вычислительных циклов, доступных для обработки пакетов.
Второй подход осуществляют для исключения превышения пределов некоторого потока обработки пакетов, что описано в упомянутых выше примерах. При втором подходе пакеты, принятые сетевым элементом, распределяют по потокам обработки пакетов, в соответствии с технологией балансировки нагрузки. В соответствии с этим подходом, со всеми принятыми пакетами, независимо от того, взяты они из тяжелого потока или нет, осуществляют балансировку нагрузки. Так как разным потокам обработки пакетов может потребоваться разное количество времени для обработки каждого пакета, может потребоваться переупорядочить пакеты потока до подачи их на выход, чтобы убедиться, что они перенаправляются сетевым элементом в том же порядке, в котором были приняты. В соответствии с одним подходом, на входе сетевого элемента пакетам могут приписать порядковые номера. Приписанные порядковые номера могут быть использованы для переупорядочивания пакетов после их обработки и до их подачи на выход сетевого элемента. Для обеспечения того, что пакеты переупорядочивают после их обработки, все пакеты, для которых существует, по меньшей мере, один еще не обработанный предшествующий пакет, сохраняют в общей буферной области. Таким образом, все пакеты, которые были приняты и обработаны в потоках обработки пакетов, потенциально образуют очередь в общей буферной области с целью их переупорядочивания до подачи на выход. Переупорядочивание может быть реализовано или в качестве подставляемой функции, исполняемой в контексте потока обработки пакетов, или в качестве некоторого отдельного потока выполнения, при этом все потоки обработки пакетов добавляют обработанные пакеты в очередь потока выполнения, осуществляющего переупорядочивание. В этом последнем примере, поток выполнения, осуществляющий переупорядочивание, продолжает обслуживать указанную очередь и или добавляет пакет в буферную область или передает пакет из сетевого элемента, если уже обработаны все его предшествующие пакеты. При подходе, в котором для всех пакетов осуществляют балансировку нагрузки, все пакеты, принадлежащие всем потокам, ставят в невыгодное положение, так как с ними осуществляют балансировку нагрузки и потенциально их всех нужно переупорядочивать до подачи на выход с помощью сетевого элемента. Невыгодное положение имеет место даже тогда, когда балансировка нагрузки нужна только для очень малого количества потоков (например, тяжелых потоков) и большая часть потоков может быть передана без обращения к балансировке нагрузки и переупорядочиванию. Далее, в этом примере, когда переупорядочивание реализуют в виде подставляемой функции, нужна общая синхронизация для потоков обработки пакетов, с целью доступа к соответствующей области подготовки (то есть буферной области).
Адаптивная балансировка нагрузки при обработке пакетов
С учетом проблем реализации высокоэффективной обработки пакетов, желательно обладать адаптивной балансировкой нагрузки в сетевом элементе обработки пакетов, которая позволяет эффективно перенаправлять пакеты и осуществлять переупорядочивание пакетов только тогда, когда оно необходимо.
На фиг. 1 показаны операции, осуществляемые сетевым устройством для адаптивной балансировки нагрузки при обработке пакетов, в соответствии с одним вариантом осуществления изобретения. Сетевое устройство содержит сетевой элемент 100, выполненный или приспособленный для содержания блока 110 сопоставления, одного или нескольких сегментов 120 памяти, устройство 130 балансировки нагрузки, модуль 140 отслеживания производительности, некоторый набор из одного или нескольких потоков 150 обработки пакетов, и блок 160 переупорядочивания. Прямоугольники 1 - 7 задач показывают порядок, в котором выполняют операции в соответствии с одним вариантом осуществления изобретения.
В прямоугольнике 1 задачи пакет принимают в сетевом элементе. Пакет принимают с помощью сетевого интерфейса и перенаправляют на блок 110 сопоставления. В прямоугольнике 2 задачи блок 110 сопоставления сопоставляет упомянутый пакет с одним из сегментов 120А - N памяти. В одном варианте осуществления изобретения каждый из сегментов 120А - N памяти связан с одним из потоков 150А - В обработки пакетов. Например, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120А памяти, который связан с первым потоком 150А обработки пакетов. В другом примере, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120N памяти, который связан (не показано) со вторым потоком 150В обработки пакетов.
В прямоугольнике 3 задачи модуль 140 отслеживания производительности определяет, превышены ли пределы для потока обработки пакетов и связанного с упомянутым сегментом памяти. Каждый из потоков 150А и 150В обработки пакетов обладает соответствующей очередью 155А - 155В для приема пакетов. В соответствии с некоторыми вариантами осуществления изобретения, каждый из сегментов 120 памяти связан с некоторой очередью потока обработки пакетов и подает в эту очередь входящие пакеты для последующей обработки. Модуль 140 отслеживания производительности отслеживает состояние каждой очереди и определяет, когда очередь переполнена.
Когда модуль 140 отслеживания производительности определяет, превышены или нет пределы для потоков 150А или 150В обработки пакетов, в прямоугольнике 4 задачи так конфигурируют сегменты памяти, чтобы сопоставить упомянутый пакет с одним из потоков 150 обработки пакетов. Пакет из некоторого сегмента памяти (например, сегмента 120А памяти) может быть сопоставлен с потоком обработки пакетов и связанным с сегментом памяти (например, как показано на фиг. 1 с потоком 150А обработки пакетов). В качестве альтернативы, пакет может быть сопоставлен с устройством 130 балансировки нагрузки до дальнейшего сопоставления с одним из потоков 150 обработки пакетов, в соответствии со способом балансировки нагрузки. Выбор между прямым сопоставлением (сегмент памяти - связанный поток) или сопоставлением с балансировкой нагрузки (устройство 130 балансировки нагрузки - поток обработки пакетов) определяется состоянием потока обработки пакетов и связанного с сегментом памяти. Когда модуль 140 отслеживания производительности определяет, что превышены пределы для потока обработки пакетов, пакеты сегмента памяти, связанного с указанным потоком выполнения, в прямоугольнике 5 задачи распределяют по нескольким потокам обработки пакетов в соответствии со способом, реализованным в устройстве 130 балансировки нагрузки. Когда модуль 140 отслеживания производительности определяет, что не превышены пределы для потока обработки пакетов, пакеты сегмента памяти, связанного с указанным потоком, сопоставляют с указанным потоком обработки пакетов (то есть прямое сопоставление).
В прямоугольнике 6 задачи пакеты каждой очереди 155А - 155В обрабатывают в соответствующих потоках 150А - 150В обработки пакетов. В одном варианте осуществления изобретения потоки обработки пакетов исполняются на разных ядрах процессора. В альтернативном варианте осуществления изобретения на одном ядре процессора может исполняться два или больше потоков выполнения. Каждый поток 150А - 150В обработки пакетов обрабатывает некоторый пакет в соответствии с таблицей (таблицами) перенаправления, так что пакеты подают на выход на соответствующие физические сетевые интерфейсы (NI) или отбрасывают. Хотя на фиг. 1 показаны два потока 150А и 150В обработки пакетов, в альтернативных вариантах осуществления изобретения может присутствовать любое количество потоков обработки пакетов.
В прямоугольнике 7 задачи пакет перенаправляют (то есть отбрасывают или подают на выход на соответствующий NI) в соответствии с заранее заданным порядком. Этот порядок основан на положении пакета относительно других пакетов при их приеме сетевым элементом. В соответствии с одним вариантом осуществления изобретения, пакеты из некоторого потока принимают в некотором определенном порядке («входном порядке»), сопоставляют одному и тому же сегменту памяти и напрямую сопоставляют одному и тому же потоку обработки пакетов. В этом варианте осуществления изобретения пакеты могут быть поданы на выход в том же порядке, без необходимости какого-либо переупорядочивания в блоке 160 переупорядочивания. В некоторых из этих вариантов осуществления изобретения блок 160 переупорядочивания может отсутствовать и пакеты подают на выход после их обработки в потоке обработки пакетов. В соответствии с другим вариантом осуществления изобретения, пакеты из некоторого потока принимают в соответствии с входным порядком и для них осуществляют балансировку нагрузки с помощью потоков обработки пакетов, вместо их прямого сопоставления одному потоку обработки пакетов. Это может иметь место, например, когда определяют, что превышены пределы для связанного потока обработки пакетов. В этом примере пакеты могут быть поданы на выход из потоков обработки пакетов, в порядке, который отличается от входного порядка. Таким образом, пакеты переупорядочивают до их перенаправления, чтобы обеспечить то, что их подают на выход из сетевого элемента в соответствии с входным порядком.
Хотя задачи из прямоугольников 1 - 7 задач описаны последовательно, некоторые задачи могут быть выполнены параллельно или в порядке, отличном от описанного выше. Например, отслеживание состояния очередей может выполняться периодически и одновременно с сопоставлением пакетов с потоком обработки пакетов (или напрямую - прямоугольник 4 задачи или не напрямую - прямоугольник 5 задач). В других вариантах осуществления изобретения могут быть выполнены дополнительные задачи или может быть выполнено меньшее количество задач.
Блок-схемы для реализации адаптивной балансировки нагрузки при обработке пакетов
Как описано в настоящем документе, сетевой элемент выполнен с возможностью осуществления адаптивной балансировки нагрузки при обработке пакетов или приспособлен для указанного. Пакеты некоторого потока, принятые сетевым элементом, сопоставляют некоторому связанному потоку обработки пакетов. В качестве альтернативы пакеты распределяют по нескольким потокам обработки пакетов, когда превышены пределы их связанного потока обработки пакетов, и его очередь переполнена. Пакеты некоторого потока могут быть динамически перемещены от сопоставления с потоком обработки пакетов, или от балансировки нагрузки по нескольким потокам выполнения в ответ на изменение нагрузки связанного потока обработки пакетов.
Операции сетевого элемента, реализующего адаптивную балансировку нагрузки при обработке пакетов, будут описаны со ссылкой на блок-схемы с фиг. 2 и 3. Тем не менее, следует понимать, что модуль 100 обработки пакетов может осуществлять операции, отличающиеся от операций, которые описаны со ссылкой на блок-схемы с фиг. 2 и 3, и варианты осуществления изобретения, описанные со ссылками на блок-схемы с фиг. 2 и 3, могут быть выполнены с помощью вариантов осуществления изобретения, отличных от вариантов, описанных со ссылкой на фиг. 1.
На фиг. 2 - 3 показаны блок-схемы операций для осуществления адаптивной балансировки нагрузки в сетевом устройстве, в соответствии с одним вариантом осуществления изобретения. В блоке 202 пакет принимают в сетевом элементе, реализованном в сетевом устройстве. В некоторых вариантах осуществления изобретения пакет принимают с помощью сетевого интерфейса (NI) и перенаправляют на блок 110 сопоставления. Далее осуществляют переход на блок 204.
В блоке 204, блок 110 сопоставления сопоставляет упомянутый пакет с одним из сегментов 120А - N памяти. В одном варианте осуществления изобретения каждый из сегментов 120А - N памяти связан с одним из потоков 150А - В обработки пакетов. Например, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120А памяти, который связан с первым потоком 150А обработки пакетов. В другом примере, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120N памяти, который связан (не показано) со вторым потоком 150В обработки пакетов. В одном варианте осуществления изобретения сопоставление осуществляют в соответствии с механизмом хеширования и сегменты памяти являются сегментами памяти на основе хеширования. Например, информация из IP-заголовка пакета (такая как адрес назначения, адрес источника, номер порта и так далее) может быть использована в качестве индексов в таблице хеширования для извлечения идентификационных данных сегмента памяти для сопоставления пакетов.
Поток может быть определен как некоторый набор пакетов, заголовки которых соответствуют заданному шаблону битов; в этом смысле традиционное IP-перенаправление также является перенаправлением на основе потока, при этом потоки определяют, например, с помощью IP-адреса назначения; тем не менее, в других реализациях заданный шаблон битов, используемый для определения потока, может содержать больше полей (например, 10 и больше) в заголовках пакетов. В соответствии с одним вариантом осуществления изобретения, пакеты некоторого потока сопоставляют с одним и тем же сегментом памяти. Далее, один или несколько потоков могут быть сопоставлены с одним и тем же сегментом памяти.
В блоке 206 модуль 140 отслеживания производительности определяет, превышены ли пределы для потока обработки пакетов и связанного с упомянутым сегментом памяти. Как показано, на фиг. 1, каждый из потоков 150А и 150В обработки пакетов содержит, соответственно, очередь 155А - 155В для приема пакетов, подлежащих обработке. В соответствии с некоторыми вариантами осуществления изобретения, каждый из сегментов 120 памяти связан с некоторой очередью потока обработки пакетов, и подает в эту очередь пакеты. Модуль 140 отслеживания производительности выполнен с возможностью отслеживания состояния каждой очереди и определения, переполнена ли очередь или нет. В соответствии с некоторыми вариантами осуществления изобретения, чтобы определить состояние потока обработки пакетов, модуль 140 отслеживания производительности измеряет длину связанной очереди в некоторый заданный момент времени и определяет, превышает ли длина очереди некоторое заранее заданное пороговое значение. В соответствии с некоторыми вариантами осуществления изобретения, чтобы определить состояние потока обработки пакетов, модуль 140 отслеживания производительности определяет для связанной очереди экспоненциально-взвешенное скользящее среднее (EWMA) длины очереди. EWMA средняя длина очереди обеспечивает некоторую меру средней длины очереди за некоторый заданный период времени, что позволяет модулю 140 отслеживания производительности учитывать и игнорировать короткие всплески пакетов в потоках, которые в остальном себя ведут хорошо. Модуль 140 отслеживания производительности определяет, превышает ли EWMA длина очереди заранее заданное пороговое значение, чтобы определить, переполнена ли соответствующая очередь и превышены ли пределы потока обработки пакетов.
Когда модуль 140 отслеживания производительности определяет, в блоке 206, что для потока 150А или 150В обработки пакетов превышены пределы, осуществляют переход к операции 214. В качестве альтернативы, когда модуль 140 отслеживания производительности определяет, в блоке 206, что для потока обработки пакетов не превышены пределы, осуществляют переход к операции 208. В некоторых вариантах осуществления изобретения отслеживание очередей 155А - 155В осуществляют на периодической основе и, если определяют нерегулярное поведение очереди (например, EWMA длина очереди превышает некоторое заранее заданное пороговое значение), осуществляют переход к блоку 214.
В блоке 208 пакеты, содержащиеся в сегменте памяти, который связан с потоком обработки пакетов, сопоставляют с соответствующим потоком выполнения. В одном варианте осуществления изобретения, при отслеживании состояния очереди 155А, модуль 140 отслеживания производительности определяет, что для потока 150А обработки пакетов не превышены пределы. Далее пакеты, сопоставленные с сегментом 120А памяти, напрямую сопоставляют с их соответствующим потоком 150А обработки пакетов и добавляют в соответствующую очередь 155А. Далее осуществляют переход от блока 208 к блоку 210, где пакеты очереди обрабатывают в потоке обработки пакетов.
В одном варианте осуществления изобретения потоки обработки пакетов исполняются на разных ядрах процессора. В альтернативном варианте осуществления изобретения на одном ядре процессора может исполняться два или больше потоков выполнения. Потоки 150А - 150В обработки пакетов выполнены с возможностью принятия решения перенаправления и осуществления некоторого действия для пакета, на основе некоторой записи в таблице перенаправления, путем осуществления для пакета некоторого набора действий, определенных в соответствующей записи таблицы перенаправления. Эта запись таблицы перенаправления может быть определена во время операции классификации пакета (не показана на фиг. 1). Записи таблицы перенаправления содержат как некоторый определенный набор критериев соответствия (набор значений или специальных символов или указание того, какие участки пакета должны быть сравнены с конкретным значением/значениями/специальными символами, как определено возможностями соответствия - для конкретных полей в заголовке пакета или для некоторого другого содержимого пакета), так и некоторый набор из одного или нескольких действий для плоскости данных, которые нужно предпринять при приеме соответствующего пакета. Например, некоторое действие может заключаться в продвижении заголовка в пакет, для пакета с использованием некоторого конкретного порта, в заливании пакета или просто в отбрасывании пакета. Таким образом, запись таблицы перенаправления для IPv4/IPv6 пакетов с конкретным портом назначения протокола (TCP) управления передачей может содержать некоторое действие, определяющее, что эти пакеты должны быть отброшены.
Потоки 150 обработки пакетов могут быть дополнительно выполнены или приспособлены так, чтобы содержать признаки перенаправления, такие как возможности качества обслуживания (например, маркировку классификации трафика, условия и планирование трафика), возможности по безопасности (например, фильтры для защиты абонентского оборудования от атак, исходящих от сети, для исключения объявлений с искаженным маршрутом) и возможности управления (например, полное определение и обработка). В одном варианте осуществления изобретения потоки 150 обработки пакетов могут перенаправлять пакеты с любыми модификациями, требующими инкапсуляции. Например, потоки обработки пакетов сетевого элемента, реализующего функциональные возможности IP-маршрутизатора, могут перенаправлять, модифицировать, отбрасывать, задерживать или другим образом управлять IP-пакетами на основе некоторой информации IP-заголовка из IP-пакета, при этом информация IP-заголовка содержит IP-адрес источника, IP-адрес назначения, порт источника, порт назначения (где в настоящем документе «портом источника» и «портом назначения» называются порты протокола, в отличие от физических портов ND), транспортный протокол (например, протокол (UDP) пользовательских датаграмм (предложения (RFC) для обсуждения 768, 2460, 2675, 4113 и 5405 Рабочей группы (IETF) инженеров Интернета), протокол (TCP) управления передачей (IETF RFC 793 и 1180) и значения приоритизированных служб (DSCP) (IETF RFC 2474, 2475, 2597, 2983, 3086, 3140, 3246, 3247, 3260, 4594, 5865, 3289, 3290 и 3317). Хотя выше варианты осуществления изобретения описаны для двух потоков 150А и 150В обработки пакетов, в альтернативных вариантах осуществления изобретения может присутствовать любое количество потоков обработки пакетов.
Далее осуществляют переход от операции 210 к 212. В блоке 212 после обработки пакетов в потоках обработки пакетов, пакеты перенаправляют в соответствии с заранее заданным порядком (если решение перенаправления, принятое в ходе предыдущей операции, не состояло в отбрасывании пакета). Как описано выше, при рассмотрении операции 204, в соответствии с одним вариантом осуществления изобретения, пакеты одного потока сопоставляют с одним и тем же сегментом памяти (например, сегментом 120А памяти). В соответствии с этим вариантом осуществления изобретения, если поток 150А обработки пакетов и связанный с сегментом 120А памяти, определен как не превышающий пределы, пакеты, сопоставленные с сегментом 120А памяти, добавляют в очередь 155А и их обрабатывают в порядке их приема сетевым элементом (то есть в соответствии с входным порядком) и, следовательно, их можно подавать на выход в том же порядке. В соответствии с альтернативным вариантом осуществления изобретения, пакеты из нескольких потоков сопоставляют с одним и тем же сегментом 120А памяти. В этом альтернативном варианте осуществления изобретения, если определяют, что для потока 150А обработки пакетов и связанного с сегментом 120А памяти, не превышены пределы, пакеты каждого из потоков сопоставляют с очередью 155А. Далее пакеты обрабатывают в соответствии с входным порядком и, следовательно, их подают на выход в том же порядке.
В описанных выше вариантах осуществления изобретения, пакеты некоторого потока обрабатывают в том же порядке, в котором они были приняты сетевым элементом и перед их подачей на выход не требуется осуществлять переупорядочивание пакетов. Этот порядок выхода определен положением пакета относительно других пакетов в том же потоке при их приеме сетевым элементом. В качестве альтернативы, этот порядок выхода определен положением пакета относительно других пакетов из нескольких потоков, сопоставленных одному и тому же сегменту памяти, при их приеме сетевым элементом. Таким образом, сетевой элемент удовлетворяет потребности подавать на выход обработанные потоки в соответствии с их входным порядком, при этом обеспечивается эффективное перенаправление пакетов, когда не переполняются очереди потоков обработки пакетов.
Возвращаясь к операции 206, когда модуль 140 отслеживания производительности определяет, что для потока обработки пакетов (например, потока 150В обработки пакетов) превышены пределы, осуществляют переход от блока 206 к блоку 214. На фиг. 3 подробно показаны операции, осуществляемые сетевым элементом, когда определяют, что превышены пределы для потока обработки пакетов, в соответствии с одним вариантом осуществления изобретения. В блоке 302 модуль 140 отслеживания производительности оценивает состояние сегмента (сегментов) памяти, связанного с превышающим пределы потоком выполнения, с целью определения, является ли сегмент (сегменты) памяти причиной превышения пределов. Например, модуль 140 отслеживания производительности может определить, что состояние сегмента (сегментов) памяти превышает некоторое заранее заданное пороговое значение. Состояние сегмента памяти может быть оценено на основе значения счетчика для сегмента памяти, при этом значение счетчика указывает количество пакетов в сегменте памяти и/или значение экспоненциально-взвешенного скользящего среднего (EWMA) для доли пакетов для сегмента памяти. В одном примере для каждого сегмента памяти поддерживают счетчики пакетов и/или EWMA прирост пакетов. EWMA прирост пакетов может быть определен с помощью выборки разницы пакетов, принятых в периодических временных интервалах. Этот EWMA прирост пакетов является указанием количества пакетов, сопоставленных с сегментом памяти на основе хеширования в недалеком прошлом. После определения того, что для потока обработки пакетов превышены пределы, модуль 140 отслеживания производительности может оценить состояние каждого сегмента памяти, сопоставленного с превышающим пределы потоком выполнения.
В одном варианте осуществления изобретения с превышающим пределы потоком обработки пакетов связан единственный сегмент памяти. В этом варианте осуществления изобретения после определения того, что очередь переполнена, осуществляют переход к блоку 304. В другом варианте осуществления изобретения с превышающим пределы потоком обработки пакетов связано несколько сегментов памяти, и модуль 140 отслеживания производительности определяет, какой сегмент памяти (или сегменты памяти, если более одного сегмента памяти являются причиной превышения пределов) находится в состоянии, которое превышает заранее заданное пороговое значение. Например, сегменты памяти с EWMA приростом пакетов, значение которого больше некоторого заранее заданного порогового значения, направляли пропорционально больше трафика в недалеком прошлом в поток обработки пакетов и для них нужно осуществить балансировку нагрузки. Сегмент 120 памяти может являться причиной превышения пределов для потока обработки пакетов, если тяжелый поток (например, слоновий поток) сопоставлен этому сегменту памяти или, когда способ сопоставления (реализованный в блоке 110 сопоставления) приводит к сопоставлению большого количества потоков (асимметрия хеширования) одному сегменту памяти.
В блоке 304 для каждого сегмента памяти, который был определен как являющийся причиной превышения пределов потока обработки пакетов, устанавливают флаг балансировки нагрузки. В одном варианте осуществления изобретения, как показано на фиг. 1, один сегмент памяти может являться причиной превышения пределов и, следовательно, устанавливают флаг балансировки нагрузки сегмента 120N памяти, при этом флаги балансировки нагрузки сегментов 120A, 120B и 120C памяти не устанавливают (то есть они сброшены). В другом варианте осуществления изобретения более одного сегмента памяти может являться причиной превышения пределов (не показано) и устанавливают флаг балансировки нагрузки для каждого из упомянутых сегментов памяти. Во всех вариантах осуществления изобретения сбрасывают флаги балансировки нагрузки сегментов памяти, которые не являются причиной превышения пределов. Кроме того, когда установлен флаг балансировки нагрузки некоторого сегмента памяти, это является указанием на то, что для сегмента памяти нужно осуществить балансировку нагрузки. В одном варианте осуществления изобретения состояния сегментов памяти, для которых осуществляют балансировку нагрузки, отслеживают на периодической основе и когда состояние опускается ниже заранее заданного порогового значения, флаг балансировки нагрузки сбрасывают и соответствующий сегмент памяти переходит в режим работы с прямым сопоставлением, в котором потоки напрямую сопоставляют со связанным потоком обработки пакетов без осуществления балансировки нагрузки. В некоторых вариантах осуществления изобретения флаг балансировки нагрузки для некоторого сегмента памяти сбрасывают тогда, когда определяют, что для связанного потока обработки пакетов больше не превышены пределы. Модуль 140 отслеживания производительности может, при определении того, что очередь потока больше не переполнена, стать причиной сброса флага балансировки нагрузки связанного сегмента памяти. Осуществляют переход от блока 304 к блоку 306.
Возвращаясь назад к блоку 206 с фиг. 2, в альтернативном варианте осуществления изобретения при определении превышения пределов для некоторого потока обработки пакетов, блок 302 и/или 304 могут быть пропущены, а блок 306 выполняют непосредственно после выполнения блока 206.
В соответствии с этими вариантами осуществления изобретения, состояние сегмента памяти динамически переходит из первого режима («прямое сопоставление»), в котором пакеты некоторого потока сопоставляют с одним и тем же потоком обработки пакетов во второй режим («балансировка нагрузки»), в котором пакеты упомянутого потока распределяют по нескольким потокам обработки пакетов. Переход сегмента памяти из первого режима во второй режим основан на определении, является или нет переполненной очередь потока обработки пакетов и связанного с упомянутым сегментом памяти. Дополнительно, переход этого сегмента памяти из второго режима в первый режим может быть основан на состоянии сегмента памяти и/или состоянии очереди связанного с ним потока выполнения. Периодическое отслеживание очереди некоторого потока выполнения и/или состояния сегмента памяти позволяет динамически устанавливать сегмент памяти в надлежащий режим, так что перенаправление пакетов осуществляют эффективно, исключая балансировку нагрузки, когда она не нужна. Периодическое отслеживание очереди потока выполнения позволяет динамически распределять пакеты некоторого потока по потокам обработки пакетов, в соответствии с надлежащим режимом (то есть прямое сопоставление или балансировка нагрузки), так что пакеты эффективно обрабатывают в сетевом элементе и избегают балансировки нагрузки для потоков и переупорядочивания пакетов, когда они не нужны.
В блоке 306 пакеты, содержащиеся в сегменте (сегментах) памяти, который связан с превышающим пределы потоком обработки пакетов перенаправляют на устройство 130 балансировки нагрузки. Например, пакеты сегмента 120N памяти перенаправляют на устройство 130 балансировки нагрузки при определении модулем 140 отслеживания производительности того, что для потока 150В обработки пакетов превышены пределы. Далее пакеты, с целью их обработки, распределяют по нескольким потокам 150 обработки пакетов, в соответствии с механизмом балансировки нагрузки.
В одном варианте осуществления изобретения пакеты распределяют по всем потокам (например, 150А и 150В) обработки пакетов. В качестве альтернативы пакеты распределяют по некоторому подмножеству потоков 150 обработки пакетов. Например, если определено, что поток 150В выполнения превышает пределы, устройство балансировки нагрузки может быть выполнено с возможностью распределения пакетов по всем потокам обработки пакетов, за исключением превышающего пределы потока 150В выполнения. Балансировка нагрузки для пакетов некоторого сегмента памяти может быть выполнена в соответствии с механизмом круглого стола, механизмом случайного распределения или другим механизмом распределения, который может учесть дополнительные факторы (например, эвристики, текущие загрузки, длины очередей в потоках обработки пакетов, и так далее). В соответствии с одним вариантом осуществления изобретения, пакеты некоторого единственного потока содержатся в сегменте памяти и их распределяют по нескольким потокам обработки пакетов. В другом варианте осуществления изобретения, пакеты нескольких потоков содержатся в сегменте памяти и их распределяют по нескольким потокам обработки пакетов. Далее осуществляют переход на блок 308.
В блоке 308 пакет обрабатывают в потоке выполнения, который обрабатывает пакеты и с которым связан указанный пакет. Обработка пакета в потоке обработки пакетов в блоке 308 может быть аналогична обработке, выполненной в блоке 210. Далее осуществляют переход на блок 310.
В блоке 310 пакет перенаправляют (то есть подают на выход с помощью надлежащего NI, если он не отброшен) в соответствии с заранее заданным порядком. Этот заранее заданный порядок основан на положении пакета относительно других пакетов при их приеме сетевым элементом. В соответствии с одним вариантом осуществления изобретения, этот пакет перенаправляют в соответствии с его положением относительно других пакетов того же потока при их приеме сетевым элементом. В соответствии с другим вариантом осуществления изобретения, этот пакет перенаправляют в соответствии с его положением относительно других пакетов нескольких потоков при их приеме сетевым элементом. Обработка пакетов может занять разное количество времени в разных потоках выполнения. В результате, до подачи пакетов на выход сетевого элемента может понадобиться переупорядочивание пакетов, чтобы обеспечить то, что пакеты перенаправляют в соответствии с их входным порядком. Блок 160 переупорядочивания принимает пакеты, обработанные в нескольких потоках обработки пакетов, и осуществляет переупорядочивание пакетов некоторого потока (или агрегированных потоков) до перенаправления пакетов. Для каждого принятого пакета, до подачи пакета на выход, блок 160 переупорядочивания определяет, были ли возвращены (отброшены или поданы на выход надлежащего сетевого интерфейса) все пакеты, принятые сетевым элементом. Для реализации блока 160 переупорядочивания может быть использовано несколько механизмов. В соответствии с некоторыми вариантами осуществления изобретения пакеты могут быть переупорядочены в соответствии с приписанными порядковыми номерами. Порядковые номера могут быть приписаны сетевым элементом при приеме пакетов или до их приема сетевым элементом. Например, порядковые номера могут быть частью метаданных пакетов. Варианты осуществления изобретения, описанные со ссылками на фиг. 4, 5 и 6, показывают примеры вариантов осуществления изобретения, которые направлены на осуществление переупорядочивания в сетевом элементе пакетов, которые прошли балансировку нагрузки.
Последовательность пакетов и переупорядочивание
На фиг. 4 показаны операции, осуществляемые в сетевом устройстве для адаптивной балансировки нагрузки при обработке пакетов, в соответствии с одним вариантом осуществления изобретения. Фиг. 4 содержит элементы и прямоугольники задач, аналогичные фиг. 1. Одинаковые или аналогичные ссылочные позиции указывают элементы или компоненты, обладающие одинаковыми или аналогичными функциональными возможностями. Кроме модулей, описанных со ссылками на фиг. 1, сетевой элемент 400 дополнительно выполнен с возможностью содержания устройства 410 присвоения порядкового номера. Прямоугольники 1 - 8 задач показывают порядок, в котором выполняют операции в соответствии с одним вариантом осуществления изобретения.
В прямоугольнике 1 задачи пакет принимают в сетевом элементе. Пакет принимают с помощью сетевого интерфейса и перенаправляют на устройство 410 присвоения порядкового номера.
В прямоугольнике 2.a. задачи каждому входящему пакету приписывают некоторый порядковый номер. Приписанный порядковый номер далее используют в блоке 160 переупорядочивания для обеспечения того, что пакеты выходят из сетевого элемента в том же порядке, что и вошли. В соответствии с одним вариантом осуществления изобретения пакетам приписывают порядковый номер на основе потока, так что пакетам одного и того же потока приписывают разные номера одной последовательности. В соответствии с другим вариантом осуществления изобретения пакетам приписывают порядковый номер на основе агрегированного потока, так что пакетам нескольких потоков приписывают разные номера одной последовательности (например, потоков, принятых в одном физическом порту, потоков с одним портом протокола или всех потоков, принятых сетевым элементом и так далее). В некоторых вариантах осуществления изобретения до приписывания порядкового номера каждый пакет может пройти проверку корректности.
В прямоугольнике 2.b. задачи блок 110 сопоставления сопоставляет упомянутый пакет с одним из сегментов 120А - N памяти, например, в соответствии с механизмом хеширования. В одном варианте осуществления изобретения каждый из сегментов 120А - N памяти связан с одним из потоков 150А - В обработки пакетов. Например, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120А памяти, который связан с первым потоком 150А обработки пакетов. В другом примере, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120N памяти, который связан (не показано) со вторым потоком 150В обработки пакетов. В соответствии с некоторыми вариантами осуществления изобретения блок 110 сопоставления может быть выполнен с возможностью осуществления разбора заголовка и классификации пакета или приспособлен для осуществления указанного. Разбор заголовка описывает, каким образом интерпретировать некоторый пакет на основе хорошо известного набора протоколов. Некоторые поля протокола используют для построения структуры соответствия (или ключа), которая будет использована при классификации пакета (например, первое поле ключа может быть адресом управления (MAC) доступом к среде передачи данных для источника, а второе поле ключа может быть MAC-адресом назначения).
Классификация пакетов включает в себя осуществление поиска в памяти с целью классификации пакета путем определения, какая запись (также называемая записью таблицы перенаправления или записью потока) в таблицах перенаправления наилучшим образом соответствует пакету, что делают на основе структуры соответствия или ключа записей таблиц перенаправления. Возможно, что много потоков, представленных в записях таблиц перенаправления, могут соответствовать/согласовываться с пакетом; в этом случае система обычно выполнена с возможностью определения одной записи таблиц перенаправления из многих, в соответствии с некоторой определенной схемой (например, выбор первой соответствующей записи таблиц перенаправления).
В прямоугольнике 3.а. задачи модуль 140 отслеживания производительности определяет, превышены ли пределы для потока обработки пакетов и связанного с упомянутым сегментом памяти. Модуль 140 отслеживания производительности отслеживает состояние каждой очереди и определяет, когда очередь переполнена. В прямоугольнике 3.b. задачи модуль 140 отслеживания производительности дополнительно выполнен с возможностью отслеживания состояния каждого сегмента памяти или приспособлен для осуществления указанного. Эти состояния сегментов памяти являются указанием количества пакетов, сопоставленных с сегментом памяти в недалеком прошлом. После определения превышения пределов для некоторой очереди, модуль 140 отслеживания производительности оценивает состояние сегментов памяти и устанавливает флаг балансировки нагрузки, в прямоугольнике 3.с. задачи, для каждого сегмента памяти, для которого определено, что он является причиной превышения пределов очереди.
Когда модуль 140 отслеживания производительности определяет, превышены или нет пределы для потока 150А или 150В обработки пакетов в прямоугольнике 4 задачи так конфигурируют или приспосабливают сегменты памяти, чтобы сопоставить упомянутый пакет с одним из потоков 150 обработки пакетов. Пакеты из некоторого сегмента памяти (например, сегмента 120А памяти) могут быть сопоставлены с потоком обработки пакетов и связанным с сегментом памяти (например, как показано на фиг. 1, с потоком 150А обработки пакетов). В качестве альтернативы, пакеты могут быть сопоставлены с устройством 130 балансировки нагрузки до дальнейшего сопоставления с одним из потоков 150 обработки пакетов, в соответствии с некоторым способом балансировки нагрузки. Выбор между прямым сопоставлением (сегмент памяти - связанный поток) или сопоставлением с балансировкой нагрузки (устройство 130 балансировки нагрузки - поток обработки пакетов) определяется состоянием потока обработки пакетов и связанного с сегментом памяти. Когда модуль 140 отслеживания производительности определяет, что превышены пределы для потока обработки пакетов, пакеты сегмента памяти, связанного с указанным потоком выполнения, распределяют по нескольким потокам обработки пакетов, в соответствии со способом, реализованным в устройстве 130 балансировки нагрузки. Когда модуль 140 отслеживания производительности определяет, что не превышены пределы для потока обработки пакетов, пакеты сегмента памяти, связанного с указанным потоком, сопоставляют с указанным потоком обработки пакетов (то есть прямое сопоставление). В соответствии с другим вариантом осуществления изобретения выбор между прямым сопоставлением и сопоставлением с балансировкой нагрузки дополнительно осуществляют на основе состояния сегмента памяти и флага балансировки нагрузки. Когда установлен флаг балансировки нагрузки некоторого сегмента памяти, пакеты сегментов памяти передают на устройство 130 балансировки нагрузки с целью их распределения по нескольким потокам обработки пакетов. Когда не установлен или сброшен флаг балансировки нагрузки пакета, пакеты сопоставляют напрямую со связанным потоком обработки пакетов.
В прямоугольнике 6 задачи пакеты каждой очереди 155А - 155В обрабатывают в соответствующих потоках 150А - 150В обработки пакетов. В одном варианте осуществления изобретения потоки обработки пакетов исполняются на разных ядрах процессора. В альтернативном варианте осуществления изобретения на одном ядре процессора может исполняться два или больше потоков выполнения. Каждый поток 150А - 150В обработки пакетов обрабатывает некоторый пакет в соответствии с таблицей (таблицами) перенаправления, так что пакеты подают на выход на соответствующие физические сетевые интерфейсы (NI) или отбрасывают. Хотя на фиг. 1 показаны два потока 150А и 150В обработки пакетов, в альтернативных вариантах осуществления изобретения может присутствовать любое количество потоков обработки пакетов.
В прямоугольнике 7.а. задачи при приеме обработанного пакета, блок 160 переупорядочивания определяет, были ли ранее перенаправлены пакеты, предшествующие этому принятому пакету, до перенаправления этого пакета. Выходной порядок пакетов основан на порядковых номерах, приписанных пакетам на входе сетевого элемента. В некоторых из этих вариантов осуществления изобретения блок 160 переупорядочивания может отсутствовать и пакеты подают на выход после их обработки в потоке обработки пакетов, без переупорядочивания. В других вариантах осуществления изобретения, когда пакеты некоторого потока распределяют по нескольким потокам обработки пакетов, их больше не обрабатывают в соответствии с порядковыми номерами, приписанными в прямоугольнике 2.а. В этом примере пакеты могут быть поданы на выход из потоков обработки пакетов, в порядке, который отличается от входного порядка. Пакеты переупорядочивают до их перенаправления, чтобы обеспечить то, что их подают на выход из сетевого элемента в соответствии с порядком, приписанным на входе. В прямоугольнике 8 задачи пакеты подают на выход в соответствии с входным порядком.
Хотя задачи из прямоугольников 1 - 8 задач описаны последовательно, некоторые задачи могут быть выполнены параллельно или в порядке, отличном от описанного выше. Например, отслеживание состояния очередей может выполняться периодически и одновременно с сопоставлением пакетов с потоком обработки пакетов (или напрямую - прямоугольник 4 задачи или не напрямую - прямоугольник 5 задачи). В других вариантах осуществления изобретения могут быть выполнены дополнительные задачи или может быть выполнено меньшее количество задач.
Операции из блок-схем с фиг. 5 и 6 будут описаны со ссылками на примеры вариантов осуществления изобретения с фиг. 4. Тем не менее, следует понимать, что операции из блок-схем могут быть выполнены с помощью вариантов осуществления изобретения, отличных от описанных со ссылками на фиг. 4, и варианты осуществления изобретения, рассмотренные со ссылками на фиг. 4, могут выполнять операции, отличные от рассмотренных со ссылками на блок-схемы с фиг. 5 и 6.
На фиг. 5 подробно показаны операции, осуществляемые в сетевом элементе, когда поток обработки пакетов сопоставляют с некоторым сегментом памяти. В блоке 502 каждому входящему пакету приписывают некоторый порядковый номер. Приписанный порядковый номер далее используют в блоке 160 переупорядочивания для переупорядочивания пакетов некоторого потока и обеспечения того, что пакеты выходят из сетевого элемента в том же порядке, что и вошли. В соответствии с одним вариантом осуществления изобретения пакетам приписывают порядковые номера на основе потока, так что пакетам одного и того же потока приписывают разные номера одной последовательности. В соответствии с другим вариантом осуществления изобретения пакетам приписывают порядковый номер на основе агрегированного потока, так что пакетам нескольких потоков приписывают разные номера одной последовательности (например, потоков, принятых в одном физическом порту, потоков с одним портом протокола или всех потоков, принятых сетевым элементом и так далее). В одном варианте осуществления изобретения всем пакетам, принятым сетевым элементом, приписывают порядковый номер из единственного общего пула номеров. Другими словами, все пакеты из различных потоков, принятых сетевым элементом (принятых через один или несколько портов) нумеруют в соответствии с этим общим пулом. В другом варианте осуществления изобретения могут быть использованы отдельные пулы порядковых номеров. Несколько потоков могут быть сгруппированы, чтобы им приписывали номер из некоторого конкретного пула. Например, пакеты на входе могут проходить базовую классификацию и их могут сопоставлять одному из пулов порядковых номеров. В этом случае в метаданных, связанных с пакетами, могут быть отмечены идентификационные данные (идентификатор пула) пула с целью идентификации пула. Приписанные порядковые номера и идентификатор пула далее используют в блоке 160 переупорядочивания для переупорядочивания пакетов некоторого потока и обеспечения того, что пакеты выходят из сетевого элемента в том же порядке, что и вошли, относительно приписанного им пула. В некоторых вариантах осуществления изобретения до приписывания порядкового номера каждый пакет может пройти проверку корректности.
В блоке 504 задачи блок 110 сопоставления сопоставляет упомянутый пакет с одним из сегментов 120А - N памяти, например, в соответствии с механизмом хеширования. В соответствии с некоторыми вариантами осуществления изобретения блок 110 сопоставления может быть выполнен с возможностью осуществления разбора заголовка и классификации пакета или приспособлен для осуществления указанного. Разбор заголовка описывает, каким образом интерпретировать некоторый пакет на основе хорошо известного набора протоколов. Некоторые поля протокола используют для построения структуры соответствия (или ключа), которая будет использована при классификации пакета (например, первое поле ключа может быть адресом управления (MAC) доступом к среде передачи данных для источника, а второе поле ключа может быть MAC-адресом назначения).
Классификация пакетов включает в себя осуществление поиска в памяти с целью классификации пакета путем определения, какая запись (также называемая записью таблицы перенаправления или записью потока), в таблицах перенаправления, наилучшим образом соответствует пакету, что делают на основе структуры соответствия или ключа записей таблиц перенаправления. Возможно, что много потоков, представленных в записях таблиц перенаправления, могут соответствовать/согласовываться с пакетом; в этом случае система обычно выполнена с возможностью определения одной записи таблиц перенаправления из многих, в соответствии с некоторой определенной схемой (например, выбор первой соответствующей записи таблиц перенаправления).
В показанном варианте осуществления изобретения с фиг. 4, каждый из сегментов 120А - N памяти связан с одним из потоков 150А - В обработки пакетов. Например, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120А памяти, который связан с первым потоком 150А обработки пакетов. В другом примере, при приеме пакета, блок 110 сопоставления может сопоставить этот пакет с сегментом 120N памяти, который связан (не показано) со вторым потоком 150В обработки пакетов. Блок 110 сопоставления разбирает заголовок пакета и осуществляет поиск в таблице хеширования для сопоставления пакета с некоторым сегментом памяти (в настоящем документе называется «сегментом памяти на основе хеширования»). Сегмент памяти на основе хеширования предоставляет поток выполнения, который обрабатывает пакеты и который должен обработать указанный пакет. В одном примере сопоставление осуществляют с помощью таблицы хеширования, которая содержит (N х Общее количество потоков выполнения) записей, так что N сегментов памяти может быть связано с одним потоком обработки пакетов. Число N может быть установлено равным достаточно большому значению (например, равным 16 или 32). Таблица хеширования будет содержать кратное N число записей, которые сопоставлены единственному потоку 150 обработки пакетов. Использование нескольких сегментов памяти на каждый поток обработки пакетов позволяет осуществить декомпозицию наборов потоков, которые сопоставляют указанному потоку обработки на более маленькие подмножества (то есть сегменты памяти).
Каждый сегмент памяти на основе хеширования выполнен с возможностью обладания или приспособлен для обладания флагом балансировки нагрузки, который определяет режим работы сегмента памяти. В одном варианте осуществления изобретения, когда флаг балансировки нагрузки сброшен или не установлен, пакеты указанного сегмента памяти напрямую сопоставляют потоку выполнения, который обрабатывает пакеты и который связан с указанным сегментом памяти. В отличие от этого, когда флаг балансировки нагрузки установлен, пакеты сегмента памяти сопоставляют с устройством 130 балансировки нагрузки с целью их распределения по нескольким потокам 150 обработки пакетов. В некоторых вариантах осуществления изобретения флаги балансировки нагрузки сегментов 120 памяти по умолчанию сброшены. Флаг балансировки нагрузки переходит из первого состояния (то есть состояния прямого сопоставления) во второе состояние (то есть состояние балансировки нагрузки) в ответ на обнаружение превышения пределов для потока обработки пакетов и связанного с указанным сегментом памяти. Флаг балансировки нагрузки дополнительно переходит назад из второго состояния (то есть состояния балансировки нагрузки) в первое состояние (прямое сопоставление) в ответ на определение того, что для потока обработки пакетов, больше не превышены пределы. Периодическое отслеживание очереди потока обработки пакетов позволяет динамически устанавливать сегмент памяти в надлежащий режим, так что перенаправление пакетов осуществляют эффективно, исключая балансировку нагрузки, когда она не нужна. В некоторых вариантах осуществления изобретения флаг балансировки нагрузки для сегмента памяти копируют в метазаголовки для всех пакетов, сопоставленных сегменту памяти на основе хеширования. Таким образом, каждый пакет содержит указание, сопоставлен ли он напрямую с потоком обработки пакетов вместе со всеми пакетами одного и того же потока, или, в качестве альтернативы, осуществляют ли для пакетов этого потока балансировку нагрузки по нескольким потокам обработки пакетов.
В соответствии с некоторыми вариантами осуществления изобретения, чтобы определить состояние потока обработки пакетов, модуль 140 отслеживания производительности измеряет длину связанной с ним очереди в некоторый заданный момент времени и определяет, превышает ли длина очереди некоторое заранее заданное пороговое значение. В соответствии с некоторыми вариантами осуществления изобретения, чтобы определить состояние потока обработки пакетов, модуль 140 отслеживания производительности определяет для связанной очереди экспоненциально-взвешенное скользящее среднее (EWMA) длины очереди. EWMA средняя длина очереди обеспечивает некоторую меру средней длины очереди за некоторый заданный период времени, что позволяет модулю 140 отслеживания производительности учитывать и игнорировать короткие всплески пакетов в потоках, которые в остальном себя ведут хорошо. Модуль 140 отслеживания производительности определяет, превышает ли EWMA длина очереди заранее заданное пороговое значение, чтобы определить, переполнена ли соответствующая очередь и превышены ли пределы потока обработки пакетов.
В соответствии с одним вариантом осуществления изобретения каждый поток пакетов, принятых сетевым элементом, сопоставляют отдельному сегменту памяти на основе хеширования (то есть количество сегментов памяти на основе хеширования больше или равно количеству потоков, принятых сетевым элементом). Таким образом, идентификацию потока, отвечающего за нерегулярное поведение и превышение пределов для потока обработки пакетов, осуществляют путем идентификации сегмента памяти, который является причиной превышения пределов.
В одном варианте осуществления изобретения потоки, сопоставленные с сегментами памяти, для которых осуществляют балансировку нагрузки, могут быть обработаны в различных порядках и могут быть поданы на выход с помощью потоков обработки пакетов, в некотором порядке, отличном от их входного порядка. Таким образом, может потребоваться переупорядочить пакеты потоков, для которых осуществляют балансировку нагрузки, до их подачи на выход сетевого элемента. В отличие от сказанного, потоки, сопоставленные напрямую некоторому связанному потоку обработки пакетов, будут обработаны и поданы на выход в соответствии с их входным порядком и их не нужно переупорядочивать.
На фиг. 6 подробно показана блок-схема операций, осуществляемых в сетевом элементе с целью переупорядочивания пакетов. После их обработки в потоках 150 обработки пакетов, пакеты перенаправляют в блок 160 переупорядочивания. Блок 160 переупорядочивания осуществляет изменение последовательности пакетов в соответствии с их положением относительно других пакетов того же потока при их приеме сетевым элементом. В блоке 604 при приеме пакета некоторого потока, блок 160 переупорядочивания определяет, установлен ли флаг балансировки нагрузки для этого пакета, что указывает на то, что пакет является частью некоторого потока, для которого осуществляли балансировку нагрузки. Когда установлен флаг балансировки нагрузки, блок переупорядочивания определяет, в блоке 606, существует ли, по меньшей мере, один пакет, который предшествует принятому пакету и который все еще подлежит обработке, или для которого еще не завершилась обработка, с помощью потока обработки пакетов. Другими словами, блок 160 переупорядочивания определяет, были или нет перенаправлены все пакеты, предшествующие принятому пакету. Если все пакеты, предшествующие принятому пакету, уже обработаны и перенаправлены, принятый пакет подают на выход, как показано в блоке 612. Если, по меньшей мере, один пакет все еще подлежит обработке или еще не закончена его обработка, принятый пакет сохраняют в буферной области, в блоке 608, до тех пор, пока не будут обработаны все предыдущие пакеты. Пакеты с установленными флагами балансировки нагрузки, могут быть сохранены в буфере для обеспечения того, что пакеты выходят из сетевого элемента в том же порядке, что и вошли. В некоторых вариантах осуществления изобретения переупорядочивание основано на порядковых номерах, приписанных в блоке 502. Например, на входе сетевого элемента приняли несколько пакетов и приписали им порядковые номера от 1 до 103. В этом примере, по меньшей мере, некоторые пакеты сопоставили с потоком обработки пакетов в соответствии с технологией балансировки нагрузки. Например, с пакетом 103 осуществили балансировку нагрузки и установили его флаг балансировки нагрузки. После обработки пакета 103 в потоке обработки пакетов его принимают в блоке 160 переупорядочивания. Блок 160 переупорядочивания мог принять и подать на выход пакеты с порядковыми номерами 1 - 100, но не пакеты 101 и 102. При приеме пакета 103 блок 160 переупорядочивания определяет, установлен ли его флаг балансировки нагрузки (в блоке 604), и определяет, обработаны ли все его предыдущие пакеты (пакеты 1 - 102). После определения того, что пакеты 101 и 102 еще не были обработаны, пакет 103 сохраняют в буферной области (в блоке 608) до тех пор, пока каждый из пакетов с порядковыми номерами 101 и 102 не будет принят и подан на выход, или отброшен и пока не освободится его порядковый номер.
Обращаясь назад к блоку 604, после определения того, что сброшен или не установлен флаг балансировки нагрузки пакета (то есть пакет был напрямую сопоставлен со связанным потоком обработки пакетов со всеми пакетами того же потока, и с этим потоком не осуществляли балансировки нагрузки), пакет перенаправляют, в блоке 612, без переупорядочивания. В качестве альтернативы, в некоторых вариантах осуществления изобретения до подачи на выход, может быть создан и сохранен в буферной области, в блоке 610, токен с тем же самым порядковым номером, что и у упомянутого пакета, пока фактический пакет подают на выход (в блоке 612). Например, единый пул порядковых номеров используют для нескольких потоков, принятых сетевым элементом. Потоки могут быть приняты сетевым элементом перемежаясь. Первое подмножество потоков (например, по меньшей мере, один поток пакетов) сопоставляют с первым сегментом памяти, а второе подмножество потоков (например, по меньшей мере, один поток пакетов) сопоставляют со вторым сегментом памяти. Первый сегмент памяти может находиться в режиме прямого сопоставления, а второй сегмент памяти может находиться в режиме балансировки нагрузки. В соответствии с этим вариантом осуществления изобретения, некоторые пакеты с порядковыми номерами из указанного пула могут быть обработаны последовательно относительно других пакетов потока, которому они принадлежат, а пакеты второго подмножества могут не быть обработаны последовательно, так как с ними осуществляли балансировку нагрузки по нескольким потокам обработки пакетов. В результате, пакеты из первого подмножества и второго подмножества могут достичь блока переупорядочивания в случайном порядке друг относительно друга, который отличается от порядка, в котором пакеты (из первого подмножества и второго подмножества) входили в сетевой элемент друг относительно друга. Тем не менее, в этом примере модуль 160 переупорядочивания использует порядковые номера из пула для переупорядочивания и подачи на выход пакетов в соответствии с их входным порядком. Следовательно, даже если с пакетом не осуществляли балансировку нагрузки, модуль 160 переупорядочивания может по-прежнему нуждаться в порядковом номере упомянутого пакета при переупорядочивании пакетов, прошедших балансировку нагрузки. В этом примере порядковый номер токена используют для учета пакета напрямую сопоставленных потоков. Даже хотя пакеты напрямую сопоставленных потоков подают на выход, их токены сохраняют в буферной области (в блоке 610) для обеспечения того, что пакеты потоков, прошедших балансировку нагрузки, из того же пула, подают на выход в надлежащем входном порядке. В этом конкретном примере пакеты потоков из первого сегмента памяти подают на выход напрямую и токен может быть сохранен в буферной области для каждого из них, при этом пакеты второго сегмента памяти сохраняют в буферной области.
В некоторых вариантах осуществления изобретения, когда пакетам приписывают, в блоке 502, порядковые номера из разных пулов номеров, идентификатор пула учитывают при переупорядочивании пакетов в блоке 160 переупорядочивания. Идентификатор пула, скопированный в метазаголовок каждого пакета, используют во время переупорядочивания. Пакеты, прошедшие балансировку нагрузки, переупорядочивают относительно пакетов с таким же идентификатором пула.
Варианты осуществления описанных технологий обеспечивают механизм адаптивной обработки пакетов, который направлен на то, чтобы обеспечить высокоэффективную обработку пакетов путем выбора между прямым сопоставлением потока и сопоставлением с балансировкой нагрузки для каждого потока, принятого сетевым элементом, что делают в зависимости от состояния потоков обработки пакетов и перенаправляющих пакеты. Варианты осуществления описанных технологий позволяют большую часть потоков обрабатывать в соответствии с прямым сопоставлением (поток - поток выполнения), исключая затраты на переупорядочивание. Варианты осуществления описанных технологий дополнительно позволяют осуществлять балансировку нагрузки потоков только при необходимости. Таким образом, адаптивная обработка пакетов переупорядочивает пакеты только при необходимости.
Варианты осуществления адаптивной балансировки нагрузки при обработке пакетов, описанные со ссылками на фиг. 1 - 6, могут быть реализованы в сетевом элементе (NE), как более подробно описано в настоящем документе. В частности, варианты осуществления описанных технологий могут быть реализованы в перенаправляющей виртуальной сетевой функции (перенаправляющая VNF) виртуального сетевого элемента (VNE).
Среда SDN и NFV, использующая варианты осуществления изобретения
На фиг. 7А показаны соединения между сетевыми устройствами (ND) в некотором примере сети, а также три примера реализаций ND, в соответствии с некоторыми вариантами осуществления изобретения. На фиг. 7А показаны ND 700A-H, и с помощью линий A-B, B-C, C-D, D-E, E-F, F-G и A-G, а также с помощью линий между H и A, C, D и G, показаны соединения упомянутых ND 1200A-H. Эти ND являются физическими устройствами и соединения между этими ND могут быть беспроводными или проводными (часто называются каналом). Дополнительная линия, тянущаяся от ND 700A, E и F, показывает, что эти ND действуют в качестве входных и выходных точек для сети (и, таким образом, эти ND иногда называются краевыми ND; а другие ND могут быть названы опорными ND).
Два примера реализаций ND на фиг. 7А представляют собой: 1) специализированное сетевое устройство 702, которое использует оригинальные специализированные интегральные схемы (ASIC) и коммерческую операционную систему (OS); и 2) сетевое устройство 704 общего назначения, которое использует обычные готовые (COTS) процессоры и стандартную OS.
Специализированное сетевое устройство 702 содержит сетевое аппаратное обеспечение 710, содержащее вычислительный ресурс (ресурсы) 712 (который обычно содержит некоторый набор из одного или нескольких процессоров), ресурс (ресурсы) 714 перенаправления (который обычно содержит одну или несколько ASIC и/или сетевые процессоры) и физические сетевые интерфейсы 716 (NI) (иногда называемые физическими портами), а также долговременный считываемый машиной носитель 718, на котором хранится сетевое программное обеспечение 720. Физический NI представляет собой аппаратное обеспечение в ND, через которое осуществляют сетевое соединение (например, беспроводное, через контроллер (WNIC) беспроводного сетевого интерфейса, или с помощью вставки кабеля в физический порт, соединенный с контроллером (NIC) сетевого интерфейса), которое, например, показано между ND 700A - H. Во время работы, сетевое программное обеспечение 720 может быть исполнено с помощью сетевого аппаратного обеспечения 710, чтобы реализовать некоторый набор из одного или нескольких экземпляров 722 сетевого программного обеспечения. Каждый экземпляр 722 сетевого программного обеспечения и та часть сетевого аппаратного обеспечения 710, которая исполняет этот экземпляр сетевого программного обеспечения (это будет аппаратное обеспечение, выделенное для этого экземпляра сетевого программного обеспечения, и/или временные промежутки аппаратного обеспечения, временно совместно используемые экземпляром сетевого программного обеспечения с другим экземпляром 722 сетевого программного обеспечения), образуют отдельный виртуальный сетевой элемент 730A - R. Каждый виртуальный сетевой элемент (элементы) 730A - R (VNE) содержит модуль 732A - R управления связью и конфигурации (иногда называется локальный модуль управления или модуль управления связью) и таблицу (таблицы) 734A - R перенаправления, так что некоторый заданный виртуальный сетевой элемент (например, 730А) содержит модуль (например, 732A) управления связью и конфигурации, набор из одной или нескольких таблиц (например, 734А) перенаправления и ту часть сетевого аппаратного обеспечения 710, которая исполняет виртуальный сетевой элемент (например, 730А).
Считается, что специализированное сетевое устройство 702 часто физически и/или логически содержит: 1) плоскость 724 управления ND (иногда называется плоскостью управления), которая содержит вычислительный ресурс (ресурсы) 712, который исполняет модуль (модули) 732A - R управления связью и конфигурации; и 2) плоскость 726 перенаправления ND (иногда называется плоскостью перенаправления, плоскостью данных или плоскостью носителя), которая содержит ресурс (ресурсы) 714 перенаправления, которые используют таблицу (таблицы) 734A - R перенаправления и физические NI 716. В качестве примера, когда ND является маршрутизатором (или реализует функциональные возможности маршрутизации), плоскость 724 управления ND (вычислительный ресурс (ресурсы) 712, исполняющий модуль (модули) 732A - R управления связью и конфигурации) обычно отвечает за участие в управлении маршрутизацией (например, следующий скачок для данных и выходной физический NI для этих данных) данных (например, пакетов) и хранение этой информации маршрутизации в таблице (таблицах) 734А - R перенаправления, и плоскость 726 перенаправления ND отвечает за прием этих данных на физических NI 716 и перенаправление этих данных из соответствующих физических NI 716 на основе таблицы (таблиц) 734А - R перенаправления. Виртуальные сетевые элементы 730А - R могут содержать экземпляры 722А - 722R программного обеспечения 748 адаптивной обработки (АРР) пакетов, которое реализует варианты осуществления изобретения, описанные со ссылками на фиг. 1 - 6. Каждый экземпляр 722А выполнен с возможностью обработки и перенаправления пакетов, принятых сетевым устройством 702, путем сопоставления пакета с потоком обработки пакетов, в соответствии со схемой прямого сопоставления или схемой балансировки нагрузки, на основе состояния очереди потока обработки пакетов.
На фиг. 7В показан пример реализации специализированного сетевого устройства 702, в соответствии с некоторыми вариантами осуществления изобретения. На фиг. 7В показано специализированное сетевое устройство, содержащее карты 738 (обычно выполненные с возможностью горячего подключения). Хотя в некоторых вариантах осуществления изобретения карты 738 являются картами двух типов (одна или несколько карт, которые работают как плоскость 726 перенаправления ND (иногда называются линейными картами) и одна или несколько карт, которые работают для реализации плоскости 724 управления ND (иногда называются картами управления)), альтернативные варианты осуществления изобретения могут объединять функциональные возможности в единственной карте и/или содержать карту дополнительного типа (например, один дополнительный тип карты называется сервисной картой, картой ресурсов или картой нескольких приложений). Сервисная карта может обеспечить специализированную обработку (например, службы уровня 4 - уровня 7 (например, сетевой экран, безопасность (IPsec) интернет-протокола (RFC 4301 и 4309), протокол (SSL) безопасных соединений/безопасность (TLS) транспортного уровня, систему (IDS) обнаружения проникновения, соединение равноправных узлов (P2P), граничный контроллер сессия голоса по IP (VoIP), мобильные беспроводные шлюзы (поддерживающий узел (GGSN) шлюза общей службы (GPRS) пакетной радиопередачи, шлюз усовершенствованного ядра (EPC) пакетной коммутации)). В качестве примера сервисная карта может быть использована для закрывания IPsec туннелей и исполнения сопутствующих алгоритмов аутентификации и шифрования. Эти карты связаны вместе с помощью одного или нескольких механизмов соединения, показанных в виде задней платы 736 (например, первая полная сетка, которая связывает линейные карты, и вторая полная сетка, которая связывает все карты).
Возвращаясь к фиг. 7А, сетевое устройство 704 общего назначения содержит аппаратное обеспечение 740, содержащее некоторый набор из одного или более процессоров 742 (которые часто являются COTS процессорами), и контроллер (контроллеры) 744 сетевого интерфейса (NIC; также известны как карты сетевого интерфейса) (которые содержат физические NI 746), а также долговременный считываемый машиной носитель 748, на котором хранится программное обеспечение 750. При работе процессор (процессоры) 742 исполняют программное обеспечение 750 с целью реализации гипервизора 754 (иногда называется программой-монитором (VMM) виртуальных машин) и одной или нескольких виртуальных машин 762А - R, которые выполняет гипервизор 754 и которые вместе называются экземпляром (экземплярами) 752 программного обеспечения. Виртуальная машина представляет собой программную реализацию физической машины, которая выполняет программы так же, как если бы они исполнялись физической, не виртуальной машиной; и приложения обычно не знают, что они работают на виртуальной машине, в отличие от выполнения на ведущем электронном устройстве «без операционной системы», хотя некоторые системы обеспечивают паравиртуализацию, которая позволяет операционной системе или приложению осознавать присутствие виртуализации, что нужно для оптимизации. Каждая виртуальная машина 762А - R и та часть аппаратного обеспечения 740, которая исполняет виртуальную машину (это будет аппаратное обеспечение, выделенное для этой виртуальной машины, и/или временные промежутки аппаратного обеспечения, временно используемые этой виртуальной машиной совместно с другой виртуальной машиной (машинами) 762А - R), образуют отдельный виртуальный сетевой элемент (элементы) 760A - R.
Виртуальный сетевой элемент (элементы) 760A - R обладают функциональными возможностями, аналогичными виртуальному сетевому элементу (элементам) 730A - R. Например, гипервизор 754 может представлять виртуальную операционную платформу, которая кажется виртуальной машине 762А аналогичной сетевому аппаратному обеспечению 710 и виртуальная машина 762А может быть использована для реализации функциональных возможностей, аналогичных модулю (модулям) 732A - R управления связью и конфигурации и таблице (таблицам) 734А перенаправления (эта виртуализация аппаратного обеспечения 740 иногда называется виртуализацией (NFV) сетевых функций). Таким образом, NFV может быть использована для объединения сетевого оборудования многих типов на крупномасштабном серверном аппаратном обеспечении промышленного стандарта, физических коммутаторах и физических запоминающих устройствах, которые могут располагаться в центрах обработки данных, ND и абонентском оборудовании (CPE). Тем не менее, разные варианты осуществления изобретения могут по-разному реализовывать одну или несколько виртуальных машин 762А - R. Например, хотя варианты осуществления изобретения показаны так, что каждой виртуальной машине 762А - R соответствует один VNE 760А - R, альтернативные варианты осуществления изобретения могут реализовывать это соответствие на более тонком уровне подробности (например, виртуальные машины линейных карт виртуализируют линейные карты, виртуальная машина карты управления виртуализирует карты управления и так далее); следует понимать, что описанные в настоящем документе, со ссылками на соответствие виртуальных машин и VNE, технологии также применимы к вариантам осуществления изобретения, в которых используется такой более тонкий уровень подробности. Виртуальные сетевые элементы 760А - R могут содержать экземпляры 766А - 766R программного обеспечения 750 адаптивной обработки (АРР) пакетов, которое реализует варианты осуществления изобретения, описанные со ссылками на фиг. 1 - 6. Каждый экземпляр 766А выполнен с возможностью обработки и перенаправления пакетов, принятых сетевым устройством 704, путем сопоставления пакета с потоком обработки пакетов, в соответствии со схемой прямого сопоставления или схемой балансировки нагрузки, на основе состояния очереди потока обработки пакетов.
В определенных вариантах осуществления изобретения гипервизор 754 содержит виртуальный коммутатор, который обеспечивает аналогичные службы перенаправления, что и физический коммутатор Ethernet. Более конкретно, этот виртуальный коммутатор перенаправляет трафик между виртуальными машинами и NIC 744 (несколькими NIC 744), а также, при желании, между виртуальными машинами 762А - R; кроме того, этот виртуальный коммутатор может усиливать изоляцию сети между VNE 760А - R, которым из-за политики нельзя взаимодействовать друг с другом (например, по причине обеспечения виртуальных локальных сетей (VLAN)).
Третий пример реализации ND с фиг. 7А представляет собой гибридное сетевое устройство 706, которое содержит как специальные ASIC/коммерческую OS, так и COTS процессоры/стандартную OS в едином ND или единой карте в ND. В определенных вариантах осуществления такого гибридного сетевого устройства, VM платформы (то есть VM, которая реализует функциональные возможности специализированного сетевого устройства 702) может предусматривать паравиртуализацию для сетевого аппаратного обеспечения, присутствующего в гибридном сетевом устройстве 706.
Независимо от приведенных выше примеров реализации ND, когда рассматривают один из нескольких VNE, который реализован ND (то есть только один из VNE является частью заданной виртуальной сети), или, когда только один VNE в настоящее время реализован ND, для ссылки на этот VNE иногда используют сокращенный термин сетевой элемент (NE). Также во всех приведенных выше примерах реализаций, каждый из VNE (VNE 730A - R, VNE 760A - R и VNE из гибридного сетевого устройства 706) принимает данные по физическим NI (например, 716, 746) и перенаправляет эти данные из соответствующих физических NI (например, 716, 746). Например, VNE, реализующий функциональные возможности IP-маршрутизатора, перенаправляет IP-пакеты на основе некоторой информации IP-заголовка из IP-пакета; при этом информация IP-заголовка содержит IP-адрес источника, IP-адрес назначения, порт источника, порт назначения (где в настоящем документе «портом источника» и «портом назначения» называются порты протокола, в отличие от физических портов ND), транспортный протокол (например, протокол (UDP) пользовательских датаграмм (RFC 768, 2460, 2675, 4113 и 5405), протокол (TCP) управления передачей (RFC 793 и 1180) и значения приоритизированных служб (DSCP) (RFC 2474, 2475, 2597, 2983, 3086, 3140, 3246, 3247, 3260, 4594, 5865, 3289, 3290 и 3317)). В некоторых из этих вариантов осуществления изобретения, фактическую функцию перенаправления (плоскость перенаправления) выполняют в нескольких потоках обработки пакетов и реализованных с помощью каждого из APPI 733A - 733R или APPI 766A - 766R. Данные, принятые физическими NR, распределяют по потокам обработки пакетов на основе одного из вариантов осуществления изобретения, которые описаны со ссылками на фиг. 1 - 6.
На фиг. 7С показаны различные примеры, в которых VNE могут быть соединены в соответствии с некоторыми вариантами осуществления изобретения. На фиг. 7C показаны VNE 770A.1 - 770A.P (и, при желании, VNE 770A.Q - 770A.R), которые реализованы в ND 700A, и VNE 770H.1 в ND 700H. На фиг. 7C, VNE 770A.1 - P отделены друг от друга в том смысле, что они могут принимать пакеты извне ND 700A и перенаправлять пакеты за пределы ND 700A; VNE 770A.1 связан с VNE 770H.1 и, таким образом, они могут обмениваться пакетами между их соответствующими ND; VNE 770A.2 - 770A.3 могут, при желании, перенаправлять пакеты друг другу без их перенаправления за пределы ND 700A; и VNE 770A.P, при желании, может быть первым в цепочке VNE, которая содержит VNE 770A.Q, после которого идет VNE 770A.R (это иногда называют динамическим сервисным сцеплением, при этом каждый из VNE обеспечивает разные службы - например, одну или несколько сетевых служб уровня 4 - 7). Хотя на фиг. 7С показаны различные примеры взаимосвязи между VNE, альтернативные варианты осуществления изобретения могут поддерживать другие взаимосвязи (например, больше/меньше VNE, больше/меньше динамических сервисных цепочек, несколько разных динамических сервисных цепочек с некоторыми общими VNE и некоторыми различными VNE).
Например, ND с фиг. 7A, могут образовывать часть сети Интернет или частной сети; а другие электронные устройства (не показаны; такие как устройства конечного пользователя, в том числе рабочие станции, переносные компьютеры, ноутбуки, планшеты, наладонные компьютеры, мобильные телефоны, смартфоны, мультимедийные телефоны, телефоны голосовой связи (VOIP) по интернет-протоколу, конечные устройства, переносные медиаплееры, GPS блоки, носимые устройства, игровые системы, телеприставки, бытовые приборы с выходом в Интернет) могут быть связаны с сетью (непосредственно или через другие сети, такие как сети доступа) для обмена информацией по сети (например, Интернет или виртуальные частные сети (VPN)), которые наложены (например, с помощью туннелирования) на Интернет) друг с другом (напрямую или через серверы) и/или для доступа к контенту и/или службам. Такой контент и/или службы обычно предоставляются одним или несколькими серверами (не показаны), принадлежащими поставщику служб/контента или одному или нескольким устройствам конечных пользователей (не показаны), которые участвуют в обеспечении службы равноправных узлов (P2P), и могут содержать, например, общедоступные веб-страницы (например, свободный контент, витрины магазинов, поисковые службы), частные веб-страницы (например, веб-страницы с доступом с помощью имя пользователя/пароля, обеспечивающие службы электронной почты) и/или корпоративные сети с помощью VPN. Например, устройства конечных пользователей могут быть связаны (например, с помощью абонентского оборудования, связанного с некоторой сетью доступа (проводным или беспроводным образом)) с краевыми ND, которые связаны (например, с помощью одного или нескольких опорных ND) с другими краевыми ND, которые связаны с электронными устройствами, действующими в качестве серверов. Тем не менее, с помощью виртуализации вычислений и хранения, одно или несколько электронных устройств, работающих в качестве ND на фиг. 7А, также могут содержать один или несколько таких серверов (например, в случае сетевого устройства 704 общего назначения, одна или несколько виртуальных машин 762А - R могут работать в качестве серверов; то же самое будет справедливо для гибридного сетевого устройства 706; в случае специализированного сетевого устройства 702 один или несколько таких серверов также могут работать на гипервизоре, который исполняют с помощью вычислительного ресурса (ресурсов) 712); в этом случае говорят, что серверы расположены совместно с VNE этого ND.
Виртуальная сеть представляет собой логическую абстракцию физической сети (такой как показана на фиг. 7А), которая предоставляет сетевые службы (например, службы L2 и/или L3). Виртуальная сеть может быть реализована в виде наложенной сети (иногда называется наложением виртуализации сети), которая предоставляет сетевые службы (например, службы уровня 2 (L2, уровень канала связи) и/или уровня 3 (L3, сетевой уровень)) над лежащей в основе сетью (например, сеть L3, такая как сеть интернет-протокола (IP), которая использует туннели (например, протокол (L2TP) туннелирования общей инкапсуляции (GRE) маршрутов уровня 2, IPSec) для создания наложенной сети).
Край (NVE) виртуализации сети находится на краю лежащей в основе сети и участвует в реализации виртуализации сети; направленная к сети сторона NVE использует лежащую в основе сеть для туннелирования кадров в другие NVE и из других NVE; направленная наружу сторона NVE направляет данные в системы за пределами сети и принимает данные от систем за пределами сети. Экземпляр (VNI) виртуальной сети представляет собой конкретный экземпляр виртуальной сети на NVE (например, NE/VNE на некотором ND, часть NE/VNE на некотором ND, где указанный NE/VNE разделен на несколько VNE с помощью эмуляции); один или несколько VNI могут быть реализованы на некотором NVE (например, как разные VNE на некотором ND). Виртуальная точка (VAP) доступа представляет собой точку логического соединения на NVE для соединения внешних систем с виртуальной сетью; VAP может быть физическими или виртуальными портами, которые можно определить с помощью идентификаторов логического интерфейса (например, VLAN ID).
Примерами сетевых служб являются: 1) служба эмуляции LAN Ethernet (многоточечная служба на основе Ethernet, аналогичная службе многопротокольной (MPLS) коммутации по меткам или Ethernet VPN (EVPN) Рабочей группы (IETF) инженеров Интернета), в которой внешние службы соединены в сети с помощью среды LAN над лежащей в основе сетью (например, NVE обеспечивает отдельные L2 VNI (экземпляры виртуального коммутатора) для разных таких виртуальных сетей, и инкапсуляцию туннелирования L3 (например, IP/MPLS) в лежащей в основе сети); и 2) виртуализированная служба IP-перенаправления (аналогичная IETF IP VPN (например, протокол (BGP) граничных шлюзов/MPLS IPVPN RFC 4364) с точки зрения определения службы), в которой внешние системы соединены в сети с помощью среды L3 поверх лежащей в основе сети (например, NVE обеспечивает отдельные L3 VNI (экземпляры перенаправления и маршрутизации) для разных таких виртуальных сетей, и L3 инкапсуляцию туннелирования (например, IP/MPLS) в лежащей в основе сети)). Сетевые службы также могут содержать возможности качества обслуживания (например, маркировку классификации трафика, условия и планирование трафика), возможности по безопасности (например, фильтры для защиты абонентского оборудования от атак, исходящих от сети, для исключения объявлений с искаженным маршрутом) и возможности управления (например, полное определение и обработку).
На фиг. 7D показана сеть с единственным сетевым элементом на каждом ND с фиг. 7А и в рамках этого прямого подхода отличаются традиционный распределенный подход (обычно используемый традиционными маршрутизаторами) и централизованный подход для поддержания информации о достижимости и перенаправлении (также называемый управлением сетью), в соответствии с некоторыми вариантами осуществления изобретения. Более конкретно, на фиг. 7D показаны сетевые элементы (NE) 770А - Н с такими же соединениями, что и ND 700А - Н с фиг. 7А.
На фиг. 7D показано, что при распределенном подходе 772 распределяют ответственность по выработке информации о достижимости и перенаправлении; другими словами, распределен процесс обнаружения соседей и определения топологии.
Например, когда используют специализированное сетевое устройство 702, модуль (модули) 732A - R управления связью и конфигурации из плоскости 724 управления ND обычно содержит модуль информации о достижимости и перенаправлении для реализации одного или нескольких протоколов маршрутизации (например, протокол внешних шлюзов, такой как протокол (BGP) граничных шлюзов (RFC 4271), протокол (протоколы) (IGP) внутренних шлюзов (например, первоочередное открытие (OSPF) кратчайших маршрутов (RFC 2328 и 5340), промежуточная система - промежуточная система (IS-IS) (RFC 1142), протокол (RIP) информации маршрутизации (версия 1 RFC 1058, версия 2 RFC 2453 и следующее поколение RFC 2080)), протокол (LDP) распределения меток (RFC 5036), протокол (RSVP) резервирования ресурсов (RFC 2205, 2210, 2211, 2212, а также RSVP-управление трафиком (TE): расширения для RSVP для LSP туннелей RFC 3209, сигнализации RSVP-TE обобщенной многопротокольной коммутации (GMPLS) по меткам (RFC 3473, RFC 3936, 4495 и 4558))), которые обмениваются информацией с другими NE с целью обмена маршрутами, далее выбирают эти маршруты на основе одной или нескольких метрик маршрутов. Таким образом, NE 770А - Н (например, вычислительный ресурс (ресурсы) 712, исполняющий модуль (модули) 732A - R управления связью и конфигурации), осуществляет их ответственность на участие в управлении тем, как данные (например, пакеты) должны маршрутизироваться (например, следующий скачок данных и выходной физический NI для этих данных)) путем распределенного определения достижимости в сети и вычисления их соответствующей информации перенаправления. Маршруты и смежности сохраняют в одной или нескольких структурах для маршрутов (например, базе (RIB) маршрутной информации, базе (LIB) данных о метках, одной или нескольких структурах смежности) в плоскости 724 управления ND. Плоскость 724 управления ND программирует плоскость 726 перенаправления ND информацией (например, информацией о маршрутах и смежности) на основе структуры (структур) маршрутизации. Например, плоскость 724 управления ND программирует информацию о маршрутах и смежности в одну или несколько таблиц 734А - R перенаправления (например, базу (FIB) данных о перенаправлении, базу (LFIB) данных о перенаправлении меток и одну или несколько структур смежности) в плоскости 726 перенаправления ND. Для перенаправления уровня 2, ND может сохранить одну или несколько таблиц мостовых соединений, которые используют для перенаправления данных на основе информации уровня 2 в этих данных. Хотя в описанном выше примере используют специализированное сетевое устройство 702, тот же распределенный подход 772 может быть реализован на сетевом устройстве 704 общего назначения и гибридном сетевом устройстве 706.
На фиг. 7D показано, что централизованный подход 774 (также известный как программно-определяемая сеть (SDN)), который разделяет систему, которая принимает решения о том, куда направляют трафик из лежащих в основе систем, которые перенаправляют трафик в выбранное назначение. Показанный централизованный подход 774 отвечает за выработку информации о достижимости и перенаправлении в централизованной плоскости 776 управления (иногда называемой модулем управления SDN, контроллером, сетевым контроллером, контроллером OpenFlow, контроллером SDN, узлом плоскости управления, администратором виртуализации сети или управляющим объектом) и, таким образом, процесс обнаружения соседей и обнаружения топологии централизован. Централизованная плоскость 776 управления содержит южный интерфейс 782 с плоскостью 780 данных (иногда называется уровнем инфраструктуры, плоскостью сетевого перенаправления или плоскостью перенаправления (которую не нужно путать с плоскостью перенаправления ND)), который содержит NE 770А - Н (иногда называемые коммутаторами, переправляющими элементами, элементами плоскости данных или узлами). Централизованная плоскость 776 управления содержит сетевой контроллер 778, который содержит централизованный модуль 779 информации о достижимости и перенаправлении, который определяет достижимость в сети и распределяет информацию перенаправления на NE 770А - Н из плоскости 780 данных по южному интерфейсу 782 (который может использовать протокол OpenFlow). Таким образом, сетевая аналитика централизована в централизованной плоскости 776 управления на электронных устройствах, которые обычно отделены от ND.
Например, когда специализированное сетевое устройство 702 используют в плоскости 780 данных, каждый из модулей 732A - R управления связью и конфигурации из плоскости 724 управления ND обычно содержит агент управления, который обеспечивает VNE сторону южного интерфейса 782. В этом случае, плоскость 724 управления ND (вычислительный ресурс (ресурсы) 712, исполняющий модуль (модули) 732A - R управления связью и конфигурации) выполняет свои обязанности по участию в управлении тем, как данные (например, пакеты) должны маршрутизироваться (например, следующий скачок для данных и выходной физический NI для этих данных) через агента управления, который взаимодействует с централизованной плоскостью 776 управления с целью приема информации перенаправления (и в некоторых случаях, информации о достижимости) от централизованного модуля 779 информации о достижимости и перенаправлении (следует понимать, что в некоторых вариантах осуществления изобретения модуль (модули) 732A - R управления связью и конфигурации, помимо обмена информацией с централизованной плоскостью 776 управления, также может играть некоторую роль в определении достижимости и/или вычислении информации о перенаправлении - хотя и меньшую, чем в случае распределенного подхода; такие варианты осуществления изобретения, в общем, рассматривают как подпадающие под централизованный подход 774, но также можно рассмотреть гибридный подход).
Хотя в приведенном выше примере используют специализированное сетевое устройство 702, тот же централизованный подход 774 может быть реализован с сетевым устройством 704 общего назначения (например, каждый VNE 760А - R выполняет свои обязанности по управлению тем, как данные (например, пакеты) должны маршрутизироваться (например, следующий скачок для данных и выходной физический NI для этих данных) путем обмена информацией с централизованной плоскостью 776 управления с целью приема информации перенаправления (и в некоторых случаях, информации о достижимости) от централизованного модуля 779 информации о достижимости и перенаправлении; следует понимать, что в некоторых вариантах осуществления изобретения, VNE 760А - R, помимо обмена информацией с централизованной плоскостью 776 управления, также могут играть некоторую роль в определении достижимости и/или вычислении информации о перенаправлении - хотя и меньше, чем в случае распределенного подхода) и гибридным сетевым устройством 706. Фактически, использование технологий SDN может улучшить технологии NFV, обычно используемые в реализациях сетевого устройства 704 общего назначения или гибридного сетевого устройства 706, так как NFV способна поддерживать SDN путем обеспечения инфраструктуры, на которой может работать программное обеспечение SDN, и NFV и SDN нацелены на использование типового серверного аппаратного обеспечения и физических коммутаторов. Помимо этого, централизованный подход 774 может быть реализован со специализированным сетевым устройством 702 или сетевым устройством 704 общего назначения, которые реализуют варианты осуществления изобретения, описанные со ссылками на фиг. 1 - 6, с целью реализации адаптивной балансировки нагрузки при обработке пакетов.
На фиг. 7D также показано, что централизованная плоскость 776 управления содержит северный интерфейс 784 для прикладного уровня 786, в котором находится приложение (приложения) 788. Централизованная плоскость 776 управления обладает способностью образовывать виртуальные сети 792 (иногда называется логической плоскостью перенаправления, сетевыми службами или наложенными сетями (при этом NE 770А - Н плоскости 780 данных являются лежащей в основе сетью)) для приложения (приложений) 788. Таким образом, централизованная плоскость 776 управления поддерживает общий вид всех ND и сконфигурированных NE/VNE, и она эффективно сопоставляет виртуальные сети с лежащими в основе ND (в том числе поддерживает эти сопоставления при изменении физической сети или из-за неисправности, добавления или удаления аппаратного обеспечения (ND, канала или компонента ND)).
Хотя на фиг. 7D показан распределенный подход 772, отделенный от централизованного подхода 774, усилия по управлению сетью могут быть распределены по-другому или два подхода могут быть объединены в определенных вариантах осуществления изобретения. Например: 1) варианты осуществления изобретения, в общем, могут использовать централизованный подход 774 (SDN), но обладать определенными функциями, делегируемыми NE (например, распределенный подход может быть использован для реализации одного или нескольких элементов из следующих: отслеживание неисправностей, отслеживание производительности, переключение защиты и примитивы для обнаружения соседа и/или топологии); или 2) варианты осуществления изобретения могут выполнять обнаружение соседей и обнаружение топологии с помощью как централизованной плоскости управления, так и распределенных протоколов, и сравнивать результаты, чтобы вырабатывать исключения, когда они не соответствуют. Некоторые варианты осуществления изобретения, в общем, рассматривают как подпадающие под централизованный подход 774, но также можно рассмотреть гибридный подход.
Хотя на фиг. 7D показан простой случай, в котором каждое из ND 700А - Н реализует единственный NE 770А - Н, следует понимать, что подходы к управлению сетями, описанные со ссылками на фиг. 7D, также работают для сетей, в которых одно или несколько ND 700А - Н реализуют несколько VNE (например, VNE 730А - R, VNE 760А - R, виртуальные сетевые элементы в гибридном сетевом устройстве 706). В качестве альтернативы или в дополнение, сетевой контроллер 778 также может эмулировать реализацию нескольких VNE в единственном ND. Более конкретно, вместо (или в дополнение) реализации нескольких VNE в единственном ND, сетевой контроллер 778 может представлять реализацию VNE/NE в единственном ND, как несколько VNE в виртуальных сетях 792 (все элементы в одной и той же виртуальной сети из виртуальных сетей 792, каждый элемент в разных виртуальных сетях 792 или некоторая комбинация). Например, сетевой контроллер 778 может побудить ND реализовать единственный VNE (NE) в лежащей в основе сети и далее логически поделить ресурсы этого NE в централизованной плоскости 776 управления для представления разных VNE в виртуальной сети (сетях) 792 (где эти разные VNE в наложенных сетях совместно используют ресурсы единственной реализации VNE/NE на ND в лежащей в основе сети).
С другой стороны, на фиг. 7Е и 7F соответственно показаны примеры абстракций NE и VNE, которые сетевой контроллер 778 может представлять как часть других виртуальных сетей 792. На фиг. 7Е показан простой случай того, когда каждое из ND 700A - H реализует единственный NE 770A-H (смотри фиг. 7D), но централизованная плоскость 776 управления абстрактно рассматривает несколько NE в разных ND (NE 770A - C и G - H) как (для представления) единственный NE 770I в одной из виртуальных сетей 792 с фиг. 7D, в соответствии с некоторыми вариантами осуществления изобретения. На фиг. 7Е показано, что в этом виртуальной сети NE 770I связан с NE 770D и 770F, которые по-прежнему связаны с NE 770Е.
На фиг. 7F показан случай, когда несколько VNE (VNE 770A.1 и VNE 770H.1) реализованы в разных ND (ND 700A и ND 700H) и связаны друг с другом и когда централизованная плоскость управления абстрактно рассматривает эти несколько VNE так, что они кажутся единственным VNE 770Т в одной из виртуальных сетей 792 с фиг. 7D, в соответствии с некоторыми вариантами осуществления изобретения. Таким образом, абстракция NE или VNE может охватить несколько ND.
Хотя в некоторых вариантах осуществления изобретения централизованная плоскость 776 управления реализована как единственный объект (например, единственный экземпляр программного обеспечения, работающего на единственном электронном устройстве), альтернативные варианты осуществления изобретения могут распространять функциональные возможности на несколько объектов для целей дублирования и/или масштабирования (например, несколько экземпляров программного обеспечения, работающих на разных электронных устройствах).
Аналогично реализациям сетевого устройства, электронное устройство (устройства), выполняющие централизованную плоскость 776 управления и, таким образом, этот сетевой контроллер 778, содержащий централизованный модуль 779 информации о достижимости и перенаправлении, может быть реализован разными способами (например, специализированное устройство, устройство (например, COTS) общего назначения или гибридное устройство). Это электронное устройство (устройства) будет аналогично содержать вычислительный ресурс (ресурсы), набор, или один или несколько физических NIC и долговременный считываемый машиной носитель, на котором хранится программное обеспечение централизованной плоскости управления.
Стандарты, такие как OpenFlow, определяют протоколы, используемые для сообщений, а также модель для обработки пакетов. Модель для обработки пакетов содержит разбор заголовка, классификацию пакетов и принятие решений о перенаправлении. Разбор заголовка описывает, каким образом интерпретировать некоторый пакет на основе хорошо известного набора протоколов. Некоторые поля протокола используют для построения структуры соответствия (или ключа), которая будет использована при классификации пакета (например, первое поле ключа может быть адресом управления (MAC) доступом к среде передачи данных для источника, а второе поле ключа может быть MAC-адресом назначения).
Классификация пакетов включает в себя осуществление поиска в памяти с целью классификации пакета путем определения, какая запись (также называемая записью таблицы перенаправления или записью потока) в таблицах перенаправления наилучшим образом соответствует пакету, что делают на основе структуры соответствия или ключа записей таблиц перенаправления. Возможно, что много потоков, представленных в записях таблиц перенаправления, могут соответствовать/согласовываться с пакетом; в этом случае система обычно выполнена с возможностью определения одной записи таблиц перенаправления из многих, в соответствии с некоторой определенной схемой (например, выбор первой соответствующей записи таблиц перенаправления). Записи таблицы перенаправления содержат как некоторый определенный набор критериев соответствия (набор значений или специальных символов или указание того, какие участки пакета должны быть сравнены с конкретным значением/значениями/специальными символами, как определено возможностями соответствия - для конкретных полей в заголовке пакета или для некоторого другого содержимого пакета), так и некоторый набор из одного или нескольких действий для плоскости данных, которые нужно предпринять при приеме соответствующего пакета. Например, некоторое действие может заключаться в продвижении заголовка в пакет, для пакета с использованием некоторого конкретного порта, в заливании пакета или просто в отбрасывании пакета. Таким образом, запись таблицы перенаправления для IPv4/IPv6 пакетов с конкретным портом назначения протокола (TCP) управления передачей может содержать некоторое действие, определяющее, что эти пакеты должны быть отброшены.
Принятие решений о перенаправлении и осуществление действий имеет место на основе записи таблицы перенаправления, определенной во время классификации пакета, путем осуществления для пакета некоторого набора действий, определенного в соответствующей записи таблицы перенаправления.
Тем не менее, когда неизвестный пакет (например, «потерянный пакет» или «соответствовать-потерять» языке OpenFlow) поступает в плоскость 780 данных, пакет (или некоторое подмножество заголовка пакета и содержимого) обычно перенаправляют на централизованную плоскость 776 управления. Далее централизованная плоскость 776 управления будет программировать записи таблиц перенаправления в плоскости 780 данных с целью размещения пакетов, принадлежащих потоку неизвестного пакета. Когда некоторая конкретная запись таблицы перенаправления была запрограммирована в плоскости 780 данных с помощью централизованной плоскости 776 управления, следующий пакет с соответствующими регистрационными данными будет соответствовать этой записи таблицы перенаправления и будут предпринимать набор действий, которые связаны с соответствующей записью.
Сетевой интерфейс (NI) может быть физическим или виртуальным; и в контексте IP, адрес интерфейса представляет собой IP-адрес, приписанный NI, независимо от того, является ли указанный интерфейс физическим NI или виртуальным NI. Виртуальный NI может быть связан с физическим NI, с другим виртуальным интерфейсом или может находиться отдельно (например, интерфейс закольцовывания, интерфейс протокола точка-точка). NI (физический или виртуальный) может быть пронумерован (NI с IP-адресом) или не содержать номера (NI без IP-адреса). Интерфейс закольцовывания (и его адрес закольцовывания) является виртуальным NI (и IP-адрес) конкретного типа для NE/VNE (физического или виртуального), который часто используют для целей управления; при этом такой IP-адрес называют узловым адресом закольцовывания. IP-адрес (адреса), приписанный NI (нескольким NI) из ND, называются IP-адресами этого ND; на более детальном уровне IP-адрес (адреса), приписанный NI (нескольким NI), который приписан NE/VNE, реализованном на ND, можно назвать IP-адресом этого NE/VNE.
Выбор следующего скачка с помощью системы маршрутизации для некоторого заданного назначения может привести к одному пути (то есть протокол маршрутизации может выработать один следующий скачок на кратчайшем пути); но если система маршрутизации определит, что существует несколько следующих целесообразных скачков (то есть решения по перенаправлению, выработанные протоколом маршрутизации, предлагают более одного следующего скачка на кратчайшем пути - несколько следующих скачков с одинаковой стоимостью), используют некоторые дополнительные критерии - например, в сети без установления соединений может быть использован маршрут (ECMP) равной стоимости (также известный как и построение маршрута равной стоимости, перенаправление для нескольких маршрутов и IP нескольких маршрутов) (RFC 2991 и 2992) (например, типовые реализации используют в качестве критерия конкретные поля заголовка для обеспечения того, что пакеты конкретного потока пакетов всегда перенаправляют на тот же самый скачок с целью сохранения порядка потока пакетов). Для целей перенаправления с несколькими маршрутами, поток пакетов определяют как некоторый набор пакетов, для которых справедливо некоторое ограничение на порядок. В качестве примера, нужно, чтобы набор пакетов в некоторой конкретной последовательности TCP переходов прибыл в некотором порядке, иначе логика TCP интерпретирует доставку в другом порядке как перегрузку и уменьшит скорость передачи TCP.
Канал агрегирования (LAG) каналов уровня 3 (L3) является каналом, напрямую соединяющим два ND с несколькими маршрутами каналов с IP-адресом (каждому маршруту канала приписаны разные IP-адреса) и решение о распределении нагрузки по этим разным маршрутам каналов принимают в плоскости перенаправления ND; в этом случае решение о распределении нагрузки принимают для маршрутов каналов.
Некоторые ND обладают функциональными возможностями для протоколов (ААА) аутентификации, авторизации и учета (например, RADIUS (Служба идентификации удаленных пользователей), Диаметр и/или TACACS+ (Система управления доступом для контроллера доступа к терминалу). AAA может быть обеспечен с помощью модели клиент/сервер, при этом клиент ААА реализован на ND, а сервер ААА может быть реализован или локально на ND или на удаленном электронном устройстве, связанном с ND. Аутентификация является процессом идентификации и проверки абонента. Например, абонент может быть идентифицирован с помощью комбинации имени пользователя и пароля или с помощью уникального ключа. Авторизация определяет, что абонент может делать после его аутентификации, например, может получить доступ к определенным информационным ресурсам электронного устройства (например, путем использования политик управления доступом). Учет представляет собой запись действий пользователя. В качестве обобщающего примера устройства конечного пользователя могут быть связаны (например, с помощью сети доступа) через краевое ND (поддерживающее ААА обработку), которое связано с опорными ND, связанными с электронным устройством, которое реализует серверы поставщика служб/контента. AAA обработку осуществляют с целью идентификации записи абонента, которая хранится на ААА сервере для этого абонента. Запись абонента содержит некоторый набор атрибутов (например, имя абонента, пароль, информацию аутентификации, информацию управления доступом, информацию об ограничении скорости, информацию политик), который используют в ходе обработки трафика этого абонента.
Определенные ND (например, определенные краевые ND) внутренне представляют устройства конечных пользователей (или иногда абонентское оборудование (CPE), такое как абонентский шлюз (например, маршрутизатор, модем)), использующие комплекты абонентов. Комплект абонента однозначно идентифицируется в сессии абонента ND и обычно существуют в течении сессии. Таким образом, ND обычно выделяет комплект абонента, когда абонент соединяется с этим ND и, соответственно, освобождает этот комплект абонента, когда абонент отсоединяется. Каждая сессия абонента представляет собой отличимый поток пакетов, передаваемый между ND и устройством конечного пользователя (или иногда CPE, таком как абонентский шлюз или модем) с использованием некоторого протокола, такого как протокол точка-точка над другим протоколом (PPPoX) (например, где X представляет собой Ethernet или Асинхронный режим (ATM) передачи), Ethernet, 802.1Q виртуальная LAN (VLAN), интернет-протокол или ATM). Сессия абонента может быть начата с использованием разнообразных механизмов (ручное предусматривание протокола (DHCP) динамической конфигурации сетевого узла, DHCP/бесклиентная служба (CLIPS) интернет-протокола или отслеживание адреса управления (MAC) доступом к среде передачи данных). Например, протокол (РРР) точка-точка обычно используют для служб цифровой абонентской линии (DSL) и он требует установки РРР клиента, который предоставляет абоненту возможность ввести имя пользователя и пароль, которые, в свою очередь, могут быть использованы для выбора записи абонента. Когда используют DHCP (например, для служб кабельного модема), имя пользователя обычно не предоставляется; но в таких ситуациях предоставляют другую информацию (например, информацию, которая содержит МАС-адрес аппаратного обеспечения в устройстве конечного пользователя (или СРЕ)). Использование DHCP и CLIPS на ND получает MAC-адреса и использует эти адреса для различения абонентов и доступа к их записям абонентов.
Каждый VNE (например, виртуальный маршрутизатор, виртуальный мост (который может действовать в качестве экземпляра виртуального коммутатора в Службе (VPLS) виртуальной частной LAN (RFC 4761 и 4762)) обычно администрируют независимо. Например, в случае нескольких виртуальных маршрутизаторов, каждый из виртуальных маршрутизаторов может совместно использовать системные ресурсы, но он отделен от других виртуальных маршрутизаторов в отношении их домена управления, пространства названий ААА (аутентификация, авторизация и учет), IP-адреса и базы (баз) данных маршрутизации. Несколько VNE могут быть использованы в краевом ND для обеспечения прямого сетевого доступа и/или разных классов служб для абонентов служб и/или поставщиков контента.
В определенных ND «интерфейсы», которые не зависят от физических NI, могут быть сконфигурированы как часть VNE для обеспечения информации протокола более высокого уровня и служебной информации (например, адресации уровня 3). Абонент записывает в идентификационную информацию ААА сервера, помимо других требований конфигурации абонента, с каким контекстом (например, какому из VNE/NE) должны быть связаны соответствующие абоненты в рамках ND. В настоящем документе связывание образует некоторое соответствие между физическим объектом (например, физическим NI, каналом) или логическим объектом (например, комплектом, таким как комплект абонента, или логическим комплектом (некоторым набором из одного или нескольких комплектов абонентов)) и интерфейсом контекста над которым сконфигурированы сетевые протоколы (например, протоколы маршрутизации, протоколы мостов) для этого контекста. Данные абонентов перемещаются по физическому объекту, когда некоторый интерфейс протокола более высокого уровня сконфигурирован и связан с этим физическим объектом.
Адаптивная балансировка нагрузки с минимальным влиянием на хорошо ведущие себя потоки
В описанных выше вариантах осуществления изобретения потоки, принятые сетевым устройством, делятся на подмножества (например, путем сопоставления одному из нескольких сегментов памяти) и для каждого сегмента памяти поддерживают некоторое состояние. Это состояние используют для идентификации сегментов памяти, содержащих тяжелые потоки, и, соответственно, эти сегменты памяти маркируют для выполнения балансировки нагрузки с помощью всех потоков обработки пакетов. Пакеты оставшихся сегментов памяти продолжают напрямую сопоставлять с их соответствующим потоком обработки пакетов.
Эти варианты осуществления изобретения подразумевают поддержание и отслеживание состояния на уровне сегмента памяти, что помогает при идентификации и определении тяжелых пакетов и/или пакетов с асимметрией хеширования. Эти состояния поддерживают для всех потоков (то есть всех сегментов памяти), даже если небольшое количество потоков отвечает за перегрузку (например, все потоки, сопоставленные единственному сегменту памяти, могут пройти балансировку нагрузки и быть переупорядочены, даже если только один поток из сопоставленных потоков отвечает за перегрузку). В общем, ожидается, что будут доминировать мышиные потоки (то есть небольшие потоки, в отличие от «слоновьих/тяжелых» потоков) и может быть не желательно платить за поддержание дополнительного отслеживания состояний для всех потоков, так как не все потоки будут вносить вклад в превышение пределов потоков обработки пакетов.
Представленные ниже варианты осуществления изобретения позволяют сетевому элементу, который обрабатывает пакеты, в сетевом устройстве изменять последовательность (переупорядочивать) обработанные пакеты только при необходимости делают указанное для небольшого множества потоков. Эти варианты осуществления изобретения избегают добавления любых вычислительных непроизводительных затрат на уровне потока или сегмента памяти (то есть подмножества потоков) для всех потоков, принятых сетевым элементом. В отличие от описанных выше вариантов осуществления изобретения, в приведенных ниже вариантах осуществления изобретения только для некоторого подмножества потоков осуществляют отслеживание состояний. В этих вариантах осуществления изобретения предложено, чтобы потоки обработки пакетов из перенаправляющего элемента (сетевой элемент, который обрабатывает пакеты) были разделены на категории: те потоки выполнения, которые участвуют в перенаправлении с балансировкой нагрузки и которым может потребоваться изменение последовательности обработанных пакетов, и те потоки выполнения, которые не участвуют в балансировке нагрузки и которым может не потребоваться изменение последовательности.
В некоторых вариантах осуществления изобретения введено понятие пулов (или категорий потоков выполнения) потоков обработки пакетов. В соответствии с некоторыми вариантами осуществления изобретения на этапе инициализации системы все потоки обработки пакетов находятся в «Нормальном» пуле/категории. Когда для какого-либо потока обработки пакетов, обнаружено переполнение очереди, этот поток обработки пакетов перемещают в «Переполненный» пул. В некоторых вариантах осуществления изобретения, когда некоторый поток обработки пакетов с высокой загруженностью перемещают в Переполненный пул, по меньшей мере, один дополнительный поток обработки пакетов с малой загруженностью дополнительно добавляют в указанный пул. Весь трафик пакетов, сопоставленных потокам обработки пакетов из Переполненного пула, подвергают балансировке нагрузки с помощью всех потоков выполнения из указанного пула. На основе механизма отслеживания, дополнительные потоки выполнения могут быть добавлены в Переполненный пул для помощи в балансировке нагрузки пакетов, сопоставленных с Переполненным пулом потоков выполнения, или, в качестве альтернативы, потоки обработки пакетов могут быть извлечены из Переполненного пула. В некоторых вариантах осуществления изобретения может присутствовать дополнительный пул потоков обработки пакетов, для помощи в процессе возврата переполненных потоков обработки пакетов, в нормальное состояние (то есть перемещения потока выполнения из Переполненного пула в Нормальный пул). В этом варианте осуществления изобретения дополнительный пул потоков выполнения служит в качестве «Переходного» (или промежуточного) пула, чтобы исключить частые переходы потоков выполнения между Переполненным пулом и Нормальным пулом.
В некоторых вариантах осуществления изобретения пакетам, сопоставленным с некоторым потоком обработки пакетов из Переполненного пула, может понадобиться изменение последовательности (переупорядочивание) в области подготовки, а пакеты, сопоставленные с другими потоками обработки пакетов (например, из Нормального пула), могут быть перенаправлены напрямую, без переупорядочивания.
На фиг. 8 показаны операции, осуществляемые в сетевом устройстве с целью адаптивной балансировки нагрузки при обработке пакетов с минимальным влиянием на хорошо ведущие себя потоки (то есть не тяжелые, не являющиеся слоновьими), в соответствии с одним вариантом осуществления изобретения. Прямоугольники 1 - 10b задач показывают порядок, в котором выполняют операции в соответствии с одним вариантом осуществления изобретения.
В прямоугольнике 1 задачи пакет принимают в сетевом устройстве. Пакет принимают с помощью сетевого интерфейса и перенаправляют на устройство 815 присвоения порядкового номера. В прямоугольнике 2 задачи каждому входящему пакету приписывают некоторый порядковый номер. Приписанный порядковый номер далее используют в блоке 860 переупорядочивания для обеспечения того, что пакеты выходят из сетевого устройства в том же порядке, что и вошли. В соответствии с одним вариантом осуществления изобретения пакетам приписывают порядковый номер на основе потока, так что пакетам одного и того же потока приписывают разные (например, последовательные) номера одной последовательности. В соответствии с другим вариантом осуществления изобретения пакетам приписывают порядковый номер на основе агрегированного потока, так что пакетам нескольких потоков приписывают разные (например, последовательные) номера одной последовательности (например, потоков, принятых в одном физическом порту, потоков с одним портом протокола или всех потоков, принятых сетевым элементом и так далее). В некоторых вариантах осуществления изобретения до приписывания порядкового номера каждый пакет может пройти проверку корректности.
В некотором альтернативном варианте осуществления изобретения прямоугольник 2 задачи является необязательной операцией и ее опускают. В этом варианте осуществления изобретения при приеме пакета сетевым устройством, пакет перенаправляют в блок 810 сопоставления без приписывания порядкового номера. Пакеты могут быть переупорядочены в блоке 860 переупорядочивания, чтобы их подавать на выход в соответствии с определенным порядком и на основе информации, содержащейся в пакетах (поля заголовков пакетов). Этот порядок может быть основан на положении пакета относительно положений других пакетов при их приеме сетевым устройством.
В прямоугольнике 3 задачи блок 810 сопоставления приписывает упомянутый пакет некоторому потоку обработки пакетов, из потоков 850 обработки пакетов. В соответствии с некоторыми вариантами осуществления изобретения блок 810 сопоставления может быть выполнен с возможностью осуществления разбора заголовка и классификации пакета или приспособлен для осуществления указанного. Разбор заголовка описывает, каким образом интерпретировать некоторый пакет на основе хорошо известного набора протоколов. Некоторые поля протокола используют для построения структуры соответствия (или ключа), которая будет использована при классификации пакета (например, первое поле ключа может быть адресом управления (MAC) доступом к среде передачи данных для источника, а второе поле ключа может быть MAC-адресом назначения).
Классификация пакетов включает в себя осуществление поиска в памяти с целью классификации пакета путем определения, какая запись (также называемая записью таблицы перенаправления или записью потока), в наборе из одной или нескольких таблиц перенаправления, наилучшим образом соответствует пакету, что делают на основе структуры соответствия или ключа записей таблиц перенаправления. Возможно, что много потоков, представленных в записях таблиц перенаправления, могут соответствовать/согласовываться с пакетом; в этом случае система обычно выполнена с возможностью определения одной записи таблиц перенаправления из многих, в соответствии с некоторой определенной схемой (например, выбор первой соответствующей записи таблиц перенаправления).
В альтернативном варианте осуществления изобретения в прямоугольнике 3 задачи приписывание пакета некоторому потоку обработки пакетов, дополнительно включают в себя сопоставление пакета с одним из сегментов 820A - N памяти до добавления пакета в очередь приписанного потока обработки пакетов. Сопоставление может быть выполнено в соответствии с механизмом хеширования. В одном варианте осуществления изобретения каждый из сегментов 820А - N памяти связан с одним из потоков 850А - D обработки пакетов. Например, при приеме пакета, блок 810 сопоставления может сопоставить этот пакет с сегментом 820А памяти, который связан с первым потоком 850А обработки пакетов. В другом примере, при приеме пакета, блок 810 сопоставления может сопоставить этот пакет с сегментом 820N памяти, который связан с другим потоком обработки пакетов.
В прямоугольнике 4 задачи модуль 810 сопоставления определяет состояние потока выполнения, который обрабатывает пакеты и которому приписан упомянутый пакет. В соответствии с одним вариантом осуществления изобретения состояние потока обработки пакетов, может представлять собой или нормальное состояние или переполненное состояние. В альтернативном варианте осуществления изобретения состояние потока обработки пакетов, может представлять собой или нормальное состояние, или переходное состояние, или переполненное состояние. Если состояние потока обработки пакетов, представляет собой переполненное состояние, то присутствует указание на то, что этот поток обработки пакетов является частью потоков выполнения «Переполненного пула». Переполненный пул представляет собой набор потоков обработки пакетов, который использует устройство 130 балансировки нагрузки для балансировки нагрузки для потоков пакетов. Когда состояние потока обработки пакетов, представляет собой нормальное состояние, то присутствует указание на то, что этот поток обработки пакетов является частью потоков выполнения «Нормального пула». Нормальный пул представляет собой набор потоков обработки пакетов, которые принимают пакеты потоков, которые напрямую сопоставлены потокам обработки пакетов (без осуществления балансировки нагрузки). В вариантах осуществления изобретения, содержащих третье состояние (переходное состояние), если поток обработки пакетов находится в переходном состоянии, это указывает на то, что недавно поток выполнения был частью Переполненного пула потоков выполнения, а сейчас он находится в процессе перехода в Нормальный пул потоков выполнения. Состояние каждого потока обработки пакетов, устанавливают и обновляют в соответствии с вариантами осуществления изобретения, описанными ниже со ссылками на фиг. 8 (прямоугольники 10а и 10b задач, которые выполняют в модуле 840 отслеживания производительности) и фиг. 11.
В прямоугольнике 5 задачи пакет сопоставляют с первым потоком обработки пакетов (к которому пакет приписан в прямоугольнике 3 задачи) или, в качестве альтернативы, с устройством 830 балансировки нагрузки, на основе состояния первого потока обработки пакетов. В не ограничивающем изобретение примере пакет приписан потоку 850А обработки пакетов (как описано со ссылкой на прямоугольник 3 задачи), и после определения, в прямоугольнике 4 задачи, того, что состояние потока 850А обработки пакетов представляет собой нормальное состояние (то есть поток обработки пакетов является частью Нормального пула потоков выполнения), пакет напрямую сопоставляют с потоком 850А обработки пакетов с целью обработки. В другом, не ограничивающем изобретение, примере пакет приписан потоку 850В обработки пакетов и после определения того, что состояние потока 850В обработки пакетов представляет собой переполненное состояние (то есть поток выполнения является частью Переполненного пула потоков выполнения), пакет сопоставляют устройству 830 балансировки нагрузки для распределения по набору потоков выполнения (например, 850В и 850D) Переполненного пула. В этом примере устройство 830 балансировки нагрузки, в прямоугольнике 6 задачи, сопоставляет пакет второму потоку обработки пакетов, из Переполненного пула на основе некоторой схемы балансировки нагрузки (например, второй поток выполнения может быть или потоком 850В обработки пакетов или потоком 850D обработки пакетов). В некоторых вариантах осуществления изобретения пакет, в качестве альтернативы, может быть приписан переходному потоку выполнения (например, 850С) и после определения того, что состояние потока выполнения, который обрабатывает пакеты и которому приписан указанный пакет, представляет собой переходное состояние (то есть поток выполнения является частью Переходного пула), пакет напрямую сопоставляют приписанному потоку выполнения (то есть 850С).
В некоторых вариантах осуществления изобретения сопоставление из прямоугольника 5 задачи осуществляют после того, как пакет сопоставили с одним из сегментов 820 памяти. В альтернативном варианте осуществления изобретения сопоставление из прямоугольника 5 задачи осуществляют с помощью блока 810 сопоставления напрямую после определения состояния первого потока обработки пакетов (прямоугольник 4 задачи), без сопоставления пакета одному из сегментов 820 памяти.
Как описано выше, в прямоугольнике 6 задачи, устройство 830 балансировки нагрузки распределяет (сопоставляет) пакеты по потокам обработки пакетов из Переполненного пула. В некоторых вариантах осуществления изобретения, Переполненный пул содержит некоторое подмножество из общего количества потоков обработки пакетов и работающих на сетевом устройстве. Это подмножество потоков выполнения устанавливают динамически в соответствии с трафиком, входящим на сетевое устройство. Потоки выполнения могут быть добавлены или извлечены из Переполненного пула в соответствии с потоками, принятыми сетевым устройством, и в соответствии с отслеживанием очередей потоков обработки пакетов. Набор потоков выполнения из некоторого пула (например, Переполненного пула, Нормального пула или Переходного пула) приспособлен в соответствии с состоянием каждого потока выполнения, которое определяют в соответствии с вариантами осуществления изобретения, описанными со ссылками на фиг. 8 (прямоугольник 10а задачи и прямоугольник 10b задачи) и фиг. 11. Таким образом, устройство 830 балансировки нагрузки приспосабливает сопоставление пакетов через Переполненный пул в соответствии с потоками обработки пакетов из этого пула. В показанном примере с фиг. 8, потоки 850В и 850D обработки пакетов являются частью Переполненного пула, поток 850С обработки пакетов содержится в Переходном пуле, а поток 850А обработки пакетов содержится в Нормальном пуле. В показанном примере, при приеме некоторого пакета, устройство 830 балансировки нагрузки сопоставляет этот пакет с одним из потоков 850В или 850D обработки пакетов, из Переполненного пула на основе схемы балансировки нагрузки. Балансировка нагрузки для пакетов может быть выполнена, например, в соответствии с механизмом круглого стола, механизмом случайного распределения или другим механизмом распределения, который может учесть дополнительные факторы (например, эвристики, текущие загрузки, длины очередей в потоках обработки пакетов, и так далее).
После сопоставления пакета одному из потоков 850 обработки пакетов (или через устройство 830 балансировки нагрузки или сопоставляют напрямую), на основе состояния потока обработки пакетов, пакет добавляют в очередь этого потока обработки пакетов.
В прямоугольнике 7а пакеты обрабатывают в потоке обработки пакетов (например, одном из потоков 850А - 850D обработки пакетов). Каждый поток обработки пакетов возвращает пакеты из его соответствующей очереди для обработки пакетов. В одном варианте осуществления изобретения потоки обработки пакетов исполняются на разных ядрах процессора. В альтернативном варианте осуществления изобретения на одном ядре процессора может исполняться два или больше потоков выполнения. Каждый поток 850А - D обработки пакетов обрабатывает некоторый пакет в соответствии с таблицей (таблицами) перенаправления, так что пакеты подают на выход на соответствующие физические сетевые интерфейсы (NI) или отбрасывают. Хотя на фиг. 8 показаны четыре потока 850А - 850D обработки пакетов, в альтернативных вариантах осуществления изобретения может присутствовать любое количество потоков обработки пакетов (например, сотни или тысячи потоков обработки пакетов, могут работать в сетевом устройстве). В частности, альтернативные варианты осуществления изобретения могут содержать разные количества потоков обработки пакетов и содержащихся в каждом пуле. Каждый из пулов (Нормальный, Переполненный и Переходный) может содержать один или несколько потоков обработки пакетов, и размер пула может быть приспособлен в соответствии с трафиком, принятым сетевым устройством.
В прямоугольнике 7b задачи устанавливают флаг балансировки нагрузки пакета, обработанного в некотором потоке обработки пакетов на основе состояния этого потока обработки пакетов. В некоторых вариантах осуществления изобретения для каждого пакета, обработанного в некотором потоке выполнения из Переполненного пула, устанавливают флаг (флаг балансировки нагрузки), указывающий, что для пакета нужно выполнить переупорядочивание. В некоторых вариантах осуществления изобретения флаг балансировки нагрузки устанавливают в метазаголовках для всех пакетов, обработанных в некотором потоке обработки пакетов из Переполненного пула, при этом флаг балансировки нагрузки не устанавливают для всех пакетов, обработанных в некотором потоке обработки пакетов из Нормального пула. Таким образом, каждый пакет указывает, сопоставлен ли он напрямую с потоком обработки пакетов вместе со всеми пакетами одного и того же потока, или, в качестве альтернативы, осуществляют ли для пакетов этого потока балансировку нагрузки по нескольким потокам обработки пакетов. В альтернативных вариантах осуществления изобретения флаг балансировки нагрузки устанавливают для пакетов, обрабатываемых в некотором потоке обработки пакетов из Переполненного пула или Переходного пула, при этом флаг балансировки нагрузки не устанавливают, когда пакет обработан в некотором потоке обработки пакетов из Нормального пула.
В некоторых вариантах осуществления изобретения на основе состояния потока обработки пакетов, пакет, обработанный в потоке выполнения, направляют в блок 860 переупорядочивания для обработки.
В прямоугольнике 8а задачи при приеме обработанного пакета, блок 860 переупорядочивания определяет, были ли ранее обработаны и перенаправлены пакеты, предшествующие этому принятому пакету, до перенаправления этого принятого пакета. Выходной порядок пакетов основан на порядковых номерах, приписанных пакетам на входе сетевого элемента. В некоторых из этих вариантов осуществления изобретения блок 860 переупорядочивания может отсутствовать и пакеты подают на выход после их обработки в потоке обработки пакетов без переупорядочивания. В других вариантах осуществления изобретения, когда пакеты некоторого потока распределяют по нескольким потокам обработки пакетов их больше не обрабатывают в соответствии с порядковыми номерами, приписанными в прямоугольнике 2. В этом примере пакеты могут быть поданы на выход из потоков обработки пакетов, в порядке, который отличается от входного порядка. Пакеты переупорядочивают до их перенаправления, чтобы обеспечить то, что их подают на выход из сетевого элемента в соответствии с порядком, приписанным на входе. В некоторых вариантах осуществления изобретения для каждого входящего пакета, механизм переупорядочивания учитывает пул потока выполнения, который обработал этот пакет, и или осуществляет очевидную операцию изменения последовательности (для пакетов, обработанных в некотором потоке обработки пакетов из Нормального пула), или осуществляет полное изменение последовательности, что включает в себя помещение пакетов в область подготовки (для пакетов, обработанных в некотором потоке обработки пакетов из Переполненного пула или Переходного пула) (то есть сохраняют в прямоугольнике 8b задачи). В прямоугольнике 9 задачи пакеты подают на выход в соответствии с входным порядком.
Отслеживание и обновление состояния потока обработки пакетов
На фиг. 11 показана схема обновления состояния потока обработки пакетов, в соответствии с некоторыми вариантами осуществления изобретения. При инициализации системы все потоки обработки пакетов находятся в нормальном состоянии (1102) и принадлежат Нормальному пулу. Никакие потоки обработки пакетов не являются переполненными и, соответственно, их всех будут обрабатывать и перенаправляют сопоставленные напрямую пакеты. В прямоугольнике 10а задачи с фиг. 8, модуль 840 отслеживания производительности отслеживает длину очереди каждого из потоков обработки пакетов, и, в прямоугольнике 10b задачи с фиг. 8, модуль 840 отслеживания производительности обновляет состояние каждого потока обработки пакетов, на основе указанного отслеживания. Другими словами, состояние каждого из потоков выполнения, которые обрабатывают пакеты и которые работают в сетевом устройстве, отслеживают и обновляют в соответствии с трафиком, принятым и обработанным сетевым устройством.
В некоторых вариантах осуществления изобретения, в прямоугольнике 10а задачи, модуль 840 отслеживания производительности отслеживает состояние каждой очереди и определяет, переполнена ли очередь. Когда обнаружено, что очередь некоторого потока обработки пакетов, превышает пределы (например, экспоненциально-взвешенное скользящее среднее (EWMA) длины очереди превосходит пороговое значение), состояние потока выполнения устанавливают равным «переполненному состоянию» и поток обработки пакетов считают частью Переполненного пула потоков выполнения. Как показано на фиг. 11, состояние потока выполнения обновляют от «нормальный поток 1102 выполнения» до «переполненный поток 1104 выполнения».
В некоторых вариантах осуществления изобретения, когда Переполненный пул потоков обработки пакетов, содержит единственный поток обработки пакетов, другой поток обработки пакетов может быть добавлен к этому пулу, чтобы предоставить возможность балансировки нагрузки пакетов с помощью набора потоков выполнения Переполненного пула. В одном варианте осуществления изобретения дополнительный поток обработки пакетов и добавленный в Переполненный пул, может быть выбран в соответствии с длиной его очереди. В одном, не ограничивающем изобретение, примере некоторый поток обработки пакетов с наиболее короткой EWMA длиной очереди (например, поток выполнения с наименее загруженной очередью) добавляют к Переполненному пулу (то есть состояние этого потока выполнения также устанавливают в «переполненное»). Все пакеты, сопоставленные любому из «переполненных» потоков обработки пакетов, также проходят балансировку нагрузки, осуществляемую с помощью устройства 830 балансировки нагрузки, для всех потоков выполнения из Переполненного пула. Это эффективно увеличивает вычислительные ресурсы, доступные для обработки потоков пакетов, приписанных к потокам выполнения, для которых превышены пределы.
В некоторых вариантах осуществления изобретения также отслеживают EWMA длину очереди для всех «переполненных» потоков выполнения из Переполненного пула. В случае, когда EWMA длина очереди большинства потоков выполнения из указанного пула (например, более 80% потоков выполнения) превышает некоторое пороговое значение, другой не являющийся переполненным поток выполнения (например, поток обработки пакетов с наименьшей EWMA длиной очереди в своем пуле) маркируют как «переполненный» и добавляют к Переполненному пулу. В некоторых вариантах осуществления изобретения Переходный пул является первым, используемым для выбора некоторого потока обработки пакетов, для добавления к Переполненному пулу потоков выполнения, далее проверяют Нормальный пул.
Состояние некоторого потока обработки пакетов, может быть дополнительно обновлено от «переполненный поток 1104 выполнения» до «переходный поток 1106 выполнения», когда кажется, что уменьшается превышение пределов соответствующей очереди.
В некоторых вариантах осуществления изобретения некоторый поток обработки пакетов маркируют как «переходный поток 1106 выполнения» (то есть его состояние представляет собой переходное состояние), когда этот поток выполнения извлекают из Переполненного пула и он больше не участвует в балансировке нагрузки пакетов в Переполненном пуле.
В некоторых вариантах осуществления изобретения переходной поток обработки пакетов аналогичен «переполненному» потоку выполнения, так что блок 860 переупорядочивания направляет пакеты, обработанные некоторым потоком выполнения, в область подготовки, чтобы обеспечить подачу пакетов на выход в надлежащем порядке. Переходное состояние обеспечивает переходный период для перемещения некоторого потока обработки пакетов, из Переполненного пула в Нормальный пул. Поток обработки пакетов и извлеченный из Переполненного пула может по-прежнему содержать пакеты, прошедшие балансировку нагрузки, в своей очереди, которые нужно переупорядочить с помощью блока 860 переупорядочивания, и, таким образом, этот поток выполнения не может быть немедленно перемещен в Нормальный пул. Все пакеты, обработанные переходным потоком выполнения, маркируют флагом балансировки нагрузки. Флаг балансировки нагрузки является указанием для блока 860 переупорядочивания на то, что эти пакеты нужно сохранить в области подготовки для переупорядочивания перед подачей на выход.
В некоторых вариантах осуществления изобретения, для того, чтобы перевести некоторый поток выполнения из «переполненного потока 1104 выполнения» в «переходный поток 1106 выполнения», модуль 840 отслеживания производительности может определить, что извлечение потока выполнения из Переполненного пула потоков выполнения не приведет к немедленной сильной нагрузке на другие потоки выполнения в Переполненном пуле, что может привести к нежелательным колебаниям, так как может снова понадобиться расширить Переполненный пул путем добавления большего количества не переполненных потоков выполнения.
В некоторых вариантах осуществления изобретения переход некоторого потока выполнения из переполненного состояния в переходное состояние осуществляют в соответствии с описанным ниже механизмом. Отслеживают среднюю EWMA загруженность для всех переполненных потоков выполнения. Фильтр Блюма или EWMA, например, могут быть использованы для обнаружения тяжелых потоков из потоков, сопоставленных с переполненными потоками обработки пакетов. Изменение объема и количества тяжелых потоков может быть учтено для определения того, когда перемещать некоторый поток выполнения из Переполненного пула в Переходный пул. В одном, не ограничивающем изобретение, примере, если присутствует некоторый очень тяжелый поток, сопоставленный с некоторым переполненным потоком выполнения, может быть небезопасно переместить этот конкретный поток выполнения в Переходный пул, так как существует высокая вероятность того, что поток выполнения снова станет переполненным и далее потребуется перевести его назад в Переполненный пул.
В некоторых вариантах осуществления изобретения после перехода состояния некоторого потока обработки пакетов, из «переполненного потока 1104 выполнения» в «переходный поток 1106 выполнения» запускают таймер. После истечения таймера, состояние потока выполнения изменяют на «нормальный поток 1102 выполнения».
Хотя задачи из прямоугольников 1 - 10b задач с фиг. 8 описаны последовательно, некоторые задачи могут быть выполнены параллельно или в порядке, отличном от описанного выше. Например, отслеживание состояния очередей может выполняться периодически и одновременно с сопоставлением пакетов с потоком обработки пакетов (или напрямую - прямоугольник 4 задачи или не напрямую - прямоугольник 5 задачи). В других вариантах осуществления изобретения могут быть выполнены дополнительные задачи или может быть выполнено меньшее количество задач.
Операции сетевого устройства, реализующего адаптивную балансировку нагрузки при обработке пакетов с минимальным влиянием на хорошо ведущие себя потоки будут описаны со ссылкой на блок-схемы с фиг. 9 и 10А - С. Тем не менее, следует понимать, что модуль 800 обработки пакетов может осуществлять операции, отличающиеся от операций, которые описаны со ссылкой на блок-схемы с фиг. 9 и 10А - С, и варианты осуществления изобретения, описанные со ссылками на блок-схемы с фиг. 9 и 10А - С, могут выполняться с помощью вариантов осуществления изобретения, отличных от вариантов, описанных со ссылкой на фиг. 8.
На фиг. 9 показана блок-схема операций, осуществляемых для адаптивной обработки пакетов с минимальным влиянием на хорошо ведущие себя потоки в сетевом устройстве, в соответствии с одним вариантом осуществления изобретения. В блоке 902 пакет принимают в сетевом элементе. Пакет принимают с помощью сетевого интерфейса и его могут перенаправить на устройство 815 присвоения порядкового номера. В блоке 904 блок 810 сопоставления приписывает упомянутый пакет некоторому потоку обработки пакетов, из потоков 850 обработки пакетов. В соответствии с некоторыми вариантами осуществления изобретения блок 810 сопоставления может быть выполнен с возможностью осуществления разбора заголовка и классификации пакета или приспособлен для осуществления указанного (как описано выше).
В альтернативном варианте осуществления изобретения в блоке 904 приписывание пакета некоторому потоку обработки пакетов, дополнительно включает в себя сопоставление пакета одному из сегментов 820A - N памяти до добавления пакета в очередь соответствующего потока обработки пакетов. Сопоставление может быть выполнено в соответствии с механизмом хеширования. В одном варианте осуществления изобретения каждый из сегментов 820А - N памяти связан с одним из потоков 850А - D обработки пакетов. Например, при приеме пакета, блок 810 сопоставления может сопоставить этот пакет с сегментом 820А памяти, который связан с первым потоком 850А обработки пакетов. В другом примере, при приеме пакета, блок 810 сопоставления может сопоставить этот пакет с сегментом 820N памяти, который связан с другим потоком обработки пакетов.
В блоке 906 модуль 810 сопоставления определяет состояние потока выполнения, который обрабатывает пакеты и которому приписан упомянутый пакет. В соответствии с одним вариантом осуществления изобретения состояние потока обработки пакетов, может представлять собой или нормальное состояние или переполненное состояние. В альтернативном варианте осуществления изобретения состояние потока обработки пакетов, может представлять собой или нормальное состояние, или переходное состояние, или переполненное состояние. Если состояние потока обработки пакетов, представляет собой переполненное состояние, то присутствует указание на то, что этот поток обработки пакетов является частью потоков выполнения «Переполненного пула». Переполненный пул представляет собой набор потоков обработки пакетов, который использует устройство 130 балансировки нагрузки для балансировки нагрузки для потоков пакетов. Когда состояние потока обработки пакетов, представляет собой нормальное состояние, то присутствует указание на то, что этот поток обработки пакетов является частью потоков выполнения «Нормального пула». Нормальный пул представляет собой набор потоков обработки пакетов, которые принимают пакеты потоков, которые напрямую сопоставлены потокам обработки пакетов (без осуществления балансировки нагрузки). В вариантах осуществления изобретения, содержащих третье состояние (переходное состояние), если поток обработки пакетов находится в переходном состоянии, это указывает на то, что недавно поток выполнения был частью Переполненного пула потоков выполнения, а сейчас он переходит в Нормальный пул потоков выполнения. Состояние каждого потока обработки пакетов, устанавливают и обновляют в соответствии с вариантами осуществления изобретения, описанными выше со ссылками на фиг. 8 (прямоугольники 10а и 10b задач, которые выполняют в модуле 840 отслеживания производительности) и фиг. 11.
Пакет сопоставляют с первым потоком обработки пакетов (к которому пакет приписан в блоке 904), или, в качестве альтернативы, с устройством 830 балансировки нагрузки на основе состояния первого потока обработки пакетов. Если состояние определено как нормальное состояние, осуществляют переход на блок 908. Если состояние определено как переполненное состояние, осуществляют переход на блок 910. Если состояние определено как переходное состояние, осуществляют переход на блок 912.
На фиг. 10А - С показаны блок-схемы, подробно иллюстрирующие операции, осуществляемые в сетевом устройстве и направленные на сопоставление пакета с потоком обработки пакетов на основе состояния потока обработки пакетов, в соответствии с некоторыми вариантами осуществления изобретения. В не ограничивающем изобретение примере пакет приписан потоку 850А выполнения с фиг. 8 обработки пакетов (как описано со ссылкой на блок 904), и после определения того, что состояние потока 850А обработки пакетов представляет собой нормальное состояние (то есть поток обработки пакетов является частью Нормального пула потоков выполнения), пакет напрямую сопоставляют, в блоке 1002, с потоком 850А обработки пакетов с целью обработки. В другом, не ограничивающем изобретении, примере пакет приписан потоку 850В обработки пакетов и после определения того, что состояние потока 850В обработки пакетов представляет собой переполненное состояние (то есть поток выполнения является частью Переполненного пула потоков выполнения), пакет сопоставляют, в блоке 1012, второму потоку обработки пакетов, из некоторого пула потоков обработки пакетов, на основе схемы балансировки нагрузки. В этом примере Переполненный пул содержит некоторое подмножество потоков обработки пакетов, сетевого устройства и состояние каждого из потоков обработки пакетов, из пула представляет собой переполненное состояние (например, пакет сопоставляют с устройством 830 балансировки нагрузки с фиг. 8, в блоке 1012, для его распределения на один поток выполнения из множества «переполненных» потоков выполнения, например, 850В и 850D с фиг. 8). В некоторых вариантах осуществления изобретения пакет, в качестве альтернативы, может быть сопоставлен, в блоке 1022, некоторому переходному потоку выполнения (например, 850С с фиг. 8) и после определения того, что состояние потока выполнения, который обрабатывает пакеты и которому приписан пакет, представляет собой переходное состояние (то есть поток выполнения является частью Переходного пула), пакет напрямую сопоставляют, в блоке 1022, с потоком 850С обработки пакетов, для обработки.
После сопоставления пакета одному из потоков 850 обработки пакетов (или через устройство 830 балансировки нагрузки или сопоставляют напрямую), на основе состояния потока обработки пакетов, пакет добавляют в очередь этого потока обработки пакетов.
В блоках 1004, 1014 и 1024 пакет обрабатывают в потоке обработки пакетов (например, в одном из потоков 850А - 850D обработки пакетов), которому сопоставлен указанный пакет. Каждый поток обработки пакетов возвращает пакеты из его соответствующей очереди для обработки пакетов. В одном варианте осуществления изобретения потоки обработки пакетов исполняются на разных ядрах процессора. В альтернативном варианте осуществления изобретения на одном ядре процессора может исполняться два или больше потоков выполнения. Каждый поток 850А - D обработки пакетов обрабатывает некоторый пакет в соответствии с таблицей (таблицами) перенаправления, так что пакеты подают на выход на соответствующие физические сетевые интерфейсы (NI) или отбрасывают. Хотя на фиг. 8 показаны четыре потока 850А - 850D обработки пакетов, в альтернативных вариантах осуществления изобретения может присутствовать любое количество потоков обработки пакетов (например, сотни или тысячи потоков обработки пакетов, могут работать в сетевом устройстве).
Хотя это не показано на фиг. 10А - С, в некоторых вариантах осуществления изобретения флаг балансировки нагрузки пакета, обработанного в некотором потоке обработки пакетов устанавливают на основе состояния потока обработки пакетов, когда пакет обработан. В некоторых вариантах осуществления изобретения для каждого пакета, обработанного в переполненном потоке выполнения (потоке выполнения из Переполненного пула), устанавливают флаг (флаг балансировки нагрузки), указывающий, что для пакета нужно выполнить переупорядочивание. В некоторых вариантах осуществления изобретения флаг балансировки нагрузки устанавливают в метазаголовках для всех пакетов, обработанных в некотором «переполненном» потоке обработки пакетов, при этом флаг балансировки нагрузки не устанавливают для пакетов, обработанных в некотором нормальном потоке обработки пакетов. Таким образом, каждый пакет указывает, сопоставлен ли он напрямую с потоком обработки пакетов вместе со всеми пакетами одного и того же потока, или, в качестве альтернативы, осуществляют ли для пакетов этого потока балансировку нагрузки по нескольким потокам обработки пакетов. В альтернативных вариантах осуществления изобретения флаг балансировки нагрузки устанавливают для пакетов, обработанных в некотором «переполненном» потоке обработки пакетов и для пакетов, обработанных в некотором переходном потоке обработки пакетов, при этом флаг балансировки нагрузки не устанавливают для пакетов, обработанных в некотором нормальном потоке обработки пакетов.
В некоторых вариантах осуществления изобретения далее пакеты направляют на блок 860 переупорядочивания и пакеты обрабатывают на основе состояния потока обработки пакетов.
В блоках 1006, 1016 и 1026, в некоторых вариантах осуществления изобретения, при приеме обработанного пакета, блок 860 переупорядочивания определяет, были ли ранее обработаны и перенаправлены пакеты, предшествующие этому принятому пакету, до перенаправления этого принятого пакета. Выходной порядок пакетов основан на порядковых номерах, приписанных пакетам на входе сетевого элемента. В некоторых из этих вариантов осуществления изобретения блок 860 переупорядочивания может отсутствовать, и пакеты подают на выход после их обработки в потоке обработки пакетов, без переупорядочивания. В других вариантах осуществления изобретения, когда пакеты некоторого потока распределяют по нескольким потокам обработки пакетов, пакеты больше не обрабатывают в соответствии с приписанными порядковыми номерами. В этом примере пакеты могут быть поданы на выход из потоков обработки пакетов, в порядке, который отличается от входного порядка. Пакеты переупорядочивают до их перенаправления, чтобы обеспечить то, что их подают на выход из сетевого элемента в соответствии с порядком, приписанным на входе.
В некоторых вариантах осуществления изобретения переупорядочивание пакетов, обработанных в потоках обработки пакетов, осуществляют в соответствии с операциями, описанными выше со ссылками на фиг. 6. В этих вариантах осуществления изобретения, в соответствии с флагом балансировки нагрузки, установленным для каждого пакета, этот пакет сохраняют в области подготовки или не до перенаправления с целью обеспечения подачи пакетов на выход в порядке, в котором они были приняты сетевым элементом. Пакеты, обработанные в «переполненных» потоках выполнения или переходных потоках выполнения, сохраняют в области подготовки и переупорядочивают с помощью блока 860 переупорядочивания. Пакеты, обработанные в нормальных потоках выполнения, подают на выход без переупорядочивания.
Варианты осуществления описанных технологий обеспечивают механизм адаптивной обработки пакетов, который направлен на то, чтобы обеспечить высокоэффективную обработку пакетов путем выбора между прямым сопоставлением потока и сопоставлением с балансировкой нагрузки для каждого потока, принятого сетевым элементом, что делают на основании состояния потоков обработки пакетов и перенаправляющих пакеты. Варианты осуществления описанных технологий позволяют большую часть потоков обрабатывать в соответствии с прямым сопоставлением (поток - поток выполнения), исключая затраты на переупорядочивание для указанной части потоков. Варианты осуществления описанных технологий дополнительно позволяют осуществлять балансировку нагрузки потоков только при необходимости. Таким образом, адаптивная обработка пакетов переупорядочивает пакеты только при необходимости.
Варианты осуществления адаптивной балансировки нагрузки при обработке пакетов, описанные со ссылками на фиг. 8 - 11, могут быть реализованы в сетевом элементе (NE), как более подробно описано в настоящем документе. В частности, варианты осуществления описанных технологий могут быть реализованы в перенаправляющей виртуальной сетевой функции (перенаправляющая VNF) виртуального сетевого элемента (VNE).
Среда SDN и NFV, использующая варианты осуществления изобретения
На фиг. 12 показаны соединения между сетевыми устройствами (ND) в некотором примере сети, а также три примера реализаций ND, в соответствии с некоторыми вариантами осуществления изобретения. На фиг. 12 показаны ND 1200A-H и, с помощью линий A-B, B-C, C-D, D-E, E-F, F-G и A-G, а также с помощью линий между H и A, C, D и G, показаны соединения упомянутых ND 1200A-H. Эти ND являются физическими устройствами и соединения между этими ND могут быть беспроводными или проводными (часто называются каналом). Дополнительная линия, тянущаяся от ND 1200A, E и F, показывает, что эти ND действуют в качестве входных и выходных точек для сети (и, таким образом, эти ND иногда называются краевыми ND; а другие ND могут быть названы опорными ND).
Два примера реализаций ND на фиг. 12 представляют собой: 1) специализированное сетевое устройство 1202, которое использует оригинальные специализированные интегральные схемы (ASIC) и коммерческую операционную систему (OS); и 2) сетевое устройство 1204 общего назначения, которое использует обычные готовые (COTS) процессоры и стандартную OS.
Специализированное сетевое устройство 1202 содержит сетевое аппаратное обеспечение 1210, содержащее вычислительный ресурс (ресурсы) 1212 (который обычно содержит некоторый набор из одного или нескольких процессоров), ресурс (ресурсы) 1214 перенаправления (который обычно содержит одну или несколько ASIC и/или сетевые процессоры) и физические сетевые интерфейсы 1216 (NI) (иногда называемые физическими портами), а также долговременный считываемый машиной носитель 1218, на котором хранится сетевое программное обеспечение. Физический NI представляет собой аппаратное обеспечение в ND, через которое осуществляют сетевое соединение (например, беспроводное, через контроллер (WNIC) беспроводного сетевого интерфейса, или с помощью вставки кабеля в физический порт, соединенный с контроллером (NIC) сетевого интерфейса), которое, например, показано между ND 1200A - H. Во время работы, сетевое программное обеспечение может быть исполнено с помощью сетевого аппаратного обеспечения 1210, чтобы реализовать некоторый набор из одного или нескольких экземпляров 1222 сетевого программного обеспечения. Каждый экземпляр 1222 сетевого программного обеспечения и та часть сетевого аппаратного обеспечения 1210, которая исполняет этот экземпляр сетевого программного обеспечения (это будет аппаратное обеспечение, выделенное для этого экземпляра сетевого программного обеспечения, и/или временные промежутки аппаратного обеспечения, временно совместно используемые экземпляром сетевого программного обеспечения с другим экземпляром 1222 сетевого программного обеспечения), образуют отдельный виртуальный сетевой элемент 1230A - R. Каждый виртуальный сетевой элемент (элементы) 1230A - R (VNE) содержит модуль 1232A - R управления связью и конфигурации (иногда называется локальный модуль управления или модуль управления связью) и таблицу (таблицы) 1234A - R перенаправления, так что некоторый заданный виртуальный сетевой элемент (например, 1230А) содержит модуль (например, 1232A) управления связью и конфигурации, набор из одной или нескольких таблиц (например, 1234А) перенаправления и ту часть сетевого аппаратного обеспечения 1210, которая исполняет виртуальный сетевой элемент (например, 1230А).
Считается, что специализированное сетевое устройство 1202 часто физически и/или логически содержит: 1) плоскость 1224 управления ND (иногда называется плоскостью управления), которая содержит вычислительный ресурс (ресурсы) 1212, который исполняет модуль (модули) 1232A - R управления связью и конфигурации; и 2) плоскость 1226 перенаправления ND (иногда называется плоскостью перенаправления, плоскостью данных или плоскостью носителя), которая содержит ресурс (ресурсы) 1214 перенаправления, которые используют таблицу (таблицы) 1234A - R перенаправления и физические NI 1216. В качестве примера, когда ND является маршрутизатором (или реализует функциональные возможности маршрутизации), плоскость 1224 управления ND (вычислительный ресурс (ресурсы) 1212, исполняющий модуль (модули) 1232A - R управления связью и конфигурации) обычно отвечает за участие в управлении маршрутизацией (например, следующий скачок для данных и выходной физический NI для этих данных) данных (например, пакетов) и хранение этой информации маршрутизации в таблице (таблицах) 1234А - R перенаправления, и плоскость 1226 перенаправления ND отвечает за прием этих данных на физических NI 1216 и перенаправление этих данных из соответствующих физических NI 1216 на основе таблицы (таблиц) 1234А - R перенаправления. Виртуальные сетевые элементы 1230А - R могут содержать экземпляры 1222А - 1222R программного обеспечения 1220 обработки (SРР) пакетов на основе состояния, которое реализует варианты осуществления изобретения, описанные со ссылками на фиг. 8 - 10С. Каждый экземпляр 1222А выполнен с возможностью обработки и перенаправления пакетов, принятых сетевым устройством 1202, путем сопоставления пакета с потоком обработки пакетов, в соответствии со схемой прямого сопоставления или схемой балансировки нагрузки, на основе состояния потока обработки пакетов и приписанного пакету.
Сетевое устройство 1204 общего назначения содержит аппаратное обеспечение 1240, содержащее некоторый набор из одного или более процессоров 1242 (которые часто являются COTS процессорами), и контроллер (контроллеры) 1244 сетевого интерфейса (NIC; также известны как карты сетевого интерфейса) (которые содержат физические NI 1246), а также долговременный считываемый машиной носитель 1248, на котором хранится программное обеспечение 1250. При работе процессор (процессоры) 1242 исполняют программное обеспечение 1250 с целью реализации гипервизора 1254 (иногда называется программой-монитором (VMM) виртуальных машин) и одной или нескольких виртуальных машин 1262А - R, которые выполняет гипервизор 1254 и которые вместе называются экземпляром (экземплярами) 1252 программного обеспечения. Виртуальная машина представляет собой программную реализацию физической машины, которая выполняет программы так же, как если бы они исполнялись физической, не виртуальной машиной; и приложения обычно не знают, что они работают на виртуальной машине, в отличие от выполнения на ведущем электронном устройстве «без операционной системы», хотя некоторые системы обеспечивают паравиртуализацию, которая позволяет операционной системе или приложению осознавать присутствие виртуализации, что нужно для оптимизации. Каждая виртуальная машина 1262А - R и та часть аппаратного обеспечения 1240, которая исполняет виртуальную машину (это будет аппаратное обеспечение, выделенное для этой виртуальной машины, и/или временные промежутки аппаратного обеспечения, временно используемые этой виртуальной машиной совместно с другой виртуальной машиной (машинами) 1262А - R), образуют отдельный виртуальный сетевой элемент (элементы) 1260A - R.
Виртуальный сетевой элемент (элементы) 1260A - R обладают функциональными возможностями, аналогичными виртуальному сетевому элементу (элементам) 1230A - R. Например, гипервизор 1254 может представлять виртуальную операционную платформу, которая кажется виртуальной машине 1262А аналогичной сетевому аппаратному обеспечению 1210 и виртуальная машина 1262А может быть использована для реализации функциональных возможностей, аналогичных модулю (модулям) 1232A - R управления связью и конфигурации и таблице (таблицам) 1234А перенаправления (эта виртуализация аппаратного обеспечения 1240 иногда называется виртуализацией (NFV) сетевых функций). Таким образом, NFV может быть использована для объединения сетевого оборудования многих типов на крупномасштабном серверном аппаратном обеспечении промышленного стандарта, физических коммутаторах и физических запоминающих устройствах, которые могут располагаться в центрах обработки данных, ND и абонентском оборудовании (CPE). Тем не менее, разные варианты осуществления изобретения могут по-разному реализовывать одну или несколько виртуальных машин 1262А - R. Например, хотя варианты осуществления изобретения показаны так, что каждой виртуальной машине 1262А - R соответствует один VNE 1260А - R, альтернативные варианты осуществления изобретения могут реализовывать это соответствие на более тонком уровне подробности (например, виртуальные машины линейных карт виртуализируют линейные карты, виртуальная машина карты управления виртуализирует карты управления и так далее); следует понимать, что описанные в настоящем документе, со ссылками на соответствие виртуальных машин и VNE, технологии также применимы к вариантам осуществления изобретения, в которых используется такой более тонкий уровень подробности. Виртуальные сетевые элементы 1260А - R могут содержать экземпляры 1266А - 1266R программного обеспечения 1250 обработки (SРР) пакетов на основе состояния, которое реализует варианты осуществления изобретения, описанные со ссылками на фиг. 8 - 10С. Каждый экземпляр 1266А выполнен с возможностью обработки и перенаправления пакетов, принятых сетевым устройством 1204, путем сопоставления пакета с потоком обработки пакетов, в соответствии со схемой прямого сопоставления или схемой балансировки нагрузки, на основе состояния потока обработки пакетов и приписанного пакету.
В определенных вариантах осуществления изобретения гипервизор 1254 содержит виртуальный коммутатор, который обеспечивает аналогичные службы перенаправления, что и физический коммутатор Ethernet. Более конкретно, этот виртуальный коммутатор перенаправляет трафик между виртуальными машинами и NIC 1244 (несколькими NIC 1244), а также, при желании, между виртуальными машинами 1262А - R; кроме того, этот виртуальный коммутатор может усиливать изоляцию сети между VNE 1260А - R, которым из-за политики нельзя взаимодействовать друг с другом (например, по причине обеспечения виртуальных локальных сетей (VLAN)).
Третий пример реализации ND с фиг. 12 представляет собой гибридное сетевое устройство 1206, которое содержит как специальные ASIC/коммерческую OS, так и COTS процессоры/стандартную OS в едином ND или единой карте в ND. В определенных вариантах осуществления такого гибридного сетевого устройства, VM платформы (то есть VM, которая реализует функциональные возможности специализированного сетевого устройства 1202) может предусматривать паравиртуализацию для сетевого аппаратного обеспечения, присутствующего в гибридном сетевом устройстве 1206.
Хотя изобретение описано в терминах нескольких вариантов осуществления изобретения, специалистам в рассматриваемой области ясно, что изобретение не ограничено описанными вариантами осуществления изобретения и изобретение может быть реализовано с модификациями и изменениями, которые находятся в пределах идеи и объема изобретения, которые определены формулой изобретения. Таким образом, описание надо рассматривать как иллюстрацию, а не как ограничение изобретения.
Например, хотя блок-схемы с фиг. показывают конкретный порядок операций, осуществляемых в определенных вариантах осуществления изобретения, следует понимать, что такой порядок является примером (например, в альтернативных вариантах осуществления изобретения операции могут выполняться в другом порядке, определенные операции могут быть объединены, определенные операции могут накладываться и так далее).