P4 Programméiersprooch

P4 Programméiersprooch
P4 ass eng Programméierungssprooch entwéckelt fir Package Routing Regelen ze programméieren. Am Géigesaz zu enger allgemenger Zweck Sprooch wéi C oder Python, ass P4 eng Domain-spezifesch Sprooch mat enger Zuel vun Designen optimiséiert fir Netzwierk Routing.

P4 ass eng Open Source Sprooch lizenzéiert an ënnerhal vun enger ASBL genannt P4 Language Consortium. Et gëtt och ënnerstëtzt vun der Open Networking Foundation (ONF) an der Linux Foundation (LF), zwee vun de gréissten Daachorganisatiounen fir Open Source Netzwierkprojeten.
D'Sprooch gouf ursprénglech am Joer 2013 geprägt a beschriwwen an engem 2014 SIGCOMM CCR Pabeier mam Titel "Protocol Independent, Packet Routing Processor Programming."

Zënter senger Grënnung ass P4 exponentiell gewuess an evoluéiert, a gouf séier e Standard fir d'Transmissioun vu Pakete vun Netzwierkapparater ze beschreiwen, dorënner Netzwierkadapter, Schalter a Router.

"SDN huet d'Netzwierkindustrie transforméiert, a P4 hëlt SDN op den nächsten Niveau andeems Dir Programméierbarkeet op Routing bréngt", sot de Guru Parulkar, Exekutivdirekter vun der Open Networking Foundation.

D'P4 Sprooch gouf ursprénglech vun enger Grupp vun Ingenieuren a Fuerscher vu Google, Intel, Microsoft Research, Barefoot, Princeton a Stanford erstallt. D'Zil war einfach: eng einfach ze benotzen Sprooch erstellen déi e Softwareentwéckler an engem Dag léiere konnt a benotze fir präzis ze beschreiwen wéi Päckchen iwwer Netzwierker geschéckt ginn.

Vun Ufank u war P4 entworf fir Zil-onofhängeg ze sinn (dh e Programm geschriwwen an P4 konnt onverännert kompiléiert ginn fir op verschidden Ziler wéi ASICs, FPGAs, CPUs, NPUs a GPUs ze lafen).

D'Sprooch ass och protokollonofhängeg (dh e P4 Programm kann existéierend Standardprotokoller beschreiwen oder benotzt ginn fir nei personaliséiert Adressmodi ze spezifizéieren).

An der Industrie gëtt P4 fir Apparatprogramméierung benotzt. Vläicht an Zukunft wäert Internet-RFC an IEEE Standarden och d'P4 Spezifizéierung enthalen.

P4 ka fir programméierbar a fix Funktiounsgeräter benotzt ginn. Zum Beispill gëtt et benotzt fir präzis Schalter Pipeline Verhalen an de Switch Abstraction Interface (SAI) APIs opzehuelen, déi vum Open Source SONiC Switch OS benotzt ginn. P4 gëtt och am ONF Stratum Projet benotzt fir Schaltverhalen iwwer eng Vielfalt vu fixen a programméierbare Geräter ze beschreiwen.

Fir d'éischte Kéier, d'Beschreiwung vum Verhalen vum Schalter an Netzwierkadapter erlaabt Iech e genee ausführbare Modell vum ganze Netz virum Deployment ze kreéieren. Grouss Cloud Provider kënnen d'Netzwierk ganz mat Software testen an debuggen, wat d'Zäit an d'Käschte vum Interoperabilitéitstest am Labo wesentlech reduzéieren ouni deier Hardware ze erfuerderen.

Andeems Dir P4 benotzt, kënnen Netzwierkausrüstungsverkeefer e gemeinsamt ënnerierdesch Routingverhalen iwwer all Produkter erwaarden, wat d'Wiederverwendung vun der Testinfrastruktur erlaabt, d'Verwaltungssoftwareentwécklung vereinfacht, a schlussendlech Interoperabilitéit assuréieren.

