Подробное объяснение программируемой технологии P4: от теории к аппаратной реализации
Подробное объяснение программируемой технологии P4: от теории к аппаратной реализации

Рождение P4

Чтобы сломать традиционную модель фиксированной упаковки и полностью освободить возможности программирования плоскости данных, исследовательская группа Стэнфордского университета под руководством Ника Маккеуна предложила в 2014 году язык программируемой обработки P4. Благодаря возможностям программирования плоскости данных P4 пользователи могут реализовать различные сетевые протоколы, включая VXLAN, MPLS и т. д., на сетевых устройствах, таких как сетевые карты, коммутаторы и маршрутизаторы.

Особенности языка P4

Язык P4 имеет следующие три характеристики, которые также являются целями разработки языка P4.

  • Независимость от протокола: язык P4 не привязан к конкретному сетевому протоколу. Пользователям нужно только настроить логику пересылки на основе существующей поддержки сетевых протоколов и элементов синтаксиса P4. Они могут добавлять новые протоколы по мере необходимости или удалять избыточные протоколы.
  • Независимость от платформы: язык P4 не требует внимания к деталям базовой платформы. Пользователи могут программировать функции обработки сообщений независимо от базового оборудования. Пользователям не нужно заботиться о деталях базового оборудования для реализации программных описаний обработки пакетов данных. Внешний компилятор преобразует программу на языке высокого уровня P4 в промежуточное представление IR, а внутренний компилятор компилирует IR в конфигурацию целевого устройства.
  • Реконфигурируемость: язык P4 поддерживает динамическую модификацию методов обработки пакетов без замены оборудования. Благодаря возможности «вносить изменения в одночасье» одно и то же устройство можно переконфигурировать в любое время в соответствии с потребностями существующей сети.
Рисунок 1. Схема архитектуры компиляции P4.
Рисунок 1. Схема архитектуры компиляции P4.

Модель пересылки P4

Для достижения вышеуказанных целей язык P4 определяет абстрактную модель пересылки, показанную на рисунке 2. Модель пересылки в основном состоит из трех частей: парсера, многоступенчатого конвейера и буфера.

Рисунок 2. Абстрактная модель пересылки P4.
Рисунок 2. Абстрактная модель пересылки P4.
  • Синтаксический анализатор: при использовании кодировки языка 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。
Рисунок 4: Рабочий процесс P4
Рисунок 4: Рабочий процесс P4

Применение технологии P4

Облачный пограничный шлюз для соединения центров обработки данных. Являясь мостом, соединяющим внутренние и внешние облачные сети, облачный пограничный шлюз должен обрабатывать большой объем трафика данных и иметь богатые сценарии облачных сервисов. Он должен быть гибким и масштабируемым при проектировании, принимая во внимание все возможности. Преимущество высокой гибкости и гибкости программирования языка P4.

Распределенная внутриполосная сетевая телеметрия. Распределенная внутриполосная сетевая телеметрия позволяет нескольким узлам сети работать вместе, собирая и сообщая информацию о состоянии сети в режиме реального времени без вмешательства плоскости управления. Для этого необходимо определить заголовок INT пакета данных для передачи телеметрических инструкций и метаданных, а затем использовать программу P4 для определения логики анализа пакета данных для идентификации и извлечения заголовка INT.

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

Подвести итог

Подводя итог, можно сказать, что программируемая сетевая технология P4 имеет важное значение для повышения производительности сети, снижения инвестиций, затрат на эксплуатацию и техническое обслуживание, а также продвижения сетевых инноваций. Учитывая гибкие и меняющиеся требования к сети, P4 предлагает новые решения. В течение следующих трех лет мы по-прежнему сможем использовать программируемую технологию P4 для решения растущих и развивающихся сетевых задач.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose