P4 langaj pwogramasyon

P4 langaj pwogramasyon
P4 se yon langaj pwogramasyon ki fèt pou pwograme règ routage pake yo. Kontrèman ak yon langaj jeneral tankou C oswa Python, P4 se yon lang espesifik domèn ak yon kantite konsepsyon optimize pou routage rezo a.

P4 se yon lang sous ouvè ki gen lisans epi kenbe pa yon òganizasyon san bi likratif ki rele P4 Language Consortium. Li sipòte tou pa Open Networking Foundation (ONF) ak Linux Foundation (LF), de nan pi gwo òganizasyon parapli pou pwojè rezo sous louvri.
Yo te kreye lang nan okòmansman an 2013 epi li te dekri nan yon papye SIGCOMM CCR 2014 ki rele “Protocol Independent, Packet Routing Processor Programming.”

Depi kreyasyon li, P4 te grandi ak evolye eksponansyèlman, byen vit vin tounen yon estanda pou dekri transmisyon pake pa aparèy rezo, ki gen ladan adaptè rezo, switch, ak routeurs.

Guru Parulkar, direktè egzekitif Open Networking Foundation di, "SDN te transfòme endistri rezo a, epi P4 mennen SDN nan yon nivo pwochen nan pote programabilite nan routage.

Se yon gwoup enjenyè ak chèchè ki soti nan Google, Intel, Microsoft Research, Barefoot, Princeton ak Stanford ki te kreye lang P4. Objektif la te senp: kreye yon lang fasil-a-itilize ke yon devlopè lojisyèl te kapab aprann nan yon jou epi itilize pou dekri avèk presizyon kijan pake yo voye atravè rezo yo.

Depi nan konmansman an, P4 te fèt yo dwe sib endepandan (sa vle di yon pwogram ekri nan P4 ta ka konpile san okenn chanjman nan kouri sou yon varyete sib tankou ASIC, FPGA, CPU, NPU, ak GPU).

Lang lan se pwotokòl endepandan tou (sa vle di, yon pwogram P4 ka dekri pwotokòl estanda ki egziste deja oswa yo dwe itilize yo presize nouvo mòd adrès koutim).

Nan endistri, P4 yo itilize pou pwogramasyon aparèy. Petèt nan fiti estanda Entènèt-RFC ak IEEE pral gen ladan tou spesifikasyon P4 la.

P4 ka itilize pou tou de aparèy pwogramasyon ak fonksyon fiks. Pou egzanp, yo itilize li pou anrejistre avèk presizyon konpòtman tiyo switch nan API Switch Abstraction Interface (SAI) ki itilize pa sous louvri SONiC switch OS la. P4 yo itilize tou nan pwojè ONF Stratum pou dekri konpòtman chanje atravè yon varyete aparèy fiks ak pwogramasyon.

Pou la pwemye fwa, dekri konpòtman an nan switch la ak adaptè rezo pèmèt ou kreye yon modèl egzekite ègzekutabl nan tout rezo a anvan deplwaman. Founisè gwo nwaj yo ka teste ak debogaj rezo a antyèman lè l sèvi avèk lojisyèl, siyifikativman diminye tan ak pri nan tès entèoperabilite nan laboratwa a san yo pa bezwen pyès ki nan konpitè chè.

Lè yo sèvi ak P4, machann ekipman rezo yo ka atann yon konpòtman wout komen ki kache atravè tout pwodwi yo, sa ki pèmèt reitilize enfrastrikti tès yo, senplifye devlopman lojisyèl jesyon, epi finalman asire entèoperabilite.

Natirèlman, P4 ka itilize pou ekri pwogram ki dekri fason konplètman nouvo nan routage. Pou egzanp, P4 lajman itilize pou telemetri ak mezi nan sant done, antrepriz ak rezo founisè sèvis yo.

