Pulogalamu ya P4

Pulogalamu ya P4
P4 ndi chilankhulo cha pulogalamu chomwe chimapangidwira kukhazikitsa malamulo oyendetsera paketi. Mosiyana ndi chilankhulo chodziwika bwino monga C kapena Python, P4 ndi chilankhulo chapadera chomwe chili ndi mapangidwe angapo omwe amakonzedwa kuti azitha kuyenda pa intaneti.

P4 ndi chilankhulo chotseguka chomwe chili ndi chilolezo ndikusamalidwa ndi bungwe lopanda phindu lotchedwa P4 Language Consortium. Imathandizidwanso ndi Open Networking Foundation (ONF) ndi Linux Foundation (LF), mabungwe awiri akuluakulu a ma ambulera opangira ma projekiti otseguka.
Chilankhulochi chidapangidwa koyambirira mu 2013 ndikufotokozedwa mu pepala la SIGCOMM CCR la 2014 lotchedwa "Protocol Independent, Packet Routing processor Programming."

Kuyambira pomwe idakhazikitsidwa, P4 yakula ndikusinthika mwachangu, mwachangu kukhala mulingo wofotokozera kufalikira kwa mapaketi ndi zida zama netiweki, kuphatikiza ma adapter network, masiwichi, ndi ma router.

"SDN yasintha makampani ochezera a pa Intaneti, ndipo P4 imatengera SDN pamlingo wina pobweretsa kusinthika kwa njira," adatero Guru Parulkar, mkulu wa Open Networking Foundation.

Chilankhulo cha P4 poyamba chinapangidwa ndi gulu la akatswiri ndi ofufuza kuchokera ku Google, Intel, Microsoft Research, Barefoot, Princeton ndi Stanford. Cholinga chinali chophweka: pangani chinenero chosavuta kugwiritsa ntchito chomwe wopanga mapulogalamu angaphunzire tsiku limodzi ndikugwiritsa ntchito kufotokoza molondola momwe mapaketi amatumizidwa pamanetiweki.

Kuyambira pachiyambi penipeni, P4 idapangidwa kuti ikhale yodziyimira pawokha (ie, pulogalamu yolembedwa mu P4 ikhoza kupangidwa osasinthika kuti igwire ntchito zosiyanasiyana monga ma ASIC, FPGAs, CPUs, NPUs, ndi GPUs).

Chilankhulocho chimakhalanso chodziyimira pawokha (mwachitsanzo, pulogalamu ya P4 imatha kufotokozera ma protocol omwe alipo kapena kugwiritsidwa ntchito kutchula njira zatsopano zoyankhulirana).

M'makampani, P4 imagwiritsidwa ntchito popanga zida. Mwina m'tsogolomu mfundo za Internet-RFC ndi IEEE zidzaphatikizanso mafotokozedwe a P4.

P4 itha kugwiritsidwa ntchito pazida zonse zomwe zingakonzedwe komanso zokhazikika. Mwachitsanzo, amagwiritsidwa ntchito kulemba molondola kusintha kwa mapaipi mu Switch Abstraction Interface (SAI) APIs omwe amagwiritsidwa ntchito ndi SONiC switch OS yotseguka. P4 imagwiritsidwanso ntchito mu pulojekiti ya ONF Stratum kufotokoza kusintha kwa machitidwe pazida zosiyanasiyana zokhazikika komanso zosinthika.

Kwa nthawi yoyamba, kufotokoza khalidwe la chosinthira ndi maukonde adaputala amalola kulenga yolondola executable chitsanzo cha maukonde lonse pamaso kutumizidwa. Othandizira mitambo yayikulu amatha kuyesa ndikusintha maukonde kwathunthu pogwiritsa ntchito mapulogalamu, kuchepetsa kwambiri nthawi ndi mtengo wa kuyesa kwa kugwirizana mu labu popanda kufunikira zida zamtengo wapatali.

