Iaith raglennu P4

Iaith raglennu P4
Iaith raglennu yw P4 a ddyluniwyd i raglennu rheolau llwybro pecynnau. Yn wahanol i iaith gyffredinol fel C neu Python, mae P4 yn iaith parth-benodol gyda nifer o ddyluniadau wedi'u hoptimeiddio ar gyfer llwybro rhwydwaith.

Mae P4 yn iaith ffynhonnell agored sydd wedi'i thrwyddedu a'i chynnal gan sefydliad dielw o'r enw Consortiwm Iaith P4. Fe'i cefnogir hefyd gan y Open Networking Foundation (ONF) a'r Linux Foundation (LF), dau o'r sefydliadau ymbarél mwyaf ar gyfer prosiectau rhwydweithio ffynhonnell agored.
Bathwyd yr iaith yn wreiddiol yn 2013 ac fe’i disgrifiwyd mewn papur CCR SIGCOMM 2014 o’r enw “Protocol Independent, Packet Routing Processor Programming.”

Ers ei sefydlu, mae P4 wedi tyfu ac esblygu'n esbonyddol, gan ddod yn safon gyflym ar gyfer disgrifio trosglwyddo pecynnau gan ddyfeisiau rhwydwaith, gan gynnwys addaswyr rhwydwaith, switshis a llwybryddion.

“Mae SDN wedi trawsnewid y diwydiant rhwydweithio, ac mae P4 yn mynd â SDN i’r lefel nesaf trwy ddod â rhaglenadwyedd i lwybro,” meddai Guru Parulkar, cyfarwyddwr gweithredol y Sefydliad Rhwydweithio Agored.

Crëwyd yr iaith P4 yn wreiddiol gan grŵp o beirianwyr ac ymchwilwyr o Google, Intel, Microsoft Research, Barefoot, Princeton a Stanford. Roedd y nod yn syml: creu iaith hawdd ei defnyddio y gallai datblygwr meddalwedd ei dysgu mewn diwrnod a’i defnyddio i ddisgrifio’n gywir sut mae pecynnau’n cael eu hanfon ar draws rhwydweithiau.

O'r cychwyn cyntaf, cynlluniwyd P4 i fod yn annibynnol ar darged (h.y. gellid llunio rhaglen a ysgrifennwyd yn P4 heb ei newid i redeg ar amrywiaeth o dargedau megis ASICs, FPGAs, CPUs, NPUs, a GPUs).

Mae'r iaith hefyd yn annibynnol ar brotocol (h.y., gall rhaglen P4 ddisgrifio protocolau safonol presennol neu gael ei defnyddio i nodi dulliau cyfeirio arferol newydd).

Mewn diwydiant, defnyddir P4 ar gyfer rhaglennu dyfeisiau. Efallai yn y dyfodol y bydd safonau Internet-RFC ac IEEE hefyd yn cynnwys y fanyleb P4.

Gellir defnyddio P4 ar gyfer dyfeisiau swyddogaeth rhaglenadwy a sefydlog. Er enghraifft, fe'i defnyddir i gofnodi ymddygiad piblinell switsh yn gywir yn yr APIs Rhyngwyneb Tynnu Newid (SAI) a ddefnyddir gan yr OS switsh SONiC ffynhonnell agored. Defnyddir Ll4 hefyd ym mhrosiect Stratum ONF i ddisgrifio ymddygiad newid ar draws amrywiaeth o ddyfeisiadau sefydlog a rhaglenadwy.

Am y tro cyntaf, mae disgrifio ymddygiad y switsh a'r addaswyr rhwydwaith yn caniatáu ichi greu model gweithredadwy cywir o'r rhwydwaith cyfan cyn ei ddefnyddio. Gall darparwyr cwmwl mawr brofi a dadfygio'r rhwydwaith yn gyfan gwbl gan ddefnyddio meddalwedd, gan leihau'n sylweddol amser a chost profi rhyngweithredu yn y labordy heb fod angen caledwedd drud.

