P4 (dasturlash tili) - P4 (programming language)

P4
Paradigmatuzilgan, domenga xos, majburiy
TuzuvchiP4 tillari konsortsiumi
Birinchi paydo bo'ldi2013; 7 yil oldin (2013)
Barqaror chiqish
versiya 1.2[1] / 2019 yil 23 oktyabr; 13 oy oldin (2019-10-23)
LitsenziyaApache - uslub
Fayl nomi kengaytmalari.p4
Veb-saytp4.org

P4 a dasturlash tili nazorat qilish uchun paket samolyotlarni yo'naltirish yo'riqnoma va kalitlarga o'xshash tarmoq qurilmalarida. Kabi umumiy maqsadli tildan farqli o'laroq C yoki Python, P4 a domenga xos til uchun optimallashtirilgan bir qator konstruktsiyalar bilan tarmoq ma'lumotlarini yo'naltirish. P4 quyidagicha taqsimlanadi ochiq manbali, ruxsat etilgan litsenziyalangan kodi va P4 Language Consortium tomonidan qo'llab-quvvatlanadi, bu notijorat tashkilotdir.

Tarix

Dastlab P4 dasturlash tili dastlab 2014 yilda "Dasturlash protokoli - mustaqil paketli protsessorlar" deb nomlangan SIGCOMM CCR qog'ozida tasvirlangan.[2] - alliterativ ism "P4" ga qisqartiradi. Birinchi P4 ustaxonasi 2015 yil iyun oyida bo'lib o'tdi[3] da Stenford universiteti. P4-16 deb nomlangan P4-ning yangilangan spetsifikatsiyasi 2016 va 2017 yillar orasida chiqarildi[4] P4-14 deb nomlangan P4 ning o'ziga xos xususiyatlarini almashtirish.

Dizayn

Til paketlarni yo'naltirish dasturlariga maxsus yo'naltirilganligi sababli, talablar ro'yxati yoki dizayn tanlovi ushbu holatlar uchun odatiy emas. Til bir nechta maqsadlarni bajarish uchun mo'ljallangan:

Maqsadli mustaqillik

P4 dasturlari shunday bo'lishi uchun mo'ljallangan amalga oshirishdan mustaqil, ya'ni ularni umumiy maqsadli protsessorlar kabi turli xil ijro mashinalariga qarshi tuzish mumkin, FPGA, tizim (lar) - chip, tarmoq protsessorlari va ASIC. Ushbu turli xil mashinalar P4 sifatida tanilgan maqsadlarva har bir nishon a bilan birga ta'minlanishi kerak kompilyator bu P4 manba kodini maqsadli kalit modeliga moslashtiradi. Tuzuvchi maqsadli qurilmaga, tashqi ishlaydigan dasturga yoki hatto bulutli xizmatga joylashtirilgan bo'lishi mumkin. P4 dasturlari uchun mo'ljallangan ko'plab maqsadlar oddiy paketlarni almashtirish uchun ishlatilganligi sababli, "P4 maqsad" rasmiy ravishda to'g'ri bo'lsa ham, "P4 tugmachasi" atamasini eshitish juda keng tarqalgan.

Protokol mustaqilligi

P4 bo'lishi uchun mo'ljallangan protokoldan mustaqil, ya'ni til IP, Ethernet, TCP, kabi umumiy protokollar uchun ham mahalliy yordamga ega emasligini anglatadi. VxLAN, yoki MPLS. Buning o'rniga P4 dasturchisi dasturdagi kerakli protokollarning sarlavha formatlarini va maydon nomlarini tavsiflaydi, ular o'z navbatida kompilyatsiya qilingan dastur va maqsadli qurilma tomonidan izohlanadi va qayta ishlanadi.

Qayta konfiguratsiya

Protokolning mustaqilligi va mavhum til modeli bunga imkon beradi qayta konfiguratsiya - P4 maqsadlari joylashtirilganidan keyin paketlarni qayta ishlash usulini o'zgartirishi kerak (ehtimol bir necha marta). Ushbu imkoniyat an'anaviy ravishda yo'naltirilgan samolyotlar bilan bog'liq umumiy maqsadli protsessorlar yoki tarmoq protsessorlari, sobit funktsiyadan ko'ra ASIC. Garchi til ichida ma'lum bir protokollar to'plami atrofida optimallashtirishga to'sqinlik qiladigan narsa bo'lmasa-da, bu optimallashtirishlar til muallifi uchun ko'rinmas va oxir-oqibat tizimning moslashuvchanligi va qayta sozlanishi maqsadlarini kamaytirishi mumkin.

Komponentlar

P4 dasturlari odatda quyidagi tarkibiy qismlarga ega:

Mantiqni tahlil qilish

P4 maxsus paket sarlavhasini tahlil qilish mantig'ining spetsifikatsiyasiga imkon beradi[4] TCP / IP protokoli to'plamida ishlatiladigan odatiy sarlavhalarni va dasturga xos sarlavhalarni ajratish bilan bir qatorda.

Sarlavhalar

