P4 programming mutauro

P4 programming mutauro
P4 mutauro wepurogiramu wakagadzirirwa kuronga mitemo yepakiti yekufambisa. Kusiyana nemutauro wechinangwa chakadai seC kana Python, P4 idomain-chaiyo mutauro ine akati wandei magadzirirwo akagadziridzwa kune network routing.

P4 mutauro wakavhurika unopihwa rezenisi uye unochengetwa nesangano risingabatsiri rinodaidzwa kuti P4 Mutauro Consortium. Inotsigirwawo neOpen Networking Foundation (ONF) uye Linux Foundation (LF), maviri emasangano makuru amburera emapurojekiti akavhurwa sosi network.
Mutauro uyu wakatanga kuumbwa muna 2013 uye wakatsanangurwa mune 2014 SIGCOMM CCR bepa rakanzi "Protocol Yakazvimirira, Packet Routing processor Programming."

Kubva payakavambwa, P4 yakakura uye nekushanduka-shanduka, nekukurumidza ikava chiyero chekutsanangura kutapurirana kwepaketi nenetiweki zvishandiso, kusanganisira network adapter, switch, uye marouters.

"SDN yakashandura indasitiri yetiweki, uye P4 inotora SDN kune inotevera nhanho nekuunza programmability kunzira," akadaro Guru Parulkar, director director weOpen Networking Foundation.

Mutauro weP4 wakatangwa neboka revainjiniya nevaongorori kubva kuGoogle, Intel, Microsoft Research, Barefoot, Princeton uye Stanford. Chinangwa chaive chakareruka: gadzira mutauro uri nyore-wekushandisa uyo mugadziri wesoftware anogona kudzidza muzuva uye kushandisa kutsanangura nemazvo kuti mapaketi anotumirwa sei kune network.

Kubva pakutanga, P4 yakagadzirirwa kuve yakazvimirira (kureva chirongwa chakanyorwa muP4 chinogona kuumbwa chisina kuchinjika kuti chimhanye pane zvakasiyana siyana zvinangwa seASICs, FPGAs, CPUs, NPUs, uye GPUs).

Mutauro zvakare wakazvimiririra protocol (kureva, chirongwa cheP4 chinogona kutsanangura maprotocol aripo kana kushandiswa kutsanangura maitiro matsva ekutaura).

Muindasitiri, P4 inoshandiswa kugadzira mudziyo. Zvichida mune ramangwana Internet-RFC uye IEEE zviyero zvichasanganisira iyo P4 yakatarwa.

P4 inogona kushandiswa kune ese ari maviri programmable uye yakagadziriswa basa zvishandiso. Semuyenzaniso, inoshandiswa kunyora nemazvo chinja chinja pombi maitiro muSwitch Abstraction Interface (SAI) APIs inoshandiswa neyakavhurika sosi SONiC switch OS. P4 inoshandiswawo muchirongwa cheONF Stratum kutsanangura kushandura maitiro kune akasiyana siyana akagadziriswa uye anorongwa zvishandiso.

Kekutanga, kutsanangura maitiro ekuchinja uye network adapter inobvumidza iwe kuti ugadzire iyo chaiyo inoteedzera modhi yetiweki yese isati yatumirwa. Makuru vanopa makore vanogona kuyedza uye kugadzirisa network zvachose vachishandisa software, zvakanyanya kudzikisa nguva uye mutengo wekudyidzana kuyedzwa mulabhu pasina kuda hardware inodhura.

Nekushandisa P4, vatengesi vemidziyo yetiweki vanogona kutarisira maitiro akajairwa pasi pezvigadziriso pane zvese zvigadzirwa, vachibvumira kushandiswazve kweyezve bvunzo, kurerutsa manejimendi kuvandudza kwesoftware, uye pakupedzisira kuve nechokwadi chekudyidzana.

Ehe, P4 inogona kushandiswa kunyora zvirongwa zvinotsanangura zvachose nzira nyowani dzekufambisa. Semuenzaniso, P4 inoshandiswa zvakanyanya kune telemetry uye zviyero munzvimbo dzedata, bhizinesi uye sevhisi network network.

Nharaunda yetsvakurudzo yakawedzerawo. Mapoka akati wandei anotungamira ezvidzidzo zvekutsvagisa network akaburitsa zvinonakidza zvikumbiro zvinoenderana nezvirongwa zveP4, zvinosanganisira kuremerwa kwemutoro, zvibvumirano zvechibvumirano, uye yakakosha kukosha caching. Iyo itsva programming paradigm iri kugadzirwa, hutsva huri kufamba kubva kune Hardware kuenda kune software, ichibvumira akawanda asingatarisirwe, matsva uye ehungwaru mazano kubuda.

