P4 forritunarmál

P4 forritunarmál
P4 er forritunarmál sem er hannað til að forrita pakkaleiðarreglur. Ólíkt almennu tungumáli eins og C eða Python, er P4 lénssértækt tungumál með fjölda hönnunar sem er fínstillt fyrir netleiðsögn.

P4 er opinn uppspretta tungumál með leyfi og viðhaldið af sjálfseignarstofnun sem heitir P4 Language Consortium. Það er einnig stutt af Open Networking Foundation (ONF) og Linux Foundation (LF), tveimur af stærstu regnhlífasamtökunum fyrir opinn uppspretta netverkefna.
Tungumálið var upphaflega búið til árið 2013 og lýst í 2014 SIGCOMM CCR grein sem ber yfirskriftina „Protocol Independent, Packet Routing Processor Programming“.

Frá upphafi hefur P4 vaxið og þróast veldishraða, fljótt að verða staðall til að lýsa sendingu pakka með nettækjum, þar á meðal netkortum, rofum og beinum.

„SDN hefur umbreytt netiðnaðinum og P4 tekur SDN upp á næsta stig með því að færa forritanleika til leiðar,“ sagði Guru Parulkar, framkvæmdastjóri Open Networking Foundation.

P4 tungumálið var upphaflega búið til af hópi verkfræðinga og vísindamanna frá Google, Intel, Microsoft Research, Barefoot, Princeton og Stanford. Markmiðið var einfalt: búa til auðvelt í notkun tungumál sem hugbúnaðarframleiðandi gæti lært á einum degi og notað til að lýsa nákvæmlega hvernig pakkar eru sendir yfir netkerfi.

Frá upphafi var P4 hannað til að vera markóháð (þ.e. forrit skrifað í P4 gæti verið sett saman óbreytt til að keyra á ýmsum markmiðum eins og ASIC, FPGA, CPU, NPU og GPU).

Tungumálið er einnig óháð samskiptareglum (þ.e. P4 forrit getur lýst núverandi stöðluðum samskiptareglum eða verið notað til að tilgreina nýjar sérsniðnar aðfangastillingar).

Í iðnaði er P4 notað fyrir tækjaforritun. Kannski munu Internet-RFC og IEEE staðlar í framtíðinni einnig innihalda P4 forskriftina.

P4 er hægt að nota fyrir bæði forritanleg og fastvirk tæki. Til dæmis er það notað til að skrá hegðun rofaleiðsla nákvæmlega í Switch Abstraction Interface (SAI) API sem notuð eru af opnum uppsprettu SONiC switch OS. P4 er einnig notað í ONF Stratum verkefninu til að lýsa skiptahegðun á ýmsum föstum og forritanlegum tækjum.

Í fyrsta skipti gerir lýsing á hegðun rofans og netmillistykki þér kleift að búa til nákvæmt keyranlegt líkan af öllu netkerfinu fyrir uppsetningu. Stórir skýjaveitur geta prófað og villuleit netið alfarið með því að nota hugbúnað, sem dregur verulega úr tíma og kostnaði við samvirkniprófanir í rannsóknarstofunni án þess að þurfa dýran vélbúnað.

Með því að nota P4 geta framleiðendur netbúnaðar búist við sameiginlegri undirliggjandi leiðarhegðun í öllum vörum, sem gerir kleift að endurnýta prófunarinnviði, einfalda þróun stjórnunarhugbúnaðar og að lokum tryggja samvirkni.

Auðvitað er hægt að nota P4 til að skrifa forrit sem lýsa alveg nýjum leiðum. Til dæmis er P4 mikið notað fyrir fjarmælingar og mælingar í gagnaverum, fyrirtækja- og þjónustuveituretum.

Rannsóknasamfélagið hefur einnig tekið sig upp. Nokkrir leiðandi fræðihópar um netrannsóknir hafa gefið út spennandi ný forrit byggð á P4 forritum, þar á meðal álagsjafnvægi, samstöðusamskiptareglur og skyndiminni fyrir lykilgildi. Nýtt forritunarfyrirmynd er að skapast, nýsköpun færist frá vélbúnaði yfir í hugbúnað, sem gerir mörgum óvæntum, nýjum og sniðugum hugmyndum kleift að koma fram.

