P4 programming language

P4 programming language
Ang P4 usa ka programming language nga gidesinyo sa pagprograma sa packet routing rules. Dili sama sa usa ka kinatibuk-ang katuyoan nga lengguwahe sama sa C o Python, ang P4 usa ka piho nga domain nga sinultian nga adunay daghang mga laraw nga na-optimize alang sa pag-ruta sa network.

Ang P4 usa ka open source nga pinulongan nga lisensyado ug gimentinar sa usa ka non-profit nga organisasyon nga gitawag ug P4 Language Consortium. Gisuportahan usab kini sa Open Networking Foundation (ONF) ug sa Linux Foundation (LF), duha sa pinakadako nga payong nga organisasyon alang sa open source networking projects.
Ang pinulongan orihinal nga gimugna niadtong 2013 ug gihulagway sa 2014 SIGCOMM CCR nga papel nga giulohan og "Protocol Independent, Packet Routing Processor Programming."

Sukad sa pagsugod niini, ang P4 mitubo ug milambo nga paspas, dali nga nahimong sumbanan sa paghubit sa pagpadala sa mga pakete pinaagi sa mga aparato sa network, lakip ang mga adapter sa network, switch, ug mga router.

"Gibag-o sa SDN ang industriya sa networking, ug ang P4 nagdala sa SDN sa sunod nga lebel pinaagi sa pagdala sa pagkaprograma sa pagruta," ingon si Guru Parulkar, executive director sa Open Networking Foundation.

Ang P4 nga pinulongan orihinal nga gimugna sa usa ka grupo sa mga inhenyero ug tigdukiduki gikan sa Google, Intel, Microsoft Research, Barefoot, Princeton ug Stanford. Simple ra ang tumong: paghimo ug sayon-gamiton nga pinulongan nga makat-unan sa usa ka software developer sa usa ka adlaw ug magamit aron tukma nga ihulagway kung giunsa ang pagpadala sa mga pakete sa mga network.

Gikan pa sa sinugdanan, ang P4 gidesinyo nga mahimong target nga independente (sama sa usa ka programa nga gisulat sa P4 mahimong i-compile nga dili mausab aron modagan sa lain-laing mga target sama sa ASICs, FPGAs, CPUs, NPUs, ug GPUs).

Ang lengguwahe kay independente sa protocol (pananglitan, ang usa ka P4 nga programa mahimong maghulagway sa kasamtangan nga standard nga mga protocol o magamit sa pagtino sa bag-ong custom addressing modes).

Sa industriya, ang P4 gigamit alang sa pagprograma sa aparato. Tingali sa umaabot nga mga sumbanan sa Internet-RFC ug IEEE maglakip usab sa detalye sa P4.

P4 mahimong gamiton alang sa duha programmable ug fixed function device. Pananglitan, gigamit kini sa tukma nga pagrekord sa kinaiya sa switch pipeline sa Switch Abstraction Interface (SAI) API nga gigamit sa open source SONiC switch OS. Ang P4 gigamit usab sa proyekto sa ONF Stratum aron ihulagway ang pagbalhin nga pamatasan sa lainlaing mga naayos ug maprograma nga aparato.

Sa unang higayon, ang paghulagway sa kinaiya sa switch ug network adapters nagtugot kanimo sa paghimo sa usa ka tukma nga executable nga modelo sa tibuok network sa dili pa i-deploy. Ang dagkong mga cloud providers makahimo sa pagsulay ug pag-debug sa network sa hingpit gamit ang software, nga makapamenos sa oras ug gasto sa interoperability testing sa lab nga wala magkinahanglan ug mahal nga hardware.

Pinaagi sa paggamit sa P4, ang mga tigbaligya sa kagamitan sa network makadahom nga sagad nga nagpailalom nga pamatasan sa pag-ruta sa tanan nga mga produkto, gitugotan ang paggamit pag-usab sa imprastraktura sa pagsulay, pagpasimple sa pagpalambo sa software sa pagdumala, ug sa katapusan pagsiguro sa interoperability.

Siyempre, ang P4 mahimong magamit sa pagsulat sa mga programa nga naghulagway sa hingpit nga bag-ong mga paagi sa pagruta. Pananglitan, ang P4 kaylap nga gigamit alang sa telemetry ug pagsukod sa mga sentro sa datos, negosyo ug mga network sa service provider.

Ang komunidad sa panukiduki miuswag usab. Daghang nanguna nga mga grupo sa panukiduki sa networking sa akademya ang nagpatik sa makapahinam nga mga bag-ong aplikasyon nga gibase sa mga programa sa P4, lakip ang pagbalanse sa load, consensus protocol, ug key value caching. Usa ka bag-ong paradigma sa programming ang gimugna, ang kabag-ohan naglihok gikan sa hardware ngadto sa software, nga nagtugot sa daghang wala damha, bag-o ug mamugnaon nga mga ideya nga motumaw.