Nharaunda yekuvandudza yakaita mipiro yakakosha mukuvandudza kodhi, kusanganisira vagadziri, mapaipi, maitiro ehunhu, APIs, bvunzo masisitimu, maapplication, nezvimwe. Makambani akadai saAlibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, uye ZTE vane vagadziri vakazvipira; kubva kumayunivhesiti anosanganisira BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, uye USI; uye mapurojekiti akavhurika sosi anosanganisira CORD, FD.io, OpenDaylight, ONOS, OvS, SAI uye Stratum anosimbisa chokwadi chekuti P4 ipurojekiti yakazvimirira yenharaunda.

Yakajairika chizvarwa chevatongi vemutauro weP4:

P4 programming mutauro

Tarisiro yekushandisa

P4 programming mutauro
Sezvo mutauro wacho uchiitirwa kufambisa maapplication, rondedzero yezvinodiwa uye magadzirirwo sarudzo dzakasiyana kana ichienzaniswa neyakajairwa-chinangwa mitauro yekuronga. Zvinhu zvikuru zvemutauro ndezvi:

  1. Kuzvimirira kubva pane chinangwa chekuita;
  2. Kuzvimiririra kweprotocol (s) inoshandiswa;
  3. Munda reconfigurability.

Kuzvimiririra kubva pane chinangwa chekuita

Zvirongwa zveP4 zvakagadzirirwa kuita zvakazvimirira, zvichireva kuti zvinogona kuunganidzwa kune akawanda akasiyana-siyana einjini dzekuuraya, senge general-chinangwa processors, FPGAs, system-on-chips, network processors, uye ASICs. Aya marudzi akasiyana emuchina anozivikanwa seP4 tarisiro, uye chinangwa chega chega chinoda compiler kushandura iyo P4 sosi kodhi kuita yekuchinja modhi. Iyo compiler inogona kuvakwa mukati mechinhu chakanangwa chishandiso, chekunze software, kana kunyangwe sevhisi yegore. Nekuda kwekuti mazhinji epakutanga tarisiro yemapurogiramu eP4 aive epacket switching, zvakajairika kunzwa izwi rekuti "P4 switch" kunyangwe "P4 target" iri kunyatsojeka.

Kuzvimiririra kweprotocol (s) inoshandiswa

P4 iprotocol yakazvimirira. Izvi zvinoreva kuti mutauro wacho hauna tsigiro yemuno yemaprotocol akajairika seIP, Ethernet, TCP, VxLAN kana MPLS. Pane kudaro, iyo P4 programmer inotsanangura mafomati emusoro uye mazita emumunda emaprotocol anodiwa muchirongwa, ayo anodudzirwa uye anogadziriswa nechirongwa chakaumbwa uye chinonangwa mudziyo.

Munda reconfigurability

Kuzvimiririra kweprotocol uye abstract language modhi inobvumira kugadzirisazve-P4 zvinangwa zvinofanirwa kukwanisa kushandura packet process mushure mekunge sisitimu yaiswa. Uku kugona kwagara kwakabatana nekufambisa kuburikidza neyakajairwa-chinangwa processors kana network processors kwete yakagadziriswa-basa rakasanganiswa maseketi.

Kunyangwe pasina chinhu chiri mumutauro chingadzivirira kukwenenzverwa kwekuita kweimwe seti yemaprotocol, izvi zvigadziriso hazvionekwe nemunyori wemutauro uye zvinogona pakupedzisira kuderedza kuchinjika kwehurongwa nezvinangwa uye kudzoreredza kwavo.

Aya maitiro emutauro akatanga akaiswa pasi nevagadziri vawo vaine tarisiro pakushandiswa kwayo kwakapararira mu network network.

Mutauro watoshandiswa mumakambani mazhinji:

1) Hyperscale data centers;

Kambani yeChinese Tencent ndiyo hombe yekudyara kambani pasi rose uye imwe yemafemu makuru emabhizimusi. Tencent's subsidiaries, muChina uye kune dzimwe nyika pasirese, inyanzvi munzvimbo dzakasiyana dzebhizimusi repamusoro-soro, kusanganisira akasiyana masevhisi eInternet, kusimukira mumunda wehungwaru hwekugadzira uye varaidzo yemagetsi.

