P4 cànan prògramachaidh

P4 cànan prògramachaidh
Tha P4 na chànan prògramaidh a chaidh a dhealbhadh gus riaghailtean slighe pacaid a phrògramadh. Eu-coltach ri cànan adhbhar coitcheann leithid C no Python, tha P4 na chànan a tha sònraichte don àrainn le grunn dhealbhaidhean air an ùrachadh airson slighe lìonra.

Tha P4 na chànan stòr fosgailte le cead agus air a chumail suas le buidheann neo-phrothaideach ris an canar Co-bhanntachd Cànain P4. Tha e cuideachd a’ faighinn taic bhon Open Networking Foundation (ONF) agus an Linux Foundation (LF), dhà de na buidhnean sgàile as motha airson pròiseactan lìonraidh fosgailte.
Chaidh an cànan a chosnadh an toiseach ann an 2013 agus chaidh a mhìneachadh ann am pàipear 2014 SIGCOMM CCR leis an tiotal “Protocol Independent, Packet Routing Processor Programming”.

Bho chaidh a stèidheachadh, tha P4 air fàs agus air fàs gu h-obann, gu luath a’ tighinn gu bhith na inbhe airson cunntas a thoirt air sgaoileadh phasganan le innealan lìonra, a ’toirt a-steach innealan-atharrachaidh lìonra, suidsichean, agus routers.

“Tha SDN air cruth-atharrachadh a thoirt air gnìomhachas an lìonraidh, agus tha P4 a’ toirt SDN chun ath ìre le bhith a’ toirt comas-prògramaidh gu slighe," thuirt Guru Parulkar, stiùiriche gnìomh an Open Networking Foundation.

Chaidh an cànan P4 a chruthachadh an toiseach le buidheann de innleadairean agus luchd-rannsachaidh bho Google, Intel, Microsoft Research, Barefoot, Princeton agus Stanford. Bha an amas sìmplidh: cruthaich cànan furasta a chleachdadh a dh’ fhaodadh leasaiche bathar-bog ionnsachadh ann an latha agus a chleachdadh gus cunntas mionaideach a thoirt air mar a thèid pacaidean a chuir thairis air lìonraidhean.

Bhon fhìor thoiseach, chaidh P4 a dhealbhadh gus a bhith neo-eisimeileach air targaidean (ie dh’ fhaodadh prògram sgrìobhte ann am P4 a bhith air a chur ri chèile gun atharrachadh gus a ruith air grunn thargaidean leithid ASICs, FPGAn, CPUs, NPUn, agus GPUs).

Tha an cànan cuideachd neo-eisimeileach bho phròtacal (ie, faodaidh prògram P4 cunntas a thoirt air protocolaidhean àbhaisteach a th’ ann no a chleachdadh gus modhan seòlaidh gnàthaichte ùra a shònrachadh).

Ann an gnìomhachas, tha P4 air a chleachdadh airson prògramadh innealan. Is dòcha san àm ri teachd gum bi inbhean Internet-RFC agus IEEE a’ toirt a-steach sònrachadh P4.

Faodar P4 a chleachdadh airson innealan gnìomh prògramaichte agus stèidhichte. Mar eisimpleir, tha e air a chleachdadh gus giùlan loidhne-phìoban suidse a chlàradh gu ceart anns na APIan Switch Abstraction Interface (SAI) a chleachdas an tionndadh fosgailte SONiC switch OS. Tha P4 cuideachd air a chleachdadh ann am pròiseact ONF Stratum gus cunntas a thoirt air atharrachadh giùlan thairis air grunn innealan stèidhichte agus prògramaichte.

Airson a ’chiad uair, le bhith a’ toirt cunntas air giùlan an suidse agus innealan-atharrachaidh lìonra leigidh sin dhut modal so-ghnìomhaichte ceart a chruthachadh den lìonra gu lèir mus tèid a chleachdadh. Faodaidh solaraichean sgòthan mòra an lìonra a dhearbhadh agus a dhì-cheadachadh gu tur a’ cleachdadh bathar-bog, a’ lughdachadh gu mòr ùine agus cosgais deuchainn eadar-obrachaidh san obair-lann gun a bhith feumach air bathar-cruaidh daor.

