P4 ulwimi lwenkqubo

P4 ulwimi lwenkqubo
I-P4 lulwimi lweprogram eyilelwe ukucwangcisa imithetho yepakethe yomzila. Ngokungafaniyo nolwimi olunenjongo eqhelekileyo olunje ngeC okanye iPython, iP4 lulwimi oluthe ngqo kwisizinda esinenani loyilo olulungiselelwe indlela yothungelwano.

I-P4 lulwimi oluvulelekileyo olunelayisensi kwaye lugcinwe ngumbutho ongenzi ngeniso obizwa ngokuba yiP4 Language Consortium. Ikwaxhaswa yi-Open Networking Foundation (ONF) kunye ne-Linux Foundation (LF), imibutho emibini yeeambrela ezinkulu kwiiprojekthi zenethiwekhi ezivulekileyo.
Olu lwimi lwaqalwa ngo-2013 kwaye lwachazwa kwiphepha le-SIGCOMM CCR lika-2014 elinesihloko esithi "Protocol Independent, Packet Routing Processor Programming."

Ukususela ekusekweni kwayo, i-P4 ikhule kwaye iguquke ngokukhawuleza, ngokukhawuleza ibe ngumgangatho wokuchaza ukuhanjiswa kweepakethi ngezixhobo zenethiwekhi, kubandakanywa iadaptha zenethiwekhi, ukutshintshwa, kunye neerotha.

"I-SDN iguqule imboni yezonxibelelwano, kwaye i-P4 ithatha i-SDN kwinqanaba elilandelayo ngokuzisa ukulungelelaniswa kwenkqubo," kusho uGuru Parulkar, umlawuli olawulayo we-Open Networking Foundation.

Ulwimi lwe-P4 lwadalwa liqela leenjineli kunye nabaphandi abavela kuGoogle, Intel, Microsoft Research, Barefoot, Princeton kunye neStanford. Injongo yayilula: ukudala ulwimi olulula ukulusebenzisa ukuba umphuhlisi wesofthiwe anokufunda ngosuku kwaye asebenzise ukuchaza ngokuchanekileyo indlela iipakethi ezithunyelwa ngayo kwiinethiwekhi.

Ukususela ekuqaleni, i-P4 yenzelwe ukuba ijolise ngokuzimeleyo (oko kukuthi inkqubo ebhalwe kwi-P4 inokuqulunqwa ingatshintshi ukuze iqhube kwiinjongo ezahlukeneyo ezifana ne-ASICs, FPGAs, CPUs, NPUs, kunye ne-GPUs).

Ulwimi lukwayiprothokholi ezimeleyo (o.k.t., inkqubo ye-P4 inokuchaza iiprothokholi ezisemgangathweni ezikhoyo okanye isetyenziswe ukucacisa iindlela zokujongana nesiko elitsha).

Kwishishini, iP4 isetyenziselwa inkqubo yesixhobo. Mhlawumbi kwixesha elizayo i-Intanethi-RFC kunye nemigangatho ye-IEEE iya kubandakanya ukucaciswa kwe-P4.

I-P4 ingasetyenziselwa zombini izixhobo ezicwangcisekileyo kunye nezisisigxina. Ngokomzekelo, isetyenziselwa ukurekhoda ngokuchanekileyo ukuziphatha kokutshintsha kombhobho kwi-Switch Abstraction Interface (SAI) APIs esetyenziswe ngumthombo ovulekileyo we-SONiC switch OS. I-P4 ikwasetyenziswa kwiprojekthi ye-ONF Stratum ukuchaza ukuziphatha kokutshintsha kwiintlobo ngeentlobo zezixhobo ezimiselweyo nezicwangcisekileyo.

Ngethuba lokuqala, ukuchaza ukuziphatha kokutshintshwa kunye neeadaptha zenethiwekhi kukuvumela ukuba wenze imodeli echanekileyo ephunyeziweyo yenethiwekhi yonke ngaphambi kokuthunyelwa. Ababoneleli bamafu amakhulu banokuvavanya kwaye balungise inethiwekhi ngokupheleleyo besebenzisa isoftware, ukunciphisa kakhulu ixesha kunye neendleko zokuvavanya ukusebenzisana kwilebhu ngaphandle kokufuna i-hardware ebiza kakhulu.

Ngokusebenzisa i-P4, abathengisi bezixhobo zenethiwekhi banokulindela indlela yokuziphatha eqhelekileyo esisiseko kuzo zonke iimveliso, ukuvumela ukusetyenziswa kwakhona kweziseko zovavanyo, ukwenza lula uphuhliso lwesoftware yolawulo, kwaye ekugqibeleni baqinisekise ukusebenzisana.

Kakade ke, i-P4 ingasetyenziselwa ukubhala iinkqubo ezichaza iindlela ezintsha ngokupheleleyo zomzila. Umzekelo, i-P4 isetyenziswa ngokubanzi kwi-telemetry kunye nemilinganiselo kumaziko edatha, uthungelwano lwamashishini kunye nababoneleli benkonzo.

Uluntu lophando luye lwanyuka. Amaqela amaninzi ophando onxibelelwano lwezemfundo apapashe izicelo ezitsha ezinomdla ezisekwe kwiinkqubo ze-P4, kubandakanywa ukulinganisa umthwalo, iiprothokholi zemvumelwano, kunye nokugcinwa kwexabiso elingundoqo. I-paradigm entsha yeprogram iyadalwa, ukuveliswa kwezinto ezintsha kuyahamba kwi-hardware ukuya kwi-software, evumela ukuba kuvele iingcamango ezininzi ezingalindelekanga, ezintsha kunye nezilumkileyo.

Uluntu lwabaphuhlisi lwenze igalelo elibalulekileyo ekuphuhliseni ikhowudi, kubandakanywa abaqulunqi, imibhobho, imodeli yokuziphatha, ii-API, izicwangciso zokuvavanya, izicelo, kunye nokunye. Iinkampani ezifana ne-Alibaba, i-AT & T, i-Barefoot, i-Cisco, i-Fox Networks, i-Google, i-Intel, i-IXIA, i-Juniper Networks, i-Mellanox, i-Microsoft, i-Netcope, i-Netronome, i-VMware, i-Xilinx, kunye ne-ZTE inabaphuhlisi abazinikeleyo; ukusuka kwiiyunivesithi eziquka iBUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, kunye ne-USI; kunye neeprojekthi ezivulelekileyo ezibandakanya i-CORD, i-FD.io, i-OpenDaylight, i-ONOS, i-OvS, i-SAI kunye ne-Stratum zigxininisa into yokuba i-P4 yiprojekthi yoluntu ezimeleyo.

Ukuveliswa okuqhelekileyo kwabalawuli kulwimi lwe-P4:

P4 ulwimi lwenkqubo

Amathemba esicelo

P4 ulwimi lwenkqubo
Ekubeni ulwimi lwenzelwe usetyenziso lweendlela, uluhlu lweemfuno kunye nokhetho loyilo lwahlukile xa kuthelekiswa neelwimi zenkqubo yenjongo jikelele. Iimpawu eziphambili zolwimi zezi:

  1. Ukuzimela ekuphunyezweni kokujoliswe kuko;
  2. Ukuzimela kwemigaqo esetyenziswayo;
  3. Uqwalaselo ngokutsha lommandla.

Ukuzimela ekuphunyezweni okujoliswe kuko

Iiprogram ze-P4 ziyilelwe ukuba ziphunyezwe ngokuzimeleyo, oku kuthetha ukuba zinokuqulunqwa kwiindidi ezininzi ezahlukeneyo zeenjini zokubulawa, ezifana neeprosesa zenjongo jikelele, iiFPGA, ii-system-on-chips, iiprosesa zenethiwekhi, kunye nee-ASICs. Ezi ntlobo ezahlukeneyo zoomatshini zaziwa njengeethagethi ze-P4, kwaye ithagethi nganye ifuna umqambi ukuguqula ikhowudi yomthombo we-P4 ibe yimodeli yokutshintsha ekujoliswe kuyo. Umqambi unokwakhelwa kwisixhobo ekujoliswe kuso, isoftware yangaphandle, okanye nakwinkonzo yelifu. Ngenxa yokuba uninzi lweethagethi zoqobo zeenkqubo zeP4 bezikukutshintsha kwepakethi elula, kuqhelekile ukuva igama elithi "P4 switch" nangona "ithagethi yeP4" ichaneke ngakumbi.

Ukuzimela komgaqo(s) osetyenziswayo

I-P4 yiprothokholi ezimeleyo. Oku kuthetha ukuba ulwimi alunayo inkxaso yemveli kwiiprothokholi eziqhelekileyo ezifana ne-IP, i-Ethernet, i-TCP, i-VxLAN okanye i-MPLS. Endaweni yoko, umdwelisi wenkqubo we-P4 uchaza iifomati zeheader kunye namagama entsimi yeprothokholi ezifunekayo kwinkqubo, ethi itolikwe kwaye iqhutywe yinkqubo ehlanganisiweyo kunye nesixhobo esijoliswe kuyo.

Uqwalaselo ngokutsha lommandla

Ukuzimela kweprotocol kunye nemodeli yolwimi olungabonakaliyo ivumela ukuhlengahlengiswa-iithagethi ze-P4 kufuneka zikwazi ukutshintsha ukusetyenzwa kwepakethi emva kokuba inkqubo isetyenzisiwe. Esi sixhobo ngokwesiko siye sanxulunyaniswa nokuhamba ngeeprosesa zenjongo-jikelele okanye iiprosesa zothungelwano kuneesekethe ezidibeneyo ezisebenzayo.

Nangona kungekho nto ngolwimi eya kuthintela ukuphuculwa kokusebenza kweseti ethile yeeprotocol, ezi zilungelelaniso azibonakali kumbhali weelwimi kwaye ekugqibeleni zinokunciphisa ukuguquguquka kwenkqubo kunye neenjongo kunye nokuhlengahlengiswa kwazo.

Ezi mpawu zolwimi ekuqaleni zabekwa phantsi ngabadali balo kugxininise ekusetyenzisweni kwalo ngokubanzi kwiziseko zonxibelelwano.

Ulwimi sele lusetyenziswa kwiinkampani ezininzi:

1) Amaziko edatha ye-Hyperscale;

Inkampani yaseTshayina iTencent yeyona nkampani inkulu yotyalo-mali kwihlabathi kwaye yenye yeefemu ezinkulu zokuthengisa imali. I-subsidiaries ye-Tencent, e-China nakwamanye amazwe kwihlabathi jikelele, igxile kwiinkalo ezahlukeneyo zoshishino oluphezulu, kuquka neenkonzo ezahlukeneyo ze-Intanethi, uphuhliso kwinkalo yobukrelekrele bokwenziwa kunye nokuzonwabisa nge-elektroniki.

I-P4 kunye neendlela ezicwangcisiweyo zitekhnoloji eziphambili ezisetyenziswa kuyilo lwenethiwekhi yenkampani.

Njengomnye wabasunguli, uGoogle unebhongo ngokuqaphela ukwamkelwa okukhawulezayo kwe-P4 kwishishini lothungelwano kunye nakwiziko ledatha uyilo loyilo loyilo ngakumbi.

2) Iinkampani zorhwebo;

I-Goldman Sachs ithatha ithuba lokusebenza kunye noluntu oluvulekileyo kunye nokuphuhlisa imigangatho efanayo kunye nezisombululo zokuvuselela iziseko zenethiwekhi kunye nokubonelela ngezisombululo ezingcono kubaxhasi.

3) Imveliso;

Lonke ishishini lothungelwano liza kuxhamla kulwimi olufana ne-P4 oluchaza ngokukhethekileyo ukuziphatha kokudlulisela phambili. I-Cisco ikwakholelwa ekudluliseleni imigca yemveliso yayo ukusebenzisa olu lwimi.

I-Juniper Networks ifake i-P4 kunye ne-P4 Runtime kwinani leemveliso, kwaye ibonelela ngokufikelela kwenkqubo kwi-Juniper processor embedded kunye nekhowudi yayo yesofthiwe.

I-Ruijie Networks ingumxhasi onamandla we-P4 kunye neenzuzo ezizisa kuthungelwano. Nge-P4, inkampani inokudala kwaye inikeze izisombululo ezigqwesileyo kwiklasi kuluhlu olubanzi lwabathengi.

4) Ababoneleli boNxibelelwano;

I-AT&T yayingumamkeli wokuqala we-P4, omnye wabokuqala ukusebenzisa i-P4 ukuchaza indlela yokuziphatha eyayifuna ukuyibona kuthungelwano, kunye nokusebenzisa izixhobo zokudlulisa ezicwangcisiweyo zeP4 kuthungelwano lwayo.

KwiDeutsche Telekom, ulwimi lusetyenziselwa ukulinganisa imisebenzi yenethiwekhi engundoqo njengenxalenye yeprogram ye-Access 4.0.