Natierlech kann P4 benotzt ginn fir Programmer ze schreiwen déi komplett nei Weeër vu Routing beschreiwen. Zum Beispill gëtt P4 wäit benotzt fir Telemetrie a Miessunge an Datenzenteren, Entreprisen a Service Provider Netzwierker.

D'Fuerschungsgemeinschaft ass och eropgaang. Verschidde führend akademesch Netzwierkfuerschungsgruppen hunn spannend nei Uwendungen publizéiert op Basis vu P4 Programmer, dorënner Laaschtbalancéierung, Konsensprotokoller a Schlësselwäert-Caching. En neit Programméierungsparadigma gëtt geschaf, Innovatioun geet vun Hardware op Software, sou datt vill onerwaart, nei an genial Iddien entstoen.

D'Entwécklergemeinschaft huet bedeitend Bäiträg zur Codeentwécklung gemaach, dorënner Compilers, Pipelines, Verhalensmodeller, APIen, Testframeworks, Uwendungen, a méi. Firmen wéi Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, an ZTE hunn engagéiert Entwéckler; vun Universitéiten dorënner BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, an USI; an Open Source Projeten dorënner CORD, FD.io, OpenDaylight, ONOS, OvS, SAI a Stratum Highlight d'Tatsaach datt P4 en onofhängege Gemeinschaftsprojet ass.

Typesch Generatioun vu Controller fir d'P4 Sprooch:

P4 Programméiersprooch

Applikatioun Perspektiven

P4 Programméiersprooch
Zënter datt d'Sprooch fir Routing Uwendungen geduecht ass, ass d'Lëscht vun Ufuerderungen an Designoptiounen anescht wéi allgemeng Zweck Programméierungssproochen. D'Haaptmerkmale vun der Sprooch sinn:

  1. Onofhängegkeet vun Zil Ëmsetzung;
  2. Onofhängegkeet vum Protokoll (en) benotzt;
  3. Feld reconfigurability.

Onofhängegkeet vun Zil Ëmsetzung

P4 Programmer sinn entwéckelt fir Implementéierung onofhängeg ze sinn, dat heescht datt se fir vill verschidden Aarte vun Ausféierungsmotoren zesummegesat kënne ginn, sou wéi allgemeng Zweckprozessoren, FPGAs, System-on-Chips, Netzwierkprozessoren an ASICs. Dës verschidden Aarte vu Maschinnen sinn als P4 Ziler bekannt, an all Zil erfuerdert e Compiler fir de P4 Quellcode an en Zilschaltmodell ze konvertéieren. De Compiler kann an den Zilapparat, extern Software oder souguer e Cloud-Service agebaut ginn. Well vill vun den ursprénglechen Ziler fir P4 Programmer fir einfache Paketschalter waren, ass et ganz heefeg de Begrëff "P4 Schalter" ze héieren, och wann "P4 Zil" méi genau ass.

Onofhängegkeet vum Protokoll (en) benotzt

P4 ass protokollonofhängeg. Dëst bedeit datt d'Sprooch keng gebierteg Ënnerstëtzung fir gemeinsame Protokoller wéi IP, Ethernet, TCP, VxLAN oder MPLS huet. Amplaz beschreift de P4 Programméierer d'Headerformater a Feldnimm vun den erfuerderleche Protokoller am Programm, déi am Tour interpretéiert a veraarbecht ginn vum kompiléierte Programm an dem Zilapparat.

Feld reconfigurability

D'Protokollonofhängegkeet an den abstrakte Sproochmodell erlaabt d'Rekonfigurabilitéit - P4 Ziler solle fäeg sinn d'Päckveraarbechtung z'änneren nodeems de System ofgebaut ass. Dës Kapazitéit ass traditionell verbonne mat Routing duerch allgemeng Zweck Prozessoren oder Netzwierkprozessoren anstatt fixe Funktioun integréiert Circuits.