Ang komunidad sa nag-develop nakahimo og mahinungdanong kontribusyon sa pagpalambo sa code, lakip ang mga compiler, pipelines, mga modelo sa pamatasan, mga API, test frameworks, mga aplikasyon, ug uban pa. Ang mga kompanya sama sa Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, ug ZTE adunay gipahinungod nga mga developer; gikan sa mga unibersidad lakip ang BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, ug USI; ug open source nga mga proyekto lakip ang CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ug Stratum nagpasiugda sa kamatuoran nga ang P4 usa ka independenteng proyekto sa komunidad.

Kinaandan nga henerasyon sa mga controller para sa P4 nga pinulongan:

P4 programming language

Mga prospect sa aplikasyon

P4 programming language
Tungod kay ang lengguwahe gituyo alang sa pag-ruta sa mga aplikasyon, ang lista sa mga kinahanglanon ug mga kapilian sa disenyo lahi kung itandi sa mga lengguwahe sa programming sa kinatibuk-ang katuyoan. Ang mga nag-unang bahin sa pinulongan mao ang:

  1. Independence gikan sa target nga pagpatuman;
  2. Independence sa (mga) protocol nga gigamit;
  3. Pag-reconfigure sa field.

Independence gikan sa target nga pagpatuman

Ang mga programa sa P4 gidesinyo nga mahimong independente sa pagpatuman, nga nagpasabot nga kini mahimong i-compile para sa daghang lain-laing mga matang sa execution engine, sama sa general-purpose processors, FPGAs, system-on-chips, network processors, ug ASICs. Kining lain-laing mga matang sa mga makina nailhan nga P4 nga mga target, ug ang matag target nagkinahanglan og usa ka compiler aron sa pag-convert sa P4 source code ngadto sa usa ka target switch model. Ang compiler mahimong matukod sa target device, external software, o bisan usa ka cloud service. Tungod kay daghan sa orihinal nga mga target alang sa P4 nga mga programa kay para sa simple nga packet switching, komon kaayo nga madungog ang termino nga "P4 switch" bisan pa nga ang "P4 target" mas tukma.

Independence sa (mga) protocol nga gigamit

Ang P4 kay independente sa protocol. Kini nagpasabot nga ang pinulongan walay lumad nga suporta alang sa komon nga mga protocol sama sa IP, Ethernet, TCP, VxLAN o MPLS. Hinuon, ang P4 programmer naghulagway sa mga format sa header ug mga ngalan sa field sa gikinahanglan nga mga protocol sa programa, nga sa baylo gihubad ug giproseso sa gihugpong nga programa ug sa target device.

Pag-reconfigure sa field

Ang protocol nga independente ug abstract nga modelo sa pinulongan nagtugot alang sa reconfigurability-Ang mga target sa P4 kinahanglan nga makahimo sa pag-usab sa pagproseso sa packet human ma-deploy ang sistema. Kini nga kapabilidad tradisyonal nga nalangkit sa pag-ruta pinaagi sa mga general-purpose processors o network processors kay sa fixed-function integrated circuits.

Bisan tuod walay bisan unsa sa pinulongan nga makapugong sa pag-optimize sa performance sa usa ka partikular nga hugpong sa mga protocol, kini nga mga pag-optimize dili makita sa tagsulat sa pinulongan ug sa katapusan makapakunhod sa pagka-flexible sa sistema ug mga tumong ug sa ilang pagka-reconfigurability.

Kini nga mga kinaiya sa lengguwahe sa sinugdan gipahimutang sa mga tiglalang niini nga nagpunting sa kaylap nga paggamit niini sa imprastraktura sa network.

Ang pinulongan gigamit na sa daghang mga kompanya:

1) Hyperscale data centers;

Ang kompanya nga Intsik nga Tencent mao ang pinakadako nga kompanya sa pamuhunan sa kalibutan ug usa sa pinakadako nga kompanya sa venture capital. Ang mga subsidiary ni Tencent, sa China ug sa ubang mga nasud sa tibuok kalibutan, nag-espesyalisar sa nagkalain-laing mga dapit sa high-tech nga negosyo, lakip na ang nagkalain-laing serbisyo sa Internet, mga kalamboan sa natad sa artificial intelligence ug electronic entertainment.

Ang P4 ug programmable routing maoy mga advanced nga teknolohiya nga gigamit sa network architecture sa kompanya.

Isip usa sa mga nagmugna, ang Google mapasigarbuhon nga nakamatikod sa paspas nga pagsagop sa P4 sa industriya sa networking ug sa partikular nga disenyo sa arkitektura sa data center.