Þróunarsamfélagið hefur lagt mikið af mörkum til þróunar kóða, þar á meðal þýðendur, leiðslur, hegðunarlíkön, API, prófunarramma, forrit og fleira. Fyrirtæki eins og Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx og ZTE hafa sérstaka þróunaraðila; frá háskólum þar á meðal BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass og USI; og opinn uppspretta verkefni þar á meðal CORD, FD.io, OpenDaylight, ONOS, OvS, SAI og Stratum varpa ljósi á þá staðreynd að P4 er sjálfstætt samfélagsverkefni.

Dæmigerð kynslóð stýringa fyrir P4 tungumálið:

P4 forritunarmál

Umsóknarhorfur

P4 forritunarmál
Þar sem tungumálið er ætlað til að beina forritum er listi yfir kröfur og hönnunarmöguleika öðruvísi en almenn forritunarmál. Helstu eiginleikar tungumálsins eru:

  1. Óháð markmiðum framkvæmd;
  2. Óháð samskiptareglum sem notuð eru;
  3. Endurstillingarhæfni reits.

Óháð markmiðsframkvæmd

P4 forrit eru hönnuð til að vera framkvæmd óháð, sem þýðir að hægt er að setja þau saman fyrir margar mismunandi gerðir af framkvæmdarvélum, svo sem almennum örgjörvum, FPGA, kerfisflögum, netörgjörvum og ASIC. Þessar mismunandi gerðir af vélum eru þekktar sem P4 skotmörk og hvert skot þarf þýðanda til að breyta P4 frumkóðanum í markskiptalíkan. Hægt er að byggja þýðandann inn í marktækið, utanaðkomandi hugbúnað eða jafnvel skýjaþjónustu. Vegna þess að mörg af upphaflegu markmiðunum fyrir P4 forrit voru fyrir einfalda pakkaskipti, er mjög algengt að heyra hugtakið "P4 switch" jafnvel þó "P4 target" sé nákvæmara.

Óháð samskiptareglum sem notuð eru

P4 er óháð samskiptareglum. Þetta þýðir að tungumálið hefur ekki innfæddan stuðning fyrir algengar samskiptareglur eins og IP, Ethernet, TCP, VxLAN eða MPLS. Þess í stað lýsir P4 forritarinn haussniðum og reitheitum nauðsynlegra samskiptareglna í forritinu, sem aftur eru túlkuð og unnin af samsetta forritinu og marktækinu.

Endurstillingarhæfni reits

Sjálfstæði samskiptareglur og óhlutbundið tungumálalíkan gerir kleift að stilla aftur - P4 markmið ættu að geta breytt pakkavinnslu eftir að kerfið hefur verið sett í notkun. Þessi hæfileiki hefur jafnan verið tengdur við beina í gegnum almenna örgjörva eða netörgjörva frekar en samþættar rafrásir með fasta virka.

Þó að það sé ekkert á tungumálinu sem myndi koma í veg fyrir hagræðingu á frammistöðu tiltekins setts samskiptareglur, þá eru þessar hagræðingar ósýnilegar tungumálahöfundinum og geta að lokum dregið úr sveigjanleika kerfisins og markmiða og endurstilla þeirra.

Þessir eiginleikar tungumálsins voru upphaflega settir fram af höfundum þess með áherslu á útbreidda notkun þess í netinnviðum.

Tungumálið er nú þegar notað í mörgum fyrirtækjum:

1) Ofstærð gagnaver;

Kínverska fyrirtækið Tencent er stærsta fjárfestingarfyrirtæki í heimi og eitt stærsta áhættufjármagnsfyrirtæki. Dótturfyrirtæki Tencent, bæði í Kína og í öðrum löndum um allan heim, sérhæfa sig á ýmsum sviðum hátækniviðskipta, þar á meðal ýmiskonar internetþjónustu, þróun á sviði gervigreindar og rafrænnar afþreyingar.

P4 og forritanleg leið er háþróuð tækni sem notuð er í netarkitektúr fyrirtækisins.

Sem einn af frumkvöðlunum er Google stolt af því að taka eftir hraðri upptöku P4 í netiðnaðinum og sérstaklega í byggingarhönnun gagnavera.

