**P4** یک زبان برنامه‌نویسی طراحی شده برای برنامه‌نویسی بسته در سطح انتقال (Forwarding plane) است. بر خلاف زبان‌های برنامهم‌نویسی عمومی مانند C یا پایتون، P4 یک زبان خاص دامنه با تعدادی ساختار بهینه‌سازی شده در حوزه انتقال بسته‌های شبکه است. P4 متن‌باز، با مجوزی آسان‌گیر و نگهداری شده توسط یک سازمان غیر انتفاعی به نام کنسرسیوم زبان P4 است. این زبان در اصل در یک مقاله SIGCOMM CCR در سال ۲۰۱۴ با عنوان «برنامه‌نویسی پردازشگر بسته مستقل از پروتکل» شرح داده شد .

مرور کلی زبان و ملاحظات طراحی
-----------------------------

به عنوان زبان که به‌طور خاص هدف آن در کاربرد انتقال بسته است، فهرست الزامات مورد نیاز یا گزینه‌های طراحی نیز تا حدودی منحصر به همان موارد استفاده می‌باشد. این زبان برای دستیابی به اهداف زیر طراحی شده‌است:

### هدف ایجاد

P4 برنامه‌های طراحی شده به **اجرای مستقل از**معنی آن‌ها را می‌توان وارد شده در برابر بسیاری از انواع مختلف از اجرای ماشین آلات مانند منظوره پردازنده FPGAs سیستم(ع)-بر-تراشه پردازنده‌های شبکه و ASICs. این انواع مختلف از ماشین آلات شناخته شده به عنوان P4 **اهداف**و هر هدف باید همراه با ارائه یک کامپایلر که نقشه P4 کد منبع به یک هدف تغییر مدل. به عنوان بسیاری از اهداف اولیه برای P4 برنامه‌ها استفاده شد برای ساده سوئیچینگ بسته این بسیار معمول است برای شنیدن اصطلاح "P4 سوئیچ" استفاده می‌شود حتی اگر "P4 هدف" است و بیشتر به‌طور رسمی درست است.

### پروتکل استقلال

P4 طراحی شده‌است که **پروتکل مستقل**به این معنی که زبان هیچ پشتیبانی بومی و حتی به صورت مشترک از پروتکل‌های مانند آی‌پی اترنت تی‌سی‌پی VxLAN یا MPLS هستند. در عوض P4 برنامه‌نویس توصیف سربرگ فرمت و نام فیلد از پروتکل‌های مورد نیاز در این برنامه که به نوبه خود تفسیر و پردازش وارد برنامه و دستگاه مورد نظر.

### Reconfigurability

پروتکل استقلال و انتزاعی زبان مدل اجازه می‌دهد برای **reconfigurability** – P4 اهداف باید قادر به تغییر راه آن‌ها فرایند بسته (شاید چندین بار) و پس از آن‌ها مستقر هستند. این قابلیت به‌طور سنتی مرتبط با حمل و نقل هواپیماهای ساخته شده در general-purpose پردازنده یا پردازنده های شبکه به جای ثابت تابع ASICs. اگر چه در زبان وجود دارد هیچ چیز برای جلوگیری از داده هدف از بهینه سازی در اطراف مجموعه ای از پروتکل‌های این بهینه سازی در حال نامرئی به زبان نویسنده است و ممکن است در نهایت کاهش سیستم انعطاف‌پذیری و reconfigurability اهداف است.

بازی-اکشن پردازش
----------------

اساسی به P4 است مفهوم **بازی اکشن خطوط لولها**ست. مفهومی حمل و نقل بسته‌های شبکه یا فریم را می‌توان به یک سری از متغیر جدول مربوطه و هدر دستکاری. در P4 این دستکاری شناخته شده به عنوان "اقدامات" و به‌طور کلی شامل چیزهایی مانند کپی بایت زمینه از یک مکان به مکان دیگر بر اساس گرین کارت آمریکا نتایج آموخته حمل و نقل دولت است. P4 آدرس تنها اطلاعات هواپیما از یک بسته حمل و نقل دستگاه‌های آن را مشخص می‌کند که کنترل هواپیما و نه هر گونه دقیق پروتکل برای برقراری ارتباط بین دولت روی داده و کنترل هواپیما. به جای P4 با استفاده از مفهوم جداول به نمایندگی حمل و نقل هواپیما دولت است. یک رابط بین کنترل هواپیما و مختلف P4 جداول ارائه شده باید اجازه می‌دهد تا کنترل هواپیما برای تزریق/تغییر دولت در برنامه است. این رابط کاربری به‌طور کلی به عنوان "برنامه ایپی آی".