P4 uye programmable routing matekinoroji epamberi ayo anoshandiswa mukambani network yekuvaka.

Semumwe wevakatanga, Google inodada nekucherechedza kukurumidza kutorwa kweP4 muindasitiri yetiweki uye mune data centre yekugadzira dhizaini kunyanya.

2) Makambani ekutengeserana;

Goldman Sachs anotora mukana wekushanda neakavhurika sosi nharaunda uye kugadzira akajairwa zviyero uye mhinduro dzekuvandudza network network uye nekupa mhinduro dziri nani kune vatengi.

3) Kugadzirwa;

Iyo yese networking indasitiri yaizobatsirwa kubva mumutauro wakaita seP4 unotsanangura zvakasiyana maitiro ekutumira. Cisco inotendawo mukuendesa mitsara yechigadzirwa kushandisa mutauro uyu.

Juniper Networks yaisanganisira P4 uye P4 Runtime mune akati wandei zvigadzirwa, uye inopa hurongwa hwekuwana iyo Juniper yakamisikidzwa processor uye software yayo kodhi.

Ruijie Networks mutsigiri akasimba weP4 uye mabhenefiti ayo anounza kune network. NeP4, kambani inogona kugadzira uye kuendesa zvakanakisa-mu-kirasi mhinduro kune dzakasiyana siyana dzevatengi.

4) Telecommunications providers;

AT&T yaive yekutanga kutora P4, imwe yekutanga kushandisa P4 kutsanangura maitiro ayaida kuona mumanetiweki ayo, uye kushandisa P4 programmable yekutumidzira michina panetiweki yayo.

KuDeutsche Telekom, mutauro unoshandiswa kuratidza makiyi network mabasa sechikamu cheAccess 4.0 chirongwa.

5) Semiconductor indasitiri;

Mutauro uyu wakagonesa Barefoot kushandisa paradigm itsva yekuendesa zvikwanisiro zvesoftware kunetiweki routing ndege.

Xilinx aive mumwe wevakatanga P4.org uye aishingaira mukusimudzira mutauro weP4 uye akaushandisa muFPGA-based programmable mapuratifomu eSmartNIC neNFV Hardware, achiburitsa imwe yekutanga P416 compilers sechikamu cheiyo SDNet dhizaini.

6) Software.

VMware inotenda kuti P4 inogadzira simba rakakura, hunyanzvi uye nharaunda iri kutyaira zvine musoro uye zvakakosha shanduko mumambure. VMware yanga iri chikamu chekufamba kweindasitiri iyi kubva pakutanga, senge wave nyowani yekuvandudza inofambiswa nesoftware-yakavakirwa nzira dzinowedzera kugona kwezvivakwa uye kuishandisa mune zvichangoburwa zvigadzirwa.

Saka, P4 ndiyo inotarirwa-yakazvimirira uye protocol-yakazvimirira programming mutauro unoshandiswa neindasitiri uye academia kutsanangura zvakasiyana maitiro epacket routing sechirongwa, icho chinogona kuunganidzwa kune akawanda zvinangwa. Nhasi, zvinangwa zvinosanganisira hardware uye software switch, hypervisor switches, NPUs, GPUs, FPGAs, SmartNICs uye ASICs.

Iwo makuru maficha emutauro anowedzera zvakanyanya chiyero chekushandiswa kwayo uye ive nechokwadi chekuita kwayo nekukurumidza mumagadzirirwo etiweki.

kutanga

P4 ipurojekiti yakavhurika, ruzivo rwese rwakakodzera rwuri pawebhusaiti P4.org

Repository link https://github.com/p4lang, kwaunogona kuwana muenzaniso sosi kodhi uye tutorials.

Pfekera yeEclipse nerutsigiro rweP4, asi isu tinogona kukurudzira Sravana Sameeralu Serial 4th PXNUMX Studio kubva kuBarefoot.

P4 programming mutauro

Ngatitarisei pane makuru abstractions e kernel:

Defining Headers - nerubatsiro rwavo, misoro yeprotocol inotemwa.

Tsanangudzo yemusoro inotsanangura:

  • tsananguro yemafomati emapaketi uye mazita emunda wemusoro
  • yakagadziriswa uye yakasiyana-siyana inobvumirwa minda

Somuenzaniso

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 - basa ravo nderekutsanangudza misoro yenyaya.

Iyo inotevera parser muenzaniso inosarudza shanduko yemamiriro ekupedzisira emuchina kubva kune imwe nzvimbo yekutanga kuenda kune imwe yematunhu maviri ekupedzisira:

P4 programming mutauro

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

Matafura - ine muchina unobatanidza makiyi emushandisi nezviito. Zviito - tsananguro yekuti pasuru inofanira kushandiswa sei.

Iwo matafura ane nyika (inotsanangurwa padanho rekutungamira) yekuendesa packet, tsanangura iyo Match-Action unit

Mapaketi anofananidzwa ne:

  • Machisi chaiwo
  • Yakareba Prefix Match (LPM)
  • Katatu kuenzanirana (masking)

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

Zvose zvinogoneka zviito zvinofanira kutsanangurwa mumatafura mberi.

Zviito zvinosanganisira kodhi uye data. Iyo data inouya kubva padanho rekutarisira (semuenzaniso IP kero / nhamba dzechiteshi). Mamwe, ma primitives asina loop anogona kutsanangurwa zvakananga muchiito, asi nhamba yemirairo inofanirwa kufanofungidzira. Naizvozvo, zviito hazvigone kuve nechero zvishwe kana zvirevo zvine zvirevo.

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 - zviito zvekugadzira kiyi yekutsvaga, tsvaga mutafura, ita zviito.

Muenzaniso weiyo module unoratidzwa mumufananidzo:

P4 programming mutauro

Kudzora kuyerera - inoratidza kurongeka uko Match-Action modules inoshandiswa. Ichi chirongwa chakakosha chinotsanangura iyo yepamusoro nhanho logic uye Match-Action kutevedzana. Kuyerera kwekutonga kunobatanidza zvinhu zvose nekutsanangura chiyero chekutonga.

Zvinhu zvekunze zvinhu chaizvo zvine dhizaini yakanyatsotsanangurwa uye API interfaces. Semuenzaniso, checksum calculation, register, 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
}

Metadata - data zvimiro zvine chekuita nepakiti yega yega.

Kune mhando mbiri dzemetadata:

  Tsika metadata (isina chimiro pamapakeji ese)
    Unogona kuisa chero chaunoda pano
    Inowanikwa pombi yese
    yakanakira kushandisira zvinangwa zvako, semuenzaniso, kuchengetedza pasuru hashi

  Yemukati metadata - yakapihwa neiyo dhizaini
    Kupinza chiteshi, chinobuda chinotsanangurwa pano
    Chitambi chenguva apo pakiti yakanga yaiswa mumutsara, kudzika kwemutsara
    multicast hash / multicast queue
    Package yakakosha, kukosha kwepakeji
    Zvinobuda pachiteshi (semutsetse wekubuda)

P4 compiler

Iyo P4 compiler (P4C) inogadzira:

  1. Data ndege runtime
  2. API yekutarisira mamiriro emuchina mundege yedata

P4 programming mutauro

Muenzaniso wekushandura software mumutauro weP4

Source macode anogona kutorwa kubva kune repository.

p4lang/p4c-bm: inogadzira JSON kumisikidzwa ye bmv2
p4lang/bmv2: switch software inonzwisisa bmv2 vhezheni JSON masisitimu

Mufananidzo unoratidza dhiyagiramu yekugadzira purojekiti:

P4 programming mutauro

Manipulations ane matafura, marejista ekuverenga, makaunda:

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


Iyo kodhi kodhi ine simple_switch_CLI chirongwa chekushandisa zviri nyore software switch API.

Iwe unogona kudhawunirodha izvi nemimwe mienzaniso kubva kune repository.

P4 programming mutauro

PS Kutanga kwezhizha rino, Intel yakasaina chibvumirano chekutora Barefoot Networks mukuyedza kuzadzisa zvinodiwa nevashandisi veHyperscale Cloud. Sezvakataurwa naNavin Shenoy (mutevedzeri wemutungamiri uye maneja mukuru weData Center Group kuIntel Corporation) akati, izvi zvichabvumira Intel kupa basa rakakura uye mikana yakawanda yevatengi vedata.

Mukufunga kwangu pachangu, hatifanire kukanganwa kuti Intel ndiye mutungamiri mukugadzirwa kweFPGA chips uye ine yakanakisa Quartus nharaunda. Izvi zvinoreva kuti isu tinogona kutarisira kuti nekusvika kweIntel, Barefoot haingowedzere mutsara wechigadzirwa, asiwo Quartus neP4 Studio ichagamuchira zvakakomba zvigadziriso uye kuwedzera kune Toffino uye Toffino 2 mutsara.

Nhengo yepamutemo yeP4 nharaunda - kambani factor group.

Source: www.habr.com

Voeg