Sarlavha ta'riflari paket formatlarini tavsiflaydi va paket ichidagi maydonlarning nomlarini beradi. Til moslashtirilgan sarlavha nomlari va o'zboshimchalik uzunlikdagi maydonlarga ruxsat beradi, lekin ko'plab sarlavhalar ta'riflarida keng ma'lum bo'lgan protokol nomlari va maydonlarning kengliklari ishlatiladi. Masalan, an 802.3 Ethernet sarlavhasi ta'rifi "Ethernet" deb nomlanishi mumkin va "dest" deb nomlangan 48 bitli maydondan keyin 48 bitli "src" maydonidan keyin 16 bitli "tip" maydonidan iborat bo'lishi mumkin. Sarlavha ta'rifidagi nomlar keyinchalik ushbu maydonlarga murojaat qilish uchun P4 dasturida qo'llaniladi.

Tahlilchilar

P4 tahlilchi kiruvchi bayt oqimida yuradigan va dasturlashtirilgan ajratish grafigi asosida sarlavhalarni chiqaradigan cheklangan davlat mashinasidir. Oddiy misol, chekilgan manbasini va manzil va turdagi maydonlarni ajratib oladigan, so'ngra maydon maydonidagi qiymatga asoslangan holda keyingi ekstraktsiyani amalga oshiradigan tahlilchi bo'lishi mumkin (umumiy qiymatlar ipv4, ipv6 yoki MPLS bo'lishi mumkin).

Davlat ishlovi

P4 dasturchiga registrlar, hisoblagichlar va hisoblagichlar holatini saqlashga imkon beradi[4].

Umumiy o'yin jadvallari

P4 dasturining asosiy komponenti foydalanuvchi tomonidan belgilangan o'yin jadvallari to'plamidir. P4 barcha o'yin jadvallarini umumiy deb hisoblaydi va foydalanuvchiga o'zlarining mos kelish qoidalarini boshqarish tekisligi orqali qo'shishga imkon beradi.[4].

Uchrashuvni qayta ishlash

P4 uchun asosiy narsa bu kontseptsiya match-action quvurlari. Kontseptual ravishda, yo'naltiruvchi tarmoq paketlari yoki ramkalari jadvallarni qidirish va mos keladigan sarlavha manipulyatsiyalariga bo'linishi mumkin. P4-da ushbu manipulyatsiyalar "harakatlar" deb nomlanadi va odatda bayt maydonlarini bir joydan ikkinchisiga nusxalash, o'rganilgan ekspeditsiya holatiga qarab qidirish natijalari asosida iborat. P4 faqat paket uzatuvchi qurilmaning ma'lumot tekisligiga murojaat qiladi. Unda boshqaruv tekisligi yoki boshqaruv va ma'lumotlar tekisliklari o'rtasida holatni bog'lash uchun aniq protokol ko'rsatilmagan. Buning o'rniga, P4 yo'naltirilgan tekislik holatini ko'rsatish uchun jadvallar tushunchasidan foydalanadi. Boshqarish tekisligi dasturdagi holatni kiritish / o'zgartirish imkoniyatini berish uchun boshqaruv tekisligi va turli xil P4 jadvallari o'rtasida interfeys bo'lishi kerak. Ushbu interfeys odatda "dastur API" deb nomlanadi.

Jadvallar

P4 jadvallar paketlarni uzatishda foydalaniladigan holatni o'z ichiga oladi. Jadvallar qidirish tugmachalari va tegishli harakatlar to'plami va ularning parametrlaridan iborat. MAC manzillari to'plamini qidirish tugmachalari sifatida saqlash uchun ahamiyatsiz misol bo'lishi mumkin va mos keladigan amal qurilmadagi chiqish portini o'rnatishi va / yoki hisoblagichni oshirishi mumkin. To'liq paketlarni yo'naltirish mantig'ini amalga oshirish uchun jadvallar va ular bilan bog'liq harakatlar deyarli har doim ketma-ket zanjirband qilinadi, ammo mavhum holda barcha qidiruv kalitlari va to'liq chiqish harakatlar to'plamini o'z ichiga olgan bitta jadval tuzish mumkin.

Amallar

Amallar P4-da paket maydonini tavsiflang va metadata manipulyatsiya. P4 kontekstida metadata bu to'g'ridan-to'g'ri ajraluvchidan olinmagan paket haqida ma'lumot, masalan, ramka kelgan kirish interfeysi. Namunaviy harakatning inglizcha tavsiflari «IPv4-ni kamaytirish TTL maydon birma-bir "yoki" chiqish porti jadvalidan MAC manzilini chiquvchi paketlar sarlavhasiga nusxalash. "[5] P4 har ikkala maqsad uchun taqdim etilishi kerak bo'lgan standart metama'lumotlarni va shuningdek, aniq maqsadlar muallifi tomonidan taqdim etilgan maqsadga oid metama'lumotlarni belgilaydi.

Boshqarish oqimi

P4 da boshqaruv oqimi jadvallarning nisbiy ketma-ketligini aniqlaydi va bunga imkon beradi shartli ijro if / then / else konstruksiyalariga asoslangan jadvallar.

Adabiyotlar

  1. ^ "P4 tili va tegishli texnik xususiyatlar". Olingan 2 dekabr 2019.
  2. ^ "P4: dasturlash protokoli - mustaqil paketli protsessorlar". 2014 yil iyul. Olingan 7 aprel 2015.
  3. ^ "Birinchi P4 ustaxonasi". P4 rasmiy veb-sayti. Olingan 1 avgust 2019.
  4. ^ a b v d "P4-16 spetsifikatsiyasi". P4 rasmiy veb-sayti. Olingan 23 oktyabr 2019.
  5. ^ "P4 pochta ro'yxatlari". 2015 yil iyul. Olingan 15 iyul 2015.

Tashqi havolalar