zimanê bernamenûs P4

zimanê bernamenûs P4
P4 zimanek bernamesaziyê ye ku ji bo bernamekirina rêgezên rêça pakêtê hatî çêkirin. Berevajî zimanek gelemperî wekî C an Python, P4 zimanek domain-taybetî ye ku bi hejmarek sêwiranên ku ji bo rêvekirina torê xweşkirî ne.

P4 zimanek çavkaniyek vekirî ye ku ji hêla rêxistinek ne-qezenc a bi navê P4 Ziman Consortium ve hatî destûr kirin û tê domandin. Di heman demê de ew ji hêla Weqfa Tora Vekirî (ONF) û Weqfa Linux (LF), du ji mezintirîn rêxistinên sîwanê yên ji bo projeyên tora çavkaniya vekirî ve tê piştgirî kirin.
Ziman bi eslê xwe di sala 2013-an de hate çêkirin û di sala 2014-an de di kaxezek SIGCOMM CCR ya bi sernavê "Protokola Serbixwe, Bernameya Pêvajoya Rêvekirina Pakêtê" de hate şirove kirin.

Ji destpêka damezrandina xwe ve, P4 bi rengek berbiçav mezin bûye û pêş ketiye, zû bûye standardek ji bo danasîna veguheztina pakêtan ji hêla amûrên torê ve, di nav de adapterên torê, guheztin, û rêwer.

"SDN pîşesaziya torê veguherandiye, û P4 SDN-ê bi bernamekirinê ber bi rêvekirinê ve digihîne astek din," got Guru Parulkar, rêveberê kargêriya Weqfa Tora Vekirî.

Zimanê P4 di destpêkê de ji hêla komek endezyar û lêkolînerên Google, Intel, Microsoft Research, Barefoot, Princeton û Stanford ve hatî çêkirin. Armanc hêsan bû: zimanek bi karanîna hêsan biafirînin ku pêşdebirek nermalavê dikare di rojekê de fêr bibe û bikar bîne da ku bi rast diyar bike ka pakêt çawa di nav toran de têne şandin.

Ji destpêkê ve, P4 hate sêwirandin ku bibe armanc serbixwe (ango bernameyek ku di P4 de hatî nivîsandin dikare bê guheztin were berhev kirin da ku li ser cûrbecûr armancên wekî ASIC, FPGA, CPU, NPU, û GPU were xebitandin).

Ziman di heman demê de ji protokolê serbixwe ye (ango, bernameyek P4 dikare protokolên standard ên heyî diyar bike an jî ji bo destnîşankirina modên navnîşana xwerû ya nû were bikar anîn).

Di pîşesaziyê de, P4 ji bo bernameya cîhazê tê bikar anîn. Dibe ku di pêşerojê de standardên Internet-RFC û IEEE dê taybetmendiya P4-ê jî bihewînin.

P4 dikare hem ji bo amûrên fonksiyonê yên bernamekirî û hem jî sabît were bikar anîn. Mînakî, ew ji bo tomarkirina rastkirina behreya lûleya guheztinê di API-yên Switch Abstraction Interface (SAI) de tê bikar anîn ku ji hêla çavkaniya vekirî SONiC veguhertina OS-ê ve têne bikar anîn. P4 di projeya ONF Stratum de jî tê bikar anîn da ku behreya guheztinê li ser cûrbecûr amûrên sabît û bernamekirî diyar bike.

Ji bo yekem car, danasîna behreya guhêrbar û adapterên torê dihêle hûn berî bicîhkirinê modelek bikêrhatî ya tevaya torê biafirînin. Pêşkêşkerên ewr ên mezin dikarin torê bi tevahî bi karanîna nermalavê ceribandin û debut bikin, bi girîngî dem û lêçûna ceribandina hevberdanê ya di laboratîfê de kêm bike bêyî ku pêdivî bi hardware biha hebe.

Bi karanîna P4, firoşkarên alavên torê dikarin li seranserê hemî hilberan behremendiya rêgezê ya bingehîn a hevpar hêvî bikin, rê bidin ji nû ve karanîna binesaziya ceribandinê, hêsankirina pêşkeftina nermalava rêveberiyê, û di dawiyê de danûstendina hevgirtinê misoger dike.

Bê guman, P4 dikare ji bo nivîsandina bernameyên ku rêgezên bi tevahî nû yên rêvekirinê vedibêje were bikar anîn. Mînakî, P4 bi berfirehî ji bo telemetrî û pîvandinên li navendên daneyê, pargîdanî û torên peydakiroxê karûbar tê bikar anîn.

