P4 (jazyk)

P4 je programovací jazyk pro vyjádření logiky zpracování paketů uvnitř komunikačního prvku počítačové sítě , jako je přepínač , síťová karta, směrovač nebo zařízení, za účelem provádění akcí na něm. Programovací jazyk P4 byl představen některými univerzitami podnikům v roce 2014 a je původně popsán v dokumentu SIGCOMM CCR s názvem „Programovací paketové procesory nezávislé na protokolu“. Obecný název je zkrácen na zkratku „P4“.


Síťový jazyk P4
Logo.
Vývojáři Konsorcium jazyků P4
Poslední verze P4 16 , verze 1.2.023. října 2019
Licence Apache 2
webová stránka p4.org

Původ

První workshop o jazyku P4 se konal dne 4. června 2015na Stanfordské univerzitě jí předsedali Nick McKeown ze Stanfordské univerzity a Jennifer Rexford z Princetonské univerzity . P4.org konsorcium vydala finální specifikaci nové verze jazyka s názvem P4 16 , vKvěten 2017, nahrazující první verzi jazyka s názvem P4 14 .

Zásada

Považován za vývoj softwarově definovaných sítí (SDN) , P4 umožňuje programování způsobu, jakým je tok řešen směrováním paketů na zařízení pro přenos síťových paketů, jako jsou směrovače , přepínače nebo brány firewall , ať už hardwarové nebo softwarové. Jak název napovídá „procesory nezávislé na programovacím protokolu“, jazyk nezohledňuje formát paketu . Vývojáři deklarují zpracování balíčku v programu napsaném v jazyce P4 a kompilátor jej poté umístí v požadovaném formátu podle cílového hardwaru. Programování v jazyce P4 se používá zejména k implementaci přenosových funkcí úrovně 3 a funkcí INT. Technologie In-Band Network Telemetry umožňuje měřicím přepínačům poskytovat podrobné informace o zatížení sítě a používat je k zajištění mechanismů řízení přetížení, a proto lépe spravovat velmi vysokou rychlost stability sítě.
Existují dvě verze tohoto jazyka: P4 14 a P4 16 . P4 16 provádí významné změny a není zpětně kompatibilní s P4 14 . Mnoho funkcí bylo tedy odstraněno ze základního jazyka P4 14 a již je nebo má být implementováno v externích knihovnách .

Základní schéma P4


Úkon

P4 si klade za cíl kompletní programování zpracování dat na síťových zařízeních. Tento jazyk je schopen skutečně programovat chování síťových zařízení . Algoritmus pro zpracování IPv4 paket může být jednoduše postavena. Skutečný formát paketů je jednoduše definován v programu. Níže uvedený příklad ukazuje, jak analyzovat (analyzovat) ethernetový rámec .

