Control plane что это

Обновлено: 06.07.2024

С помощью панели управления можно менять параметры в Windows. Используя эти параметры, можно управлять внешним видом и работой Windows, а также настраивать Windows в соответствии со своими потребностями.

Сервисная сеть, «Плоскость данных» и «Плоскости управления» (Service mesh data plane vs. control plane)

Привет, Хабр! Представляю вашему вниманию перевод статьи «Service mesh data plane vs control plane» автора Matt Klein.


В этот раз «захотелось и перевелось» описание обоих компонентов service mesh, data plane и control plane. Это описание мне показалось самым понятным и интересным, а главное подводящим к пониманию «А нужно ли оно вообще?».

Поскольку идея «Сервисной сети (Service mesh)» становится все более популярной в течение последних двух лет (Оригинальная статья от 10 октября 2017), а число участников в пространстве возросло, я увидел соразмерный рост путаницы среди всего технического сообщества в отношении того, как сравнивать и противопоставлять разные решения.

Ситуацию лучше всего описать следующими сериями твитов, которые я написал в июле:

Путаница с сервисной сетью (service mesh) № 1: Linkerd

= Envoy. Ни один из них не равен Istio. Istio — это нечто совсем другое. 1 /

Первые просто плоскости данных (data planes). Сами по себе они ничего не делают. Они должны быть настроены на что-то большее. 2 /
Istio является примером плоскости управления (control plane), которая связывает части вместе вместе. Это другой слой. /конец

В предыдущих твитах упоминается несколько разных проектов (Linkerd, NGINX, HAProxy, Envoy и Istio), но, что более важно, вводятся общие понятия плоскости данных (data plane), сервисной сети (service mesh) и плоскости управления (control plane). В этом посте я сделаю шаг назад и расскажу, что я имею в виду под терминами «плоскость данных (data plane)» и «плоскость управления (control plane)» на очень высоком уровне, а затем расскажу, как термины относятся к проектам, упомянутым в твитах.

Что такое сервисная сеть (What is a service mesh, really)?



Рисунок 1: Обзор сервисной сети (Service mesh overview)

Плоскость данных (Data plane)

В сервисной сети (service mesh) прокси-сервер, расположенный локально для приложения, выполняет следующие задачи:

  • Обнаружение сервисов (Service discovery). Какие сервисы/службы/приложения доступны для вашего приложения?
  • Проверка работоспособности (Health checking). Являются ли экземпляры сервисов, возвращенные обнаружением сервисов (service discovery), работоспособными и готовы ли принимать сетевой трафик? Это может включать как активную (например, проверка ответа / healthcheck), так и пассивную (например, с использованием 3 последовательных 5xx ошибок в качестве индикации нездорового состояния сервиса) проверки работоспособности.
  • Маршрутизация (Routing). Получив от сервиса REST запрос к "/foo", в какой сервисный кластер следует отправлять запрос?
  • Балансировка нагрузки (Load balancing). После того как во время маршрутизации был выбран кластер сервиса, в какой экземпляр сервиса должен быть отправлен запрос? С каким таймаутом? С какими настройками обрыва цепи (circuit breaking)? Если запрос не удался, его следует повторить?
  • Аутентификация и авторизация (Authentication and authorization). Для входящих запросов может ли вызывающий сервис быть криптографически опознан/авторизован с помощью mTLS или какого-либо другого механизма? Если он опознан/авторизован, разрешено ли ему вызывать запрошенную операцию (endpoint) в сервисе или должен быть возвращен неаутентифицированный ответ?
  • Наблюдаемость (Observability). Для каждого запроса должны быть сгенерированы подробные статистические данные, журналы/логи и данные распределенной трассировки, чтобы операторы могли понимать распределенный поток трафика и проблемы отладки по мере их возникновения.

Плоскость управления (The control plane)

Сетевая абстракция, которую обеспечивает локальный прокси в плоскости данных (data plane), является волшебной (?). Тем не менее, как прокси-сервер на самом деле узнает о маршруте "/foo" к сервису B? Как данные обнаружения сервисов (service discovery), которые заполняются прокси-запросами, могут быть использованы? Как настроены параметры балансировки нагрузки, таймаута (timeout), обрыва цепи (circuit breaking) и т.д.? Как осуществляется развертывание приложения с использованием синего/зеленого (blue/green) метода или метода постепенного перевода трафика? Кто настраивает параметры общесистемной аутентификации и авторизации?