Civaka lêkolînê jî gav avêtiye. Gelek komên lêkolînê yên torê yên akademîk ên pêşeng serîlêdanên nû yên balkêş li ser bingeha bernameyên P4 weşandine, di nav de hevsengkirina barkirinê, protokolên lihevhatinê, û vegirtina nirxa sereke. Paradîgmayek bernamesaziyê ya nû tê afirandin, nûbûn ji hardware ber bi nermalavê ve diçe, dihêle ku gelek ramanên nediyar, nû û jîr derkevin holê.

Civata pêşdebiran di pêşkeftina kodê de, di nav de berhevkar, boriyên, modelên behremendiyê, API, çarçoveyên ceribandinê, serîlêdan, û hêj bêtir tevkariyên girîng kirine. Pargîdaniyên wekî Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, û ZTE pêşdebiran diyarî kirine; ji zanîngehên di nav de BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, û USI; û projeyên çavkaniya vekirî di nav de CORD, FD.io, OpenDaylight, ONOS, OvS, SAI û Stratum vê rastiyê ronî dikin ku P4 projeyek civata serbixwe ye.

Nifşa tîpîk a kontrolkeran ji bo zimanê P4:

zimanê bernamenûs P4

Perspektîfên Serîlêdanê

zimanê bernamenûs P4
Ji ber ku ziman ji bo serîlêdanên rêvekirinê tête armanc kirin, navnîşa hewcedarî û vebijarkên sêwiranê li gorî zimanên bernamesaziya gelemperî cûda ye. Taybetmendiyên sereke yên ziman ev in:

  1. Serxwebûna ji pêkanîna armancê;
  2. Serxwebûna protokol(ên) bikar anîn;
  3. Veavakirina zeviyê.

Serxwebûna ji pêkanîna hedef

Bernameyên P4 ji bo pêkanîna serbixwe têne sêwirandin, tê vê wateyê ku ew dikarin ji bo gelek celeb motorên darvekirinê, wek pêvajoyên gelemperî, FPGA, pergalê-li-çîp, pêvajoyên torê, û ASIC werin berhev kirin. Van cûrbecûr makîneyan wekî hedefên P4 têne zanîn, û her armancek berhevkarek hewce dike ku koda çavkaniyê P4 veguherîne modelek veguherîna armancê. Berhevkar dikare di nav cîhaza armanc, nermalava derveyî, an tewra karûbarek ewr de were çêkirin. Ji ber ku gelek armancên orîjînal ên ji bo bernameyên P4 ji bo guheztina pakêtê ya hêsan bûn, pir gelemperî ye ku meriv peyva "P4 guheztina" bibihîze her çend "Armanca P4" rasttir e.

Serxwebûna protokol(ên) tê bikaranîn

P4 protokola serbixwe ye. Ev tê vê wateyê ku ziman ji bo protokolên hevpar ên wekî IP, Ethernet, TCP, VxLAN an MPLS piştgirîya xwemalî nîne. Di şûna wê de, bernamesaz P4 di bernameyê de formatên sernav û navên zeviyê yên protokolên pêwîst vedibêje, ku di encamê de ji hêla bernameya berhevkirî û cîhaza armanc ve têne şîrove kirin û pêvajo kirin.

Veavakirina zeviyê

Serxwebûna protokolê û modela zimanî ya razber destûrê dide veavakirinê - Armancên P4 divê piştî ku pergalê were bicîh kirin karibin pêvajoya pakêtê biguhezînin. Vê kapasîteyê bi kevneşopî bi rêvekirina bi navgîniya pêvajoyên-armanca gelemperî an pêvajoyên torê ve ji xelekên yekbûyî yên bi fonksiyona sabît re têkildar e.

Her çend di ziman de tiştek tune ku pêşî li xweşbîniya performansa komek taybetî ya protokolan bigire, ev xweşbînkirin ji nivîskarê ziman re nayên dîtin û di dawiyê de dikarin nermbûna pergalê û armanc û veavakirina wan kêm bikin.

Van taybetmendiyên ziman di destpêkê de ji hêla afirînerên wî ve bi balkişandina li ser karanîna berfireh di binesaziya torê de hatine danîn.

Ziman berê di gelek pargîdaniyan de tê bikar anîn:

1) Navendên daneyên Hyperscale;

Pargîdaniya çînî Tencent mezintirîn pargîdaniya veberhênanê ya cîhanê ye û yek ji mezintirîn pargîdaniyên sermayeyê ye. Pargîdaniyên Tencent, hem li Chinaînê û hem jî li welatên din ên cîhanê, di warên cihêreng ên karsaziya teknolojiya bilind de, di nav de karûbarên cûda yên Înternetê, pêşkeftinên di warê îstîxbarata sûnî û şahiya elektronîkî de, pispor in.

P4 û rêça bernamekirî teknolojiyên pêşkeftî ne ku di mîmariya torê ya pargîdaniyê de têne bikar anîn.