Kominote rechèch la te monte tou. Plizyè gwoup rechèch ki mennen nan rezo akademik te pibliye nouvo aplikasyon enteresan ki baze sou pwogram P4, ki gen ladan balans chaj, pwotokòl konsansis, ak kachèt valè kle. Yon nouvo paradigm pwogramasyon ap kreye, inovasyon ap deplase soti nan pyès ki nan konpitè nan lojisyèl, sa ki pèmèt anpil lide inatandi, nouvo ak enjenyeu parèt.

Kominote devlopè a te fè kontribisyon enpòtan nan devlopman kòd, ki gen ladan konpilatè, tiyo, modèl konpòtman, API, kad tès, aplikasyon, ak plis ankò. Konpayi tankou Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, ak ZTE gen devlopè devwe; soti nan inivèsite tankou BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, ak USI; ak pwojè sous louvri tankou CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ak Stratum mete aksan sou lefèt ke P4 se yon pwojè kominote endepandan.

Jenerasyon tipik nan contrôleur pou lang P4 la:

P4 langaj pwogramasyon

Aplikasyon kandida

P4 langaj pwogramasyon
Depi langaj la fèt pou aplikasyon pou routage, lis kondisyon ak opsyon konsepsyon diferan konpare ak langaj pwogram jeneral. Karakteristik prensipal yo nan lang nan se:

  1. Endepandans nan aplikasyon sib;
  2. Endepandans pwotokòl la (yo) itilize;
  3. Rekonfigurabilite jaden.

Endepandans nan aplikasyon sib

Pwogram P4 yo fèt pou aplikasyon endepandan, sa vle di yo ka konpile pou anpil diferan kalite motè ekzekisyon, tankou processeurs jeneral, FPGA, sistèm-on-chips, processeurs rezo, ak ASIC. Diferan kalite machin sa yo ke yo rekonèt kòm sib P4, epi chak sib mande pou yon du pou konvèti kòd sous P4 la nan yon modèl switch sib. Ka konpilatè a dwe bati nan aparèy la sib, lojisyèl ekstèn, oswa menm yon sèvis nwaj. Paske anpil nan objektif orijinal yo pou pwogram P4 yo te pou chanje pake senp, li trè komen pou tande tèm "P4 switch" menm si "P4 sib" se pi egzak.

Endepandans pwotokòl yo itilize yo

P4 se pwotokòl endepandan. Sa vle di ke lang lan pa gen sipò natif natal pou pwotokòl komen tankou IP, Ethernet, TCP, VxLAN oswa MPLS. Olye de sa, pwogramè P4 la dekri fòma header ak non jaden pwotokòl ki nesesè yo nan pwogram nan, ki nan vire yo entèprete ak trete pa pwogram nan konpile ak aparèy la sib.

Jaden reconfigurabilité

Endepandans pwotokòl la ak modèl lang abstrè pèmèt pou rekonfigirasyon-sib P4 yo ta dwe kapab chanje pwosesis pake apre sistèm nan deplwaye. Tradisyonèlman, kapasite sa a te asosye ak routage atravè processeurs jeneral oswa rezo processeurs olye ke sikui entegre fonksyon fiks.

Malgre ke pa gen anyen nan lang lan ki ta anpeche optimize pèfòmans nan yon seri pwotokòl patikilye, optimize sa yo envizib pou otè lang lan epi finalman ka diminye fleksibilite nan sistèm nan ak objektif ak rekonfigurabilite yo.

Karakteristik sa yo nan lang nan te okòmansman mete desann pa kreyatè li yo ak yon konsantre sou itilizasyon toupatou nan enfrastrikti rezo a.

Lang lan deja itilize nan anpil konpayi:

1) Sant done Hyperscale;

Konpayi Chinwa Tencent se pi gwo konpayi envestisman nan mond lan ak youn nan pi gwo antrepriz kapital antrepriz. Filiales Tencent yo, tou de nan Lachin ak nan lòt peyi atravè mond lan, espesyalize nan divès domèn biznis gwo teknoloji, ki gen ladan divès kalite sèvis entènèt, devlopman nan domèn entèlijans atifisyèl ak amizman elektwonik.

P4 ak routage pwogramasyon se teknoloji avanse ki itilize nan achitekti rezo konpayi an.