Le bhith a’ cleachdadh P4, faodaidh luchd-reic uidheamachd lìonra a bhith a’ dùileachadh giùlan àbhaisteach bunaiteach thar gach toradh, a’ ceadachadh ath-chleachdadh bun-structair deuchainn, a’ sìmpleachadh leasachadh bathar-bog riaghlaidh, agus aig a’ cheann thall a’ dèanamh cinnteach à eadar-obrachalachd.

Gun teagamh, faodar P4 a chleachdadh airson prògraman a sgrìobhadh a bheir cunntas air dòighean gu tur ùr air slighe. Mar eisimpleir, tha P4 air a chleachdadh gu farsaing airson telemetry agus tomhasan ann an ionadan dàta, lìonraidhean iomairt agus solaraichean seirbheis.

Tha a’ choimhearsnachd rannsachaidh air a dhol suas cuideachd. Tha grunn phrìomh bhuidhnean rannsachaidh lìonraidh acadaimigeach air tagraidhean ùra inntinneach fhoillseachadh stèidhichte air prògraman P4, a’ gabhail a-steach cothromachadh luchdan, protocolaidhean co-aontachd, agus tasgadh prìomh luach. Thathas a’ cruthachadh paradigm prògramadh ùr, tha ùr-ghnàthachadh a’ gluasad bho bhathar-cruaidh gu bathar-bog, a’ leigeil le mòran bheachdan ris nach robh dùil, ùr is innleachdach nochdadh.

Tha a’ choimhearsnachd leasaiche air cur gu mòr ri leasachadh còd, a’ toirt a-steach luchd-cruinneachaidh, pìoban, modalan giùlain, APIan, frèaman deuchainn, tagraidhean, agus barrachd. Tha luchd-leasachaidh sònraichte aig companaidhean leithid Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, agus ZTE; bho oilthighean a’ gabhail a-steach BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, agus USI; agus tha pròiseactan stòr fosgailte a’ toirt a-steach CORD, FD.io, OpenDaylight, ONOS, OvS, SAI agus Stratum a’ soilleireachadh gur e pròiseact coimhearsnachd neo-eisimeileach a th’ ann am P4.

Ginealach àbhaisteach de luchd-riaghlaidh airson cànan P4:

P4 cànan prògramachaidh

Ro-shealladh tagraidh

P4 cànan prògramachaidh
Leis gu bheil an cànan airson tagraidhean slighe, tha an liosta de riatanasan agus roghainnean dealbhaidh eadar-dhealaichte an taca ri cànanan prògramadh adhbhar coitcheann. Is iad prìomh fheartan a’ chànain:

  1. Neo-eisimeileachd bho bhuileachadh targaid;
  2. Neo-eisimeileachd a' phròtacail(ean) a thathar a' cleachdadh;
  3. Ath-dhealbhadh achaidh.

Neo-eisimeileachd bho bhuileachadh targaid

Tha prògraman P4 air an dealbhadh airson a bhith air an cur an gnìomh gu neo-eisimeileach, a’ ciallachadh gum faodar an cur ri chèile airson iomadh seòrsa einnsean cur gu bàs, leithid pròiseasairean adhbhar coitcheann, FPGAn, siostam-air-chips, pròiseasairean lìonra, agus ASICn. Canar targaidean P4 ris na diofar sheòrsaichean innealan sin, agus feumaidh gach targaid inneal-cruinneachaidh gus còd stòr P4 a thionndadh gu bhith na mhodail suidse targaid. Faodar an inneal-cruinneachaidh a thoirt a-steach don inneal targaid, bathar-bog taobh a-muigh, no eadhon seirbheis sgòthan. Leis gu robh mòran de na targaidean tùsail airson prògraman P4 airson atharrachadh pacaidean sìmplidh, tha e gu math cumanta am facal “P4 switch” a chluinntinn ged a tha “targaid P4” nas cruinne.

Neo-eisimeileachd a’ phròtacail(ean) a thathar a’ cleachdadh

Tha P4 neo-eisimeileach bhon phròtacal. Tha seo a’ ciallachadh nach eil taic dhùthchasach aig a’ chànan airson protocolaidhean cumanta leithid IP, Ethernet, TCP, VxLAN no MPLS. An àite sin, tha am prògramadair P4 a ’toirt cunntas air cruthan cinn agus ainmean achaidh nam protocalan a tha a dhìth sa phrògram, a tha iad fhèin air am mìneachadh agus air an giullachd leis a’ phrògram cruinnichte agus an inneal targaid.

