Lingwa ta' programmar P4

Lingwa ta' programmar P4
P4 hija lingwa ta 'programmar iddisinjata biex tipprogramma r-regoli tar-rotot tal-pakketti. B'differenza għal lingwa għal skopijiet ġenerali bħal C jew Python, P4 hija lingwa speċifika għad-dominju b'numru ta 'disinji ottimizzati għar-rotot tan-netwerk.

P4 hija lingwa open source liċenzjata u miżmuma minn organizzazzjoni mingħajr skop ta' qligħ imsejħa P4 Language Consortium. Huwa appoġġjat ukoll mill-Open Networking Foundation (ONF) u l-Linux Foundation (LF), tnejn mill-akbar organizzazzjonijiet umbrella għal proġetti ta’ netwerking ta’ sors miftuħ.
Il-lingwa kienet oriġinarjament maħluqa fl-2013 u deskritta f'karta SIGCOMM CCR tal-2014 intitolata "Protocol Independent, Packet Routing Processor Programming."

Mill-bidu tiegħu, P4 kiber u evolviet b'mod esponenzjali, u malajr sar standard għad-deskrizzjoni tat-trażmissjoni ta 'pakketti minn tagħmir tan-netwerk, inklużi adapters tan-netwerk, swiċċijiet u routers.

"SDN ttrasforma l-industrija tan-netwerking, u P4 jieħu SDN għal-livell li jmiss billi jippermetti l-programmabilità fir-rotot," qal Guru Parulkar, direttur eżekuttiv tal-Open Networking Foundation.

Il-lingwa P4 kienet oriġinarjament maħluqa minn grupp ta 'inġiniera u riċerkaturi minn Google, Intel, Microsoft Research, Barefoot, Princeton u Stanford. L-għan kien sempliċi: toħloq lingwaġġ faċli biex tużah li żviluppatur ta' softwer seta' jitgħallem f'ġurnata u juża biex jiddeskrivi b'mod preċiż kif jintbagħtu l-pakketti fuq in-netwerks.

Mill-bidu nett, P4 kien iddisinjat biex ikun indipendenti mill-mira (jiġifieri programm miktub f'P4 jista 'jiġi kkompilat mhux mibdul biex jaħdem fuq varjetà ta' miri bħal ASICs, FPGAs, CPUs, NPUs u GPUs).

Il-lingwa hija wkoll indipendenti mill-protokoll (jiġifieri, programm P4 jista’ jiddeskrivi protokolli standard eżistenti jew jintuża biex jispeċifika modi ġodda ta’ indirizzar tad-dwana).

Fl-industrija, P4 jintuża għall-ipprogrammar tal-apparat. Forsi fil-futur l-istandards tal-Internet-RFC u IEEE se jinkludu wkoll l-ispeċifikazzjoni P4.

P4 jista 'jintuża kemm għal apparati ta' funzjoni programmabbli kif ukoll fissi. Pereżempju, tintuża biex tirreġistra b'mod preċiż l-imġiba tal-pipeline tal-iswiċċ fl-APIs tal-Interface tal-Astrazzjoni tal-Iswiċċ (SAI) użati mill-OS tal-iswiċċ SONiC tas-sors miftuħ. P4 jintuża wkoll fil-proġett ONF Stratum biex jiddeskrivi l-imġieba tal-bidla fuq varjetà ta 'apparati fissi u programmabbli.

Għall-ewwel darba, id-deskrizzjoni tal-imġieba tal-iswiċċ u l-adapters tan-netwerk tippermettilek toħloq mudell eżekutibbli preċiż tan-netwerk kollu qabel l-iskjerament. Fornituri kbar tal-cloud jistgħu jittestjaw u jiddebugjaw in-netwerk kompletament bl-użu ta 'softwer, u b'mod sinifikanti jnaqqsu l-ħin u l-ispiża tal-ittestjar tal-interoperabbiltà fil-laboratorju mingħajr ma jeħtieġu hardware għali.

Bl-użu tal-P4, il-bejjiegħa tat-tagħmir tan-netwerk jistgħu jistennew imġiba komuni sottostanti tar-rotot fil-prodotti kollha, li tippermetti l-użu mill-ġdid tal-infrastruttura tat-test, jissimplifika l-iżvilupp tas-softwer tal-ġestjoni, u fl-aħħar mill-aħħar jiżgura l-interoperabbiltà.

Naturalment, P4 jista 'jintuża biex jikteb programmi li jiddeskrivu modi kompletament ġodda ta' rotta. Pereżempju, P4 tintuża ħafna għat-telemetrija u l-kejl f'ċentri tad-dejta, intrapriżi u netwerks tal-fornituri tas-servizz.

Il-komunità tar-riċerka żdiedet ukoll. Diversi gruppi ta 'riċerka akkademiċi ewlenin ta' netwerking ippubblikaw applikazzjonijiet ġodda eċċitanti bbażati fuq programmi P4, inklużi l-ibbilanċjar tat-tagħbija, protokolli ta 'kunsens, u caching ta' valur ewlieni. Qed tinħoloq paradigma ta 'programmazzjoni ġdida, l-innovazzjoni qed timxi minn ħardwer għal softwer, li tippermetti li joħorġu ħafna ideat mhux mistennija, ġodda u inġenjużi.

Il-komunità tal-iżviluppaturi għamlet kontribuzzjonijiet sinifikanti għall-iżvilupp tal-kodiċi, inklużi kompilaturi, pipelines, mudelli ta 'mġieba, APIs, oqfsa tat-test, applikazzjonijiet, u aktar. Kumpaniji bħal Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, u ZTE għandhom żviluppaturi ddedikati; minn universitajiet inklużi BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, u USI; u proġetti ta’ sors miftuħ inklużi CORD, FD.io, OpenDaylight, ONOS, OvS, SAI u Stratum jenfasizzaw il-fatt li P4 huwa proġett komunitarju indipendenti.

Ġenerazzjoni tipika ta' kontrolluri għal-lingwa P4:

Lingwa ta' programmar P4

Prospetti ta' applikazzjoni

Lingwa ta' programmar P4
Peress li l-lingwa hija maħsuba għal applikazzjonijiet ta 'routing, il-lista ta' rekwiżiti u għażliet ta 'disinn hija differenti meta mqabbla ma' lingwi ta 'programmar għal skopijiet ġenerali. Il-karatteristiċi ewlenin tal-lingwa huma:

  1. Indipendenza mill-implimentazzjoni tal-mira;
  2. Indipendenza tal-protokoll(i) użat(i);
  3. Konfigurabilità mill-ġdid tal-qasam.

Indipendenza mill-implimentazzjoni tal-mira

Il-programmi P4 huma ddisinjati biex ikunu indipendenti mill-implimentazzjoni, li jfisser li jistgħu jiġu kkompilati għal ħafna tipi differenti ta 'magni ta' eżekuzzjoni, bħal proċessuri għal skopijiet ġenerali, FPGAs, system-on-chips, proċessuri tan-netwerk, u ASICs. Dawn it-tipi differenti ta 'magni huma magħrufa bħala miri P4, u kull mira teħtieġ kompilatur biex jikkonverti l-kodiċi tas-sors P4 f'mudell ta' swiċċ fil-mira. Il-kompilatur jista 'jinbena fil-mezz mira, softwer estern, jew saħansitra servizz sħaba. Minħabba li ħafna mill-miri oriġinali għall-programmi P4 kienu għal swiċċjar sempliċi ta 'pakketti, huwa komuni ħafna li tisma' t-terminu "swiċċ P4" minkejja li "mira P4" hija aktar preċiża.

Indipendenza tal-protokoll(i) użat(i).

P4 huwa indipendenti mill-protokoll. Dan ifisser li l-lingwa m'għandhiex appoġġ indiġenu għal protokolli komuni bħal IP, Ethernet, TCP, VxLAN jew MPLS. Minflok, il-programmer P4 jiddeskrivi l-formati tal-header u l-ismijiet tal-qasam tal-protokolli meħtieġa fil-programm, li min-naħa tagħhom huma interpretati u pproċessati mill-programm ikkumpilat u l-apparat fil-mira.

Konfigurabilità mill-ġdid tal-qasam

L-indipendenza tal-protokoll u l-mudell tal-lingwa astratta tippermetti rikonfigurabilità — il-miri P4 għandhom ikunu jistgħu jbiddlu l-ipproċessar tal-pakketti wara li s-sistema tiġi skjerata. Din il-kapaċità kienet tradizzjonalment assoċjata ma 'routing permezz ta' proċessuri għal skopijiet ġenerali jew proċessuri tan-netwerk aktar milli ċirkwiti integrati b'funzjoni fissa.

Għalkemm m'hemm xejn fil-lingwa li jipprevjeni l-ottimizzazzjoni tal-prestazzjoni ta 'sett partikolari ta' protokolli, dawn l-ottimizzazzjonijiet huma inviżibbli għall-awtur tal-lingwa u jistgħu fl-aħħar mill-aħħar inaqqsu l-flessibbiltà tas-sistema u l-għanijiet u l-konfigurabilità mill-ġdid tagħhom.

Dawn il-karatteristiċi tal-lingwa ġew inizjalment stabbiliti mill-ħallieqa tagħha b'enfasi fuq l-użu mifrux tagħha fl-infrastruttura tan-netwerk.

Il-lingwa hija diġà użata f'ħafna kumpaniji:

1) Ċentri tad-dejta ta' Hyperscale;

Il-kumpanija Ċiniża Tencent hija l-akbar kumpanija ta’ investiment fid-dinja u waħda mill-akbar ditti ta’ kapital ta’ riskju. Is-sussidjarji ta 'Tencent, kemm fiċ-Ċina kif ukoll f'pajjiżi oħra madwar id-dinja, jispeċjalizzaw f'diversi oqsma ta' negozju ta 'teknoloġija għolja, inklużi diversi servizzi tal-Internet, żviluppi fil-qasam tal-intelliġenza artifiċjali u divertiment elettroniku.

P4 u routing programmabbli huma teknoloġiji avvanzati li jintużaw fl-arkitettura tan-netwerk tal-kumpanija.

Bħala wieħed mill-oriġinaturi, Google huwa kburi li jinnota l-adozzjoni rapida ta 'P4 fl-industrija tan-netwerking u fid-disinn arkitettoniku taċ-ċentru tad-dejta b'mod partikolari.

2) Kumpaniji kummerċjali;

Goldman Sachs jieħu vantaġġ li jaħdem mal-komunità tas-sors miftuħ u jiżviluppa standards u soluzzjonijiet komuni biex jinnovaw l-infrastruttura tan-netwerk u jipprovdu soluzzjonijiet aħjar għall-klijenti.

3) Produzzjoni;

L-industrija kollha tan-netwerking tibbenefika minn lingwa bħal P4 li tiddefinixxi b'mod uniku l-imġiba tat-trażmissjoni. Cisco temmen ukoll fit-trasferiment tal-linji tal-prodotti tagħha biex tuża din il-lingwa.

Juniper Networks inkluda P4 u P4 Runtime f'numru ta 'prodotti, u jipprovdi aċċess programmatiku għall-proċessur inkorporat Juniper u l-kodiċi tas-softwer tiegħu.

Ruijie Networks huwa sostenitur qawwi tal-P4 u l-benefiċċji li ġġib għan-netwerks. Bil-P4, il-kumpanija tista 'toħloq u tagħti l-aħjar soluzzjonijiet fil-klassi lil firxa wiesgħa ta' klijenti.

4) Fornituri tat-telekomunikazzjoni;

AT&T kienet adottata bikrija tal-P4, wieħed mill-ewwel li uża P4 biex jiddefinixxi l-imġieba li ried jara fin-netwerks tiegħu, u biex juża tagħmir ta 'trażmissjoni programmabbli P4 fuq in-netwerk tiegħu.

F'Deutsche Telekom, il-lingwa tintuża biex tipprototip ta' funzjonijiet ewlenin tan-netwerk bħala parti mill-programm Access 4.0.

5) Industrija tas-semikondutturi;

Il-lingwa ppermettiet lil Barefoot biex timplimenta paradigma ġdida għat-twassil tal-kapaċitajiet tas-softwer għall-pjan tar-rotta tan-netwerk.

Xilinx kien wieħed mill-fundaturi ta 'P4.org u kien involut b'mod attiv fl-iżvilupp tal-lingwa P4 u implimentatha fi pjattaformi programmabbli bbażati fuq FPGA għal ħardwer SmartNIC u NFV, u ħarġet wieħed mill-ewwel kompilaturi P416 bħala parti mid-disinn SDNet.

6) Software.

VMware jemmen li P4 joħloq enerġija, innovazzjoni u komunità tremendi li qed imexxu trasformazzjoni sinifikanti u meħtieġa fin-netwerk. VMware kien parti minn dan il-moviment tal-industrija mill-bidu, peress li mewġa ġdida ta 'innovazzjoni hija mmexxija minn approċċi bbażati fuq softwer li jestendu l-kapaċitajiet tal-infrastruttura u jimplimentaha fl-aħħar prodotti.

Għalhekk, P4 hija lingwa ta 'programmar indipendenti mill-mira u indipendenti mill-protokoll li tintuża mill-industrija u l-akkademja biex tiddefinixxi b'mod uniku l-imġieba tar-routing tal-pakketti bħala programm, li mbagħad jista' jiġi kkompilat għal miri multipli. Illum, il-miri jinkludu swiċċijiet tal-ħardwer u tas-softwer, swiċċijiet tal-hypervisor, NPUs, GPUs, FPGAs, SmartNICs u ASICs.

Il-karatteristiċi ewlenin tal-lingwa jespandu b'mod sinifikanti l-ambitu tal-applikazzjoni tagħha u jiżguraw l-implimentazzjoni rapida tagħha fl-arkitetturi tan-netwerk.

Getting Started

P4 huwa proġett miftuħ, l-informazzjoni rilevanti kollha tinsab fuq il-websajt P4.org

Link tar-repożitorju https://github.com/p4lang, fejn tista' tikseb eżempju ta' kodiċi tas-sors u tutorials.

Plugin għal Eclipse b'appoġġ P4, iżda nistgħu nirrakkomandaw P4 Studio minn Barefoot.

Lingwa ta' programmar P4

Ejja nħarsu lejn l-astrazzjonijiet ewlenin tal-qalba:

Tiddefinixxi l-Intestaturi — bl-għajnuna tagħhom, jiġu determinati l-intestaturi tal-protokoll.

Id-definizzjoni tal-header tispeċifika:

  • deskrizzjoni tal-formati tal-pakketti u l-ismijiet tal-kamp tal-header
  • oqsma permessi fissi u varjabbli

Per eżempju

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 — il-kompitu tagħhom huwa li jeżaminaw l-aħbarijiet.

L-eżempju tal-parser li ġej jiddetermina t-tranżizzjoni tal-istat finali tal-magna minn stat inizjali wieħed għal wieħed miż-żewġ stati finali:

Lingwa ta' programmar P4

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

Imwejjed — ikun fihom stati tal-magni li jgħaqqdu ċwievet tal-utent ma' azzjonijiet. Attività — deskrizzjoni ta' kif il-pakkett għandu jiġi manipulat.

