P4 programming language

P4 programming language
P4 waa luuqad barnaamijeed loogu talagalay in lagu barnaamijiyo shuruucda baakadaha. Si ka duwan luqadda ujeeddooyinka guud sida C ama Python, P4 waa luuqad gaar ah oo leh tiro nashqado ah oo loo habeeyay marinka shabakadda.

P4 waa luuqad il furan oo shatiyeysan oo ay hayso hay'ad aan faa'iido doon ahayn oo la yiraahdo P4 Language Consortium. Waxa kale oo ay taageertaa Aasaaska Shabakadda Furan (ONF) iyo Linux Foundation (LF), oo ah laba ka mid ah dallada ugu weyn ee mashaariicda isku xidhka isha furan.
Luqadda waxaa markii hore la sameeyay 2013 waxaana lagu sifeeyay warqad 2014 SIGCOMM CCR cinwaankeeduna yahay "Barnaamijka Protocol Independent, Packet Routing Processor Programming."

Tan iyo markii la aasaasay, P4 ayaa koray oo u kobcay si xad dhaaf ah, si dhakhso ah ayey u noqotay halbeeg lagu tilmaamayo gudbinta baakadaha aaladaha shabakadaha, oo ay ku jiraan adapters network, switches, iyo router.

"SDN waxay wax ka bedeshay warshadaha isku xirka, P4-na waxay SDN u qaadaa heerka ku xiga iyadoo keeneysa barnaamijka habaynta," ayuu yiri Guru Parulkar, agaasimaha fulinta ee Mu'asasada Shabakadda Furan.

Luqadda P4 waxaa asal ahaan abuuray koox injineero ah iyo cilmi-baarayaal ka socda Google, Intel, Microsoft Research, Barefoot, Princeton iyo Stanford. Hadafku wuxuu ahaa mid sahlan: abuur luuqad si sahlan loo isticmaali karo oo horumariye software uu baran karo maalin gudaheed oo uu isticmaalo si uu si sax ah u sharaxo sida xirmooyinka loogu diro shabakadaha.

Laga soo bilaabo bilowgii hore, P4 waxaa loo qorsheeyay in lagu beegsado madax banaan (sida barnaamij ku qoran P4 waa la isku dubaridi karaa si aan isbeddelin si loogu shaqeeyo bartilmaameedyo kala duwan sida ASICs, FPGAs, CPUs, NPUs, iyo GPUs).

Luqadda sidoo kale waa madax-bannaanida borotokoolka (tusaale ahaan, barnaamijka P4 wuxuu sharxi karaa borotokoolka caadiga ah ama waxaa loo isticmaali karaa in lagu qeexo qaabab cusub oo wax looga qabanayo).

Warshadaha, P4 waxaa loo isticmaalaa barnaamijyada aaladaha. Waxaa laga yaabaa in mustaqbalka Internet-RFC iyo heerarka IEEE ay sidoo kale ku jiraan qeexida P4.

P4 waxaa loo isticmaali karaa labadaba qalabyada barnaamijyada iyo kuwa go'an labadaba. Tusaale ahaan, waxa loo istcmaalaa in si sax ah loogu diiwaan geliyo hab-dhaqanka dhuumaha beddelka ee Isbeddelka Abstraction Interface (SAI) API-yada uu isticmaalo isha furan ee SOniC switch OS. P4 waxaa sidoo kale loo isticmaalaa mashruuca ONF Stratum si loo qeexo habdhaqanka beddelka qalabyada kala duwan ee go'an iyo kuwa la baran karo.

Marka ugu horeysa, sharaxaadda habdhaqanka furaha iyo iskuxirayaasha shabakada waxay kuu ogolaaneysaa inaad abuurto qaab sax ah oo la fulin karo oo dhan shabakada ka hor inta aan la dirin. Bixiyeyaasha daruuriga ah ee waaweyn ayaa tijaabin kara oo ka saari kara shabakadda gebi ahaanba iyaga oo isticmaalaya softiweer, si weyn u yareynaya waqtiga iyo qiimaha isdhexgalka ee shaybaarka iyada oo aan loo baahnayn qalab qaali ah.