Ath-dhealbhadh achaidh

Tha neo-eisimeileachd a’ phròtacail agus modail cànain eas-chruthach a’ ceadachadh ath-dhealbhadh - bu chòir gum biodh targaidean P4 comasach air giullachd pacaidean atharrachadh às deidh an siostam a bhith air a chleachdadh. Tha an comas seo gu traidiseanta air a bhith co-cheangailte ri bhith a’ ruith tro phròiseasan adhbhar coitcheann no pròiseasairean lìonra seach cuairtean aonaichte gnìomh stèidhichte.

Ged nach eil dad sa chànan a chuireadh casg air coileanadh seata sònraichte de phròtacalan, tha na optimizations sin do-fhaicsinneach don ùghdar cànain agus faodaidh iad aig a’ cheann thall sùbailteachd an t-siostaim agus na h-amasan agus an ath-dhealbhadh a lughdachadh.

Chaidh na feartan seo den chànan a chuir sìos an toiseach leis an luchd-cruthachaidh le fòcas air a bhith ga chleachdadh gu farsaing ann am bun-structar lìonra.

Tha an cànan air a chleachdadh mar-thà ann am mòran chompanaidhean:

1) Ionadan dàta Hyperscale;

Is e a’ chompanaidh Sìneach Tencent an companaidh tasgaidh as motha san t-saoghal agus aon de na companaidhean calpa iomairt as motha. Tha fo-chompanaidhean Tencent, an dà chuid ann an Sìona agus ann an dùthchannan eile air feadh an t-saoghail, a’ speisealachadh ann an diofar raointean de ghnìomhachas àrdteicneòlais, a’ toirt a-steach diofar sheirbheisean eadar-lìn, leasachaidhean ann an raon inntleachd fuadain agus dibhearsain dealanach.

Tha P4 agus slighe prògramaichte nan teicneòlasan adhartach a thathas a’ cleachdadh ann an ailtireachd lìonra na companaidh.

Mar aon den luchd-tòiseachaidh, tha Google moiteil a bhith mothachail gu bheil gabhail gu luath ri P4 anns a’ ghnìomhachas lìonraidh agus ann an dealbhadh ailtireachd ionad dàta gu sònraichte.

2) Companaidhean malairteach;

Bidh Goldman Sachs a’ gabhail brath air a bhith ag obair leis a’ choimhearsnachd le còd fosgailte agus a’ leasachadh inbhean agus fuasglaidhean cumanta gus bun-structar lìonra ùr-ghnàthachadh agus fuasglaidhean nas fheàrr a thoirt do luchd-dèiligidh.

3) Riochdachadh;

Gheibheadh ​​an gnìomhachas lìonraidh gu lèir buannachd bho chànan mar P4 a tha gu sònraichte a’ mìneachadh giùlan air adhart. Tha Cisco cuideachd a’ creidsinn ann a bhith a’ gluasad a loidhnichean toraidh gus a’ chànan seo a chleachdadh.

Tha Juniper Networks air P4 agus P4 Runtime a thoirt a-steach ann an grunn thoraidhean, agus a’ toirt cothrom prògramaichte don phròiseasar freumhaichte Juniper agus a chòd bathar-bog.

Tha Ruijie Networks na neach-taic làidir do P4 agus na buannachdan a bheir e dha lìonraidhean. Le P4, is urrainn don chompanaidh na fuasglaidhean as fheàrr sa chlas a chruthachadh agus a lìbhrigeadh do raon farsaing de luchd-ceannach.

4) Solaraichean cian-conaltraidh;

Bha AT&T na neach-uchd-mhacachd tràth de P4, aon den chiad fheadhainn a chleachd P4 gus an giùlan a bha e airson fhaicinn anns na lìonraidhean aige a mhìneachadh, agus gus innealan adhartachaidh prògramaichte P4 a chleachdadh air an lìonra aige.

Aig Deutsche Telekom, tha an cànan air a chleachdadh gus prototeip a dhèanamh air prìomh ghnìomhan lìonra mar phàirt den phrògram Access 4.0.

5) Semiconductor gnìomhachas;