Och wann et näischt an der Sprooch ass, déi d'Optimisatioun vun der Leeschtung vun engem bestëmmte Set vu Protokoller verhënneren, sinn dës Optimisatiounen onsichtbar fir de Sproochautor a kënnen schlussendlech d'Flexibilitéit vum System an Ziler an hir Rekonfigurabilitéit reduzéieren.

Dës Charakteristike vun der Sprooch goufen ufanks vu senge Creatoren festgeluecht mat engem Fokus op seng verbreet Notzung an der Netzwierkinfrastruktur.

D'Sprooch gëtt scho a ville Firmen benotzt:

1) Hyperscale Datenzentren;

Déi chinesesch Firma Tencent ass déi gréissten Investitiounsfirma op der Welt an eng vun de gréisste Venture Capital Firmen. Tencent Filialen, souwuel a China an an anere Länner ronderëm d'Welt, spezialiséiert op verschidde Beräicher vun High-Tech Geschäft, dorënner verschidde Internet Servicer, Entwécklungen am Beräich vun kënschtlech Intelligenz an elektronesch Ënnerhalung.

P4 a programméierbar Routing sinn fortgeschratt Technologien déi an der Netzarchitektur vun der Firma benotzt ginn.

Als ee vun den Originatoren ass Google houfreg déi séier Adoptioun vu P4 an der Netzwierkindustrie an am Rechenzentrum architektoneschen Design ze notéieren.

2) Kommerziell Firmen;

Goldman Sachs profitéiert vun der Aarbecht mat der Open Source Gemeinschaft an d'Entwécklung vu gemeinsame Standarden a Léisunge fir Netzwierkinfrastrukturen ze innovéieren a besser Léisunge fir Clienten ze bidden.

3) Produktioun;

Déi ganz Netzwierkindustrie géif vun enger Sprooch wéi P4 profitéieren, déi d'Forwardverhalen eenzegaarteg definéiert. Cisco gleeft och un seng Produktlinnen ze transferéieren fir dës Sprooch ze benotzen.

Juniper Networks huet P4 an P4 Runtime an enger Rei vu Produkter abegraff, a bitt programmatesch Zougang zum Juniper embedded Prozessor a säi Softwarecode.

Ruijie Networks ass e staarke Supporter vu P4 an d'Virdeeler déi et fir Netzwierker bréngt. Mat P4 kann d'Firma bescht-an-Klass Léisunge fir eng breet Palette vu Clienten erstellen a liwweren.

4) Telekommunikatioun Ubidder;

AT&T war e fréien Adopter vu P4, ee vun den éischten, deen P4 benotzt huet fir d'Verhalen ze definéieren, déi et a senge Netzwierker gesinn wollt, an P4 programméierbar Forwarding-Geräter op sengem Netz ze benotzen.

Bei Deutsche Telekom gëtt d'Sprooch benotzt fir Schlësselnetzfunktiounen als Deel vum Access 4.0 Programm ze prototypéieren.

5) Semiconductor Industrie;

D'Sprooch huet Barefoot aktivéiert fir en neit Paradigma ëmzesetzen fir Softwarefäegkeeten an d'Netzwierk Routing Fliger ze liwweren.

Xilinx war ee vun de Grënner vu P4.org a war aktiv an der Entwécklung vun der P4 Sprooch involvéiert an huet se an FPGA-baséiert programméierbar Plattforme fir SmartNIC an NFV Hardware ëmgesat, an huet ee vun den éischte P416 Compileren als Deel vum SDNet Design verëffentlecht.

6) Software.

VMware mengt datt P4 enorm Energie, Innovatioun a Gemeinschaft erstellt déi sënnvoll an noutwendeg Transformatioun am Netz féiert. VMware ass zënter dem Ufank Deel vun dëser Industriebewegung, well eng nei Welle vun Innovatioun duerch Software-baséiert Approche gedriwwe gëtt, déi d'Infrastrukturfäegkeeten ausdehnen an se an de leschte Produkter implementéieren.