Все вышеперечисленные пункты находятся в ведении плоскости управления (control plane) сервисной сети (service mesh). Плоскость управления (control plane) принимает набор изолированных прокси-серверов без состояния и превращает их в распределенную систему.

Я думаю, что причина, по которой многие технологи находят запутанными разделенные понятия плоскости данных (data plane) и плоскости управления (control plane), заключается в том, что для большинства людей плоскость данных знакома, в то время как плоскость управления чужеродна/непонятна. Мы уже давно работаем с физическими сетевыми маршрутизаторами и коммутаторами. Мы понимаем, что пакеты/запросы должны идти из пункта А в пункт Б, и что мы можем использовать для этого аппаратное и программное обеспечение. Новое поколение программных прокси — это просто модные версии инструментов, которые мы использовали в течение долгого времени.



Рисунок 2: Человеческая плоскость управления (Human control plane)

Однако, мы уже долгое время использовали плоскости управления (control plane), хотя большинство сетевых операторов могут не связывать эту часть системы с каким-либо технологическим компонентом. Причина этого проста:
Большинство используемых сегодня плоскостей управления (control plane) -это… мы.

На рисунке 2 показано то, что я называю «Человеческой плоскостью управления (Human control plane)». В этом типе развертывания, которое все еще встречается очень часто, человек-оператор, вероятно сварливый, создает статические конфигурации — потенциально, с помощью скриптов — и развертывает их с помощью какого-то специального процесса на всех прокси-серверах. Затем прокси начинают использовать эту конфигурацию и приступают к обработке плоскости данных (data plane) с использованием обновленных настроек.



Рисунок 3: Расширенная плоскость управления сервисной сетью (Advanced service mesh control plane)

