Jump to content

P4 (язык программирования)

П4
Парадигма скомпилированный , зависящий от предметной области , императивный
Разработчик Фонд открытых сетей
Впервые появился 2013 год ; 11 лет назад ( 2013 )
Стабильная версия
версия 1.2.2 [1] / май 2021 г .; 3 года назад ( 2021-05 )
Лицензия Апач -стиль
Расширения имен файлов .p4
Веб-сайт п4 .org

P4 — это язык программирования для управления пакетов плоскостями пересылки в сетевых устройствах, таких как маршрутизаторы и коммутаторы. В отличие от языков общего назначения, таких как C или Python , P4 — это предметно-ориентированный язык с рядом конструкций, оптимизированных для пересылки сетевых данных . P4 распространяется как код с открытым исходным кодом , лицензируемый по разрешению , и поддерживается P4 Project (ранее P4 Language Consortium), некоммерческой организацией, организованной Open Networking Foundation .

P4 был первоначально описан в документе SIGCOMM CCR 2014 года под названием «Программирование протоколо-независимых пакетных процессоров». [2] — аллитеративное название сокращается до «П4». Первый семинар P4 состоялся в июне 2015 года в Стэнфордском университете . [3] Обновленная спецификация P4, получившая название P4-16, была выпущена в период с 2016 по 2017 год. [4] заменяя P4-14, исходную спецификацию P4.

Поскольку язык специально предназначен для приложений пересылки пакетов, список требований или вариантов дизайна несколько специфичен для этих случаев использования. Язык создан для достижения нескольких целей:

Целевая независимость

[ редактировать ]

Программы P4 разработаны так, чтобы быть независимыми от реализации: они могут быть скомпилированы для множества различных типов исполнительных машин, таких как процессоры общего назначения, FPGA , системы на кристалле , сетевые процессоры и ASIC. Эти различные типы машин известны как цели P4 , и каждая цель должна быть предоставлена ​​вместе с компилятором , который отображает исходный код P4 в модель переключения цели. Компилятор может быть встроен в целевое устройство, внешнее программное обеспечение или даже в облачную службу. Поскольку многие из первоначальных целей программ P4 использовались для простой коммутации пакетов, очень часто можно услышать использование термина «переключатель P4», хотя «цель P4» более формально правильна.

Независимость протокола

[ редактировать ]

P4 спроектирован так, чтобы быть независимым от протокола: язык не имеет встроенной поддержки даже таких распространенных протоколов, как IP, Ethernet, TCP, VxLAN или MPLS . Вместо этого программатор P4 описывает форматы заголовков и имена полей необходимых протоколов в программе, которые, в свою очередь, интерпретируются и обрабатываются скомпилированной программой и целевым устройством.

Реконфигурируемость

[ редактировать ]

Независимость протокола и абстрактная языковая модель допускают возможность реконфигурации: цели P4 должны иметь возможность изменять способ обработки пакетов (возможно, несколько раз) после их развертывания. Эта возможность традиционно связана с плоскостями пересылки, построенными на процессорах общего назначения или сетевых процессорах с фиксированными функциями , а не на ASIC . Хотя внутри языка нет ничего, что могло бы помешать конкретной цели оптимизировать определенный набор протоколов, эти оптимизации невидимы для автора языка и в конечном итоге могут снизить гибкость и возможности реконфигурации системы.

Компоненты

[ редактировать ]

Программы P4 обычно состоят из следующих компонентов:

Логика синтаксического анализа

[ редактировать ]

P4 позволяет указать собственную логику анализа заголовка пакета. [4] включая, помимо прочего, анализ типичных заголовков, используемых в наборе протоколов TCP/IP, и заголовков, специфичных для приложения.

Заголовки

[ редактировать ]

Определения заголовков описывают форматы пакетов и предоставляют имена полям внутри пакета. Язык позволяет настраивать имена заголовков и поля произвольной длины, хотя во многих определениях заголовков используются широко известные имена протоколов и ширина полей. Например, определение заголовка Ethernet 802.3 может называться «Ethernet» и состоять из 48-битного поля с именем «dest», за которым следует 48-битное поле «src», за которым следует 16-битное поле «type». Имена в определении заголовка используются позже в программе P4 для ссылки на эти поля.