Also ass P4 eng Zil-onofhängeg a protokollonofhängeg Programméierungssprooch déi vun der Industrie an der Akademie benotzt gëtt fir Package Routing Verhalen als e Programm eenzegaarteg ze definéieren, deen am Tour fir verschidde Ziler zesummegesat ka ginn. Haut enthalen Ziler Hardware- a Softwareschalter, Hypervisorschalter, NPUs, GPUs, FPGAs, SmartNICs an ASICs.

D'Haaptmerkmale vun der Sprooch erweideren den Ëmfang vu senger Uwendung wesentlech a suergen fir seng séier Implementatioun an Netzwierkarchitekturen.

Schrëtt;

P4 ass en oppene Projet, all relevant Informatioun ass op der Websäit P4.org

Repository Link https://github.com/p4lang, wou Dir Beispill Quellcode an Tutorials kritt.

Astiechen fir Eclipse mat P4 Ënnerstëtzung, mee mir kënnen recommandéieren P4 Studio vun Barefoot.

P4 Programméiersprooch

Loosst eis d'Haaptabstraktioune vum Kernel kucken:

Header definéieren - mat hirer Hëllef gi Protokoll Header bestëmmt.

D'Header Definitioun spezifizéiert:

  • Beschreiwung vu Paketformater an Header Feldnimm
  • fix a variabel erlaabt Felder

Zum Beispill

header Ethernet_h{
    bit<48>  dstAddr;
    bit<48>  srcAddr;
    bit<16>  etherType;
}

header IPv4_h{
    bit<4>  version;
    bit<4>  ihl;
    bit<8>  diffserv;
    bit<16>  totalLen;
    bit<16>  identification;
    bit<3>  flags;
    bit<13>  fragOffset;
    bit<8>  ttl;
    bit<8>  protocol;
    bit<16>  hdrChecksum;
    bit<32>  srcAddr;
    bit<32>  dstAddr;
    varbit<320>  options;
}

Parsers - hir Aufgab ass d'Schlagzeilen ze analyséieren.

Déi folgend Parser Beispill wäert den Iwwergank vum finalen Zoustand vun der Maschinn vun engem initialen Zoustand an ee vun zwee Finale Staaten bestëmmen:

P4 Programméiersprooch

parser MyParser(){
 state  start{transition parse_ethernet;}
 state  parse_ethernet{
    packet.extract(hdr.ethernet);
    transition select(hdr.ethernet.etherType){
        TYPE_IPV4: parse_ipv4;
        default: accept;
        }
    }…
}

Dëscher - enthalen Maschinn Staaten déi Benotzerschlëssel mat Aktiounen verbannen. Actions - eng Beschreiwung wéi de Package manipuléiert soll ginn.

D'Tabellen enthalen Staaten (definéiert um Gestiounsniveau) fir Package Forwarding, beschreiwen d'Match-Action Eenheet

D'Pakete gi mat:

  • Genau Match
  • Längste Präfix Match (LPM)
  • Triple Matching (Maskéieren)

table ipv4_lpm{
    reads{
        ipv4.dstAddr: lpm;
    } actions {
        forward();
    }
}

All méiglech Aktiounen mussen am Viraus an Tabellen definéiert ginn.

Aktiounen besteet aus Code an Daten. D'Donnéeë kommen aus dem Managementniveau (zB IP Adressen / Portnummeren). Bestëmmte, schleiffräie Primitiv kënnen direkt an der Handlung spezifizéiert ginn, awer d'Zuel vun den Instruktiounen muss prévisibel sinn. Dofir kënnen d'Aktiounen keng Loops oder bedingte Aussoen enthalen.

action ipv4_forward(macAddr_t dstAddr, egressSpec_t port){
    standard_metadata.egress_spec = port;
    hdr.ethernet.srcAddr = hdr.ethernet.dstAddr;
    hdr.ethernet.dstAddr = dstAddr;
    hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
}

Match-Action Moduler - Aktiounen fir e Sichschlëssel ze kreéieren, an enger Tabell ze sichen, Aktiounen auszeféieren.

