P4 lugha ya programu

P4 lugha ya programu
P4 ni lugha ya programu iliyoundwa kupanga sheria za uelekezaji wa pakiti. Tofauti na lugha ya kusudi la jumla kama vile C au Python, P4 ni lugha mahususi ya kikoa iliyo na miundo kadhaa iliyoboreshwa kwa uelekezaji wa mtandao.

P4 ni lugha huria iliyoidhinishwa na kudumishwa na shirika lisilo la faida linaloitwa P4 Language Consortium. Pia inaungwa mkono na Wakfu wa Mitandao Huria (ONF) na Wakfu wa Linux (LF), mashirika mawili makubwa mwavuli ya miradi ya mitandao huria.
Lugha hiyo ilibuniwa mwaka wa 2013 na kuelezewa katika karatasi ya SIGCOMM CCR ya 2014 yenye kichwa "Protocol Independent, Upangaji wa Kichakataji cha Usambazaji wa Pakiti."

Tangu kuanzishwa kwake, P4 imekua na kubadilika kwa kasi, haraka kuwa kiwango cha kuelezea maambukizi ya pakiti na vifaa vya mtandao, ikiwa ni pamoja na adapta za mtandao, swichi, na ruta.

"SDN imebadilisha tasnia ya mitandao, na P4 inachukua SDN hadi ngazi inayofuata kwa kuleta usanidi wa uelekezaji," Guru Parulkar, mkurugenzi mtendaji wa Open Networking Foundation.

Lugha ya P4 iliundwa awali na kundi la wahandisi na watafiti kutoka Google, Intel, Microsoft Research, Barefoot, Princeton na Stanford. Lengo lilikuwa rahisi: kuunda lugha rahisi kutumia ambayo msanidi programu angeweza kujifunza kwa siku moja na kutumia kuelezea kwa usahihi jinsi pakiti hutumwa kwenye mitandao.

Tangu mwanzo kabisa, P4 iliundwa kuwa huru inayolengwa (yaani, programu iliyoandikwa katika P4 inaweza kukusanywa bila kubadilishwa ili kutekeleza malengo mbalimbali kama vile ASIC, FPGA, CPU, NPU na GPU).

Lugha pia haitegemei itifaki (yaani, programu ya P4 inaweza kuelezea itifaki za kawaida zilizopo au kutumika kubainisha njia mpya za kuhutubia).

Katika sekta, P4 hutumiwa kwa programu ya kifaa. Labda katika siku zijazo viwango vya Internet-RFC na IEEE pia vitajumuisha vipimo vya P4.

P4 inaweza kutumika kwa vifaa vinavyoweza kupangwa na vya kudumu. Kwa mfano, inatumika kurekodi kwa usahihi tabia ya kubadili bomba katika API za Kiolesura cha Kubadilisha Uondoaji (SAI) zinazotumiwa na chanzo huria cha SONiC. P4 pia inatumika katika mradi wa ONF Stratum kuelezea tabia ya kubadili kwenye anuwai ya vifaa visivyobadilika na vinavyoweza kupangwa.

Kwa mara ya kwanza, kuelezea tabia ya kubadili na adapta za mtandao inakuwezesha kuunda mfano sahihi wa kutekelezwa wa mtandao mzima kabla ya kupelekwa. Watoa huduma wakubwa wa wingu wanaweza kujaribu na kutatua mtandao kabisa kwa kutumia programu, hivyo kupunguza kwa kiasi kikubwa muda na gharama ya majaribio ya mwingiliano kwenye maabara bila kuhitaji maunzi ghali.

Kwa kutumia P4, wachuuzi wa vifaa vya mtandao wanaweza kutarajia tabia ya kawaida ya uelekezaji kwenye bidhaa zote, kuruhusu utumiaji upya wa miundombinu ya majaribio, kurahisisha uundaji wa programu za usimamizi, na hatimaye kuhakikisha utengamano.

Bila shaka, P4 inaweza kutumika kuandika programu zinazoelezea njia mpya kabisa za uelekezaji. Kwa mfano, P4 hutumiwa sana kwa telemetry na vipimo katika vituo vya data, mitandao ya biashara na watoa huduma.

Jumuiya ya watafiti pia imepiga hatua. Vikundi kadhaa vya utafiti wa mitandao ya kitaaluma vinavyoongoza vimechapisha programu mpya za kusisimua kulingana na programu za P4, ikiwa ni pamoja na kusawazisha mzigo, itifaki za makubaliano, na uhifadhi wa thamani muhimu. Mtazamo mpya wa programu unaundwa, uvumbuzi unasonga kutoka kwa maunzi hadi programu, kuruhusu mawazo mengi yasiyotarajiwa, mapya na ya kijanja kuibuka.

Jumuiya ya wasanidi programu imetoa mchango mkubwa katika uundaji wa misimbo, ikijumuisha watunzi, mabomba, miundo ya tabia, API, mifumo ya majaribio, programu na zaidi. Kampuni kama vile Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, na ZTE zina wasanidi waliojitolea; kutoka vyuo vikuu vikiwemo BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, na USI; na miradi ya programu huria ikijumuisha CORD, FD.io, OpenDaylight, ONOS, OvS, SAI na Stratum inaangazia ukweli kwamba P4 ni mradi huru wa jumuiya.

Kizazi cha kawaida cha vidhibiti kwa lugha ya P4:

P4 lugha ya programu

Matarajio ya maombi

P4 lugha ya programu
Kwa kuwa lugha imekusudiwa kuelekeza programu, orodha ya mahitaji na chaguzi za muundo ni tofauti ikilinganishwa na lugha za programu za madhumuni ya jumla. Sifa kuu za lugha ni:

  1. Uhuru kutoka kwa utekelezaji wa lengo;
  2. Uhuru wa itifaki iliyotumika;
  3. Uwekaji upya wa uga.

Kujitegemea kutoka kwa utekelezaji wa lengo

Programu za P4 zimeundwa kuwa huru za utekelezaji, kumaanisha kuwa zinaweza kukusanywa kwa aina nyingi tofauti za injini za utekelezaji, kama vile vichakataji vya madhumuni ya jumla, FPGA, mifumo-on-chips, vichakataji mtandao, na ASIC. Aina hizi tofauti za mashine zinajulikana kama shabaha za P4, na kila lengo linahitaji mkusanyaji kubadilisha msimbo wa chanzo wa P4 kuwa muundo wa swichi lengwa. Kikusanyaji kinaweza kujengwa ndani ya kifaa kinacholengwa, programu ya nje, au hata huduma ya wingu. Kwa sababu shabaha nyingi za asili za programu za P4 zilikuwa za ubadilishaji wa pakiti rahisi, ni kawaida sana kusikia neno "badiliko la P4" ingawa "lengo la P4" ni sahihi zaidi.

Kujitegemea kwa itifaki iliyotumika

P4 ni itifaki inayojitegemea. Hii inamaanisha kuwa lugha haina utumiaji asilia kwa itifaki za kawaida kama vile IP, Ethernet, TCP, VxLAN au MPLS. Badala yake, programu ya P4 inaelezea fomati za kichwa na majina ya uwanja wa itifaki zinazohitajika katika programu, ambayo kwa upande wake inatafsiriwa na kusindika na programu iliyokusanywa na kifaa kinacholengwa.

Uwekaji upya wa uga

Itifaki ya uhuru na muundo wa lugha dhahania inaruhusu usanidi upyaβ€”Lengo la P4 linapaswa kuwa na uwezo wa kubadilisha uchakataji wa pakiti baada ya mfumo kutumwa. Uwezo huu kwa kawaida umehusishwa na kuelekeza kupitia vichakataji vya madhumuni ya jumla au vichakataji vya mtandao badala ya saketi zilizounganishwa za kazi zisizobadilika.

Ingawa hakuna kitu katika lugha ambacho kingezuia utendakazi bora wa seti fulani ya itifaki, uboreshaji huu hauonekani kwa mtunzi wa lugha na mwishowe unaweza kupunguza kubadilika kwa mfumo na malengo na usanidi wao upya.

Sifa hizi za lugha ziliwekwa awali na waundaji wake kwa kuzingatia matumizi yake makubwa katika miundombinu ya mtandao.

Lugha tayari inatumika katika makampuni mengi:

1) Vituo vya data vya Hyperscale;

Kampuni ya Kichina ya Tencent ndiyo kampuni kubwa zaidi ya uwekezaji duniani na mojawapo ya makampuni makubwa ya mitaji. Kampuni tanzu za Tencent, nchini China na katika nchi nyingine duniani, zimebobea katika maeneo mbalimbali ya biashara ya teknolojia ya hali ya juu, zikiwemo huduma mbalimbali za mtandao, maendeleo katika nyanja ya akili bandia na burudani ya kielektroniki.

P4 na uelekezaji unaoweza kupangwa ni teknolojia za hali ya juu zinazotumika katika usanifu wa mtandao wa kampuni.

Kama mmoja wa waanzilishi, Google inajivunia kutambua kupitishwa kwa haraka kwa P4 katika tasnia ya mitandao na katika muundo wa usanifu wa kituo cha data haswa.

2) Makampuni ya kibiashara;

Goldman Sachs huchukua fursa ya kufanya kazi na jumuiya ya chanzo huria na kuendeleza viwango na masuluhisho ya kawaida ili kuvumbua miundombinu ya mtandao na kutoa masuluhisho bora kwa wateja.

3) Uzalishaji;

Sekta nzima ya mitandao ingenufaika kutokana na lugha kama P4 ambayo inafafanua kipekee tabia ya usambazaji. Cisco pia inaamini katika kuhamisha laini za bidhaa ili kutumia lugha hii.

Mitandao ya Juniper imejumuisha Muda wa Kutumika wa P4 na P4 katika idadi ya bidhaa, na hutoa ufikiaji wa kiprogramu kwa kichakataji kilichopachikwa cha Juniper na msimbo wake wa programu.

Mitandao ya Ruijie ni mfuasi mkubwa wa P4 na manufaa inayoleta kwenye mitandao. Kwa P4, kampuni inaweza kuunda na kutoa masuluhisho ya kiwango bora kwa anuwai ya wateja.

4) Watoa huduma za mawasiliano;

AT&T ilikuwa mwanzilishi wa awali wa P4, mmoja wa wa kwanza kutumia P4 kufafanua tabia ambayo ilitaka kuona katika mitandao yake, na kutumia vifaa vya usambazaji vilivyopangwa vya P4 kwenye mtandao wake.

Katika Deutsche Telekom, lugha inatumika kuiga vitendaji muhimu vya mtandao kama sehemu ya programu ya Ufikiaji 4.0.

5) Sekta ya semiconductor;

Lugha ilimwezesha Barefoot kutekeleza dhana mpya ya kuwasilisha uwezo wa programu kwenye ndege ya kuelekeza mtandao.

Xilinx alikuwa mmoja wa waanzilishi wa P4.org na alihusika kikamilifu katika ukuzaji wa lugha ya P4 na akaitekeleza katika majukwaa yanayoweza kupangwa yenye msingi wa FPGA ya maunzi ya SmartNIC na NFV, akitoa mojawapo ya vikusanyaji vya kwanza vya P416 kama sehemu ya muundo wa SDNet.

6) Programu.

VMware inaamini kwamba P4 inaunda nishati kubwa, uvumbuzi na jumuiya ambayo inaleta mabadiliko ya maana na muhimu katika mtandao. VMware imekuwa sehemu ya vuguvugu hili la tasnia tangu mwanzo, kwani wimbi jipya la uvumbuzi linaendeshwa na mbinu za msingi za programu zinazopanua uwezo wa miundombinu na kuzitekeleza katika bidhaa za hivi karibuni.

Kwa hivyo, P4 ni lugha ya programu inayolengwa na inayojitegemea itifaki ambayo hutumiwa na tasnia na wasomi kufafanua kwa njia ya kipekee tabia ya uelekezaji wa pakiti kama programu, ambayo inaweza kukusanywa kwa shabaha nyingi. Leo, shabaha ni pamoja na swichi za maunzi na programu, swichi za hypervisor, NPU, GPU, FPGA, SmartNIC na ASIC.

Sifa kuu za lugha hupanua kwa kiasi kikubwa wigo wa matumizi yake na kuhakikisha utekelezaji wake wa haraka katika usanifu wa mtandao.

Anza

P4 ni mradi wazi, habari zote muhimu ziko kwenye wavuti P4.org

Kiungo cha hifadhi https://github.com/p4lang, ambapo unaweza kupata msimbo wa chanzo wa mfano na mafunzo.

Плагин kwa Eclipse kwa msaada wa P4, lakini tunaweza kupendekeza Studio ya P4 kutoka kwa Barefoot.

P4 lugha ya programu

Wacha tuangalie vifupisho kuu vya kernel:

Kufafanua Vichwa - kwa msaada wao, vichwa vya itifaki vinatambuliwa.

Ufafanuzi wa kichwa unabainisha:

  • maelezo ya fomati za pakiti na majina ya sehemu za kichwa
  • sehemu zisizobadilika na zinazoruhusiwa

Kwa mfano

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

Wachanganuzi - kazi yao ni kuchanganua vichwa vya habari.

Mfano ufuatao wa kichanganuzi utaamua mpito wa hali ya mwisho ya mashine kutoka hali moja ya awali hadi mojawapo ya majimbo mawili ya mwisho:

P4 lugha ya programu

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

Majedwali - vyenye hali za mashine zinazounganisha funguo za mtumiaji na vitendo. Shughuli - maelezo ya jinsi kifurushi kinapaswa kubadilishwa.

Jedwali lina hali (zilizofafanuliwa katika kiwango cha usimamizi) kwa usambazaji wa pakiti, zinaelezea kitengo cha Kitendo cha Kulinganisha

Pakiti zinalingana na:

  • Inalingana kabisa
  • Ulinganisho wa Kiambishi Kirefu Zaidi (LPM)
  • Kulinganisha mara tatu (kufunika)

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

Vitendo vyote vinavyowezekana lazima vifafanuliwe kwenye meza mapema.

Vitendo vinajumuisha nambari na data. Data hutoka kwa kiwango cha usimamizi (kwa mfano, anwani za IP/nambari za bandari). Baadhi ya vizuizi visivyo na kitanzi vinaweza kubainishwa moja kwa moja katika kitendo, lakini idadi ya maagizo lazima iweze kutabirika. Kwa hivyo, vitendo haviwezi kuwa na matanzi yoyote au taarifa za masharti.

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

Mechi-Kitendo modules β€” vitendo vya kuunda ufunguo wa utaftaji, tafuta kwenye jedwali, fanya vitendo.

Mfano wa kawaida wa moduli unaonyeshwa kwenye takwimu:

P4 lugha ya programu

Kudhibiti mtiririko - inaonyesha mpangilio ambao moduli za Kitendo cha Mechi zinatumika. Huu ni mpango wa lazima unaofafanua mantiki ya kiwango cha juu na mlolongo wa Kitendo cha Mechi. Mtiririko wa udhibiti huunganisha vitu vyote kwa kufafanua kiwango cha udhibiti.

Vitu vya nje ni vitu maalum vilivyo na usanifu uliofafanuliwa wazi na miingiliano ya API. Kwa mfano, hesabu ya hundi, rejista, vihesabu, vihesabu, nk.

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 - miundo ya data inayohusishwa na kila kifurushi.

Kuna aina 2 za metadata:

  Metadata maalum (muundo tupu kwa vifurushi vyote)
    Unaweza kuweka chochote unachotaka hapa
    Inapatikana kote kwenye bomba
    rahisi kwa matumizi kwa madhumuni yako mwenyewe, kwa mfano, kwa kuhifadhi hash ya kifurushi

  Metadata ya ndani - iliyotolewa na usanifu
    Lango la ingizo, lango la pato limefafanuliwa hapa
    Muhuri wa muda wakati pakiti iliwekwa kwenye foleni, kina cha foleni
    foleni ya upeperushaji mwingi / upeperushaji anuwai
    Kipaumbele cha kifurushi, umuhimu wa kifurushi
    Vipimo vya mlango wa pato (k.m. foleni ya pato)

Mkusanyaji wa P4

Mkusanyaji wa P4 (P4C) hutoa:

  1. Muda wa ndege wa data
  2. API ya kudhibiti hali ya mashine kwenye ndege ya data

P4 lugha ya programu

Mfano wa kubadili programu katika lugha ya P4

Misimbo ya chanzo inaweza kupakuliwa kutoka kwa hazina.

p4lang/p4c-bm: huunda usanidi wa JSON kwa bmv2
p4lang/bmv2: swichi ya programu inayoelewa usanidi wa toleo la bmv2 la JSON

Kielelezo kinaonyesha mchoro wa mkusanyiko wa mradi:

P4 lugha ya programu

Udanganyifu na meza, rejista za kusoma, vihesabio:

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


Msimbo wa chanzo una mpango rahisi_switch_CLI kwa matumizi rahisi ya API ya kubadili programu.

Unaweza kupakua hii na mifano mingine kutoka kwa hazina.

P4 lugha ya programu

PS Mapema msimu huu wa kiangazi, Intel ilitia saini makubaliano ya kupata Mitandao ya Barefoot katika juhudi za kukidhi haraka mahitaji ya watumiaji wa Wingu la Hyperscale. Kama Navin Shenoy (makamu mkuu wa rais na meneja mkuu wa Kikundi cha Data Center katika Intel Corporation) alisema, hii itaruhusu Intel kutoa mzigo mkubwa wa kazi na fursa zaidi kwa wateja wa kituo cha data.

Kwa maoni yangu binafsi, hatupaswi kusahau kwamba Intel ni kiongozi katika uzalishaji wa chips FPGA na ina mazingira bora ya Quartus. Hii ina maana kwamba tunaweza kutarajia kwamba kwa kuwasili kwa Intel, Barefoot haitapanua tu mstari wa bidhaa zake, lakini pia Quartus na P4 Studio itapokea sasisho kubwa na nyongeza kwenye mstari wa Toffino na Toffino 2.

Mwanachama rasmi wa jumuiya ya P4 - kampuni Kikundi cha sababu.

Chanzo: mapenzi.com

Kuongeza maoni