5) Ishishini leSemiconductor;

Ulwimi lwenza ukuba u-Barefoot aphumeze iparadigm entsha yokunikezela ngezakhono zesoftware kwinqwelomoya yothungelwano.

U-Xilinx wayengomnye wabaseki be-P4.org kwaye wayebandakanyeka ngokusebenzayo ekuphuhliseni ulwimi lwe-P4 kwaye wayiphumeza kwi-FPGA-based based platformmable platforms ye-SmartNIC kunye ne-NFV hardware, ikhupha enye ye-P416 yokuqala yabaqulunqi njengenxalenye yoyilo lwe-SDNet.

6) Isoftware.

I-VMware ikholelwa ukuba i-P4 idala amandla amakhulu, ukuveliswa kwezinto ezintsha kunye noluntu oluqhuba inguqu enentsingiselo neyimfuneko kuthungelwano. I-VMware ibe yinxalenye yale ntshukumo yeshishini ukusukela ekuqaleni, njengoko i-wave entsha ye-innovation iqhutywa ziindlela ezisekwe kwisoftware ezandisa izakhono zeziseko zophuhliso kunye nokuzisebenzisa kwiimveliso zamva nje.

Ngaloo ndlela, i-P4 lulwimi lweprogram olujoliswe kuyo oluzimeleyo kunye neprothokholi esetyenziswa lishishini kunye nezemfundo ukucacisa ngokukodwa ukuziphatha kwepakethi yomzila njengeprogram, enokuthi ihlanganiswe kwiithagethi ezininzi. Namhlanje, iithagethi ziquka i-hardware kunye nokutshintshwa kwesofthiwe, utshintsho lwe-hypervisor, ii-NPU, ii-GPU, ii-FPGA, ii-SmartNIC kunye nee-ASIC.

Iimpawu eziphambili zolwimi zandisa kakhulu ububanzi bokusetyenziswa kwayo kwaye ziqinisekise ukuphunyezwa kwayo ngokukhawuleza kwizakhiwo zenethiwekhi.

ukuQala

I-P4 yiprojekthi evulekileyo, lonke ulwazi olufanelekileyo lukwiwebhusayithi P4.org

Indawo yokugcina ikhonkco https://github.com/p4lang, apho ungafumana ikhowudi yomthombo womzekelo kunye nezifundo.

Faka iplagi ye-Eclipse ngenkxaso ye-P4, kodwa sinokucebisa Isitudiyo seP4 ukusuka eBarefoot.

P4 ulwimi lwenkqubo

Makhe sijonge izinto eziphambili zokutsalwa kwe-kernel:

Ukuchaza izihloko - ngoncedo lwabo, iiheader zeprotocol zizimisele.

Inkcazelo yeheda ixela:

  • inkcazo yeefomati zepakethe kunye namagama ommandla weheader
  • imihlaba emiselweyo neguquguqukayo evumelekileyo

Ngokomzekelo

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

Abahlalutyi β€” umsebenzi wabo kukucazulula iintloko-ndaba.

Lo mzekelo ulandelayo uya kumisela inguqu yemeko yokugqibela yomatshini ukusuka kwindawo yokuqala ukuya kwelinye lamazwe amabini okugqibela:

P4 ulwimi lwenkqubo

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

Iitafile -Ziqulathe iindawo zoomatshini ezidibanisa izitshixo zomsebenzisi kunye nezenzo. Izenzo - inkcazo yendlela iphakheji kufuneka isetyenziswe ngayo.

Iitheyibhile ziqulathe iindawo (ezichazwe kumgangatho wolawulo) zokuhanjiswa kwepakethi, zichaza iyunithi yesenzo somdlalo

Iipakethi zihambelana ne:

  • Umdlalo ochanekileyo
  • Owona Mde Umdlalo wesimaphambili (LPM)
  • Ukuthelekisa kathathu (ukugquma)

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

Zonke izenzo ezinokwenzeka kufuneka zichazwe kwiitheyibhile kwangaphambili.

Izenzo ziquka ikhowudi kunye nedatha. Idatha ivela kwinqanaba lolawulo (umz. iidilesi ze-IP / iinombolo zezibuko). Ezinye, iiprimitives ezingenalo iluphu zinokuchazwa ngokuthe ngqo kwisenzo, kodwa inani lemiyalelo kufuneka liqikeleleke. Ngoko ke, izenzo azikwazi ukuqulatha naziphi na iilophu okanye iingxelo ezinemiqathango.

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