Isticmaalka P4, iibiyaasha qalabka shabakadu waxay filan karaan hab-dhaqanka jiheynta guud ee dhammaan alaabooyinka, u oggolaanaya dib-u-isticmaalka kaabayaasha tijaabada, fududaynta horumarinta software-ka maamulka, iyo ugu dambaynta hubinta wada shaqaynta.

Dabcan, P4 waxa loo isticmaali karaa in lagu qoro barnaamijyo qeexaya siyaalo cusub oo habayn ah. Tusaale ahaan, P4 waxaa si weyn loogu isticmaalaa telemetry iyo cabbirada xarumaha xogta, shirkadaha iyo shabakadaha adeeg bixiyayaasha.

Bulshada cilmi-baarista ayaa sidoo kale kor u qaaday. Dhowr kooxood oo cilmi-baariseed oo isku xidhka tacliineed ayaa daabacay codsiyo cusub oo xiiso leh oo ku salaysan barnaamijyada P4, oo ay ku jiraan isu dheelitirka culeyska, borotokoolka la isku raacsan yahay, iyo kaydinta qiimaha muhiimka ah. Nidaam cusub oo barnaamij ah ayaa la abuurayaa, hal-abuurku waxa uu ka guurayaa hardware-ka una guuraya software-ka, taas oo u oggolaanaysa fikrado badan oo lama filaan ah, cusub iyo kuwo xariif ah inay soo baxaan.

Bulshada horumarisa waxay samaysay wax ku biirin la taaban karo oo ku saabsan horumarinta koodka, oo ay ku jiraan compilers, dhuumaha, moodooyinka hab-dhaqanka, API-yada, qaab-dhismeedka tijaabada, codsiyada, iyo in ka badan. Shirkadaha sida Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, iyo ZTE waxay leeyihiin horumariyayaal; Jaamacadaha ay ka mid yihiin BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, iyo USI; iyo mashaariicda il furan oo ay ku jiraan CORD, FD.io, Opendaylight, ONOS, OvS, SAI iyo Stratum waxay muujinayaan xaqiiqda ah in P4 uu yahay mashruuc bulsho oo madax banaan.

Jiilka caadiga ah ee kontaroolayaasha luqadda P4:

P4 programming language

Rajada codsiga

P4 programming language
Maadaama luqadda loogu talagalay habaynta codsiyada, liiska shuruudaha iyo xulashooyinka naqshadeynta way ka duwan yihiin marka la barbardhigo luqadaha barnaamijka ujeeddooyinka guud. Tilmaamaha ugu muhiimsan ee luqadda waa:

  1. Madax-bannaanida fulinta bartilmaameedka;
  2. Madax-banaanida hab-maamuuska (yada) la isticmaalo;
  3. Dib u habeynta goobta

Madaxbanaanida fulinta bartilmaameedka

Barnaamijyada P4 waxaa loogu talagalay inay noqdaan kuwo madax-bannaan oo la fuliyo, taasoo la micno ah in lagu ururin karo noocyo badan oo kala duwan oo matoorada fulinta ah, sida soo-saareyaal ujeedo-guud ah, FPGA-yada, nidaamka-chips-ka, soo-saareyaasha shabakadda, iyo ASICs. Noocyadan kala duwan ee mashiinada waxaa loo yaqaan bartilmaameedyada P4, bartilmaameed kastana wuxuu u baahan yahay iskudubarid si loogu beddelo koodhka isha P4 qaab beddelka bartilmaameedka. Isku-dubbarideeyaha waxaa lagu dhisi karaa aaladda la beegsanayo, software-ka dibadda, ama xitaa adeegga daruuraha. Sababtoo ah qaar badan oo ka mid ah bartilmaameedyada asalka ah ee barnaamijyada P4 waxay u ahaayeen beddelka baakidhka fudud, aad bay u badan tahay in la maqlo ereyga "Beddelka P4" inkastoo "bartilmaameedka P4" uu ka saxsan yahay.

Madaxbanaanida hab-maamuuska la isticmaalo

P4 waa ka madax banaan borotokoolka. Tani waxay ka dhigan tahay in luqaddu aysan haysan taageero hooyo borotokoolka caadiga ah sida IP, Ethernet, TCP, VxLAN ama MPLS. Taa beddelkeeda, barnaamijka P4 wuxuu qeexayaa qaababka madaxa iyo magacyada goobta borotokoolka loo baahan yahay ee barnaamijka, kuwaas oo iyana la tarjumo lagana baaraandego barnaamijka la soo ururiyey iyo aaladda la beegsanayo.