На рисунке 3 показана «расширенная» плоскость управления (control plane) сервисной сети (service mesh). Она состоит из следующих частей:

  • Человек (The human): Все еще есть человек (надеюсь, менее сердитый), который принимает решения на высоком уровне в отношении всей системы в целом.
  • Пользовательский интерфейс плоскости управления (Control plane UI): Человек взаимодействует с каким-либо типом пользовательского интерфейса для управления системой. Это может быть веб-портал, приложение командной строки (CLI) или какой-то другой интерфейс. С помощью пользовательского интерфейса оператор имеет доступ к таким глобальным параметрам конфигурации системы, как:
    • Управление развертыванием, синий/зеленый (blue/green) и/или с постепенным перевода трафика
    • Параметры аутентификации и авторизации
    • Спецификации таблицы маршрутизации, например, когда приложение A запрашивает информацию о "/foo", что происходит
    • Настройки балансировщика нагрузки, например, таймауты (timeouts), повторные попытки (retries), параметры обрыва цепи (circuit breaking) и т.д.

    Поиск элементов панели управления

    Работа на панели управления:

    Использование поиска. Чтобы найти необходимую настройку или задачу, введите слово или фразу в поле поиска. Например, введите "звук", чтобы найти настройки для звуковой карты, системных сигналов, а также значок громкости на панели задач.

    Обзор. На панели управления можно выбирать различные категории (например, "Система и безопасность", "Программы" или "Специальные возможности") и просматривать часто используемые задачи для каждой категории. В разделе Просмотр можно выбрать категорию Крупные значки или Мелкие значки для просмотра списка всех элементов панели управления.

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

    Кроме того, для прокрутки списка значков панели управления можно использовать клавиши со стрелками (СТРЕЛКА ВВЕРХ, ВНИЗ, ВЛЕВО и ВПРАВО).

    Если вы не можете найти параметр на панели управления, нажмите кнопку Пуск , > Параметры . Многие возможности панели управления теперь доступны в настройках .

    Открытие панели управления

    Чтобы получить доступ к дополнительным параметрам, введите панель управления в поле поиска на панели задач, а затем в списке результатов выберите Панель управления.

    В Windows 8.1 и Windows RT 8.1

    Проведите пальцем от правого края экрана и нажмите Поиск (если используется мышь, переместите указатель в правый верхний угол экрана, затем вниз и выберите Поиск), в поле поиска введите панель управления, а затем в списке результатов выберите Панель управления.

    Плоскость данных и плоскость управления. Сводка (Data plane vs. control plane summary)

    • Плоскость данных cервисной сети (Service mesh data plane): затрагивает каждый пакет / запрос в системе. Отвечает за обнаружение приложенией/сервисов, проверку работоспособности, маршрутизацию, распределение нагрузки, аутентификацию / авторизацию и наблюдаемость.
    • Плоскость управления cервисной сети (Service mesh control plane): предоставляет политику и конфигурацию для всех работающих плоскостей данных внутри cервисной сети. Не трогает никаких пакетов / запросов в системе. Плоскость управления превращает все плоскости данных в распределенную систему.

    Текущее состояние проекта (Current project landscape)

    Разобравшись с объяснением выше, давайте посмотрим на текущее состояние проекта «сервисной сети (service mesh)».

    • Плоскости данных (Data planes): Linkerd, NGINX, HAProxy, Envoy, Traefik
    • Плоскости управления (Control planes): Istio, Nelson, SmartStack

    В начале 2016 года Linkerd был одним из первых прокси-серверов плоскости данных (data plane) для сервисной сети (service mesh) и проделал фантастическую работу по повышению осведомленности и увеличению внимания к модели проектирования «сервисная сеть» (service mesh). Примерно через 6 месяцев после этого Envoy присоединился к Linkerd (хотя работал в Lyft с конца 2015 года). Линкерд и Envoy — это два проекта, которые чаще всего упоминаются при обсуждении сервисных сетей (service mesh).

    Istio было объявлено в мае 2017 года. Цели проекта Istio очень похожи на расширенную плоскость управления (control plane), показанную на рисунке 3. Envoy для Istio является прокси-сервером «по умолчанию». Таким образом, Istio является плоскостью управления (control plane), а Envoy — плоскостью данных (data plane). За короткое время Istio вызвало много волнений, и другие плоскости данных (data plane) начали интеграцию в качестве замены Envoy (и Linkerd, и NGINX продемонстрировали интеграцию с Istio). Тот факт, что в одной плоскости управления (control plane) можно использовать разные плоскости данных (data plane), означает, что плоскость управления (control plane) и плоскость данных (data plane) не обязательно тесно связаны. Такой API как универсальный API плоскости данных (data plane) Envoy может образовывать мост между двумя частями системы.

    Nelson и SmartStack помогают дополнительно проиллюстрировать разделение плоскости управления (control plane) и плоскости данных (data plane). Nelson использует Envoy в качестве своего прокси и строит надежную плоскость управления (control plane) сервисной сетью (service mesh) на базе стека HashiCorp, т.е. Nomad и т.д. SmartStack стал, пожалуй, первым из новой волны сервисных сетей (service mesh). SmartStack формирует плоскость управления (control plane) вокруг HAProxy или NGINX, демонстрируя возможность развязки плоскости управления (control plane) сервисной сетью (service mesh) и плоскости данных (data plane).

    Микросервисная архитектура с сервисной сетью (service mesh) привлекает к себе все больше внимания (правильно!), и все больше проектов и вендоров начинают работать в этом направлении. В течение следующих нескольких лет мы увидим много инноваций как в плоскостях данных (data plane), так и в плоскостях управления (control plane), а также дальнейшее смешивание различных компонентов. В конечным счете микросервисная архитектура должна стать более прозрачной и волшебной (?) для оператора.
    Надеюсь, все менее и менее раздраженного.

    Разделение control и data plane в сетевом оборудовании


    В работе сетевого устройства можно выделить две абстракции – управляющий уровень (control plane) и передающий уровень (data plane). Сontrol plane отвечает за логику работы сетевого устройства для обеспечения в дальнейшем возможности передачи пакетов (заполнение различных таблиц, например, маршрутизации, отработку различных служебных протоколов ARP/STP/и пр.). Data plane в свою очередь отвечает непосредственно за передачу полезного трафика через наше сетевое устройство. Т.е. сontrol plane нам предоставляет информацию куда и как слать сетевой трафик, а data plane уже выполняет поставленные перед ним задачи. Данные абстракции могут быть выделены как на логическом, так и на физическом уровне. Но всегда ли на сетевом оборудовании присутствует такое разделение и где именно выполняются функции каждой из абстракций? Давайте попробуем в этом разобраться.

    Данное разделение появилось достаточно давно с целью повышения производительности сетевых устройств. Стало ясно, что использование одной абстракции для управления и передачи сетевого трафика неэффективно. Управляющий уровень имеет достаточно сложную логику работы и не выполняет огромное количество операций в секунду. Передающий уровень, наоборот, выполняет относительно однообразные операции, но при этом их очень много. Таким образом, для управляющего уровня требуется интеллектуальное железо, а для передающего – высокопроизводительное. Так как достичь обоих параметров в одной микросхеме сложно и зачастую дорого, логику работы сетевых устройств решили разделить. Это позволило бы реализовывать сложную логику, например, на базе процессоров общего назначения, а высокую производительность получить на специализированных микросхемах. Перед производителями сетевого оборудования на одной чаше весов находится функциональность и производительность, а на второй – стоимость решения. Предлагаю рассмотреть рабочие места управляющего и передающего уровней на примере различных типов сетевых устройств: коммутаторов и маршрутизаторов. Работая сетевым инженером, не всегда глубоко вникаешь в аппаратную часть устройства. Но понимание общих принципов архитектуры необходимо для правильного выбора устройств, дизайна сети, а также подхода к решению сетевых проблем.

    Если мы обратим свой взор на программно-определяемые сети (Software-defined Network – SDN), мы обнаружим, что управляющий уровень полностью или частично переносится вообще на выделенное устройство. Однако рассмотрение таких решений оставим за рамками данной статьи.

    Коммутаторы

    Начнём с коммутаторов, так как тут мы получим наиболее наглядное разделение наших абстракций. Главное для коммутатора– скорость передачи данных. Вся обработка пакетов должна реализоваться на скорости порта (wire-speed), иначе коммутатор будет тормозящим элементом в нашей сети. В связи с этим, именно в коммутаторах мы можем обнаружить реализацию передающего уровня на отдельных микросхемах – ASIC’ах (ASIC — интегральная схема специального назначения). Фактически на коммутаторе управляющий уровень выполняется на базе процессора общего назначения, а передающий уровень, как мы уже отметили, на базе ASIC.

    Процессоры, которые устанавливаются в сетевое оборудование, зачастую имеют отличия от тех, которые стоят в наших ПК и серверах. Это чаще всего специализированные процессоры, которые рассчитаны на использование внутри различных устройств (сетевых, систем хранения данных и пр.) и относятся к классу встраиваемых процессоров (embedded processors). Обычно они имеют небольшой размер, потребляют немного энергии и являются частью однокристальной системы (System on a chip – SoC). SoC – практически полноценный компьютер, выполненный на базе одной микросхемы (с (микро)процессором, оперативной памятью, контроллером ввода/вывода, интерфейсами и пр.). Некоторые из таких процессоров заточены на выполнение операций в сетевых устройствах, другие имеют более широкий спектр применения. При этом чаще всего на них можно запустить, например, какие-то решения на базе Unix/Linux, так как они всё же остаются в первую очередь процессорами общего назначения.

    Классический ASIC имеет предопределённый набор функций, которые выполняются аппаратно. Фактически общая логика обработки пакетов закладывается в ASIC на этапе производства микросхемы, изменить которую достаточно сложно. В ASIC’е мы получаем приемлемый уровень логики и при этом высокую скорость обработки пакетов. Таким образом, высокая производительность в коммутаторе достигается за счёт выполнения функций передающего уровня на ASIC’ах. И именно ASIC’и являются причиной относительно ограниченной логики работы коммутатора, которую сложно дальнейшем изменить. Можно было бы вместо ASIC использовать микросхемы FPGA (Field-Programmable Gate Array), которые можно перепрограммировать. Но они дороги и энергоёмки. Поэтому производители сетевого оборудования, чтобы не увеличивать стоимость своих устройств, с одной стороны, часть обработки пакетов пытаются перенести на процессор общего назначения (т.е. туда где работает управляющий уровень), что не всегда хорошо сказывается на производительности устройства. С другой стороны, стараются модернизировать ASIC, сделав их более функциональными и даже программируемыми (например, ASIC UADP компании Cisco).

    Иногда аббревиатура ASIC используется вместе с аббревиатурой SoC. Тут легко можно запутаться, так как ASIC, в котором есть микропроцессор и память, фактически становится решением SoC.



    Это чуточку упрощённая формулировка, но для общего понимания, думаю, достаточная. Таким образом, классический ASIC выполнять более специфичные операции, а SoC более общие, так как там есть процессор.
    Обычно в коммутаторе стоит один или несколько ASIC’ов. Например, на каждые 12/24 порта ставится свой ASIC. Программирование логики работы ASIC’а выполняет управляющий уровень. Именно он заполняет все таблицы внутри ASIC’а (маршруты, списки доступа и пр.). ASIC может иметь достаточный интеллект, чтобы коммутировать пакеты внутри себя, или же осуществлять коммутацию пакетов через внешнюю шину/коммутационную фабрику. Такая архитектура используется в первую очередь в коммутаторах фиксированной конфигурации (не модульных). Примерами таких коммутаторов могут быть Cisco Catalyst 2960/3650/3850.
    В статье в качестве примеров чаще всего будут использоваться устройства компании Cisco. Это обусловлено тем, что данный производитель один из немногих, кто предоставляет достаточно подробную информацию по аппаратной архитектуре всех своих устройств.


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

    Если мы имеем дело с модульным коммутатором (коммутатор, в который можно устанавливать платы с различными типами портов), архитектура может быть более сложной. Больше портов, значит, требуется больше производительность и больше ASIC’ов. Существует как минимум два подхода в реализации архитектуры таких коммутаторов.

    В первом случае, передающий уровень выполняется централизованно на выделенных ASIC’ах, которые располагаются на отдельной плате. В этом случае ASIC’и на линейных картах являются менее интеллектуальными и выполняют крайне ограниченный набор функций. Программированием логики продолжает заниматься управляющий уровень, которой в свою очередь запускается на своих аппаратных мощностях (используется опять же процессор общего назначения (причём их может быть несколько), расположенный на отдельном модуле — супервизоре). Примером таких коммутаторов могут быть Cisco Catalyst 4500 и Cisco Catalyst 6500/6800 (централизованная коммутация).



    * микросхемы Port ASIC, установленные на линейных картах, не обладают большой интеллектуальностью и выполняют крайне ограниченный набор функций
    Использование выделенных ASIC’ов для передающего уровня, на мой взгляд, обусловлено тем, что дешевле поставить один или два более интеллектуальных ASICа на весь модульный коммутатор, чем использовать достаточно умные ASIC’и, обслуживающие порты, на каждой линейной карте. Плюс это позволяет продлить жизненный цикл устройства, так как далее, меняя плату с центральным ASIC’ом, мы можем добавлять новый функционал в устройство, используя при этом старые линейные карты.

    Возможен вариант, где на каждом модуле с линейными портами, стоит своя специализированная плата передачи. В этом случае каждый модуль имеет свой передающий уровень, что позволяет повысить производительность всей «коробки». Можно сказать, что это промежуточный вариант между первым и вторым подходами реализации архитектуры модульных коммутаторов. Примером таких коммутаторов могут быть Cisco Catalyst 6500/6800 (распределённая коммутация).


    * микросхемы Port ASIC, установленные на линейных картах, не обладают большой интеллектуальностью и выполняют крайне ограниченный набор функций

    Второй подход – использовать достаточно интеллектуальные ASIC’и на линейных картах. В этом случае каждый ASIC может самостоятельно обработать сетевой трафик, выполняя основной набор функций. Т.е. мы сразу имеем распределённый передающий уровень. Это может оказаться более дорогим решением, но при этом зачастую более производительным. Также мы минимизируем при такой архитектуре задержки при передаче пакетов. Примером подобного коммутатора может быть Cisco Nexus 9500.


    Архитектура модульных коммутаторов бывает достаточно сложной. В частности, для реализации передающего уровня могут использоваться несколько различных ASIC’ов в рамках одной линейной карты. Каждый из них выполняет свой спектр задач или же объединяет нижестоящие ASIC’и. Коммутационная фабрика также может быть построена на базе ASIC’ов, выполняющих как функции связи между линейными картами, так и определённые виды обработки.

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

    До этого момента всё рассмотрение шло в рамках одного устройства. Но многие коммутаторы умеют объединяться в одно логическое устройство по средствам стекирования. В случае если у нас собран стек из коммутаторов, обычно управляющий уровень запускается на основном коммутаторе (его ещё называют активным/мастером). А передающий уровень будет запущен отдельно на каждом коммутаторе в стеке. Т.е. через стековый канал связи управляющий уровень, расположенный на основном коммутаторе, раздаёт управляющую информацию на все коммутаторы в стеке для работы передающего уровня локально. Примером такой модели работы может быть стек Cisco StackWise или HPE IRF.

    Маршрутизаторы

    Давайте теперь посмотрим, как обстоят дела с нашими абстракциями в маршрутизаторах. Если мы будем рассматривать относительно бюджетные маршрутизаторы, управляющий и передающий уровни будут выполняться на одном и том же железе — процессоре общего назначения (чаще всего в формате SoC). Процессорное время будет распределяться в этом случае между обеими абстракциями. Никаких специализированных микросхем для передающего уровня, как это было в коммутаторах, мы там не найдём. В связи с этим мы получим очень гибкую логику работы устройства, но не самые выдающиеся значения по производительности (десятки и сотни мегабитов в секунду). Причём разные вендорные ухищрения (например, Cisco Express Forwarding) являются лишь оптимизацией обработки пакетов на программном уровне на базе стандартной аппаратной базы. Примерами таких устройств являются, Cisco 800, 1900, 2900 и пр. Ситуация меняется, если наш процессор общего назначения становится многоядерным (например, в Cisco ISR 4300), да ещё таких процессоров может быть несколько (например, в Cisco ISR 4400). В этом случае управляющий и передающий уровни могут выполняться на разных ядрах и процессорах. Причём передающему уровню выделяется сразу несколько ядер, чтобы получить параллельную обработку пакетов, а значит, повысить производительность нашего устройства. Стоит заметить, что некоторые ядра могут быть отданы вообще под сторонние сервисы (конечно, если процессор это позволяет сделать).


    Современные SoC имеют многоядерные процессоры. 48 ядрами уже никого не удивишь. А вкупе с интегрированными в SoC акселираторами пакетной обработки, на базе одного SoC можно получить очень хорошую производительность: на рынке есть решения SoC, позволяющие обрабатывать сетевой трафик на скоростях до 40 Гбит/с.

    Отдельный разговор – это высокопроизводительные маршрутизаторы. В этом случае обычных процессорных мощностей общего назначения может не хватать. Производители сетевого оборудования переносят передающий уровень на отдельное железо, более адаптированное для обработки большого потока трафика. Фактически мы идём к архитектуре коммутаторов. Но так как маршрутизатор более функционален, обычных ASIC’ов не достаточно. В связи с этим каждый производитель предлагает свои решения.

    Один из вариантов – использование специализированных сетевых процессоров (Network Processor — NP или Network Processing Unit — NPU). Сетевые процессоры существенно функциональнее, чем ASIC’и, но при этом более производительные, чем процессоры общего назначения.

    • программируемые – есть возможность запускать на них различные сервисы (МСЭ, IPSec, NAT и пр.), не ограничиваясь стандартными сетевыми функциями L2/L3. Также программируемость позволяет без замены железа добавлять новый функционал;
    • многопоточные – количество потоков измеряется сотнями (так как процессоры являются многоядерными), что позволяет получить большую производительность;
    • энергоэффективность – если сравнивать с обычными процессорами, сетевые процессоры предоставляют лучшее соотношение пропускная способность/Вт. Данный параметр в первую очередь влияет на плотность портов на линейных картах устройств.

    В качестве примера рассмотрим маршрутизаторы Cisco ASR 1000, где основные функции передающего уровня выполняется на отдельной плате. На такой плате размещается один или два специализированных сетевых процессоров Cisco QuantumFlow Processor (QFP), которые занимаются непосредственно обработкой трафика. Данный процессор имеет архитектуру RISC и заточен именно под передачу трафика. QFP второго поколения включает до 128 процессорных ядер, на каждом из которых может быть запущено четыре отдельных процесса. Т.е. мы имеем до 256 ядер на одной плате (в случае двух процессоров). Сравнив с архитектурой более простых маршрутизаторов, где всё выполняется на нескольких ядрах, можно сразу сделать вывод, что такие маршрутизаторы являются более производительными.

    Сетевые процессоры выпускаются различными компаниями (Cisco, EZChip, Broadcom и пр.) и используются для выполнения функций передающего уровня многими производителями сетевого оборудования. Например, сетевые процессоры используются в оборудовании компаний Huawei (как в маршрутизаторах, например, в NetEngine40E, так и в коммутаторах S12700).

    Нередко производители сетевого оборудования при построении высокопроизводительных коммутаторов (предназначенных для установки в ядро больших сетей) используют в качестве основы архитектуру высокопроизводительных маршрутизаторов. В этом случае грань различий между коммутаторами и маршрутизаторами размывается.

    Кроме сетевых процессоров, на рынке представлены специализированные чипсеты, например, Juniper Trio chipset. Они позиционируются между сетевыми процессорами и ASIC’ами. По большому счёту, общий смысл сохраняется – передающий уровень выполняется на специализированном железе, в данном случае чипсете Trio Chipset. Отметим, что до вывода на рынок Trio chipset, компания Juniper активно использовала в своих маршрутизаторах программируемые ASIC’и собственной разработки (Internet Processor ASIC и I-Chip).

    Стоит отметить, что в топовых решения, мы будем иметь не только разнесение уровней управления и передачи между разным железом, но и распределение внутри каждого уровня. Например, в маршрутизаторе Cisco ASR 9000 управляющий уровень внутри одного устройства разнесён: часть функций выполняются на процессорной плате, а часть на плате линейных портов. То же самое касается и передающего уровня: сетевых процессоров много и они расположены непосредственно на линейных картах.


    В заключение

    Так как реализаций архитектур даже у одного вендора достаточно много, рассмотреть их все крайне сложно. Однако, если нам требуется большая производительность, чаще всего передающий уровень будет выполняться на специализированном железе: будь то сетевой процессор, специализированный чипсет, обычный или программируемый ASIC, или что-то ещё. В некоторых устройствах мы встретим даже комбинацию этих микросхем. Нередко производители сетевого оборудования в своём оборудовании используют микросхемы сторонних компаний (например, ASIC’и или сетевые процессоры).

    Control plane что это

    На AC-порт PE-маршрутизатора пришёл пользовательский кадр.

    PE-маршрутизатор смотрит в заголовок Ethernet и проверяет MAC-адрес отправителя.

    А) Если он уже есть в таблице MAC-ов данного VSI, PE сразу переходит к шагу 3.

    Б) Если этого адреса ещё нет — он записывает соответствие MAC-порт в таблицу и тоже переходит к шагу 3.

    PE-маршрутизатор смотрит в заголовок Ethernet и проверяет MAC-адрес получателя.

    Локальный PE составляет список всех удалённых PE этого VSI, и, создав копии этого кадра, вставляет в них сервисные метки — каждому своя.

    Далее на каждую копию кадра навешивается ещё и транспортная метка (тоже своя для каждого PE).

    Весь этот ворох кадров рассылается по сети провайдера.

    Также копии широковещательного кадра отправляются в AC-интерфейсы, если такие есть, без заголовков MPLS.

    Удалённый PE после получения кадра и снятия меток (то есть когда уже определил VSI) тоже действует как обычный коммутатор: А) Если MAC-адрес источника пока не известен, вносит его в таблицу. В качестве входного интерфейса будет указан PW к Ingress PE. Б) Если MAC-адрес назначения ему известен, отсылает кадр в тот порт, за которым он изучен. Отсылается уже чистый Ethernet-кадр, без каких-либо заголовков MPLS. В) Если этот MAC не удалось найти в таблице? Широковещательная рассылка по всем AC-портам этого VSI. Заметьте, PE не будет рассылать этот кадр в PW данного VSI , потому что все другие PE уже получили копию этого кадра от входного PE. Это всё то же правило расщепления горизонта (Split Horizon), и так достигается отсутствие петель коммутации и широковещательных штормов. (Ах, если бы всё было так просто. )

    Есть просто гиф , которая показывает, что происходит. А есть та же гиф, только с голосом.

    Как и в обычном коммутаторе записи в MAC-таблице VSI периодически протухают и удаляются.

    Читайте также: