P4 programming lus

P4 programming lus
P4 yog ib hom lus programming uas tsim los rau program packet routing cov cai. Tsis zoo li hom lus dav dav xws li C lossis Python, P4 yog hom lus tshwj xeeb nrog ntau tus qauv tsim tau zoo rau kev sib txuas lus.

P4 yog ib hom lus qhib tau ntawv tso cai thiab tswj hwm los ntawm lub koom haum tsis muaj txiaj ntsig hu ua P4 Language Consortium. Nws kuj tseem tau txais kev txhawb nqa los ntawm Open Networking Foundation (ONF) thiab Linux Foundation (LF), ob lub koom haum loj tshaj plaws rau kev qhib kev sib txuas lus.
Cov lus yog thawj zaug tsim nyob rau xyoo 2013 thiab tau piav qhia hauv 2014 SIGCOMM CCR daim ntawv hu ua "Protocol Independent, Packet Routing Processor Programming."

Txij li thaum nws pib, P4 tau loj hlob thiab hloov zuj zus mus, sai sai dhau los ua tus qauv piav qhia txog kev sib kis ntawm cov pob ntawv los ntawm cov khoom siv hauv network, suav nrog cov adapters network, keyboards, thiab routers.

Guru Parulkar, tus thawj coj ntawm Open Networking Foundation tau hais tias "SDN tau hloov pauv kev lag luam sib txuas, thiab P4 siv SDN mus rau qib tom ntej los ntawm kev coj cov programmability mus rau txoj haujlwm," said Guru Parulkar, tus thawj coj ntawm Open Networking Foundation.

Cov lus P4 yog thawj zaug tsim los ntawm ib pawg engineers thiab cov kws tshawb fawb los ntawm Google, Intel, Microsoft Research, Barefoot, Princeton thiab Stanford. Lub hom phiaj yog yooj yim: tsim ib qho yooj yim-rau-siv hom lus uas tus tsim software yuav kawm tau nyob rau hauv ib hnub thiab siv los piav qhia txog yuav ua li cas cov pob ntawv raug xa mus rau hauv tes hauj lwm.

Txij thaum pib, P4 tau tsim los ua lub hom phiaj ywj pheej (piv txwv li ib qho program sau hauv P4 tuaj yeem muab tso ua ke tsis hloov pauv kom khiav ntawm ntau lub hom phiaj xws li ASICs, FPGAs, CPUs, NPUs, thiab GPUs).

Cov lus kuj yog raws tu qauv ywj pheej (piv txwv li, ib qho kev pab cuam P4 tuaj yeem piav qhia txog cov txheej txheem uas twb muaj lawm lossis siv los qhia cov qauv kev cai tshiab).

Hauv kev lag luam, P4 yog siv rau kev tsim khoom siv. Tej zaum yav tom ntej Internet-RFC thiab IEEE cov qauv tseem yuav suav nrog P4 specification.

P4 tuaj yeem siv rau ob qho tib si programmable thiab cov khoom siv ruaj khov. Piv txwv li, nws yog siv los sau cov yeeb yaj kiab hloov pauv tus cwj pwm hauv Switch Abstraction Interface (SAI) APIs siv los ntawm qhov qhib SONiC hloov OS. P4 kuj tseem siv rau hauv ONF Stratum qhov project los piav txog kev hloov tus cwj pwm hla ntau yam khoom siv ruaj khov thiab programmable.

Thawj zaug, piav qhia txog tus cwj pwm ntawm qhov hloov pauv thiab lub network adapters tso cai rau koj los tsim cov qauv kev ua tau zoo ntawm tag nrho lub network ua ntej xa mus. Cov chaw muab huab loj tuaj yeem kuaj thiab kho lub network tag nrho siv software, txo lub sijhawm thiab tus nqi ntawm kev sib koom ua haujlwm hauv chav kuaj yam tsis tas yuav khoom kim heev.

Los ntawm kev siv P4, cov neeg muag khoom siv network tuaj yeem cia siab tias yuav muaj kev coj tus cwj pwm nyob hauv txhua yam khoom, tso cai rov qab siv cov txheej txheem sim, txhim kho kev tswj software yooj yim, thiab thaum kawg ua kom muaj kev sib koom tes.

Tau kawg, P4 tuaj yeem siv los sau cov kev pab cuam uas piav qhia txog txoj hauv kev tshiab ntawm routing. Piv txwv li, P4 yog dav siv rau telemetry thiab ntsuas nyob rau hauv cov ntaub ntawv chaw zov me nyuam, enterprise thiab kev pab cuam networks.

Cov zej zog tshawb fawb kuj tau nce qib. Ntau pawg kws tshawb fawb hauv kev sib tham tau tshaj tawm cov ntawv thov tshiab zoo siab raws li P4 cov kev pab cuam, suav nrog kev sib npaug, kev pom zoo, thiab cov nqi tseem ceeb caching. Ib qho kev ua haujlwm tshiab tau tsim, kev tsim kho tshiab tau hloov pauv los ntawm cov khoom siv kho vajtse mus rau software, tso cai rau ntau yam kev npaj txhij txog, tshiab thiab ingenious tswv yim tshwm sim.

Cov neeg tsim tawm hauv zej zog tau muaj txiaj ntsig zoo rau kev tsim cov lej, suav nrog cov khoom sib txuas, cov kav dej, cov qauv kev coj tus cwj pwm, APIs, cov qauv ntsuas, cov ntawv thov, thiab lwm yam. Cov tuam txhab xws li Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, thiab ZTE tau mob siab rau cov neeg tsim khoom; los ntawm cov tsev kawm ntawv qib siab suav nrog BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, thiab USI; thiab qhib qhov project xws li CORD, FD.io, OpenDaylight, ONOS, OvS, SAI thiab Stratum hais txog qhov tseeb tias P4 yog ib txoj haujlwm ywj pheej hauv zej zog.

Hom kev tsim ntawm cov tswj rau P4 hom lus:

P4 programming lus

Daim ntawv thov kev cia siab

P4 programming lus
Txij li cov lus yog npaj rau kev siv cov kev siv, cov npe ntawm cov kev xav tau thiab cov kev xaiv tsim yog sib txawv piv rau cov hom phiaj siv hom lus. Cov yam ntxwv tseem ceeb ntawm cov lus yog:

  1. Kev ywj pheej los ntawm kev siv lub hom phiaj;
  2. Kev ywj pheej ntawm cov txheej txheem siv;
  3. Teb reconfigurability.

Kev ywj pheej los ntawm kev siv lub hom phiaj

P4 cov kev pabcuam raug tsim los ua kom muaj kev ywj pheej, txhais tau tias lawv tuaj yeem muab tso ua ke rau ntau hom kev ua haujlwm, xws li cov txheej txheem dav dav, FPGAs, system-on-chips, network processors, thiab ASICs. Cov tshuab sib txawv no hu ua P4 lub hom phiaj, thiab txhua lub hom phiaj yuav tsum muaj lub tshuab ua ke los hloov P4 qhov chaws rau hauv lub hom phiaj hloov qauv. Lub compiler tuaj yeem ua rau hauv lub hom phiaj ntaus ntawv, software sab nraud, lossis txawm tias huab huab. Vim tias muaj ntau lub hom phiaj tseem ceeb rau P4 cov kev pab cuam yog rau kev hloov pauv pob ntawv yooj yim, nws yog qhov zoo tshaj plaws los hnov ​​​​cov lus "P4 hloov" txawm tias "P4 lub hom phiaj" yog qhov tseeb dua.

Kev ywj pheej ntawm cov txheej txheem siv

P4 yog cov txheej txheem ywj pheej. Qhov no txhais tau hais tias cov lus tsis muaj kev txhawb nqa ib txwm muaj rau cov txheej txheem xws li IP, Ethernet, TCP, VxLAN lossis MPLS. Hloov chaw, P4 programmer piav qhia txog cov hom ntawv header thiab cov npe teb ntawm cov txheej txheem xav tau hauv qhov kev zov me nyuam, uas nyob rau hauv lem yog txhais thiab ua tiav los ntawm cov kev pab cuam compiled thiab lub hom phiaj ntaus ntawv.

Teb reconfigurability

Cov txheej txheem kev ywj pheej thiab cov qauv lus paub daws teeb meem tso cai rau kev kho dua tshiab-P4 lub hom phiaj yuav tsum tuaj yeem hloov pauv cov txheej txheem tom qab siv lub tshuab. Qhov kev muaj peev xwm no ib txwm muaj feem cuam tshuam nrog kev xa mus los ntawm cov txheej txheem dav dav lossis cov txheej txheem network es tsis yog kev ua haujlwm sib txuas ua ke.

Txawm hais tias tsis muaj ib yam dab tsi hauv cov lus uas yuav tiv thaiv kev ua kom zoo ntawm kev ua tau zoo ntawm cov txheej txheem tshwj xeeb, cov kev ua kom zoo no pom tsis tau rau tus kws sau lus thiab tuaj yeem txo qhov kev hloov pauv ntawm cov txheej txheem thiab cov hom phiaj thiab lawv cov kev kho dua tshiab.

Cov yam ntxwv ntawm cov lus no tau pib tsim los ntawm nws cov neeg tsim khoom nrog rau kev tsom mus rau nws txoj kev siv dav hauv kev tsim kho hauv network.

Cov lus twb tau siv nyob rau hauv ntau lub tuam txhab:

1) Hyperscale data centers;

Tuam Tshoj Tencent yog lub tuam txhab peev loj tshaj plaws hauv ntiaj teb thiab yog ib lub tuam txhab lag luam loj tshaj plaws. Tencent cov koom haum, ob qho tib si hauv Suav teb thiab lwm lub tebchaws thoob ntiaj teb, tshwj xeeb hauv ntau qhov chaw ntawm kev lag luam high-tech, suav nrog ntau yam kev pabcuam hauv Is Taws Nem, kev txhim kho hauv kev txawj ntse txawj ntse thiab kev lom zem hauv hluav taws xob.

P4 thiab programmable routing yog cov thev naus laus zis siab heev uas tau siv hauv lub tuam txhab network architecture.

Raws li ib tug ntawm cov originators, Google zoo siab rau nco ntsoov ceev ceev ntawm P4 nyob rau hauv lub network kev lag luam thiab nyob rau hauv cov ntaub ntawv center architectural tsim tshwj xeeb.

2) Cov tuam txhab lag luam;

Goldman Sachs siv qhov zoo ntawm kev ua haujlwm nrog qhib lub zej zog thiab tsim cov qauv thiab cov kev daws teeb meem los tsim kho lub network infrastructure thiab muab cov kev daws teeb meem zoo dua rau cov neeg siv khoom.

3) Ntau lawm;

Tag nrho kev lag luam kev sib txuas yuav tau txais txiaj ntsig los ntawm cov lus zoo li P4 uas tshwj xeeb txhais cov cwj pwm xa mus. Cisco kuj ntseeg txog kev hloov nws cov khoom siv los siv cov lus no.

Juniper Networks tau suav nrog P4 thiab P4 Runtime hauv ntau cov khoom lag luam, thiab muab cov programmatic nkag mus rau Juniper embedded processor thiab nws cov software code.

Ruijie Networks yog tus txhawb nqa muaj zog ntawm P4 thiab cov txiaj ntsig nws coj mus rau tes hauj lwm. Nrog P4, lub tuam txhab tuaj yeem tsim thiab xa cov kev daws teeb meem zoo tshaj plaws rau ntau tus neeg siv khoom.

4) Cov chaw muab kev sib txuas lus;

AT&T yog tus txais yuav P4 thaum ntxov, ib qho ntawm thawj zaug siv P4 los txheeb xyuas tus cwj pwm nws xav pom hauv nws cov tes hauj lwm, thiab siv P4 programmable forwarding li ntawm nws lub network.

Ntawm Deutsche Telekom, cov lus siv los ua qauv tseem ceeb hauv lub network ua haujlwm ua ib feem ntawm Access 4.0 program.

5) Kev lag luam semiconductor;

Cov lus tau qhib rau Barefoot los ua qhov kev coj ua tshiab rau kev xa cov peev txheej software mus rau lub network routing dav hlau.

Xilinx yog ib tus tsim ntawm P4.org thiab tau koom nrog hauv kev tsim cov lus P4 thiab siv nws rau hauv FPGA-based programmable platforms rau SmartNIC thiab NFV kho vajtse, tso ib qho ntawm thawj P416 compilers ua ib feem ntawm SDNet tsim.

6) Software.

VMware ntseeg tias P4 tsim lub zog loj heev, kev tsim kho tshiab thiab cov zej zog uas yog tsav kev hloov pauv tseem ceeb thiab tsim nyog hauv lub network. VMware tau yog ib feem ntawm qhov kev lag luam no txij thaum pib, raws li cov nthwv dej tshiab ntawm kev tsim kho tshiab yog tsav los ntawm software-raws li txoj hauv kev uas nthuav dav cov peev txheej thiab siv nws hauv cov khoom tshiab.

Yog li, P4 yog lub hom phiaj-kev ywj pheej thiab raws tu qauv-kev ywj pheej programming lus uas yog siv los ntawm kev lag luam thiab kev kawm kom paub tshwj xeeb ntawm pob ntawv kev coj tus cwj pwm raws li qhov kev zov me nyuam, uas tuaj yeem muab tso ua ke rau ntau lub hom phiaj. Niaj hnub no, cov hom phiaj suav nrog cov cuab yeej kho vajtse thiab software hloov pauv, hloov pauv hypervisor, NPUs, GPUs, FPGAs, SmartNICs thiab ASICs.

Cov yam ntxwv tseem ceeb ntawm cov lus tau nthuav dav dav ntawm nws daim ntawv thov thiab ua kom nws txoj kev siv sai hauv network architectures.

Pib

P4 yog qhov qhib qhov project, tag nrho cov ntaub ntawv ntsig txog yog nyob rau ntawm lub vev xaib P4.org

Repository link https://github.com/p4lang, qhov twg koj tuaj yeem tau txais piv txwv qhov chaws thiab cov lus qhia.

Плагин rau dab noj hnub nrog P4 kev txhawb nqa, tab sis peb tuaj yeem pom zoo P4 Studio los ntawm Barefoot.

P4 programming lus

Cia peb saib cov ntsiab lus tseem ceeb ntawm cov kernel:

Defining Headers - nrog rau lawv cov kev pab, raws tu qauv headers raug txiav txim.

Lub header txhais tau hais tias:

  • piav qhia ntawm pob ntawv hom thiab header teb npe
  • ruaj thiab hloov pauv tau tso cai teb

Piv txwv

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 - Lawv txoj haujlwm yog los txheeb xyuas cov xov xwm.

Cov piv txwv parser hauv qab no yuav txiav txim siab qhov kev hloov pauv ntawm lub xeev kawg ntawm lub tshuab los ntawm ib lub xeev pib mus rau ib qho ntawm ob lub xeev kawg:

P4 programming lus

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

Ntxhuav - muaj lub tshuab hais txuas cov neeg siv cov yuam sij nrog kev ua. Sau ntawv - piav qhia txog yuav ua li cas lub pob yuav tsum tau siv.

Cov ntxhuav muaj cov xeev (txhais tau ntawm qib kev tswj hwm) rau pob ntawv xa mus, piav qhia txog Match-Action unit

Cov pob khoom yog sib npaug los ntawm:

  • Kev sib tw
  • Longest Prefix Match (LPM)
  • Triple matching (masking)

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

Txhua yam ua tau yuav tsum tau txhais hauv cov lus ua ntej.

Cov haujlwm muaj cov lej thiab cov ntaub ntawv. Cov ntaub ntawv los ntawm qib kev tswj hwm (xws li IP chaw nyob / chaw nres nkoj tus lej). Qee yam, cov txheej txheem tsis muaj voj voog tuaj yeem raug teev ncaj qha rau hauv qhov kev txiav txim, tab sis tus naj npawb ntawm cov lus qhia yuav tsum tau kwv yees. Yog li ntawd, kev nqis tes ua tsis tuaj yeem muaj cov voj voog lossis cov lus qhia.

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 - kev nqis tes ua los tsim tus yuam sij tshawb nrhiav, tshawb hauv lub rooj, ua haujlwm.