Leig an cànan le Barefoot paradigm ùr a chuir an gnìomh airson comasan bathar-bog a lìbhrigeadh don itealan slighe lìonra.

Bha Xilinx air aon den fheadhainn a stèidhich P4.org agus bha e gu mòr an sàs ann an leasachadh cànan P4 agus ga chuir an gnìomh ann an àrd-ùrlaran prògramaichte stèidhichte air FPGA airson bathar-cruaidh SmartNIC agus NFV, a’ leigeil ma sgaoil aon de na ciad luchd-cruinneachaidh P416 mar phàirt de dhealbhadh SDNet.

6) Bathar-bog.

Tha VMware den bheachd gu bheil P4 a’ cruthachadh lùth, ùr-ghnàthachadh agus coimhearsnachd air leth a tha a’ stiùireadh cruth-atharrachadh brìoghmhor agus riatanach san lìonra. Tha VMware air a bhith na phàirt den ghluasad gnìomhachais seo bhon toiseach, leis gu bheil tonn ùr de ùr-ghnàthachadh air a stiùireadh le dòighean-obrach stèidhichte air bathar-bog a leudaicheas comasan bun-structair agus a chuireas an gnìomh anns na toraidhean as ùire.

Mar sin, tha P4 na chànan prògramaidh neo-eisimeileach le targaid agus neo-eisimeileach air protocol a tha air a chleachdadh le gnìomhachas agus an saoghal acadaimigeach gus giùlan pacaidh a mhìneachadh gu h-annasach mar phrògram, a dh’ fhaodar an uair sin a chur ri chèile airson grunn thargaidean. An-diugh, tha targaidean a’ toirt a-steach suidsichean bathar-cruaidh is bathar-bog, suidsichean hypervisor, NPUn, GPUs, FPGAn, SmartNICs agus ASICn.

Bidh prìomh fheartan a’ chànain a’ leudachadh gu mòr air farsaingeachd an tagraidh aige agus a’ dèanamh cinnteach gum bi e air a bhuileachadh gu sgiobalta ann an ailtireachd lìonra.

Getting Started

Tha P4 na phròiseact fosgailte, tha a h-uile fiosrachadh buntainneach air an làrach-lìn p4.org

Ceangal stòr-dàta https://github.com/p4lang, far am faigh thu còd stòr eisimpleir agus clasaichean oideachaidh.

Плагин airson Eclipse le taic P4, ach is urrainn dhuinn a mholadh Stiùidio P4 bho Barefoot.

P4 cànan prògramachaidh

Bheir sinn sùil air na prìomh tharraingean den kernel:

A’ mìneachadh cinn-cinn - le an cuideachadh, tha cinn-cinn protocol air a dhearbhadh.

Tha mìneachadh a’ chinn-cinn a’ sònrachadh:

  • tuairisgeul air cruthan pacaid agus ainmean cinn-cinn
  • raointean ceadaichte stèidhichte agus caochlaideach

Mar eisimpleir

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

Parsairean - is e an obair aca na cinn-naidheachd a sgrùdadh.

Bidh an eisimpleir parser a leanas a’ dearbhadh gluasad staid dheireannach an inneil bho aon staid thùsail gu aon de dhà stàite deireannach:

P4 cànan prògramachaidh

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

Clàran - bidh stàitean inneal a’ ceangal iuchraichean cleachdaiche le gnìomhan. Gnìomhan - tuairisgeul air mar a bu chòir a’ phacaid a làimhseachadh.

Anns na clàran tha stàitean (air am mìneachadh aig ìre riaghlaidh) airson cur air adhart pacaid, thoir cunntas air an aonad Match-Action

Tha na pacaidean air am maidseadh le:

  • Dìreach co-chòrdadh
  • Geama ro-leasachan as fhaide (LPM)
  • Co-fhreagairt trì-fhillte (masg)

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

Feumar a h-uile gnìomh a dh’ fhaodadh a bhith air a mhìneachadh ann an clàran ro-làimh.

Tha gnìomhan a’ gabhail a-steach còd agus dàta. Tha an dàta a’ tighinn bhon ìre riaghlaidh (me seòlaidhean IP/àireamhan puirt). Faodar cuid de phrìomhairean gun lùb a shònrachadh gu dìreach anns a’ ghnìomh, ach feumaidh an àireamh de stiùiridhean a bhith ro-innseach. Mar sin, chan fhaod lùban no aithrisean cumhach a bhith ann an gnìomhan.

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