Wekî yek ji damezrîner, Google serbilind e ku pejirandina bilez a P4 di pîşesaziya torê de û bi taybetî di sêwirana mîmarî ya navenda daneyê de destnîşan dike.

2) Şîrketên bazirganî;

Goldman Sachs ji xebata bi civaka çavkaniya vekirî re sûd werdigire û standard û çareseriyên hevpar pêş dixe da ku binesaziya torê nû bike û ji xerîdaran re çareseriyên çêtir peyda bike.

3) Hilberîn;

Tevahiya pîşesaziya torê dê ji zimanek mîna P4 sûd werbigire ku bi rengek yekta behreya şandinê diyar dike. Cisco di heman demê de bawer dike ku xetên hilberên xwe veguherîne da ku vî zimanî bikar bîne.

Juniper Networks P4 û P4 Runtime di nav hejmarek hilberan de cîh girtiye, û gihandina bernamekirî ji bo pêvajoya bicîbûyî ya Juniper û koda nermalava wê peyda dike.

Ruijie Networks piştgirek bihêz a P4 e û feydeyên ku ew ji toran re tîne. Bi P4 re, pargîdanî dikare çareseriyên çêtirîn-li-class ji gelek xerîdar re biafirîne û bide.

4) Pêşkêşkerên Telekomunîkasyonê;

AT&T pejirankerek zû ya P4 bû, yek ji wan ên pêşîn bû ku P4 bikar anî da ku behreya ku dixwest di torên xwe de bibîne destnîşan bike, û amûrên şandina bernamekirî P4 li ser tora xwe bikar bîne.

Li Deutsche Telekom, ziman ji bo prototîpa fonksiyonên torê yên sereke wekî beşek ji bernameya Access 4.0 tê bikar anîn.

5) Pîşesaziya semiconductor;

Ziman Barefoot kir ku paradîgmayek nû ji bo radestkirina kapasîteyên nermalavê li balafirgeha rêvekirina torê bicîh bike.

Xilinx yek ji damezrînerên P4.org bû û bi aktîvî beşdarî pêşkeftina zimanê P4 bû û ew di platformên bernamekirî yên li ser bingeha FPGA-yê de ji bo hardware SmartNIC û NFV bicîh kir, yek ji berhevkarên yekem P416 wekî beşek ji sêwirana SDNet derxist.

6) Software.

VMware bawer dike ku P4 enerjî, nûbûn û civatek pir mezin diafirîne ku di torê de veguherîna watedar û pêwîst dimeşîne. VMware ji destpêkê ve beşek ji vê tevgera pîşesaziyê ye, ji ber ku pêlek nû ya nûbûnê ji hêla nêzîkbûnên nermalava-based ve tê rêve kirin ku kapasîteyên binesaziyê dirêj dike û wê di hilberên herî dawî de bicîh tîne.

Ji ber vê yekê, P4 zimanek bernamenûs-serbixwe û protokol-serbixwe ye ku ji hêla pîşesazî û akademî ve tê bikar anîn da ku bi rengek yekta behreya rêça pakêtê wekî bernameyek diyar bike, ku di encamê de dikare ji bo gelek armancan were berhev kirin. Îro, armanc guheztinên hardware û nermalavê, guheztinên hîpervisor, NPU, GPU, FPGA, SmartNIC û ASIC hene.

Taybetmendiyên sereke yên ziman bi girîngî qada serîlêdana xwe berfireh dike û pêkanîna wê ya bilez di mîmarên torê de misoger dike.

Destpêkirin

P4 projeyek vekirî ye, hemî agahdariya têkildar li ser malperê ye P4.org

Girêdana depoyê https://github.com/p4lang, ku hûn dikarin koda çavkaniyê û dersan mînak bistînin.

Girêdan ji bo Eclipse bi piştgiriya P4, lê em dikarin pêşniyar bikin P4 Studio ji Barefoot.

zimanê bernamenûs P4

Ka em li abstraksyonên sereke yên kernelê binêrin:

Diyarkirina Sernivîsan - Bi alîkariya wan, sernavên protokolê têne destnîşankirin.

Pênaseya sernavê diyar dike:

  • danasîna formatên pakêtê û navên qada sernivîsê
  • qadên destûr sabît û guherbar

Bo nimûne

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 - Erka wan parkirina sernivîsan e.

Nimûneya parser a jêrîn dê veguherîna rewşa dawîn a makîneyê ji yek rewşa destpêkê berbi yek ji du rewşên dawî ve diyar bike:

zimanê bernamenûs 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;
        }
    }…
}

Tablo - Dewletên makîneyê hene ku bişkojkên bikarhêner bi çalakiyan ve girêdidin. Actions - danasînek ka pakêt çawa divê were manîpule kirin.