Pogwiritsa ntchito P4, ogulitsa zida zama netiweki amatha kuyembekezera zomwe zimachitika pazida zonse zomwe zimagwiritsidwa ntchito, kulola kugwiritsa ntchitonso zida zoyeserera, kupangitsa kuti pulogalamu ya kasamalidwe ikhale yosavuta, ndikuwonetsetsa kuti zikugwirizana.

Zachidziwikire, P4 itha kugwiritsidwa ntchito polemba mapulogalamu omwe amafotokoza njira zatsopano zoyendera. Mwachitsanzo, P4 imagwiritsidwa ntchito kwambiri pa telemetry ndi miyeso m'malo opangira data, mabizinesi ndi maukonde opereka chithandizo.

Anthu ochita kafukufuku nawonso awonjezeka. Magulu angapo otsogola ofufuza pa intaneti asindikiza mapulogalamu atsopano osangalatsa otengera mapulogalamu a P4, kuphatikiza kusanja kwa katundu, ma protocol ogwirizana, ndi caching yofunika kwambiri. Paradigm yatsopano yopangira mapulogalamu ikupangidwa, zatsopano zikuyenda kuchokera ku hardware kupita ku mapulogalamu, kulola malingaliro ambiri osayembekezereka, atsopano ndi anzeru kuti atuluke.

Gulu la omangamanga lathandizira kwambiri pakupanga ma code, kuphatikiza ophatikiza, mapaipi, zitsanzo zamakhalidwe, ma API, zoyeserera, kugwiritsa ntchito, ndi zina zambiri. Makampani monga Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, ndi ZTE ali ndi odzipereka odzipereka; kuchokera ku mayunivesite kuphatikiza BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, ndi USI; ndi mapulojekiti otsegula otsegula kuphatikizapo CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ndi Stratum amatsindika mfundo yakuti P4 ndi polojekiti yodziimira payekha.

Zowongolera zodziwika bwino za chilankhulo cha P4:

Pulogalamu ya P4

Zoyembekeza zofunsira

Pulogalamu ya P4
Popeza kuti chinenerochi chimapangidwa kuti chizigwiritsidwa ntchito panjira, mndandanda wa zofunikira ndi zosankha zamapangidwe ndizosiyana poyerekeza ndi zilankhulo zopangira mapulogalamu. Zomwe zili m'chinenerochi ndi:

  1. Kudziyimira pawokha pakuchita zomwe mukufuna;
  2. Kudziyimira pawokha kwa ma protocol omwe amagwiritsidwa ntchito;
  3. Kubwereranso kumunda.

Kudziyimira pawokha kuchokera pakukwaniritsa zolinga

Mapulogalamu a P4 adapangidwa kuti azikhala odziyimira pawokha, kutanthauza kuti amatha kuphatikizidwira mitundu ingapo yamainjini akupha, monga mapurosesa acholinga chonse, ma FPGA, ma system-on-chips, ma processor a network, ndi ma ASIC. Mitundu yosiyanasiyana ya makina awa imadziwika kuti zolinga za P4, ndipo chandamale chilichonse chimafunikira wopanga kuti asinthe kachidindo ka P4 kukhala chosinthira chandamale. Wophatikiza amatha kupangidwa mu chipangizo chomwe akufuna, pulogalamu yakunja, kapena ntchito yamtambo. Chifukwa zambiri zomwe zidayambika pamapulogalamu a P4 zinali zosinthira paketi yosavuta, ndizofala kumva mawu oti "P4 switch" ngakhale "P4 target" ndiyolondola.

Kudziyimira pawokha kwa protocol (ma) omwe amagwiritsidwa ntchito

P4 ndi protocol yodziyimira payokha. Izi zikutanthauza kuti chinenerochi sichikhala ndi chithandizo chamtundu wa ma protocol wamba monga IP, Ethernet, TCP, VxLAN kapena MPLS. M'malo mwake, pulogalamu ya P4 imalongosola mafomu amutu ndi mayina am'munda a ma protocol ofunikira mu pulogalamuyi, omwe amatanthauziridwa ndikusinthidwa ndi pulogalamu yopangidwa ndi chipangizo chandamale.