Modalan Match-Action - gnìomhan gus iuchair sgrùdaidh a chruthachadh, sgrùdadh ann an clàr, gnìomhan a dhèanamh.

Tha eisimpleir àbhaisteach de mhodal air a shealltainn san fhigear:

P4 cànan prògramachaidh

Sruth smachd - a’ comharrachadh an òrdugh anns a bheil modalan Match-Action air an cleachdadh. Is e prògram riatanach a tha seo a tha a’ mìneachadh loidsig àrd-ìre agus sreath Match-Action. Bidh an sruth smachd a’ ceangal gach nì le bhith a’ mìneachadh an ìre smachd.

Feartan taobh a-muigh nan nithean sònraichte le ailtireachd soilleir agus eadar-aghaidh API. Mar eisimpleir, àireamhachadh checksum, clàran, cunntairean, cunntairean, msaa.

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
}

Meata-dàta - structaran dàta co-cheangailte ri gach pasgan.

Tha dà sheòrsa meata-dàta ann:

  Metadata gnàthaichte (structar falamh airson a h-uile pasgan)
    Faodaidh tu rud sam bith a tha thu ag iarraidh a chuir an seo
    Ri fhaighinn air feadh na loidhne-phìoban
    goireasach airson a chleachdadh airson na h-adhbharan agad fhèin, mar eisimpleir, airson hash pacaid a stòradh

  Metadata a-staigh - air a thoirt seachad leis an ailtireachd
    Tha port cuir a-steach, port toraidh air a mhìneachadh an seo
    Stampa nuair a bha am pacaid air ciudha, doimhneachd ciudha
    multicast hash / ciudha multicast
    Prìomhachas pacaid, cudrom pacaid
    Sònrachadh port toraidh (m.e. ciudha toraidh)

P4 compiler

Bidh an compiler P4 (P4C) a’ gineadh:

  1. Ùine ruith plèana dàta
  2. API airson riaghladh staid inneal anns an itealan dàta

P4 cànan prògramachaidh

Eisimpleir de atharrachadh bathar-bog ann an cànan P4

Faodar còdan stòr a luchdachadh sìos bhon stòr.

p4lang/p4c-bm: a’ cruthachadh rèiteachadh JSON airson bmv2
p4lang/bmv2: tionndadh bathar-bog a thuigeas rèiteachaidhean dreach bmv2 JSON

Tha an dealbh a’ sealltainn diagram cruinneachaidh a’ phròiseict:

P4 cànan prògramachaidh

Làimhseachadh le bùird, clàran leughaidh, cunntairean:

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


Anns a’ chòd stòr tha am prògram simple_switch_CLI airson cleachdadh goireasach den API tionndadh bathar-bog.

Faodaidh tu seo agus eisimpleirean eile a luchdachadh sìos bhon stòr.

P4 cànan prògramachaidh

PS Tràth as t-samhradh, chuir Intel ainm ri aonta gus Barefoot Networks fhaighinn ann an oidhirp coinneachadh gu sgiobalta ri feumalachdan luchd-cleachdaidh Hyperscale Cloud. Mar a thuirt Navin Shenoy (iar-cheann-suidhe gnìomhach agus manaidsear coitcheann Buidheann Ionad Dàta aig Intel Corporation), leigidh seo le Intel eallach obrach nas motha agus barrachd chothroman a thoirt do luchd-ceannach ionadan dàta.

Na mo bheachd pearsanta, cha bu chòir dhuinn dìochuimhneachadh gu bheil Intel na stiùiriche ann a bhith a’ dèanamh chips FPGA agus tha àrainneachd Quartus air leth math aige. Tha seo a’ ciallachadh gum faod sinn a bhith an dùil, nuair a thig Intel, nach e a-mhàin gun leudaich Barefoot an loidhne toraidh aige, ach gum faigh Quartus agus P4 Studio cuideachd ùrachaidhean mòra agus cuiridhean ris an loidhne Toffino agus Toffino 2.

Ball oifigeil den choimhearsnachd P4 - companaidh buidheann bhàillidh.

Source: www.habr.com

Cuir beachd ann