Iimodyuli zeNtshukumo yomdlalo β€” iintshukumo zokwenza iqhosha lokukhangela, khangela etafileni, yenza iintshukumo.

Umzekelo oqhelekileyo wemodyuli ubonisiwe kumzobo:

P4 ulwimi lwenkqubo

Lawula ukuhamba β€” ibonisa indlela ezisetyenziswa ngayo iimodyuli zesenzo somdlalo. Le yinkqubo efunekayo echaza ingqiqo yenqanaba eliphezulu kunye nolandelelwano lwesenzo somdlalo. Ulawulo lokuhamba ludibanisa zonke izinto ngokuchaza inqanaba lolawulo.

Izinto zangaphandle zizinto ezithile ezinoyilo oluchazwe ngokucacileyo kunye nojongano lwe-API. Umzekelo, ukubala itshekhi, iirejista, izixhobo zokubala, izixhobo zokubala, njl.

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 - izakhiwo zedatha ezinxulumene nephakheji nganye.

Kukho iintlobo ezi-2 zemetadata:

  Imetadata yesiko (isakhiwo esingenanto sazo zonke iipakethe)
    Ungabeka nantoni na oyifunayo apha
    Ifumaneka kuwo wonke umbhobho
    ekulungele ukusetyenziswa kwinjongo zakho, umzekelo, ukugcina i-hash yephakheji

  Imethadatha yangaphakathi - ebonelelwe luyilo
    Izibuko longeniso, izibuko lemveliso lichazwa apha
    Isitampu sexesha xa ipakethi ibikumgca, ubunzulu bomgca
    I-hash eninzi / umgca wokuphoswa kwezinto ezininzi
    Ipakethe ephambili, ukubaluleka kwephakheji
    Ubalulo lwezibuko lemveliso (umzekelo umgca wemveliso)

P4 compiler

Umqokeleli weP4 (P4C) wenza:

  1. Ixesha lenqwelomoya yedatha
  2. I-API yokulawula imeko yomatshini kwinqwelomoya yedatha

P4 ulwimi lwenkqubo

Umzekelo wokutshintsha kwesoftware kulwimi lweP4

Iikhowudi zomthombo zinokukhutshelwa kwindawo yokugcina.

p4lang/p4c-bm: yenza uqwalaselo lwe-JSON lwe-bmv2
p4lang/bmv2: iswitshi yesoftware eqonda i-bmv2 inguqulelo ye-JSON yoqwalaselo

Umzobo ubonisa umzobo wokuhlanganiswa kweprojekthi:

P4 ulwimi lwenkqubo

Ukusetyenziswa kweetafile, iirejista zokufunda, izinto zokubala:

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


Ikhowudi yomthombo iqulethe i-simple_switch_CLI inkqubo yokusetyenziswa ngokufanelekileyo kwe-API yokutshintsha isoftwe.

Unokukhuphela oku kunye neminye imizekelo kwindawo yokugcina.

P4 ulwimi lwenkqubo

PS Ekuqaleni kweli hlotyeni, i-Intel isayine isivumelwano sokufumana i-Barefoot Networks ukukhawuleza ukuhlangabezana neemfuno zabasebenzisi be-Hyperscale Cloud. Njengoko uNavin Shenoy (usekela-mongameli ophetheyo kunye nomphathi jikelele weQela leZiko leDatha kwi-Intel Corporation) wathi, oku kuya kuvumela i-Intel ukuba ibonelele ngomthwalo omkhulu wemisebenzi kunye namathuba amaninzi kubathengi bamaziko edatha.

Ngokombono wam, akufanele silibale ukuba i-Intel yinkokeli kwimveliso yeetshiphusi zeFPGA kwaye inendawo ebalaseleyo yeQuartus. Oku kuthetha ukuba sinokulindela ukuba ngokufika kwe-Intel, i-Barefoot ayiyi kwandisa kuphela umgca wemveliso, kodwa i-Quartus kunye ne-P4 Studio iya kufumana uhlaziyo olunzulu kunye nezongezo kwi-Toffino kunye ne-Toffino 2 line.

Ilungu elisemthethweni loluntu lwe-P4 - inkampani iqela lezinto.

umthombo: www.habr.com

Yongeza izimvo