Парсер P4 — это конечный автомат, который обрабатывает входящий поток байтов и извлекает заголовки на основе запрограммированного графа анализа. Простым примером может служить анализатор, который извлекает поля источника, назначения и типа Ethernet, а затем выполняет дальнейшее извлечение на основе значения в поле типа (обычными значениями могут быть ipv4, ipv6 или MPLS).

Обработка с отслеживанием состояния

[ редактировать ]

P4 позволяет программисту сохранять состояние в виде регистров, счетчиков и счетчиков. [4]

Общие таблицы действий при совпадении

[ редактировать ]

Основным компонентом программы P4 является набор определяемых пользователем таблиц действий по сопоставлению. P4 рассматривает все таблицы действий по совпадению как общие, позволяя пользователю добавлять свои правила действий по сопоставлению через плоскость управления. [4]

Обработка действий по совпадению

[ редактировать ]

Фундаментальным для P4 является концепция конвейеров сопоставления действий . Концептуально пересылку сетевых пакетов или кадров можно разбить на серию поисков в таблицах и соответствующих манипуляций с заголовками. В P4 эти манипуляции известны как действия и обычно состоят из таких вещей, как копирование байтовых полей из одного места в другое на основе результатов поиска по изученному состоянию пересылки. P4 адресован только плоскости данных устройства пересылки пакетов. Он не определяет ни плоскость управления, ни какой-либо точный протокол для передачи состояния между плоскостями управления и данных. Вместо этого P4 использует концепцию таблиц для представления состояния плоскости пересылки. Должен быть предусмотрен интерфейс между плоскостью управления и различными таблицами P4, чтобы позволить плоскости управления вводить/изменять состояние в программе. Этот интерфейс обычно называют программным API .

Таблицы P4 содержат состояние, используемое для пересылки пакетов. Таблицы состоят из ключей поиска и соответствующего набора действий и их параметров. Тривиальным примером может быть сохранение набора MAC-адресов назначения в качестве ключей поиска, а соответствующее действие может установить выходной порт на устройстве и/или увеличить счетчик. Таблицы и связанные с ними действия почти всегда последовательно связаны друг с другом для реализации полной логики пересылки пакетов, хотя абстрактно можно построить одну таблицу, которая включает всю ключевую информацию поиска и полный набор выходных действий.

Действия

[ редактировать ]

Действия в P4 описывают манипуляции с полем пакета и метаданными . В контексте P4 метаданные — это информация о пакете, которая не получена напрямую из анализатора, например, о входном интерфейсе, на который прибыл кадр. Примером действия на английском языке может быть «уменьшение поля TTL IPv4 на единицу» или «копирование MAC-адреса из таблицы выходных портов в заголовок исходящего пакета». [5] P4 определяет как стандартные метаданные, которые должны предоставляться всеми целями, так и метаданные для конкретной цели, которые предоставляются автором конкретных целей.

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

[ редактировать ]

Поток управления в P4 определяет относительную последовательность таблиц и допускает условное выполнение таблиц на основе конструкций if/then/else.

  1. ^ «Язык P4 и связанные с ним характеристики» . Проверено 7 июня 2022 г.
  2. ^ П. Босхарт; Д. Дейли; Г. Гибб; М. Иззард; Н. МакКаун; Дж. Рексфорд; К. Шлезингер; Д. Талайко; А. Вахдат; Г. Варгезе; Д. Уокер (июль 2014 г.). «P4: Программирование протокольно-независимых пакетных процессоров» . Обзор компьютерных коммуникаций . Проверено 7 апреля 2015 г.
  3. ^ «1-й семинар P4» . Официальный сайт P4 . 4 июня 2015 г. Проверено 1 августа 2019 г.
  4. ^ Jump up to: а б с д «Технические характеристики» . Официальный сайт P4 . Проверено 7 июня 2022 г.
  5. ^ «Списки рассылки P4» . июль 2015 года . Проверено 15 июля 2015 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f4212348d00c660eb971f3c6f5773b9f__1716241260
URL1:https://arc.ask3.ru/arc/aa/f4/9f/f4212348d00c660eb971f3c6f5773b9f.html
Заголовок, (Title) документа по адресу, URL1:
P4 (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)