Dib u habeynta goobta

Madaxbanaanida borotokoolka iyo qaabka luqadda aan la taaban karin ayaa u oggolaanaya dib-u-habayn - bartilmaameedyada P4 waa inay awoodaan inay beddelaan habaynta baakadaha ka dib marka nidaamka la diro. Awooddan ayaa caado ahaan lala xiriiriyay habaynta iyada oo loo marayo soo-saareyaal ujeedo-guud ah ama soo-saareyaal shabakadeed halkii ay ka ahaan lahayd wareegyo isku-dhafan oo shaqaynaya.

Inkasta oo aanay jirin wax luqadda ku jira oo ka hortagaya hagaajinta waxqabadka hab-maamuus gaar ah, hagaajintaani waa mid aan muuqan qoraaga luqadda waxayna ugu dambeyntii hoos u dhigi kartaa dabacsanaanta nidaamka iyo yoolalka iyo dib u habeyntooda.

Sifooyinkan luqadda waxaa markii hore dejiyay hal-abuureyaasheeda iyaga oo diiradda saaraya adeegsiga baahsan ee kaabayaasha shabakadda.

Luuqada waxaa horay looga isticmaalay shirkado badan:

1) Xarumaha xogta sare;

Shirkadda Shiinaha ee Tencent waa shirkadda ugu weyn ee maalgashiga adduunka iyo mid ka mid ah shirkadaha raasamaalka ee ugu weyn. Shirkadaha Tencent, ee Shiinaha iyo wadamada kale ee adduunka, waxay ku takhasusaan qaybaha kala duwan ee ganacsiga farsamada sare, oo ay ku jiraan adeegyada kala duwan ee internetka, horumarinta dhinaca sirdoonka macmal ah iyo madadaalada elektaroonigga ah.

P4 iyo jiheynta programmable waa tignoolajiyada horumarsan ee loo isticmaalo qaab dhismeedka shabakada shirkada.

Sida mid ka mid ah aasaasayaasha, Google wuxuu ku faanayaa inuu ogaado qaadashada degdegga ah ee P4 ee warshadaha isku xirka iyo naqshadeynta xarunta xogta gaar ahaan.

2) Shirkadaha ganacsiga;

Goldman Sachs waxay ka faa'iidaysataa la shaqaynta bulshada isha furan iyo horumarinta heerarka caadiga ah iyo xalalka si ay u cusboonaysiiso kaabayaasha shabakada oo ay siiso xalal wanaagsan macaamiisha.

3) Wax-soo-saar;

Dhammaan warshadaha isku xidhka ayaa ka faa'iidaysan doona luqad sida P4 oo si gaar ah u qeexaysa habdhaqanka gudbinta. Cisco sidoo kale waxa ay aaminsantahay in lagu wareejiyo khadadka wax soo saarka si ay u isticmaasho luuqadan.

Shabakadda Juniper waxay ku dartay P4 iyo P4 Runtime tiro alaabo ah, waxayna siisaa marin u helitaan barnaamijeed processor-ka ku dhex jira Juniper iyo koodka software-ka.

Ruijie Networks waa taageere xooggan ee P4 iyo faa'iidooyinka ay u keento shabakadaha. Iyadoo P4, shirkadu waxay abuuri kartaa oo keeni kartaa xalalka ugu fiican ee macaamiisha kala duwan.

4) Shirkadaha isgaarsiinta;

AT&T waxay ahayd mid hore u qaatay P4, mid ka mid ah kuwii ugu horreeyay ee adeegsada P4 si ay u qeexaan dabeecadda ay rabto inay ku dhex aragto shabakadeeda, iyo inay u isticmaasho P4 aaladaha gudbinta barnaamijyada ee shabakadeeda.

Deutsche Telekom, luqadda waxaa loo isticmaalaa in lagu soo bandhigo hawlaha shabakada muhiimka ah ee qayb ka ah barnaamijka Access 4.0.

5) Warshadaha Semiconductor;