2) Viðskiptafyrirtæki;

Goldman Sachs nýtir sér það að vinna með opnum uppspretta samfélaginu og þróa sameiginlega staðla og lausnir til að endurnýja netinnviði og veita betri lausnir fyrir viðskiptavini.

3) Framleiðsla;

Allur netiðnaðurinn myndi njóta góðs af tungumáli eins og P4 sem skilgreinir framsendingarhegðun einstaklega. Cisco trúir einnig á að flytja vörulínur sínar til að nota þetta tungumál.

Juniper Networks hefur innifalið P4 og P4 Runtime í fjölda vara og veitir forritunaraðgang að Juniper innbyggða örgjörvanum og hugbúnaðarkóða hans.

Ruijie Networks er mikill stuðningsmaður P4 og ávinningsins sem það hefur í för með sér fyrir net. Með P4 getur fyrirtækið búið til og afhent bestu lausnir í sínum flokki til fjölda viðskiptavina.

4) Fjarskiptaveitur;

AT&T var snemma að nota P4, einn af þeim fyrstu til að nota P4 til að skilgreina hegðun sem það vildi sjá í netkerfum sínum, og til að nota P4 forritanleg framsendingartæki á neti sínu.

Hjá Deutsche Telekom er tungumálið notað til að frumgerð lykilnetsaðgerða sem hluti af Access 4.0 forritinu.

5) Hálfleiðaraiðnaður;

Tungumálið gerði Barefoot kleift að innleiða nýja hugmyndafræði til að afhenda hugbúnaðargetu á leiðarkerfi netsins.

Xilinx var einn af stofnendum P4.org og tók virkan þátt í þróun P4 tungumálsins og innleiddi það í FPGA-byggða forritanlega vettvang fyrir SmartNIC og NFV vélbúnað, og gaf út einn af fyrstu P416 þýðendum sem hluta af SDNet hönnuninni.

6) Hugbúnaður.

VMware telur að P4 skapi gríðarlega orku, nýsköpun og samfélag sem knýr þýðingarmikla og nauðsynlega umbreytingu á netinu. VMware hefur verið hluti af þessari iðnaðarhreyfingu frá upphafi, þar sem ný bylgja nýsköpunar er knúin áfram af hugbúnaðartengdum nálgunum sem auka getu innviða og innleiða hana í nýjustu vörurnar.

Þannig er P4 markóháð og samskiptaóháð forritunarmál sem er notað af iðnaði og fræðimönnum til að skilgreina pakkaleiðarhegðun einstaklega sem forrit, sem aftur er hægt að setja saman fyrir mörg markmið. Í dag eru markmiðin meðal annars vélbúnaðar- og hugbúnaðarrofar, hypervisorrofar, NPU, GPU, FPGA, SmartNIC og ASIC.

Helstu eiginleikar tungumálsins víkka verulega umfang notkunar þess og tryggja hraða innleiðingu þess í netarkitektúr.

getting Started

P4 er opið verkefni, allar viðeigandi upplýsingar eru á heimasíðunni P4.org

Geymsluhlekkur https://github.com/p4lang, þar sem þú getur fengið dæmi um frumkóða og kennsluefni.

Stinga inn fyrir Eclipse með P4 stuðningi, en við getum mælt með P4 stúdíó frá Barefoot.

P4 forritunarmál

Við skulum skoða helstu útdrætti kjarnans:

Skilgreina hausa — með hjálp þeirra eru siðareglur hausar ákvarðaðir.

Hausskilgreiningin tilgreinir:

  • lýsingu á pakkasniðum og heitum hausreita
  • fastir og breytilegir leyfilegir reitir

Til dæmis

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

Þjálfarar — Verkefni þeirra er að flokka fyrirsagnirnar.

Eftirfarandi þáttadæmi mun ákvarða umskipti lokaástands vélarinnar úr einu upphafsástandi í annað af tveimur lokaástandi:

P4 forritunarmál

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

Töflur - innihalda vélarástand sem tengir notendalykla við aðgerðir. Afþreying — lýsing á því hvernig ætti að meðhöndla pakkann.