En typescht Beispill vun engem Modul gëtt an der Figur gewisen:

P4 Programméiersprooch

Kontroll Flux - weist d'Uerdnung un an där Match-Action Moduler benotzt ginn. Dëst ass en Imperativ Programm deen déi héich Niveau Logik an Match-Action Sequenz definéiert. De Kontrollfloss verbënnt all Objeten andeems Dir den Niveau vun der Kontroll definéiert.

Extern Objeten si spezifesch Objekter mat enger kloer definéierter Architektur an API Interfaces. Zum Beispill, Checksum Berechnung, Registere, counters, counters, etc.

extern register{
    register(bit<32> size);
    void read(out T result, in bit<32> index);
    void write(in bit<32> index, in T value);
}

extern Checksum16{
  Checksum16();    //constructor
  void clear();    //prepare unit for computation
  void update(in T data);    //add data to checksum
  void remove(in T data);  /remove data from existing checksum
  bit<16> get(); //get the checksum for the data added since last clear
}

Metadaten - Datenstrukture verbonne mat all Package.

Et ginn 2 Aarte vu Metadaten:

  Benotzerdefinéiert Metadaten (eidel Struktur fir all Packagen)
    Dir kënnt hei setzen wat Dir wëllt
    Verfügbar an der ganzer Pipeline
    praktesch fir Är eegen Zwecker ze benotzen, zum Beispill fir e Package Hash ze späicheren

  Intern Metadaten - vun der Architektur geliwwert
    Input Hafen, Ausgangsport sinn hei definéiert
    Zäitstempel wann de Pak an der Schlaang war, Schlaang Déift
    multicast hash / multicast queue
    Package Prioritéit, Package Wichtegkeet
    Ausgangsport Spezifizéierung (zB Ausgangsschlaang)

P4 Compiler

De P4 Compiler (P4C) generéiert:

  1. Daten Fliger Runtime
  2. API fir d'Gestioun vum Maschinnstand am Dateplang

P4 Programméiersprooch

Beispill vun engem Software schalt an P4 Sprooch

Quellcodes kënnen aus dem Repository erofgeluede ginn.

p4lang/p4c-bm: erstellt JSON Konfiguratioun fir bmv2
p4lang/bmv2: e Softwareschalter dee versteet bmv2 Versioun JSON Konfiguratiounen

D'Figur weist de Projet Compilatiounsdiagramm:

P4 Programméiersprooch

Manipulatiounen mat Dëscher, Liesregisteren, Zähler:

  • table_set_default <table name> <action name> <action parameters>
  • table_add <table name> <action name> <match fields> => <action
    parameters> [priority]
  • table_delete <table name> <entry handle>


De Quellcode enthält den simple_switch_CLI Programm fir bequem Notzung vun der Softwareschalter API.

Dir kënnt dëst an aner Beispiller aus dem Repository eroflueden.

P4 Programméiersprooch

PS Fréi dëse Summer huet Intel en Accord ënnerschriwwen fir Barefoot Networks ze kréien an engem Effort fir séier d'Bedierfnesser vun Hyperscale Cloud Benotzer z'erreechen. Wéi den Navin Shenoy (Exekutiv Vizepräsident a Generaldirekter vun der Data Center Group bei Intel Corporation) gesot huet, dëst wäert Intel erlaben méi grouss Aarbechtslaascht a méi Méiglechkeete fir Datenzenter Clienten ze bidden.

A menger perséinlecher Meenung sollte mir net vergiessen datt Intel e Leader an der Produktioun vu FPGA Chips ass an et huet en exzellent Quartus Ëmfeld. Dëst bedeit datt mir kënne erwaarden datt mat der Arrivée vun Intel, Barefoot net nëmmen seng Produktlinn erweidert, awer och Quartus a P4 Studio kréien sérieux Updates an Ergänzunge vun der Toffino an Toffino 2 Linn.

Offiziell Member vun der P4 Communautéit - Firma Faktor Grupp.

Source: will.com

Setzt e Commentaire