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:
Prospetti ta' applikazzjoni
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:
- Indipendenza mill-implimentazzjoni tal-mira;
- Indipendenza tal-protokoll(i) użat(i);
- 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
Link tar-repożitorju
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:
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:
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:
- Runtime tal-pjan tad-data
- API għall-ġestjoni tal-istat tal-magna fil-pjan tad-dejta
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:
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.
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
Sors: www.habr.com