Kubwereranso kumunda

Kudziyimira pawokha kwa protocol ndi chilankhulo chodziwika bwino chimalola kukonzanso-zolinga za P4 ziyenera kusintha kusintha kwa paketi dongosolo litatumizidwa. Kuthekera uku kwakhala kukugwirizana ndi kutsata mapurosesa acholinga chambiri kapena ma processor a network m'malo mwa mabwalo ophatikizika okhazikika.

Ngakhale kuti palibe m'chinenero chomwe chingalepheretse kukhathamiritsa kwa machitidwe ena a ndondomeko, kukhathamiritsa kumeneku sikuwoneka kwa wolemba chinenero ndipo pamapeto pake kumachepetsa kusinthasintha kwa dongosolo ndi zolinga ndi kukonzanso kwawo.

Makhalidwe awa a chinenerocho adayikidwa poyamba ndi omwe adawapanga poyang'ana momwe amagwiritsidwira ntchito ponseponse muzinthu zamakono.

Chilankhulochi chimagwiritsidwa ntchito kale m'makampani ambiri:

1) Ma data a Hyperscale;

Kampani yaku China Tencent ndiye kampani yayikulu kwambiri padziko lonse lapansi komanso imodzi mwamakampani akuluakulu azachuma. Mabungwe a Tencent, ku China komanso m'maiko ena padziko lonse lapansi, amagwira ntchito zosiyanasiyana zamabizinesi apamwamba kwambiri, kuphatikiza mautumiki osiyanasiyana a intaneti, zomwe zikuchitika pazanzeru zopanga komanso zosangalatsa zamagetsi.

P4 ndi mayendedwe osinthika ndi matekinoloje apamwamba omwe amagwiritsidwa ntchito pakupanga ma network akampani.

Monga m'modzi mwa oyambitsa, Google imanyadira kuwona kukhazikitsidwa kwa P4 mwachangu pamakampani ochezera pa intaneti komanso pamapangidwe omanga a data center.

2) Makampani amalonda;

Goldman Sachs amapezerapo mwayi wogwira ntchito ndi anthu omwe ali ndi malo otseguka ndikupanga miyezo yofananira ndi mayankho opangira zida zama network ndikupereka mayankho abwinoko kwa makasitomala.

3) Kupanga;

Makampani onse ochezera pa intaneti angapindule ndi chilankhulo ngati P4 chomwe chimatanthauzira mwapadera machitidwe otumizira. Cisco imakhulupiriranso kusamutsa mizere yazogulitsa kuti igwiritse ntchito chilankhulochi.

Juniper Networks yaphatikiza P4 ndi P4 Runtime muzinthu zingapo, ndipo imapereka mwayi wofikira kwa purosesa yophatikizidwa ya Juniper ndi pulogalamu yake yamapulogalamu.

Ruijie Networks ndiwothandizira kwambiri P4 komanso zabwino zomwe zimabweretsa pamanetiweki. Ndi P4, kampaniyo imatha kupanga ndikupereka mayankho apamwamba kwambiri kwa makasitomala osiyanasiyana.

4) Othandizira mauthenga;

AT&T inali yotengera P4, m'modzi mwa oyamba kugwiritsa ntchito P4 kufotokozera zomwe amafuna kuwona pamamanetiweki ake, komanso kugwiritsa ntchito zida zotumizira za P4 pamaneti ake.

Ku Deutsche Telekom, chilankhulochi chimagwiritsidwa ntchito kuwonetsa ntchito zazikulu za netiweki monga gawo la pulogalamu ya Access 4.0.

5) Makampani a semiconductor;

Chilankhulochi chinathandiza Barefoot kukhazikitsa njira yatsopano yoperekera mphamvu zamapulogalamu kundege yolumikizira netiweki.