Trwy ddefnyddio P4, gall gwerthwyr offer rhwydwaith ddisgwyl ymddygiad llwybro sylfaenol cyffredin ar draws pob cynnyrch, gan ganiatáu ailddefnyddio seilwaith prawf, symleiddio datblygiad meddalwedd rheoli, ac yn y pen draw sicrhau rhyngweithrededd.

Wrth gwrs, gellir defnyddio LL4 i ysgrifennu rhaglenni sy'n disgrifio ffyrdd cwbl newydd o lwybro. Er enghraifft, defnyddir P4 yn eang ar gyfer telemetreg a mesuriadau mewn canolfannau data, mentrau a rhwydweithiau darparwyr gwasanaeth.

Mae'r gymuned ymchwil hefyd wedi camu i fyny. Mae sawl grŵp ymchwil rhwydweithio academaidd blaenllaw wedi cyhoeddi cymwysiadau newydd cyffrous yn seiliedig ar raglenni P4, gan gynnwys cydbwyso llwythi, protocolau consensws, a storio gwerth allweddol. Mae patrwm rhaglennu newydd yn cael ei greu, mae arloesedd yn symud o galedwedd i feddalwedd, gan ganiatáu i lawer o syniadau annisgwyl, newydd a dyfeisgar ddod i'r amlwg.

Mae'r gymuned ddatblygwyr wedi gwneud cyfraniadau sylweddol at ddatblygu cod, gan gynnwys casglwyr, piblinellau, modelau ymddygiad, APIs, fframweithiau prawf, cymwysiadau, a mwy. Mae gan gwmnïau fel Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, a ZTE ddatblygwyr pwrpasol; o brifysgolion gan gynnwys BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, ac USI; ac mae prosiectau ffynhonnell agored gan gynnwys CORD, FD.io, OpenDaylight, ONOS, OvS, SAI a Stratum yn amlygu'r ffaith bod P4 yn brosiect cymunedol annibynnol.

Cenhedlaeth nodweddiadol o reolwyr ar gyfer yr iaith P4:

Iaith raglennu P4

Rhagolygon cais

Iaith raglennu P4
Gan fod yr iaith wedi'i bwriadu ar gyfer rhaglenni llwybro, mae'r rhestr o ofynion a dewisiadau dylunio yn wahanol i ieithoedd rhaglennu pwrpas cyffredinol. Prif nodweddion yr iaith yw:

  1. Annibyniaeth ar weithredu'r targed;
  2. Annibyniaeth y protocol(au) a ddefnyddiwyd;
  3. Ad-drefnu maes.

Annibyniaeth ar weithrediad y targed

Mae rhaglenni P4 wedi'u cynllunio i fod yn annibynnol ar eu gweithredu, sy'n golygu y gellir eu llunio ar gyfer llawer o wahanol fathau o beiriannau gweithredu, megis proseswyr pwrpas cyffredinol, FPGAs, system-ar-sglodion, proseswyr rhwydwaith, ac ASICs. Gelwir y gwahanol fathau hyn o beiriannau yn dargedau P4, ac mae angen casglwr ar bob targed i drosi'r cod ffynhonnell P4 yn fodel switsh targed. Gellir ymgorffori'r casglwr yn y ddyfais darged, meddalwedd allanol, neu hyd yn oed wasanaeth cwmwl. Oherwydd bod llawer o'r targedau gwreiddiol ar gyfer rhaglenni P4 ar gyfer newid pecynnau syml, mae'n gyffredin iawn clywed y term "switsh P4" er bod "targed P4" yn fwy cywir.

Annibyniaeth y protocol(au) a ddefnyddiwyd

Mae P4 yn annibynnol ar brotocol. Mae hyn yn golygu nad oes gan yr iaith gefnogaeth frodorol ar gyfer protocolau cyffredin fel IP, Ethernet, TCP, VxLAN neu MPLS. Yn lle hynny, mae'r rhaglennydd P4 yn disgrifio'r fformatau pennawd ac enwau maes y protocolau gofynnol yn y rhaglen, sydd yn eu tro yn cael eu dehongli a'u prosesu gan y rhaglen a luniwyd a'r ddyfais darged.