Kòm youn nan orijinè yo, Google fyè pou remake adopsyon rapid P4 nan endistri rezo a ak nan konsepsyon achitekti sant done an patikilye.

2) Konpayi komèsyal yo;

Goldman Sachs pwofite travay ak kominote sous louvri epi devlope estanda ak solisyon komen pou inove enfrastrikti rezo a epi bay pi bon solisyon pou kliyan yo.

3) Pwodiksyon;

Tout endistri rezo a ta benefisye de yon lang tankou P4 ki defini inikman konpòtman transfè. Cisco tou kwè nan transfere liy pwodwi li yo sèvi ak lang sa a.

Juniper Networks te enkli P4 ak P4 Runtime nan yon kantite pwodwi, epi li bay aksè nan pwogram nan Juniper entegre processeur a ak kòd lojisyèl li yo.

Ruijie Networks se yon gwo sipòtè P4 ak benefis li pote nan rezo yo. Avèk P4, konpayi an ka kreye ak delivre solisyon pi bon nan klas la nan yon pakèt kliyan.

4) Founisè telekominikasyon;

AT&T se te yon premye moun ki te adopte P4, youn nan premye moun ki te sèvi ak P4 pou defini konpòtman li te vle wè nan rezo li yo, epi sèvi ak aparèy transmisyon pwogramasyon P4 sou rezo li yo.

Nan Deutsche Telekom, yo itilize lang pou kreye fonksyon rezo kle yo kòm yon pati nan pwogram Aksè 4.0 la.

5) endistri semi-conducteurs;

Langaj la te pèmèt Barefoot aplike yon nouvo paradigm pou bay kapasite lojisyèl nan avyon routage rezo a.

Xilinx se te youn nan fondatè P4.org epi li te patisipe aktivman nan devlopman langaj P4 la epi li te aplike li nan platfòm pwogramasyon ki baze sou FPGA pou SmartNIC ak NFV pyès ki nan konpitè, lage youn nan premye konpilateur P416 yo kòm yon pati nan konsepsyon SDNet.

6) Lojisyèl.

VMware kwè ke P4 kreye enèji fòmidab, inovasyon ak kominote ki kondwi transfòmasyon ki gen sans ak nesesè nan rezo a. VMware te fè pati mouvman endistri sa a depi nan konmansman an, kòm yon nouvo vag inovasyon kondwi pa apwòch ki baze sou lojisyèl ki pwolonje kapasite enfrastrikti ak aplike li nan dènye pwodwi yo.

Kidonk, P4 se yon langaj pwogramasyon endepandan ak pwotokòl endepandan ke endistri ak inivèsite yo itilize pou defini inikman konpòtman routage pake kòm yon pwogram, ki an vire ka konpile pou plizyè sib. Jodi a, objektif yo enkli switch pyès ki nan konpitè ak lojisyèl, switch hypervisor, NPU, GPU, FPGA, SmartNIC ak ASIC.

Karakteristik prensipal yo nan lang nan siyifikativman elaji sijè ki abòde lan aplikasyon li yo epi asire aplikasyon rapid li nan achitekti rezo.

Pou kòmanse

P4 se yon pwojè ouvè, tout enfòmasyon enpòtan yo sou sit entènèt la P4.org

Lyen depo https://github.com/p4lang, kote ou ka jwenn egzanp kòd sous ak leson patikilye.

Ploge pou Eclipse ak sipò P4, men nou ka rekòmande P4 Studio soti nan pye atè.

P4 langaj pwogramasyon

Ann gade nan abstraksyon prensipal yo nan nwayo a:

Defini Tèt — avèk èd yo, yo detèmine tèt pwotokòl.

Definisyon header la espesifye:

  • deskripsyon fòma pake ak non jaden header
  • fiks ak varyab pèmèt jaden

Pou egzanp

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

Analizeur - travay yo se analize tit yo.

Egzanp analizeur sa a pral detèmine tranzisyon eta final machin nan soti nan yon eta inisyal nan youn nan de eta final:

P4 langaj pwogramasyon

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 — genyen eta machin ki konekte kle itilizatè yo ak aksyon yo. Aksyon yo — yon deskripsyon sou fason yo ta dwe manipile pake a.

Tablo yo genyen eta (ki defini nan nivo jesyon) pou voye pake, dekri inite Match-Action.

Pake yo matche pa:

  • Koresponn ak egzak
  • Korespondans prefiks ki pi long (LPM)
  • Triple matche (maske)

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

Tout aksyon posib yo dwe defini nan tablo davans.

Aksyon yo konpoze de kòd ak done. Done yo soti nan nivo jesyon (egzanp adrès IP / nimewo pò). Sèten primitif san bouk yo ka espesifye dirèkteman nan aksyon an, men kantite enstriksyon yo dwe previzib. Se poutèt sa, aksyon yo pa ka genyen okenn bouk oswa deklarasyon kondisyonèl.

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

Match-Aksyon modil — aksyon yo kreye yon kle rechèch, rechèch nan yon tab, fè aksyon.

Yon egzanp tipik nan yon modil montre nan figi a:

P4 langaj pwogramasyon

Kontwole koule — endike lòd yo itilize modil Match-Action. Sa a se yon pwogram enperatif ki defini lojik wo nivo ak sekans Match-Aksyon. Koule kontwòl la konekte tout objè yo lè yo defini nivo kontwòl la.

Objè ekstèn yo yo se objè espesifik ak yon achitekti klèman defini ak API interfaces. Pou egzanp, kalkil sòm chèk, anrejistre, kontè, kontè, elatriye.

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 — estrikti done ki asosye ak chak pake.

Gen 2 kalite metadata:

  Metadata koutim (estrikti vid pou tout pakè)
    Ou ka mete tou sa ou vle isit la
    Disponib nan tout tiyo a
    pratik pou itilize pou pwòp rezon ou, pou egzanp, pou estoke yon pake hash

  Metadata entèn - achitekti a bay
    Pò antre, pò pwodiksyon yo defini isit la
    Timestamp lè pake a te nan keu, pwofondè keu
    multicast hash / multicast keu
    Pakè priyorite, pakè enpòtans
    Spesifikasyon pò pwodiksyon (egzanp keu pwodiksyon)

P4 du

P4 du (P4C) jenere:

  1. Tan plan done
  2. API pou jere eta machin nan avyon done a

P4 langaj pwogramasyon

Egzanp yon switch lojisyèl nan lang P4

Kòd sous yo ka telechaje nan depo a.

p4lang/p4c-bm: kreye konfigirasyon JSON pou bmv2
p4lang/bmv2: yon switch lojisyèl ki konprann konfigirasyon JSON vèsyon bmv2

Figi a montre dyagram konpilasyon pwojè a:

P4 langaj pwogramasyon

Manipilasyon ak tab, rejis lekti, kontè:

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


Kòd sous la gen pwogram simple_switch_CLI pou itilizasyon pratik API switch lojisyèl an.

Ou ka telechaje egzanp sa a ak lòt nan depo a.

P4 langaj pwogramasyon

PS Nan kòmansman ete sa a, Intel te siyen yon akò pou jwenn Barefoot Networks nan yon efò pou byen vit satisfè bezwen itilizatè Hyperscale Cloud yo. Jan Navin Shenoy (vis prezidan egzekitif ak manadjè jeneral Data Center Group nan Intel Corporation) te di, sa pral pèmèt Intel bay pi gwo kantite travay ak plis opòtinite pou kliyan sant done yo.

Nan opinyon pèsonèl mwen, nou pa ta dwe bliye ke Intel se yon lidè nan pwodiksyon an nan chips FPGA epi li gen yon anviwònman Quartus ekselan. Sa vle di ke nou ka espere ke ak arive Intel a, Barefoot pral pa sèlman elaji liy pwodwi li yo, men tou, Quartus ak P4 Studio pral resevwa mizajou serye ak adisyon nan liy Toffino ak Toffino 2.

Manm ofisyèl nan kominote a P4 - konpayi Gwoup faktè.

Sous: www.habr.com

Add nouvo kòmantè