اجزای زبان
----------

### عناوین

هدر تعاریف توصیف بسته فرمت و ارائه اسامی این زمینه در داخل بسته. زبان اجازه می‌دهد تا سفارشی سربرگ با نام و زمینه‌های دلخواه ظهر اگر چه بسیاری از هدر تعاریف استفاده از به‌طور گسترده ای شناخته شده پروتکل نام و زمینه عرض است. برای مثال یک 802.3 Ethernet header تعریف ممکن است به نام "اترنت" و شامل 48-bit زمینه به نام "مقصد" و پس از 48-bit "src" درست پس از 16 بیت "نوع" درست است. نام در هدر تعریف استفاده می‌شود بعد در P4 برنامه برای مرجع در این زمینه.

### تجزیه کننده

این P4 **تجزیه کننده** محدود است دولت ماشین که پیاده‌روی در ورودی بایت-جریان و عصاره عناوین بر اساس برنامه‌ریزی تجزیه و تحلیل نمودار. یک مثال ساده می‌تواند یک تجزیه‌کننده است که عصاره اترنت منبع و مقصد و نوع رشته و سپس انجام یک بیشتر استخراج بر اساس ارزش در زمینه نوع (ارزش‌های مشترک ممکن است آی‌پی ورژن6, آی‌پی ورژن4, یا MPLS).

### جداول

P4 **جداول** شامل دولت استفاده می‌شود به جلو بسته. جداول تشکیل شده مراجعه و کلید مربوطه مجموعه ای از اقدامات و پارامترهای خود را. بی اهمیت به عنوان مثال ممکن است برای ذخیره مجموعه ای از مقصد مک آدرس به مراجعه به کلیدهای مربوطه اقدام می‌تواند مجموعه ای از پورت خروجی دستگاه و/یا افزایش یک شمارنده است. جداول مرتبط و اقدامات تقریباً همیشه زنجیر با هم در دنباله به درک کامل بسته حمل و نقل منطق اگر چه در انتزاعی آن است که ممکن است برای ساخت یک جدول که شامل تمام گرین کارت آمریکا اطلاعات کلیدی و کامل خروجی اکشن مجموعه.

### اقدامات

**اقدامات** در P4 توصیف بسته میشه و ابرداده دستکاری. در P4 زمینه‌های ابرداده است اطلاعات در مورد یک بسته است که به‌طور مستقیم به دست آمده از تجزیه‌کننده مانند رابط ورودی که قاب وارد شدند. شرح یک مثال عمل ممکن است "کاهش آی‌پی ورژن4 TTL زمینه توسط یک" یا "کپی کردن مک آدرس از پورت خروجی جدول به خروجی بسته هدر است."  P4 تعریف استاندارد ابرداده ای است که باید توسط تمام اهداف به عنوان به خوبی به عنوان هدف خاص ابرداده است که ارائه شده توسط نویسنده از اهداف خاص.

### کنترل جریان

کنترل جریان در P4 تعیین نسبی دنباله ای از جداول بوده و اجازه می‌دهد تا اجزایی به صورت شرطی از جداول بر اساس if/then/else ساخت.

لینک های خارجی
--------------

* وبگاه رسمی

منابع
-----

1. ↑  "P4 language spec". Archived from the original on 9 September 2015. Retrieved 7 April 2015.
2. ↑  "P4: Programming Protocol-Independent Packet Processors". July 2014. Retrieved 7 April 2015.
3. ↑  "P4 developers mailing list". July 2015. Archived from the original on 28 June 2015. Retrieved 15 July 2015.

*متن مورب*