Luqadda ayaa u saamaxday Barefoot inay hirgeliso jaantus cusub oo lagu gaarsiinayo awoodda software-ka diyaaradda marin haynta.

Xilinx wuxuu ahaa mid ka mid ah aasaasayaashii P4.org wuxuuna si firfircoon uga qaybqaatay horumarinta luqadda P4 wuxuuna u hirgeliyay FPGA-ku-salaysan barnaamijyada barnaamijka ee SmartNIC iyo NFV hardware, isagoo sii daayay mid ka mid ah compilers P416 ee ugu horreeya oo qayb ka ah naqshadeynta SDNet.

6) Software.

VMware waxay aaminsan tahay in P4 ay abuurto tamar aad u weyn, hal-abuurnimo iyo bulsho wadda isbeddel macno leh oo lagama maarmaanka u ah shabakadda. VMware waxay qayb ka ahayd dhaqdhaqaaqa warshadahan tan iyo bilawgii, maadaama mowjad cusub oo cusubi ay dhaqaajiso habab software-ku-salaysan oo kordhiya awoodaha kaabayaasha oo ku hirgeliya alaabtii ugu dambaysay.

Haddaba, P4 waa bar-tilmaameed-madax-bannaan iyo borotokoolka-madax-bannaan ee barnaamijka luuqadda oo ay adeegsadaan warshadaha iyo akadeemiyadda si ay si gaar ah u qeexaan hab-dhaqanka baakadaha sida barnaamij ahaan, kaas oo isna loo diyaarin karo bartilmaameedyo badan. Maanta, bartilmaameedyada waxaa ka mid ah furayaasha qalabka iyo software-ka, furayaasha hypervisor, NPUs, GPU-yada, FPGAs, SmartNICs iyo ASICs.

Tilmaamaha ugu muhiimsan ee luqadda ayaa si weyn u ballaarinaya baaxadda codsigeeda waxayna hubinayaan in si degdeg ah loo hirgeliyo naqshadaha shabakadaha.

Bilaabidda

P4 waa mashruuc furan, dhammaan macluumaadka khuseeya waxay yaalliin mareegaha P4.org

Isku xirka kaydka https://github.com/p4lang, halkaas oo aad ka heli karto tusaalaha koodhka isha iyo casharrada.

Плагин Eclipse oo leh taageerada P4, laakiin waxaan ku talin karnaa P4 Studio Kabo maran.

P4 programming language

Aynu eegno nuxurka ugu muhiimsan ee kernel-ka:

Qeexida madaxyada - iyaga oo kaashanaya, madax-dhaqameedyada ayaa la go'aamiyaa.

Qeexitaanka madaxa ayaa qeexaya:

  • sharaxaada qaababka baakidhka iyo magacyada goobta madaxa
  • beeraha go'an iyo doorsoomayaasha la ogol yahay

Tusaale ahaan

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

Baarayaal - Shaqadoodu waa inay kala qaybiyaan cinwaannada.

Tusaalaha falanqaynta soo socda ayaa go'aamin doona kala-guurka gobolka ugu dambeeya ee mishiinka laga bilaabo hal xaalad bilow ilaa mid ka mid ah labada gobol ee u dambeeya:

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

Miisaska - waxa ku jira gobolo mishiin ah oo ku xidhaya furayaasha isticmaalaha iyo falalka. Falalka - sharaxaad ku saabsan sida xirmada loo maamulayo.

Jadwalku waxa uu ka kooban yahay gobollo (oo lagu qeexay heerka maaraynta) gudbinta baakooyinka, sharax cutubka Waxqabadka Match-Action

Xirmooyinka waxaa ku habboon:

  • Ciyaar sax ah
  • Ciyaarta horgalayaasha ugu dheer (LPM)
  • Sadex jeer oo isbarbardhigaya

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

Dhammaan ficillada suurtagalka ah waa in horay loogu sii qeexaa shaxda.

Waxqabadyadu waxay ka kooban yihiin kood iyo xog. Xogtu waxay ka timaaddaa heerka maaraynta (tusaale, ciwaanka IP/lambarada dekeda). Hubaal, horudhac-free-loop-free ayaa si toos ah loogu qeexi karaa ficilka, laakiin tirada tilmaamuhu waa inay ahaadaan kuwo la saadaalin karo. Sidaa darteed, ficilladu kuma koobnaan karaan wareegyo ama hadallo shuruudaysan.

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 - falalka lagu abuurayo furaha raadinta, ka raadi miis, samee ficilo.