2) Komersyal nga mga kompanya;

Gipahimuslan sa Goldman Sachs ang pagtrabaho kauban ang open source nga komunidad ug pagpalambo sa komon nga mga sumbanan ug mga solusyon sa pagbag-o sa imprastraktura sa network ug paghatag og mas maayo nga mga solusyon alang sa mga kliyente.

3) Produksyon;

Makabenepisyo ang tibuok industriya sa networking gikan sa pinulongan sama sa P4 nga talagsaon nga naghubit sa kinaiya sa pagpasa. Nagtuo usab ang Cisco sa pagbalhin sa mga linya sa produkto niini aron magamit kini nga pinulongan.

Ang Juniper Networks naglakip sa P4 ug P4 Runtime sa daghang mga produkto, ug naghatag ug programmatic access sa Juniper embedded processor ug sa software code niini.

Ang Ruijie Networks usa ka kusgan nga tigsuporta sa P4 ug ang mga benepisyo nga gidala niini sa mga network. Uban sa P4, ang kompanya makahimo ug makahatag labing maayo sa klase nga mga solusyon sa daghang mga kustomer.

4) Mga tighatag sa telekomunikasyon;

Ang AT&T usa ka sayo nga nagsagop sa P4, usa sa mga una nga migamit sa P4 aron mahibal-an ang pamatasan nga gusto niini nga makita sa mga network niini, ug sa paggamit sa P4 nga mga programmable forwarding device sa network niini.

Sa Deutsche Telekom, ang lengguwahe gigamit sa pagprototype sa yawe nga mga function sa network isip kabahin sa Access 4.0 nga programa.

5) Industriya sa semiconductor;

Ang pinulongan nakapahimo sa Barefoot sa pagpatuman sa usa ka bag-ong paradigm alang sa paghatud sa mga kapabilidad sa software ngadto sa network routing plane.

Si Xilinx usa sa mga nagtukod sa P4.org ug aktibong nalambigit sa pagpalambo sa P4 nga pinulongan ug gipatuman kini ngadto sa FPGA-based programmable platforms para sa SmartNIC ug NFV hardware, nga nagpagawas sa usa sa unang P416 compiler isip kabahin sa SDNet design.

6) Software.

Nagtuo ang VMware nga ang P4 nagmugna og dako nga kusog, kabag-ohan ug komunidad nga nagduso sa makahuluganon ug kinahanglan nga pagbag-o sa network. Ang VMware nahimong bahin niining kalihukan sa industriya sukad pa sa sinugdanan, tungod kay ang usa ka bag-ong balud sa kabag-ohan gimaneho sa mga pamaagi nga nakabase sa software nga nagpalapad sa mga kapabilidad sa imprastraktura ug nagpatuman niini sa pinakabag-o nga mga produkto.

Sa ingon, ang P4 usa ka target-independent ug protocol-independent nga programming language nga gigamit sa industriya ug akademya aron sa talagsaon nga paghubit sa packet routing nga kinaiya isip usa ka programa, nga sa baylo mahimong matipon alang sa daghang mga target. Karon, ang mga target naglakip sa hardware ug software switch, hypervisor switch, NPUs, GPUs, FPGAs, SmartNICs ug ASICs.

Ang mga nag-unang bahin sa pinulongan makahuluganon nga nagpalapad sa sakup sa aplikasyon niini ug nagsiguro sa paspas nga pagpatuman niini sa mga arkitektura sa network.

Pagsugod

Ang P4 usa ka bukas nga proyekto, ang tanang may kalabutan nga impormasyon anaa sa website P4.org

Link sa repositoryo https://github.com/p4lang, diin makakuha ka pananglitan nga source code ug mga tutorial.

Plugin alang sa Eclipse nga adunay suporta nga P4, apan mahimo namon nga irekomenda P4 Studio gikan sa Barefoot.

P4 programming language

Atong tan-awon ang mga nag-unang abstraction sa kernel:

Paghubit sa mga ulohan β€” uban sa ilang tabang, ang mga ulohan sa protocol determinado.

Ang kahulugan sa ulohan nagtino:

  • paghulagway sa packet format ug header field names
  • fixed ug variable nga gitugotan nga mga natad

Pananglitan

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;
}

Mga parser β€” ang ilang tahas mao ang pag-parse sa mga ulohan.

Ang mosunod nga parser nga pananglitan magtino sa transisyon sa kataposang kahimtang sa makina gikan sa usa ka inisyal nga kahimtang ngadto sa usa sa duha ka kataposang estado:

P4 programming language

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;
        }
    }…
}

Mga Tabel - Naglangkob sa mga estado sa makina nga nag-link sa mga yawe sa tiggamit sa mga aksyon. Mga aksyon - usa ka paghulagway kung giunsa ang pagmaniobra sa pakete.