Ad-drefnu maes

Mae'r model annibyniaeth protocol a iaith haniaethol yn caniatáu ar gyfer ad-drefnu - dylai targedau P4 allu newid prosesu pecynnau ar ôl i'r system gael ei defnyddio. Yn draddodiadol, mae'r gallu hwn wedi'i gysylltu â llwybro trwy broseswyr pwrpas cyffredinol neu broseswyr rhwydwaith yn hytrach na chylchedau integredig swyddogaeth sefydlog.

Er nad oes unrhyw beth yn yr iaith a fyddai'n atal optimeiddio perfformiad set benodol o brotocolau, mae'r optimeiddiadau hyn yn anweledig i'r awdur iaith a gallant yn y pen draw leihau hyblygrwydd y system a'r nodau a'u hailgyflunio.

Gosodwyd y nodweddion hyn ar yr iaith yn wreiddiol gan ei chrewyr gyda ffocws ar ei defnydd eang mewn seilwaith rhwydwaith.

Mae'r iaith eisoes yn cael ei defnyddio mewn llawer o gwmnïau:

1) canolfannau data Hyperscale;

Y cwmni Tsieineaidd Tencent yw'r cwmni buddsoddi mwyaf yn y byd ac un o'r cwmnïau cyfalaf menter mwyaf. Mae is-gwmnïau Tencent, yn Tsieina ac mewn gwledydd eraill ledled y byd, yn arbenigo mewn gwahanol feysydd busnes uwch-dechnoleg, gan gynnwys gwasanaethau Rhyngrwyd amrywiol, datblygiadau ym maes deallusrwydd artiffisial ac adloniant electronig.

Mae P4 a llwybro rhaglenadwy yn dechnolegau uwch a ddefnyddir ym mhensaernïaeth rhwydwaith y cwmni.

Fel un o'r cychwynwyr, mae Google yn falch o nodi mabwysiadu cyflym P4 yn y diwydiant rhwydweithio ac mewn dylunio pensaernïol canolfannau data yn arbennig.

2) Cwmnïau masnachol;

Mae Goldman Sachs yn manteisio ar weithio gyda'r gymuned ffynhonnell agored a datblygu safonau ac atebion cyffredin i arloesi seilwaith rhwydwaith a darparu atebion gwell i gleientiaid.

3) Cynhyrchu;

Byddai'r diwydiant rhwydweithio cyfan yn elwa o iaith fel P4 sy'n diffinio ymddygiad anfon ymlaen yn unigryw. Mae Cisco hefyd yn credu mewn trosglwyddo ei linellau cynnyrch i ddefnyddio'r iaith hon.

Mae Juniper Networks wedi cynnwys P4 a P4 Runtime mewn nifer o gynhyrchion, ac mae'n darparu mynediad rhaglennol i'r prosesydd mewnosod Juniper a'i god meddalwedd.

Mae Ruijie Networks yn gefnogwr cryf o P4 a'r manteision y mae'n eu rhoi i rwydweithiau. Gyda P4, gall y cwmni greu a darparu atebion gorau yn y dosbarth i ystod eang o gwsmeriaid.

4) darparwyr telathrebu;

Roedd AT&T yn fabwysiadwr cynnar o P4, un o'r rhai cyntaf i ddefnyddio P4 i ddiffinio'r ymddygiad yr oedd am ei weld yn ei rwydweithiau, ac i ddefnyddio dyfeisiau anfon ymlaen rhaglenadwy P4 ar ei rwydwaith.

Yn Deutsche Telekom, defnyddir yr iaith i brototeipio swyddogaethau rhwydwaith allweddol fel rhan o raglen Access 4.0.

5) diwydiant lled-ddargludyddion;

Galluogodd yr iaith Barefoot i weithredu patrwm newydd ar gyfer cyflwyno galluoedd meddalwedd i'r awyren llwybro rhwydwaith.