Ib qho piv txwv ntawm ib qho module yog qhia hauv daim duab:

P4 programming lus

Tswj ntws - qhia txog qhov kev txiav txim uas siv Match-Action modules. Qhov no yog qhov kev pabcuam tseem ceeb uas txhais cov ntsiab lus siab thiab Match-Action sequence. Tus tswj ntws txuas tag nrho cov khoom los ntawm kev txhais cov theem tswj.

Cov khoom siv sab nraud yog cov khoom tshwj xeeb nrog cov qauv qhia meej meej thiab API interfaces. Piv txwv li, checksum xam, sau npe, txee, txee, thiab lwm yam.

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 - cov ntaub ntawv qauv txuam nrog txhua pob.

Muaj 2 hom metadata:

  Kev cai metadata (dawb qauv rau txhua pob)
    Koj tuaj yeem muab qhov koj xav tau ntawm no
    Muaj thoob plaws hauv cov kav dej
    yooj yim rau siv rau koj tus kheej lub hom phiaj, piv txwv li, khaws cia ib pob hash

  Internal metadata - muab los ntawm architecture
    Input port, output port tau txhais ntawm no
    Sijhawm cim thaum lub pob ntawv raug queued, queue qhov tob
    multicast hash / multicast queue
    Pob tseem ceeb, pob qhov tseem ceeb
    Output chaw nres nkoj specification (piv txwv li tso zis queue)

P4 compiler

P4 compiler (P4C) tsim:

  1. Cov ntaub ntawv dav hlau runtime
  2. API rau kev tswj lub xeev hauv cov ntaub ntawv dav hlau

P4 programming lus

Piv txwv ntawm kev hloov software hauv P4 lus

Cov lej tuaj yeem rub tawm los ntawm lub chaw khaws cia.

p4lang/p4c-bm: tsim JSON configuration rau bmv2
p4lang/bmv2: hloov software uas nkag siab bmv2 version JSON teeb tsa

Daim duab qhia txog qhov project compilation diagram:

P4 programming lus

Manipulation nrog cov ntxhuav, nyeem ntawv sau npe, txee:

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


Lub hauv paus chaws muaj cov kev pab cuam simple_switch_CLI kom yooj yim siv software hloov API.

Koj tuaj yeem rub tawm qhov no thiab lwm yam piv txwv los ntawm qhov chaw cia khoom.

P4 programming lus

PS Thaum lub caij ntuj sov no, Intel tau kos npe rau daim ntawv cog lus kom tau Barefoot Networks hauv kev sib zog ua kom tau raws li qhov xav tau ntawm Hyperscale Cloud cov neeg siv. Raws li Navin Shenoy (tus lwm thawj tswj hwm thiab tus thawj tswj hwm ntawm Data Center Group ntawm Intel Corporation) tau hais tias, qhov no yuav ua rau Intel muab cov haujlwm loj dua thiab ntau lub sijhawm rau cov neeg siv khoom hauv cov ntaub ntawv.

Hauv kuv tus kheej lub tswv yim, peb yuav tsum tsis txhob hnov ​​​​qab tias Intel yog tus thawj coj hauv kev tsim cov FPGA chips thiab nws muaj qhov zoo heev Quartus ib puag ncig. Qhov no txhais tau tias peb tuaj yeem cia siab tias nrog kev tuaj txog ntawm Intel, Barefoot yuav tsis tsuas nthuav nws cov khoom lag luam, tab sis kuj Quartus thiab P4 Studio yuav tau txais kev hloov kho tshiab thiab ntxiv rau Toffino thiab Toffino 2 kab.

Tus tswv cuab ntawm P4 zej zog - tuam txhab Factor pawg.

Tau qhov twg los: www.hab.com

Ntxiv ib saib