Xilinx anali m'modzi mwa omwe adayambitsa P4.org ndipo adatenga nawo gawo pakupanga chilankhulo cha P4 ndikuchigwiritsa ntchito m'mapulatifomu opangidwa ndi FPGA a SmartNIC ndi NFV hardware, ndikutulutsa m'modzi mwa ophatikiza oyamba a P416 ngati gawo la mapangidwe a SDNet.

6) Mapulogalamu.

VMware imakhulupirira kuti P4 imapanga mphamvu zambiri, zatsopano komanso anthu ammudzi zomwe zimathandizira kusintha kwapaintaneti. VMware yakhala mbali ya kayendetsedwe ka makampaniwa kuyambira pachiyambi, monga momwe zakhalira zatsopano zimayendetsedwa ndi mapulogalamu opangidwa ndi mapulogalamu omwe amakulitsa luso la zomangamanga ndikuzigwiritsira ntchito muzinthu zamakono.

Chifukwa chake, P4 ndi chiyankhulo chodziyimira pawokha komanso chodziyimira pawokha pa protocol chomwe chimagwiritsidwa ntchito ndi mafakitale ndi maphunziro kuti afotokozere mwapadera machitidwe opangira paketi ngati pulogalamu, yomwe imatha kupangidwa kuti ikwaniritse zolinga zingapo. Masiku ano, zolinga zikuphatikiza kusintha kwa hardware ndi mapulogalamu, ma hypervisor switch, NPUs, GPUs, FPGAs, SmartNICs ndi ASICs.

Mbali zazikulu za chilankhulo zimakulitsa kwambiri kuchuluka kwa ntchito yake ndikuwonetsetsa kuti zikugwira ntchito mwachangu pamapangidwe apakompyuta.

Kuyamba

P4 ndi pulojekiti yotseguka, zonse zofunikira zili patsamba P4.org

Repository ulalo https://github.com/p4lang, komwe mungapeze ma code source code ndi maphunziro.

Pulogalamu yowonjezera kwa Eclipse ndi chithandizo cha P4, koma titha kupangira P4 Studio kuchokera ku Barefoot.

Pulogalamu ya P4

Tiyeni tiwone zazikuluzikulu za kernel:

Kufotokozera Mitu - ndi chithandizo chawo, mitu ya protocol imatsimikiziridwa.

Tanthauzo lamutu limatchula:

  • Kufotokozera kwamitundu yamapaketi ndi mayina amitu yam'mutu
  • minda yokhazikika komanso yosinthika yololedwa

Mwachitsanzo

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

Opanga - ntchito yawo ndikusanthula mitu yankhani.

Chitsanzo chotsatirachi chiwonetsa kusintha kwa makina omaliza kuchokera kumalo oyamba kupita ku amodzi mwa zigawo ziwiri zomaliza:

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

matebulo - Muli ndi makina olumikizira makiyi ogwiritsa ntchito ndi zochita. Zochita - kufotokozera momwe phukusili liyenera kugwiritsidwira ntchito.

Matebulowa ali ndi zigawo (zofotokozedwa pamlingo wowongolera) potumiza paketi, fotokozani gawo la Match-Action

Ma paketi amaphatikizidwa ndi:

  • Zofanana ndendende
  • Match Prefix Prefix (LPM)
  • Kufananiza katatu (kuphimba)

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

Zochita zonse zotheka ziyenera kufotokozedwa m'matebulo pasadakhale.

Zochita zimakhala ndi code ndi data. Deta imachokera mulingo wa kasamalidwe (monga ma adilesi a IP/nambala zamadoko). Zina, zoyambira zopanda loop zitha kufotokozedwa mwachindunji muzochitikazo, koma kuchuluka kwa malangizo kuyenera kudziwika. Chifukwa chake, zochita sizingakhale ndi malupu kapena mawu okhazikika.

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-Action modules - zochita kuti mupange kiyi yosaka, fufuzani patebulo, chitanipo kanthu.