Roedd Xilinx yn un o sylfaenwyr P4.org ac roedd yn cymryd rhan weithredol yn natblygiad yr iaith P4 a'i rhoi ar waith yn llwyfannau rhaglenadwy yn seiliedig ar FPGA ar gyfer caledwedd SmartNIC a NFV, gan ryddhau un o'r casglwyr P416 cyntaf fel rhan o ddyluniad SDNet.

6) Meddalwedd.

Mae VMware yn credu bod P4 yn creu egni, arloesedd a chymuned aruthrol sy'n sbarduno trawsnewid ystyrlon ac angenrheidiol yn y rhwydwaith. Mae VMware wedi bod yn rhan o'r mudiad diwydiant hwn ers y dechrau, gan fod ton newydd o arloesi yn cael ei yrru gan ddulliau sy'n seiliedig ar feddalwedd sy'n ymestyn galluoedd seilwaith ac yn ei weithredu yn y cynhyrchion diweddaraf.

Felly, mae P4 yn iaith raglennu sy'n annibynnol ar darged ac yn annibynnol ar brotocol a ddefnyddir gan ddiwydiant a'r byd academaidd i ddiffinio ymddygiad llwybro pecynnau yn unigryw fel rhaglen, y gellir yn ei thro ei llunio ar gyfer targedau lluosog. Heddiw, mae targedau'n cynnwys switshis caledwedd a meddalwedd, switshis hypervisor, NPUs, GPUs, FPGAs, SmartNICs ac ASICs.

Mae prif nodweddion yr iaith yn ehangu cwmpas ei chymhwysiad yn sylweddol ac yn sicrhau ei weithrediad cyflym mewn pensaernïaeth rhwydwaith.

Dechrau Arni

Mae P4 yn brosiect agored, ac mae'r holl wybodaeth berthnasol ar y wefan t4.org

Dolen ystorfa https://github.com/p4lang, lle gallwch gael cod ffynhonnell enghreifftiol a thiwtorialau.

Плагин ar gyfer Eclipse gyda chefnogaeth P4, ond gallwn argymell Stiwdio P4 o Droednoeth.

Iaith raglennu P4

Edrychwn ar brif dyniadau'r cnewyllyn:

Diffinio Penawdau - gyda'u cymorth, penawdau protocol yn cael eu pennu.

Mae diffiniad y pennawd yn nodi:

  • disgrifiad o fformatau pecynnau ac enwau meysydd pennawd
  • meysydd a ganiateir sefydlog ac amrywiol

Er enghraifft,

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 — eu tasg yw dosrannu'r penawdau.

Bydd yr enghraifft parser ganlynol yn pennu trawsnewid cyflwr terfynol y peiriant o un cyflwr cychwynnol i un o ddau gyflwr terfynol:

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

Tablau — cynnwys cyflyrau peiriant sy'n cysylltu allweddi defnyddiwr â chamau gweithredu. Gweithgarwch — disgrifiad o sut y dylid trin y pecyn.

Mae'r tablau'n cynnwys cyflyrau (a ddiffinnir ar y lefel reoli) ar gyfer anfon pecynnau ymlaen, disgrifiwch yr uned Match-Action

Mae pecynnau'n cael eu cyfateb gan:

  • Cydweddiad union
  • Gêm Rhagddodiad Hiraf (LPM)
  • Paru triphlyg (cuddio)

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

Rhaid diffinio pob cam gweithredu posibl mewn tablau ymlaen llaw.

Mae gweithredoedd yn cynnwys cod a data. Daw'r data o'r lefel rheoli (ee cyfeiriadau IP/rhifau porthladd). Gellir pennu rhai cyntefigau di-dolen yn uniongyrchol yn y weithred, ond rhaid i nifer y cyfarwyddiadau fod yn rhagweladwy. Felly, ni all gweithredoedd gynnwys unrhyw ddolenni neu ddatganiadau amodol.

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