state parse_ethernet { packet.extract(headers.ethernet) { transition select(headers.ethernet.ethertype) { 0x8100: parse_vlan; 0x9100: parse_vlan; 0x0800: parse_ipv4; 0x86dd: parse_ipv6; default: reject; } }

Jakmile je provedena analýza příchozích paketů, jsou záhlaví extrahována a odeslána do tabulek typu „Match + Akce“. Tyto tabulky obsahují informace o odpovídajících paketech a protokolech zohledněných při jejich směrování. Zbývá jen určit akce, které mají být provedeny pro odpovídající balíčky. Jakmile je program vytvořen, stačí jej zkompilovat, aby mohl běžet na požadovaném hardwaru.

Syntax

Program typu P4 obsahuje atributy následujících klíčových komponent:

Záhlaví (záhlaví) Definice záhlaví, která popisuje posloupnost a strukturu řady polí. Zahrnuje specifikaci šířky pole a omezení hodnot pole; Parsery Definice analyzátoru určuje, jak identifikovat platné záhlaví a sekvence záhlaví v paketech; Tabulky Tabulky akcí Match + jsou mechanismem pro provádění zpracování paketů. Program P4 definuje pole, kterým může tabulka odpovídat, a akce, které může provádět; Akce P4 podporuje konstrukci složitých akcí z jednodušších primitiv nezávislých na protokolu. Tyto komplexní akce jsou k dispozici v tabulkách zápasů + akcí; Ovládací programy Kontrolní program určuje pořadí shodných + akčních tabulek, které jsou aplikovány na paket. Jednoduchý imperativní program popisuje tok řízení mezi akčními tabulkami match +. #include <core.p4> #include <v1model.p4> struct metadata {} struct headers {} parser MyParser(packet_in packet, out headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) { state start { transition accept; } } control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } control MyIngress (inout headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) { apply { if (standard_metadata.ingress_port ==1) { standard_metadata.egress_spec =2; } else if (standard_metadata.ingress_port ==2) { standard_metadata.egress_spec =1; } } } control MyIngress(inout headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) { apply { } } control MyComputeChecksum (inout headers hdr, inout metadata meta) { apply {} } control MyComputeChecksum(inout headers hdr, inout metadata meta) { apply { } control MyDeparser(packet_out packet, in headers hdr){ apply { } } V1Switch( MyParser(), MyVerifyChecksum(), MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser(), ) main;

Překladač

Aby mohl být program napsaný v P4 implementován na cílovém hardwaru, který může být hardwarového nebo softwarového typu, musí být kompilován, to znamená transformován kompilátorem, do objektového kódu . Existují dva kompilátory, jeden původně používaný pro P4 14 napsaný v Pythonu a druhý od verze P4 16 s názvem P4C. Ten, který poskytuje vývojářská skupina P4 „P4 Language Consortium“, je kompatibilní s oběma verzemi jazyka a je implementován v C ++ 11 pod licencí Apache 2. Open-source . Kompilátor má dva analyzátory, pro každou z nich dva jazyky. Analyzátor 14 programu P4 převádí program na P4 16 . P4C provádí třídílnou léčbu:


  • Front-end  : Bez ohledu na cílový hardware je zodpovědný za provádění různých ovládacích prvků programu, jako je syntaxe, sémantika, aby kód odpovídal specifikacím jazyka, poté kód podle potřeby zjednodušuje a optimalizuje;
  • Střední konec: Provádí transformace kódu tak, aby se částečně shodoval s cílem, ale nepřidává konkrétní přiřazení prostředků;
  • Backend  : Je zodpovědný za alokaci zdrojů , plánování a transformaci kódu do jazyka vyhovujícího hardwaru.


Kompilátor podporuje několik typů back-endu  :

p4c-bmv2 generuje kód ve formátu JSON , aby byl program kompatibilní s implementací na softswitches; p4c-ebpf generuje kód ve formátu C, který lze poté zkompilovat do eBPF; p4c-grafy vytváří vizuální reprezentace programu P4 (grafika řízení toku na vysoké úrovni); p4test testuje front-end programů v P4 16 .

Cíle

Jazyk P4 byl navržen tak, aby splňoval tři cíle:

  • Nabízí možnost upgradu nebo úpravy na místě: Po nasazení na hardware lze program upravit v případě, že se zpracování paketů musí vyvíjet.
  • Kromě toho jazyk: P4 není spojen se žádným síťovým protokolem a žádným konkrétním zpracováním paketů, takže nemá předem stanovenou představu o formátu paketu. To umožňuje podle potřeby definovat nové protokoly a odstraňuje omezení, jak lze jednotlivé pakety korelovat.
  • Cíl neprospívá žádnému hardwarovému závazku: Při psaní programu P4 vývojáři definují funkčnost zpracování paketů bez obav o specifika cílového hardwaru, na kterém má být program implementován.

Experimenty

P4 je jazyk, který se málo používá, ale který je stejný jako předmět experimentů s různými cíli.

Detekce útoku

Implementace P4 na softwarovém přepínači ukazuje, že jazyk lze použít k detekci útoků, například útoků SYN . P4 umožňuje flexibilitu paměti přidělené zařízení, na rozdíl od standardního síťového hardwaru, který může mít paměť pevné velikosti. Na hardwaru implementovaném s P4 je možné podle potřeby měnit velikost paměti, a tedy zaznamenávat síťový provoz. P4 tedy může pomoci v zabezpečení sítě prostřednictvím úplné znalosti datového provozu v síti. V závislosti na okolnostech útoku však experimenty ukazují, že detekce útoku je obtížnější.

Monitorování sítě

P4 umožňuje sledovat a vizualizovat informace o stavu sítě při nízkých nákladech. Na rozdíl od SDN, které přináší vysoké náklady na monitorování sítě, P4 načítá informace o stavu sítě (identifikace přepínače, ztráta paketů a obsazenost fronty atd.) Bez přidání dalších detekčních balíčků. Jakmile jsou tyto informace shromážděny, je provoz sledován v reálném čase podle stavu sítě, což umožňuje zejména eliminovat jev přetížení .

Softwarový firewall

Tento jazyk lze použít k nastavení softwarové brány firewall za nízkou cenu. V experimentu se však ukázalo, že účinnost brány firewall závisí na počtu předaných paketů. Pokud tedy může být rychlejší než některé virtualizované brány firewall, když je k dispozici méně než 1 000 paketů, jakmile je tato prahová hodnota překročena, její účinnost klesá.

Výhody

V rámci implementačních experimentů, které proběhly, se ukázalo, že jazyk P4 má několik výhod.
Zlepšuje tak zabezpečení sítě díky implementaci záhlaví a pravidel pro zpracování toků, které umožňují vyhnout se zahlcení.
Jazyk navíc poskytuje určitou flexibilitu, pokud jde o síťový hardware. Ve skutečnosti umožňuje naprogramovat zpracování paketů pouze pomocí požadavků a konzultací tabulek, nezávisle na hardwaru, na kterém je implementován, na rozdíl od tradičního síťového hardwaru, který má proprietární jazyk.
Jazyk také poskytuje schopnost analyzovat rámů a pomocí kompilátoru, zvládnout podrobnosti low-level, jako zdrojů alokace , neboť umožňuje úložné prostředky, které mají být rozděleny, a plánování.
S verzí jazyka P416 tvůrci jazyka zpřístupnili knihovny, což je výhodou pro vývoj určitých funkcí specifických pro hardware.

Nevýhody

V roce 2020 je jazyk P4 podporován velmi malým množstvím hardwaru, což omezuje jeho použití. To lze vysvětlit skutečností, že jazyk P4 je v aktivním vývoji, dodavatelé hardwaru čekají na stabilizaci a demokratizaci jazyka, než nabídnou vhodný hardware. P4 také ponechává mnoho detailů nespecifikovaných.
P4 také zvyšuje riziko vzniku běhových chyb po nasazení programů P4 nebo například chyby implementace protokolu. Nedostatek doby běhu , software zodpovědný za spouštění počítačových programů, ztěžuje řešení těchto chyb.
Navíc, v závislosti na síťové architektuře, je někdy obtížné převést specifika do P4. Jazyk P4 nedefinuje rozhraní mezi rovinou dat a rovinou řízení, jedná se o specifičnost spojenou s cílovým hardwarem. P4 umožňuje provádět akce pouze uvnitř rámců sítě nebo když byla nalezena shoda tabulky + akce; srovnávací tabulky P4 se nemohou shodovat v polích s proměnnou délkou. Porovnání mezi několika proměnnými tedy může být komplikované, zvláště když si přejeme najít nejmenší hodnotu, protože P4 může porovnávat hodnoty pouze mezi sebou v řídících objektech a může je upravovat, pouze pokud existuje shoda. V tabulce . Kromě toho tabulky korespondence P4 nemohou provádět korespondenci na polích proměnné délky.

Reference

  1. 1. workshop P4
  2. Specifikace jazyka P416
  3. Martins 2018 , s. 2  204
  4. Hill 2018 , s.  23
  5. Geng 2018 , s.  2
  6. Budiu 2017 , s.  11
  7. Hill 2018 , s.  24
  8. Wernecke 2018 , s.  2
  9. Bosshart 2014 , str.  91
  10. P4C C ++
  11. Sivaraman 2015 , s.  2
  12. P4C bmv2
  13. P4C ebpf
  14. P4C grafy
  15. Test P4C
  16. Bosshart 2014 , s.  89
  17. Geng 2018 , s.  3
  18. Geng 2018 , s.  5
  19. Turkovic 2018 , s.  45
  20. Rakesh 2018 , s.  69
  21. Hill 2018 , s.  31
  22. Zhang 2017 , s.  1714
  23. Freire 2017 , s.  2495
  24. Miguel 2018 , s.  31
  25. Hill 2018 , s.  26

Bibliografie

  • (en) Junjie Geng , Jinyao Yan , Yangbiao Ren a Yuan Zhang , „  Design and Implementation of Network Monitoring and Scheduling Architecture Based on P4  “ , ACM (Association for Computing Machinery) - Sborník z 2. mezinárodní konference o počítačové vědě a aplikačním inženýrství ,října 2018, str.  1-6 ( ISBN  9781450365123 , DOI  10.1145 / 3207677.3278059 ). Kniha použitá k napsání článku
  • (en) Belma Turkovic , Fernando Kuipers , Niels van Adrichem a Koen Langendoen , „  Rychlá detekce přetížení sítě a vyhýbání se jí pomocí P4  “ , ACM (Association for Computing Machinery) - Sborník workshopů z roku 2018 o vytváření sítí pro nové aplikace a technologie ,srpna 2018, str.  1-8 ( ISBN  9781450359078 , DOI  10.1145 / 3229574.3229581 ). Kniha použitá k napsání článku
  • (en) Joseph Hill , Mitchel Aloserij a Paola Grosso , „  Tracking Network Flows with P4  “ , 2018 IEEE / ACM Inovating the Network for Data-Intensive Science (INDIS) ,listopadu 2018, str.  36-43 ( ISBN  9781728101941 , DOI  10,1109 / INDIS.2018.00006 ). Kniha použitá k napsání článku
  • (en) Jehandad Khan a Peter Athanas , „  Dotazovací jazyk pro rozsáhlé ladění sítě P4  “ , ACM (Association for Computing Machinery) - Sborník sympozia 2018 o architekturách pro síťové a komunikační systémy ,července 2018, str.  162-164 ( ISBN  9781450359023 , DOI  10.1145 / 3230718.3232108 )
  • (en) Christian Wernecke , Helge Parzyjegla , Gero Muhl , Peter Danielis a Dirk Timmermann , „  Realizace obsahu / publikování / přihlášení k odběru s P4  “ , 2018 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN) ,listopadu 2018, str.  1-7 ( DOI  10.1109 / NFV-SDN.2018.8725641 ). Kniha použitá k napsání článku
  • (en) Regis FT Martins , Fabio L Verdi , Rodolfo Villaca a Luis Fernando U Garcia , „  Využití pravděpodobnostních datových struktur pro monitorování sítí založených na více klientech P4  “ , 2018 IEEE Symposium on Computers and Communications (ISCC) ,června 2018, str.  204-207 ( ISBN  9781538669501 , DOI  10.1109 / ISCC.2018.8538352 ). Kniha použitá k napsání článku
  • (en) Anirudh Sivaraman , Kim Changhoon , Ramkumar Krishnamoorthy , Advait Dixit a Mihai Budiu , „  DC.p4: programování směrovací roviny přepínače datového centra  “ , Sborník 1. sympozia ACM SIGCOMM o softwarově definovaném síťovém výzkumu ,června 2015, str.  1-8 ( ISBN  9781450334518 , DOI  10.1145 / 2774993.2775007 ). Kniha použitá k napsání článku
  • (en) Elie F Kfoury , Jorge Crichigno , Elias Bou-Harb , David Khoury a Gautam Srivastava , „  Povolení stimulace TCP pomocí programovatelných přepínačů datové roviny  “ , publikace konference IEEE - 42. mezinárodní konference o telekomunikacích a zpracování signálu (TSP) ,července 2019, str.  273-277 ( ISBN  9781728118642 , DOI  10.1109 / TSP.2019.8768888 )
  • (en) Zijun Hang , Mei Wen , Yang Shi a Chunyuan Zhang , „  Programování na vysoké úrovni nezávislých paketových procesorů programovacích protokolů (P4HLP): Směrem k jednotnému programování na vysoké úrovni pro programovatelný přepínač zboží  “ , adresář časopisů s otevřeným přístupem (DOAJ) ) , sv.  8 odst. 9,srpna 2019, str.  958 ( ISSN  2079-9292 , DOI  10,3390 / elektronika8090958 )
  • (en) Mihai Budiu a Chris Dodd , „  Programovací jazyk P416  “ , Digitální knihovna ACM (Association for Computing Machinery) - ACM SIGOPS Operating Systems Review , sv.  51, n o  1,Říjen-prosinec 2017, str.  5-14 ( ISSN  1943-586X , DOI  10.1145 / 3139645.3139648 )
  • (en) Radek Isa , Pavel Benacek a Viktor Pus , „  Ověření generovaného RTL ze zdrojového kódu P4  “ , 26. mezinárodní konference IEEE o síťových protokolech (ICNP) ,září 2018, str.  444-445 ( ISBN  9781538660430 , DOI  10.1109 / ICNP.2018.00065 )
  • (en) Rui Miguel , Salvatore Signorello a Fernando M. V Ramos , „  Named Data Networking with Programmable Switches  “ , 26. mezinárodní konference IEEE o síťových protokolech (ICNP) ,září 2018, str.  400-405 ( ISBN  9781538660430 , DOI  10.1109 / ICNP.2018.00055 ). Kniha použitá k napsání článku
  • (en) Lucas Freire , Miguel Neves , Alberto Schaeffer-Filho a Marinho Barcellos , „  POSTER: Hledání chyb zabezpečení v programech P4 s ověřováním založeným na tvrzení  “ , IEEE Concurrency ,října 2017, str.  2495-2497 ( ISBN  9781450349468 , DOI  10.1145 / 3133956.3138837 ). Kniha použitá k napsání článku
  • (en) Cheng Zhang , Jun Bi , Yu Zhou , Jianping Wu , Bingyang Liu , Zhaogeng Li , Abdul Basit Dogar a Yangyang Wang , „  P4DB: okamžité ladění programovatelného datového letadla  “ , 25. mezinárodní konference IEEE o síti Protokoly (ICNP) ,října 2017, str.  1–10 ( ISBN  9781509065011 , DOI  10.1109 / ICNP.2017.8117548 ). Kniha použitá k napsání článku
  • (en) Jeferson Santiago Da Silva , François-Raymond Boyer , Laurent-Olivier Chiquette a JM Pierre Langlois , „  Extern Objects in P4: an ROHC Header Compression Scheme Scheme Case  “ , 4. konference IEEE o softwarovéwarwarizaci a seminářích sítě (NetSoft) ,června 2018( ISBN  978-1-5386-4633-5 , DOI  10.1109 / NETSOFT.2018.8460108 )
  • (en) Radu Stoenescu , Dragos Dumitrescu , Matei Popovici , Lorina Negreanu et Costin Raiciu , „  Debugging P4 programs with vera  “ , Sborník příspěvků z konference 2018 zájmové skupiny ACM o datové komunikaci ,srpna 2018, str.  518-532 ( ISBN  9781450355674 , DOI  10.1145 / 3230543.3230548 )
  • (en) Peilong Li a Yan Luo , „  P4GPU: Zrychlete zpracování paketů programu P4 s heterogenní architekturou CPU-GPU  “ , ACM / IEEE Symposium on Architectures for Networking and Communications Systems (ANCS) ,března 2016, str.  125-126 ( ISBN  9781450341837 , DOI  10.1145 / 2881025.2889480 )
  • (en) Pavel Benáček , Viktor Puš , Hana Kubátová a Tomáš Čejka , „  P4-To-VHDL: Automatické generování vysokorychlostních vstupních a výstupních síťových bloků  “ , Microprocessors and Microsystems , sv.  56,února 2018, str.  22-33 ( ISBN  978-1-7281-0194-1 , DOI  10,1016 / j.micpro.2017.10.012 )
  • (en) Pat Bosshart , Dan Daly , Glen Gibb , Martin Izzard , Nick Mckeown , Jennifer Rexford , Cole Schlesinger , Dan Talayco , Amin Vahdat , George Varghese a David Walker , „  P4: programování paketových procesorů nezávislých na protokolu  “ , ACM SIGCOMM Computer Communication Review , sv.  44, n o  3,července 2014, str.  87-95 ( ISSN  1943-5819 , DOI  10,1145 / 2.656.877,2656890 ). Kniha použitá k napsání článku
  • (en) Ali Kheradmand a Grigore Rosu , „  P4K: Formální sémantika P4 a aplikací  “ , Cornell University ,dubna 2018( arXiv  1804.01468 )
  • (en) F Paolucci , F Civerchia , A Sgambelluri , A Giorgetti , F Cugini a P Castoldi , „  uzel P4 Edge umožňující stavové dopravní inženýrství a kybernetickou bezpečnost  “ , IEEE / OSA Journal of Optical Communications and Networking , sv.  11, n o  1,ledna 2019, A84-A95 ( ISSN  1943-0639 )
  • (en) Bin Niu , Jiawei Kong , Shaofei Tang , Yingcong Li a Zuqing Zhu , „  Vizualizujte svou IP-over-optickou síť v reálném čase: flexibilní vícevrstvý pásmový síťový telemetrický systém (ML-INT) založený na P4  “ , IEEE Access , sv.  7,června 2019( ISSN  2169-3536 , DOI  10.1109 / ACCESS.2019.2924332 )
  • (en) Miguel Neves , Lucas Freire , Alberto Schaeffer-Filho a Marinho Barcellos , „  Ověření programů P4 v reálném čase s využitím tvrzení  “ , ACM Digital Library (Asociace pro výpočetní techniku) - sborník ze 14. mezinárodní konference o nově vznikajících experimentech v síti a technologie ,prosince 2018, str.  73-85 ( ISBN  9781450360807 , DOI  10.1145 / 3281411.3281421 )
  • (en) Datta Rakesh , Choi Sean , Chowdhary Anurag a Park Younghee , „  P4Guard: Designing P4 Based Firewall  “ , MILCOM 2018-2018 IEEE Military Communications Conference (MILCOM), říjen 2018, s. 1-6 ,října 2018, str.  1-6 ( ISBN  9781538671856 , DOI  10.1109 / MILCOM.2018.8599726 ). Kniha použitá k napsání článku
  • (en) Jed Liu , William Hallahan , Cole Schlesinger , Milad Sharif , Jeongkeun Lee , Robert Soulé , Han Wang a Călin Caşcaval , „  p4v: praktické ověření programovatelných datových letadel  “ , Sborník z konference 2018 zájmové skupiny ACM o datová komunikace ,srpna 2018, str.  490-503 ( ISBN  9781538671856 , DOI  10.1145 / 3230543.3230582 )

externí odkazy

Související články