Chitsanzo chodziwika bwino cha module chikuwonetsedwa pachithunzichi:

Pulogalamu ya P4

Kuwongolera kuyenda - ikuwonetsa dongosolo lomwe ma module a Match-Action amagwiritsidwa ntchito. Iyi ndi pulogalamu yofunikira yomwe imatanthawuza logic yapamwamba ndi ndondomeko ya Match-Action. Kuwongolera kumagwirizanitsa zinthu zonse pofotokozera mlingo wa kulamulira.

Zinthu zakunja ndi zinthu zenizeni zokhala ndi zomangidwe zomveka bwino komanso mawonekedwe a API. Mwachitsanzo, mawerengero a checksum, registry, counters, counters, etc.

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 - mapangidwe a data okhudzana ndi phukusi lililonse.

Pali mitundu iwiri ya metadata:

  Custom metadata (mapangidwe opanda kanthu pamaphukusi onse)
    Mutha kuyika chilichonse chomwe mukufuna pano
    Ikupezeka paipi yonse
    yabwino kuti mugwiritse ntchito pazolinga zanu, mwachitsanzo, posungira phukusi la hashi

  Metadata yamkati - yoperekedwa ndi zomangamanga
    Doko lolowera, doko lotulutsa likufotokozedwa apa
    Chidindo chanthawi pomwe paketi idayikidwa pamzere, kuya kwa mzere
    multicast hash / multicast pamzere
    Kufunika kwa phukusi, kufunikira kwa phukusi
    Katchulidwe ka doko (monga mzere wotuluka)

P4 wopanga

P4 compiler (P4C) imapanga:

  1. Nthawi yoyendetsa ndege
  2. API yoyang'anira mawonekedwe a makina mu ndege ya data

Pulogalamu ya P4

Chitsanzo cha kusintha kwa mapulogalamu m'chinenero cha P4

Zizindikiro zoyambira zitha kutsitsidwa kuchokera kunkhokwe.

p4lang/p4c-bm: imapanga kasinthidwe ka JSON kwa bmv2
p4lang/bmv2: pulogalamu yosinthira yomwe imamvetsetsa masanjidwe a bmv2 JSON

Chithunzichi chikuwonetsa chithunzi chophatikiza polojekiti:

Pulogalamu ya P4

Zosintha ndi matebulo, zolembera zowerengera, zowerengera:

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


Khodi yochokera ili ndi pulogalamu ya simple_switch_CLI kuti mugwiritse ntchito pulogalamu yosinthira API.

Mutha kutsitsa izi ndi zitsanzo zina kuchokera kunkhokwe.

Pulogalamu ya P4

PS Kumayambiriro kwa chilimwe, Intel adasaina mgwirizano wogula Barefoot Networks pofuna kukwaniritsa mwamsanga zosowa za ogwiritsa ntchito Hyperscale Cloud. Monga Navin Shenoy (wachiwiri kwa prezidenti wamkulu komanso manejala wamkulu wa Data Center Group ku Intel Corporation) adanenera, izi zidzalola Intel kuti ipereke ntchito zazikulu komanso mwayi wochulukirapo kwa makasitomala apakati pa data.

M'malingaliro anga, tisaiwale kuti Intel ndi mtsogoleri pakupanga tchipisi ta FPGA ndipo ili ndi malo abwino kwambiri a Quartus. Izi zikutanthauza kuti titha kuyembekezera kuti pakubwera kwa Intel, Barefoot sichidzangowonjezera mzere wa mankhwala, komanso Quartus ndi P4 Studio adzalandira zosintha zazikulu ndi zowonjezera pa mzere wa Toffino ndi Toffino 2.

Wovomerezeka wa gulu la P4 - kampani Gulu la zinthu.

Source: www.habr.com

Kuwonjezera ndemanga