Tusaalaha caadiga ah ee cutubka ayaa lagu muujiyay shaxanka:

P4 programming language

Xakamaynta socodka - waxay tusinaysaa sida ay u kala horreeyaan qaybaha Match-Action loo isticmaalo. Kani waa barnaamij lama huraan ah oo qeexaya macquulnimada heerka sare ah iyo isku xigxiga-Ficilka. Qulqulka kantaroolku wuxuu isku xiraa dhammaan walxaha isagoo qeexaya heerka xakamaynta.

Walxaha dibadda waa shay gaar ah oo leh qaab-dhismeed si cad loo qeexay iyo API-ga. Tusaale ahaan, xisaabinta jeegagga, diiwaanka, xisaabiyeyaasha, miisaska, iwm.

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
}

Xogta badan - qaababka xogta ee la xidhiidha xirmo kasta.

Waxaa jira 2 nooc oo metadata ah:

  Xogta gaarka ah (qaabka madhan dhammaan baakooyinka)
    Waxaad ku dhejin kartaa waxaad rabto halkan
    La heli karo dhammaan dhuumaha
    ku habboon in loogu isticmaalo ujeedooyinkaaga, tusaale ahaan, kaydinta xashiishka xirmada

  Xogta badan ee gudaha - waxaa bixiyay qaab-dhismeedka
    Dekedda wax-soo-saarka, dekedda wax-soo-saarka ayaa lagu qeexay halkan
    Jadwalka wakhtiga marka xirmada safka la galiyay, saf qoto dheer
    xashiish badan / safka badan
    Mudnaanta xirmada, muhiimadda xirmada
    Qeexitaanka dekedda wax-soo-saarka (tusaale, safka wax-soo-saarka)

P4 compiler

Isku-duwaha P4 (P4C) wuxuu abuuraa:

  1. Waqtiga diyaarada xogta
  2. API ee maaraynta xaaladda mishiinka diyaaradda xogta

P4 programming language

Tusaalaha beddelka software ee luqadda P4

Koodhadhka isha waxaa laga soo dejisan karaa kaydka.

p4lang/p4c-bm: waxay abuurtaa qaabaynta JSON ee BMv2
p4lang/bmv2: beddelka software-ka oo fahma qaabka bmv2 JSON

Jaantusku waxa uu tusinayaa jaantuska isku-xidhka mashruuca:

P4 programming language

Waxqabadyada miisaska, diiwaanka akhriska, xisaabaadka:

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


Koodhka isha wuxuu ka kooban yahay barnaamijka simple_switch_CLI ee loogu talagalay isticmaalka habboon ee software beddelka API.

Waxa aad ka soo dejisan kartaa tan iyo tusaaleyaal kale bakhaarka.

P4 programming language

PS Horraantii xagaagan, Intel waxa ay saxeexday heshiis ay ku doonayso in ay ku hesho Shabakado Barefoot ah iyada oo isku dayaysa in ay si degdeg ah u buuxiso baahiyaha isticmaaleyaasha Cloud Cloud. Sida Navin Shenoy (madaxweyne ku xigeenka fulinta iyo maareeyaha guud ee Kooxda Xarunta Xogta ee Intel Corporation) uu yiri, tani waxay u oggolaan doontaa Intel inay bixiso culeysyo shaqo oo waaweyn iyo fursado badan oo macaamiisha xarunta xogta ah.

Fikradayda shakhsi ahaaneed, waa inaynaan iloobin in Intel uu hormuud u yahay soo saarista chips-ka FPGA oo uu leeyahay jawi wanaagsan oo Quartus ah. Tani waxay ka dhigan tahay inaan filan karno in imaatinka Intel, Barefoot kaliya ma ballaarin doonto khadka wax soo saarka, laakiin sidoo kale Quartus iyo P4 Studio waxay heli doonaan cusbooneysiin dhab ah iyo ku kordhinta khadka Toffino iyo Toffino 2.

Xubinta rasmiga ah ee bulshada P4 - shirkadda Kooxda Factor.

Source: www.habr.com

Add a comment