It-tabelli fihom stati (definiti fil-livell ta' ġestjoni) għat-trażmissjoni tal-pakketti, jiddeskrivu l-unità Match-Action

Il-pakketti huma mqabbla minn:

  • Taqbila eżatta
  • L-Itwal Prefiss Match (LPM)
  • Tqabbil triplu (masking)

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

L-azzjonijiet kollha possibbli għandhom jiġu definiti minn qabel fit-tabelli.

L-azzjonijiet jikkonsistu f'kodiċi u data. Id-dejta tiġi mil-livell ta' ġestjoni (eż. indirizzi IP/numri tal-port). Ċerti primittivi mingħajr loop jistgħu jiġu speċifikati direttament fl-azzjoni, iżda n-numru ta 'struzzjonijiet għandu jkun prevedibbli. Għalhekk, l-azzjonijiet ma jistgħux jinkludu l-ebda loop jew dikjarazzjonijiet kundizzjonali.

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

Moduli Match-Azzjoni — azzjonijiet biex tinħoloq ċavetta ta' tfittxija, tfittex f'tabella, twettaq azzjonijiet.

Eżempju tipiku ta' modulu jidher fil-figura:

Lingwa ta' programmar P4

Kontroll tal-fluss — jindika l-ordni li fiha jintużaw il-moduli Match-Action. Dan huwa programm imperattiv li jiddefinixxi l-loġika ta 'livell għoli u s-sekwenza ta' Match-Action. Il-fluss tal-kontroll jgħaqqad l-oġġetti kollha billi jiddefinixxi l-livell ta 'kontroll.

Oġġetti esterni huma oġġetti speċifiċi b'arkitettura definita b'mod ċar u interfaces API. Per eżempju, kalkolu ta 'checksum, reġistri, counters, counters, eċċ.

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 — strutturi tad-dejta assoċjati ma' kull pakkett.

Hemm 2 tipi ta' metadejta:

  Metadejta personalizzata (struttura vojta għall-pakketti kollha)
    Tista' tpoġġi dak kollu li trid hawn
    Disponibbli matul il-pipeline
    konvenjenti għall-użu għall-iskopijiet tiegħek, per eżempju, għall-ħażna ta 'pakkett hash

  Metadata interna - ipprovduta mill-arkitettura
    Input port, output port huma definiti hawn
    Timestamp meta l-pakkett kien fil-kju, fond tal-kju
    multicast hash / multicast kju
    Prijorità tal-pakkett, importanza tal-pakkett
    Speċifikazzjoni tal-port tal-ħruġ (eż. kju tal-ħruġ)

kompilatur P4

Il-kompilatur P4 (P4C) jiġġenera:

  1. Runtime tal-pjan tad-data
  2. API għall-ġestjoni tal-istat tal-magna fil-pjan tad-dejta

Lingwa ta' programmar P4

Eżempju ta' swiċċ tas-softwer fil-lingwa P4

Il-kodiċijiet tas-sors jistgħu jitniżżlu mir-repożitorju.

p4lang/p4c-bm: joħloq konfigurazzjoni JSON għal bmv2
p4lang/bmv2: swiċċ tas-softwer li jifhem il-konfigurazzjonijiet JSON tal-verżjoni bmv2

Il-figura turi d-dijagramma tal-kumpilazzjoni tal-proġett:

Lingwa ta' programmar P4

Manipulazzjonijiet bit-tabelli, reġistri tal-qari, counters:

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


Il-kodiċi tas-sors fih il-programm simple_switch_CLI għal użu konvenjenti tal-API tas-swiċċ tas-softwer.

Tista' tniżżel dan u eżempji oħra mir-repożitorju.

Lingwa ta' programmar P4

PS Kmieni dan is-sajf, Intel iffirmat ftehim biex takkwista Barefoot Networks fi sforz biex tissodisfa malajr il-ħtiġijiet tal-utenti tal-Hyperscale Cloud. Kif qal Navin Shenoy (viċi president eżekuttiv u maniġer ġenerali tal-Grupp taċ-Ċentru tad-Data f'Intel Corporation), dan se jippermetti lil Intel biex tipprovdi tagħbija tax-xogħol akbar u aktar opportunitajiet għall-klijenti taċ-ċentru tad-data.

Fl-opinjoni personali tiegħi, m'għandniex ninsew li Intel hija mexxejja fil-produzzjoni ta 'ċipep FPGA u għandha ambjent Quartus eċċellenti. Dan ifisser li nistgħu nistennew li bil-wasla ta 'Intel, Barefoot mhux biss se jespandi l-linja ta' prodotti tiegħu, iżda wkoll Quartus u P4 Studio se jirċievu aġġornamenti u żidiet serji għal-linja Toffino u Toffino 2.

Membru uffiċjali tal-komunità P4 - kumpanija Grupp tal-fatturi.

Sors: www.habr.com

Żid kumment