Подробное объяснение программируемой технологии P4: от теории к аппаратной реализации
Подробное объяснение программируемой технологии P4: от теории к аппаратной реализации
Рождение P4
Чтобы сломать традиционную модель фиксированной упаковки и полностью освободить возможности программирования плоскости данных, исследовательская группа Стэнфордского университета под руководством Ника Маккеуна предложила в 2014 году язык программируемой обработки P4. Благодаря возможностям программирования плоскости данных P4 пользователи могут реализовать различные сетевые протоколы, включая VXLAN, MPLS и т. д., на сетевых устройствах, таких как сетевые карты, коммутаторы и маршрутизаторы.
Особенности языка P4
Язык P4 имеет следующие три характеристики, которые также являются целями разработки языка P4.
Независимость от протокола: язык P4 не привязан к конкретному сетевому протоколу. Пользователям нужно только настроить логику пересылки на основе существующей поддержки сетевых протоколов и элементов синтаксиса P4. Они могут добавлять новые протоколы по мере необходимости или удалять избыточные протоколы.
Независимость от платформы: язык P4 не требует внимания к деталям базовой платформы. Пользователи могут программировать функции обработки сообщений независимо от базового оборудования. Пользователям не нужно заботиться о деталях базового оборудования для реализации программных описаний обработки пакетов данных. Внешний компилятор преобразует программу на языке высокого уровня P4 в промежуточное представление IR, а внутренний компилятор компилирует IR в конфигурацию целевого устройства.
Реконфигурируемость: язык P4 поддерживает динамическую модификацию методов обработки пакетов без замены оборудования. Благодаря возможности «вносить изменения в одночасье» одно и то же устройство можно переконфигурировать в любое время в соответствии с потребностями существующей сети.
Модель пересылки P4
Для достижения вышеуказанных целей язык P4 определяет абстрактную модель пересылки, показанную на рисунке 2. Модель пересылки в основном состоит из трех частей: парсера, многоступенчатого конвейера и буфера.
Синтаксический анализатор: при использовании кодировки языка P4 пользователи могут настроить формат сообщения данных и процесс синтаксического анализа. Затем процесс синтаксического анализа будет скомпилирован компилятором в диаграмму анализа заголовка пакета и настроен на синтаксическом анализаторе. Когда пакет данных поступает в программируемое устройство, анализатор извлекает поле заголовка из сообщения, отделяет заголовок от оставшейся полезной нагрузки данных, а затем анализирует его в соответствии со схемой анализа заголовка пакета, созданной компилятором.
Многоступенчатый конвейер: он состоит из нескольких таблиц сопоставления действий (Match-Action). Эти таблицы организованы в виде конвейеров и разделены на две части: входной конвейер и выходной конвейер. Таблица действий соответствия входящего конвейера отвечает за изменение заголовка пакета и определение выходного порта и очереди пакета, тогда как таблица действий соответствия выходного конвейера отвечает только за изменение заголовка пакета. При написании программ P4 пользователи могут настраивать типы пакетов данных, соответствующие каждой таблице соответствующих действий, действия выполнения и их параметры и т. д., а также порядок выполнения каждой таблицы соответствующих действий в каждом конвейере. Во время выполнения плоскость данных обрабатывает пакеты данных последовательно в порядке потока управления.
Буфер: используется для кэширования полезных данных и анализируемых сообщений заголовков, ожидающих обработки в очереди.
Аппаратная реализация P4
Язык P4 с самого начала разрабатывался с целью сетевого программирования оборудования. В связи с независимостью от платформы отмечается, что при совместной работе фронтенд- и бэкэнд-компиляторов программа на языке P4 в конечном итоге будет скомпилирована в конфигурацию целевого устройства. Фактически этот процесс представляет собой аппаратную доставку P4. P4 компилируется в аппаратный машинный код или ассемблерный код с помощью аппаратного компилятора и отправляется на аппаратное обеспечение, что действительно реализует возможность сетевого программирования оборудования.
Рабочий процесс. Если взять в качестве примера программируемый коммутатор P4, его рабочий процесс основан на абстрактной модели пересылки P4. Пользователь сначала настраивает программу синтаксического анализа и управления потоком данных и называет ее test.p4. Файл test.p4 компилируется компилятором для получения test.json и. test.p4info два файла. Среди них test.json — это файл конфигурации аппаратной логики коммутатора. Когда файл конфигурации загружается в аппаратное обеспечение коммутатора, аппаратная логика коммутатора обновляется, а test.p4info — это файл конфигурации для интерфейса управления, который необходимо выполнить. обновите плоскость управления и службы времени выполнения P4 соответственно, завершите обновление интерфейса управления переключателем плоскости управления. Завершено после всех обновлений бизнес-логики реализация P4。
Применение технологии P4
Облачный пограничный шлюз для соединения центров обработки данных. Являясь мостом, соединяющим внутренние и внешние облачные сети, облачный пограничный шлюз должен обрабатывать большой объем трафика данных и иметь богатые сценарии облачных сервисов. Он должен быть гибким и масштабируемым при проектировании, принимая во внимание все возможности. Преимущество высокой гибкости и гибкости программирования языка P4.
Распределенная внутриполосная сетевая телеметрия. Распределенная внутриполосная сетевая телеметрия позволяет нескольким узлам сети работать вместе, собирая и сообщая информацию о состоянии сети в режиме реального времени без вмешательства плоскости управления. Для этого необходимо определить заголовок INT пакета данных для передачи телеметрических инструкций и метаданных, а затем использовать программу P4 для определения логики анализа пакета данных для идентификации и извлечения заголовка INT.
Балансировка нагрузки и снижение трафика. Программа P4 реализует балансировку нагрузки и снижение трафика путем определения хэш-функций, настройки таблиц пересылки, динамического распределения трафика и реализации стратегий управления трафиком и алгоритмов контроля перегрузки для эффективной оптимизации производительности сети и улучшения пользовательского опыта.
Подвести итог
Подводя итог, можно сказать, что программируемая сетевая технология P4 имеет важное значение для повышения производительности сети, снижения инвестиций, затрат на эксплуатацию и техническое обслуживание, а также продвижения сетевых инноваций. Учитывая гибкие и меняющиеся требования к сети, P4 предлагает новые решения. В течение следующих трех лет мы по-прежнему сможем использовать программируемую технологию P4 для решения растущих и развивающихся сетевых задач.