Modiwlau Match-Action — gweithredoedd i greu allwedd chwilio, chwilio mewn tabl, perfformio gweithredoedd.

Dangosir enghraifft nodweddiadol o fodiwl yn y ffigur:

Iaith raglennu P4

Rheoli llif — yn nodi ym mha drefn y defnyddir modiwlau Match-Action. Mae hon yn rhaglen hanfodol sy'n diffinio'r rhesymeg lefel uchel a'r dilyniant Match-Action. Mae'r llif rheoli yn cysylltu'r holl wrthrychau trwy ddiffinio lefel y rheolaeth.

Gwrthrychau allanol yn wrthrychau penodol gyda phensaernïaeth wedi'i ddiffinio'n glir a rhyngwynebau API. Er enghraifft, cyfrifiad siec, cofrestri, cownteri, cownteri, ac ati.

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 — strwythurau data sy'n gysylltiedig â phob pecyn.

Mae 2 fath o fetadata:

  Metadata personol (strwythur gwag ar gyfer pob pecyn)
    Gallwch chi roi beth bynnag rydych chi ei eisiau yma
    Ar gael trwy gydol y biblinell
    cyfleus i'w ddefnyddio at eich dibenion eich hun, er enghraifft, ar gyfer storio stwnsh pecyn

  Metadata mewnol - a ddarperir gan y bensaernïaeth
    Diffinnir porthladd mewnbwn, porthladd allbwn yma
    Stamp amser pan oedd y pecyn mewn ciw, dyfnder y ciw
    hash multicast / ciw aml-gast
    Blaenoriaeth pecyn, pwysigrwydd pecyn
    Manyleb porthladd allbwn (e.e. ciw allbwn)

P4 casglwr

Mae'r casglwr P4 (P4C) yn cynhyrchu:

  1. Amser rhedeg awyren data
  2. API ar gyfer rheoli cyflwr peiriant yn yr awyren ddata

Iaith raglennu P4

Enghraifft o switsh meddalwedd mewn iaith P4

Gellir lawrlwytho codau ffynhonnell o'r gadwrfa.

p4lang/p4c-bm: yn creu cyfluniad JSON ar gyfer bmv2
p4lang/bmv2: switsh meddalwedd sy'n deall ffurfweddiadau fersiwn bmv2 JSON

Mae’r ffigur yn dangos y diagram llunio prosiect:

Iaith raglennu P4

Triniaethau â thablau, cofrestri darllen, cownteri:

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


Mae'r cod ffynhonnell yn cynnwys y rhaglen simple_switch_CLI ar gyfer defnydd cyfleus o'r API switsh meddalwedd.

Gallwch lawrlwytho hwn ac enghreifftiau eraill o'r gadwrfa.

Iaith raglennu P4

PS Yn gynnar yr haf hwn, llofnododd Intel gytundeb i gaffael Barefoot Networks mewn ymdrech i ddiwallu anghenion defnyddwyr Hyperscale Cloud yn gyflym. Fel y dywedodd Navin Shenoy (is-lywydd gweithredol a rheolwr cyffredinol Grŵp y Ganolfan Ddata yn Intel Corporation), bydd hyn yn caniatáu i Intel ddarparu llwythi gwaith mwy a mwy o gyfleoedd i gwsmeriaid canolfannau data.

Yn fy marn bersonol i, ni ddylem anghofio bod Intel yn arweinydd wrth gynhyrchu sglodion FPGA ac mae ganddo amgylchedd Quartus rhagorol. Mae hyn yn golygu y gallwn ddisgwyl, gyda dyfodiad Intel, y bydd Barefoot nid yn unig yn ehangu ei linell gynnyrch, ond hefyd bydd Quartus a P4 Studio yn derbyn diweddariadau ac ychwanegiadau difrifol i linell Toffino a Toffino 2.

Aelod swyddogol o gymuned P4 - cwmni Grŵp ffactor.

Ffynhonnell: hab.com

Ychwanegu sylw