Töflurnar innihalda ástand (skilgreint á stjórnunarstigi) fyrir framsendingu pakka, lýsa Match-Action einingunni

Pakkar passa saman með:

  • Nákvæm samsvörun
  • Lengsta forskeyti samsvörun (LPM)
  • Þreföld samsvörun (masking)

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

Allar mögulegar aðgerðir verða að vera skilgreindar í töflum fyrirfram.

Aðgerðir samanstanda af kóða og gögnum. Gögnin koma frá stjórnunarstigi (td IP tölur/gáttarnúmer). Hægt er að tilgreina ákveðna lykkjulausa frumstæðu beint í aðgerðinni, en fjöldi leiðbeininga verður að vera fyrirsjáanlegur. Þess vegna geta aðgerðir ekki innihaldið lykkjur eða skilyrtar fullyrðingar.

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 einingar — aðgerðir til að búa til leitarlykil, leita í töflu, framkvæma aðgerðir.

Dæmigerð dæmi um einingu er sýnt á myndinni:

P4 forritunarmál

Stjórna flæði — gefur til kynna í hvaða röð Match-Action einingar eru notaðar. Þetta er bráðnauðsynlegt forrit sem skilgreinir rökfræði á háu stigi og Match-Action röð. Stýringarflæðið tengir alla hluti með því að skilgreina stjórnunarstigið.

Ytri hlutir eru sérstakir hlutir með skýrt skilgreindan arkitektúr og API viðmót. Til dæmis, tékksummuútreikningur, skrár, teljarar, teljarar o.s.frv.

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
}

Lýsigögn — gagnaskipulag sem tengist hverjum pakka.

Það eru 2 tegundir af lýsigögnum:

  Sérsniðin lýsigögn (tóm uppbygging fyrir alla pakka)
    Þú getur sett það sem þú vilt hér
    Í boði um alla leiðsluna
    hentugur til notkunar í eigin tilgangi, til dæmis til að geyma kjötkássa í pakka

  Innri lýsigögn - veitt af arkitektúrnum
    Inntaksport, úttaksport eru skilgreind hér
    Tímastimpill þegar pakkinn var í biðröð, biðröð dýpt
    multicast kjötkássa / multicast biðröð
    Forgangur pakka, mikilvægi pakka
    Forskrift úttaksports (t.d. úttaksröð)

P4 þýðandi

P4 þýðandinn (P4C) býr til:

  1. Gagnaflugstími
  2. API til að stjórna vélastöðu í gagnaplaninu

P4 forritunarmál

Dæmi um hugbúnaðarrofa á P4 tungumáli

Hægt er að hlaða niður frumkóðum úr geymslunni.

p4lang/p4c-bm: býr til JSON stillingar fyrir bmv2
p4lang/bmv2: hugbúnaðarrofi sem skilur bmv2 útgáfu JSON stillingar

Myndin sýnir skýringarmynd verkefnisins:

P4 forritunarmál

Meðhöndlun með töflur, lestrarskrár, teljara:

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


Kóðinn inniheldur simple_switch_CLI forritið fyrir þægilega notkun hugbúnaðarskipta API.

Þú getur halað niður þessu og öðrum dæmum úr geymslunni.

P4 forritunarmál

PS Snemma í sumar skrifaði Intel undir samning um að kaupa Barefoot Networks í viðleitni til að mæta þörfum Hyperscale Cloud notenda fljótt. Eins og Navin Shenoy (framkvæmdastjóri og framkvæmdastjóri Data Center Group hjá Intel Corporation) sagði, mun þetta gera Intel kleift að veita stærri vinnuálag og fleiri tækifæri fyrir viðskiptavini gagnavera.

Að mínu persónulega mati ættum við ekki að gleyma því að Intel er leiðandi í framleiðslu á FPGA flísum og það hefur frábært Quartus umhverfi. Þetta þýðir að við getum búist við því að með tilkomu Intel muni Barefoot ekki aðeins stækka vörulínu sína heldur munu Quartus og P4 Studio fá alvarlegar uppfærslur og viðbætur við Toffino og Toffino 2 línuna.

Opinber meðlimur P4 samfélagsins - fyrirtæki Þáttahópur.

Heimild: www.habr.com

Bæta við athugasemd