Tablo ji bo şandina pakêtê dewletên (di asta rêveberiyê de hatine destnîşan kirin) vedihewîne, yekîneya Match-Action diyar dike.

Pakêtan ji hêla:

  • Maça rastîn
  • Lihevhatina Pêşgira Herî Dirêj (LPM)
  • Lihevhatina sêalî (maskekirin)

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

Pêdivî ye ku hemî kiryarên gengaz di tabloyên pêşîn de bêne diyar kirin.

Çalakî ji kod û daneyan pêk tê. Daneyên ji asta rêveberiyê tê (mînak navnîşanên IP/hejmarên portê). Hin primitivesên bê-loop dikarin rasterast di çalakiyê de bêne diyar kirin, lê divê hejmara rêwerzan were pêşbînîkirin. Ji ber vê yekê, kiryar nikarin ti loop an daxuyaniyên şertî negirin.

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

Modulên Match-Action - çalakiyên ji bo afirandina mifteyek lêgerînê, lêgerîna di tabloyê de, pêkanîna çalakiyan.

Nimûneyek tîpîk a modulê di wêneyê de tê nîşandan:

zimanê bernamenûs P4

Herikîna kontrolê - rêza ku modulên Match-Action têne bikar anîn destnîşan dike. Ev bernameyek mecbûrî ye ku mantiqa asta bilind û rêzika Match-Action diyar dike. Herikîna kontrolê bi destnîşankirina asta kontrolê hemî tiştan girêdide.

Tiştên derve Tiştên taybetî yên bi mîmariya zelal û navgînên API-ê têne diyar kirin. Mînakî, hesabkirina kontrolê, tomar, jimarvan, jimarvan, hwd.

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 - strukturên daneyê yên ku bi her pakêtê ve girêdayî ne.

2 cureyên metadata hene:

  Metadata xwerû (avahiyeke vala ji bo hemû pakêtan)
    Hûn dikarin her tiştê ku hûn dixwazin li vir bixin
    Li seranserê boriyê peyda dibe
    ji bo karanîna ji bo mebestên xwe hêsan e, mînakî, ji bo hilanîna hashek pakêtê

  Metadata navxweyî - ji hêla mîmariyê ve hatî peyda kirin
    Porta têketinê, porta derketinê li vir têne diyar kirin
    Demjimêra dema ku pakêt di dorê de bû, kûrahiya dorê
    multicast hash / dorê multicast
    Pêşîniya pakêtê, girîngiya pakêtê
    Taybetmendiya porta derketinê (mînak rêzika derketinê)

Berhevkarê P4

Berhevkarê P4 (P4C) diafirîne:

  1. Demjimêra balafirê ya daneyê
  2. API ji bo birêvebirina dewleta makîneyê di balafira daneyê de

zimanê bernamenûs P4

Nimûneya veguherînek nermalavê bi zimanê P4

Kodên çavkaniyê dikarin ji depoyê werin daxistin.

p4lang/p4c-bm: ji bo bmv2 veavakirina JSON diafirîne
p4lang/bmv2: Veguhezek nermalavê ku veavakirina guhertoya JSON ya bmv2 fam dike

Wêne şemaya berhevkirina projeyê nîşan dide:

zimanê bernamenûs P4

Manîpulasyonên bi tabloyan, qeydên xwendinê, jimarvan:

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


Koda çavkaniyê bernameya simple_switch_CLI ji bo karanîna hêsan a API-ya guheztina nermalavê vedihewîne.

Hûn dikarin vê û mînakên din ji depoyê dakêşin.

zimanê bernamenûs P4

PS Destpêka vê havînê, Intel peymanek ji bo bidestxistina Barefoot Networks îmze kir di hewlekê de ku zû hewcedariyên bikarhênerên Hyperscale Cloud bicîh bîne. Wekî ku Navin Shenoy (cîgirê serok û rêveberê giştî yê Koma Navenda Daneyê li Corporation Intel) got, ev ê bihêle ku Intel ji xerîdarên navenda daneyê re bargiraniyên mezin û bêtir derfet peyda bike.

Li gorî nêrîna min a kesane, divê em ji bîr nekin ku Intel di hilberîna çîpên FPGA de pêşeng e û xwedan jîngehek Quartus a hêja ye. Ev tê vê wateyê ku em dikarin li bendê bin ku bi hatina Intel re, Barefoot ne tenê dê xeta hilberê xwe berfireh bike, lê di heman demê de Quartus û P4 Studio jî dê nûvekirin û zêdekirinên cidî li xeta Toffino û Toffino 2 bistînin.

Endamê fermî yê civata P4 - pargîdanî Koma faktorê.

Source: www.habr.com

Add a comment