Ang mga lamesa adunay mga estado (gihubit sa lebel sa pagdumala) alang sa pagpasa sa pakete, ihulagway ang yunit sa Match-Action

Ang mga pakete gipares sa:

  • Eksakto nga tugma
  • Pinakataas nga Prefix Match (LPM)
  • Triple matching (masking)

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

Ang tanan nga posible nga mga aksyon kinahanglan nga ipasabut sa mga lamesa nga daan.

Ang mga aksyon naglangkob sa code ug data. Ang datos gikan sa lebel sa pagdumala (eg mga IP address/port number). Ang pila, wala’y loop nga mga primitibo mahimong direkta nga ipiho sa aksyon, apan ang gidaghanon sa mga panudlo kinahanglan matag-an. Busa, ang mga aksyon dili maglangkob sa bisan unsang mga loop o kondisyon nga pahayag.

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 modules β€” mga aksyon aron makahimo usa ka yawe sa pagpangita, pagpangita sa usa ka lamesa, paghimo mga aksyon.

Usa ka tipikal nga pananglitan sa usa ka module gipakita sa numero:

P4 programming language

Pagkontrol sa dagan β€” nagpaila sa han-ay diin ang Match-Action modules gigamit. Kini usa ka kinahanglanon nga programa nga naghubit sa taas nga lebel nga lohika ug pagkasunod-sunod sa Match-Action. Ang control flow nagsumpay sa tanang butang pinaagi sa pagtino sa lebel sa kontrol.

Mga butang sa gawas mao ang piho nga mga butang nga adunay klaro nga gihubit nga arkitektura ug mga interface sa API. Pananglitan, ang pagkalkula sa checksum, mga rehistro, mga counter, mga counter, ug uban pa.

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
}

Metadata - mga istruktura sa datos nga may kalabotan sa matag pakete.

Adunay 2 ka matang sa metadata:

  Pasadya nga metadata (walay sulod nga istruktura alang sa tanan nga mga pakete)
    Mahimo nimong ibutang ang bisan unsang gusto nimo dinhi
    Anaa sa tibuok pipeline
    kombenyente alang sa paggamit alang sa imong kaugalingon nga mga katuyoan, pananglitan, alang sa pagtipig sa usa ka pakete nga hash

  Internal nga metadata - gihatag sa arkitektura
    Ang input port, ang output port gihubit dinhi
    Timestamp kung ang pakete gipila, giladmon sa pila
    multicast hash / multicast nga pila
    Prioridad sa package, importansya sa package
    Desisyon sa output port (pananglitan, pila sa output)

P4 compiler

Ang P4 compiler (P4C) nagmugna:

  1. Data plane runtime
  2. API alang sa pagdumala sa kahimtang sa makina sa data plane

P4 programming language

Pananglitan sa usa ka software switch sa P4 nga pinulongan

Ang mga source code mahimong ma-download gikan sa repository.

p4lang/p4c-bm: nagmugna og JSON configuration para sa bmv2
p4lang/bmv2: usa ka software switch nga nakasabut sa bmv2 version JSON configurations

Gipakita sa numero ang diagram sa pagtipon sa proyekto:

P4 programming language

Mga manipulasyon nga adunay mga lamesa, mga rehistro sa pagbasa, mga counter:

  • 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>


Ang source code naglangkob sa simple_switch_CLI nga programa alang sa sayon ​​nga paggamit sa software switch API.

Mahimo nimong i-download kini ug uban pang mga pananglitan gikan sa repository.

P4 programming language

PS Sayo niining ting-init, gipirmahan sa Intel ang usa ka kasabutan aron makuha ang Barefoot Networks sa paningkamot nga dali nga matubag ang mga panginahanglanon sa mga tiggamit sa Hyperscale Cloud. Sama sa giingon ni Navin Shenoy (executive vice president ug general manager sa Data Center Group sa Intel Corporation), kini magtugot sa Intel nga makahatag og mas dagkong mga workloads ug mas daghang oportunidad alang sa mga kustomer sa data center.

Sa akong personal nga opinyon, dili nato kalimtan nga ang Intel usa ka lider sa produksyon sa FPGA chips ug kini adunay maayo kaayo nga palibot sa Quartus. Kini nagpasabot nga atong madahom nga sa pag-abot sa Intel, ang Barefoot dili lamang magpalapad sa linya sa produkto niini, apan ang Quartus ug P4 Studio makadawat usab og seryoso nga mga update ug mga pagdugang sa Toffino ug Toffino 2 nga linya.

Opisyal nga miyembro sa P4 community - company Grupo sa hinungdan.

Source: www.habr.com

Idugang sa usa ka comment