P4 reo whakahōtaka

P4 reo whakahōtaka
Ko te P4 he reo hötaka i hangaia hei hötaka i ngä ture ararere paatete. Kaore i rite ki te reo kaupapa whanui penei i te C, i te Python ranei, he reo motuhake te P4 me te maha o nga hoahoa kua arotauhia mo te ararere whatunga.

Ko te P4 he reo puna tuwhera kua raihanatia, e tiakina ana e tetahi whakahaere moni kore e kiia nei ko te P4 Language Consortium. Kei te tautokohia ano e te Open Networking Foundation (ONF) me te Linux Foundation (LF), e rua o nga whakahaere maru nui rawa atu mo nga kaupapa whatunga puna tuwhera.
I hanga tuatahitia te reo i te tau 2013 ka whakaahuatia i roto i te pepa SIGCOMM CCR 2014 i tapaina ko “Protocol Independent, Packet Routing Processor Programming.”

Mai i tona timatanga, kua tipu te P4 me te tipu haere, ka tere te noho hei paerewa mo te whakaahua i te tukunga o nga paatete ma nga taputapu whatunga, tae atu ki nga taputapu whatunga, nga whakawhiti, me nga pouara.

"Kua hurihia e te SDN te ahumahi whatunga, a ka kawe a P4 i te SDN ki te taumata e whai ake nei ma te kawe i te kaupapa ki te ararere," ta Guru Parulkar, te kaiwhakahaere matua o te Open Networking Foundation.

Ko te reo P4 i hanga tuatahi e te roopu miihini me nga kairangahau mai i Google, Intel, Microsoft Research, Barefoot, Princeton me Stanford. He ngawari noa te whainga: hanga he reo ngawari ki te whakamahi ka taea e te kaiwhakawhanake rorohiko te ako i roto i te ra kotahi, me te whakamahi ki te whakaahua tika me pehea e tukuna ai nga paakete puta noa i nga whatunga.

Mai i te timatanga, i hoahoatia a P4 kia noho motuhake (arā, he kaupapa kua tuhia ki te P4 ka taea te whakahiato kaore i whakarereketia kia rere ki runga i nga momo whaainga penei i nga ASIC, FPGA, PTM, NPU, me nga GPU).

He kawa motuhake ano te reo (arā, ka taea e te kaupapa P4 te whakaahua i nga kawa paerewa o naianei, ka whakamahia ranei ki te tautuhi i nga tikanga whakatika ritenga hou).

I roto i te ahumahi, ka whakamahia te P4 mo te whakamahere taputapu. Akene pea ka uru atu nga paerewa Ipurangi-RFC me IEEE ki te whakatakotoranga P4.

Ka taea te whakamahi i te P4 mo nga taputapu mahi ka taea te whakarite me te whakarite. Hei tauira, ka whakamahia ki te tuhi tika i te whanonga paipa whakawhiti i roto i nga API Whakawhiti Abstraction Interface (SAI) e whakamahia ana e te puna tuwhera SONiC switch OS. Ka whakamahia ano te P4 i roto i te kaupapa ONF Stratum ki te whakaahua i te whanonga whakawhiti puta noa i nga momo momo taputapu kua mau, ka taea hoki te papatono.

Mo te wa tuatahi, ko te whakaahua i te whanonga o te whakawhiti me nga urutau whatunga ka taea e koe te hanga tauira tika o te whatunga katoa i mua i te tukunga. Ka taea e nga kaiwhakarato kapua nui te whakamatautau me te patuiro i te whatunga ma te whakamahi i nga raupaparorohiko, ka tino whakaitihia te wa me te utu mo te whakamatautau honohono i roto i te taiwhanga me te kore e tono taputapu utu nui.

Ma te whakamahi i te P4, ka taea e nga kaihoko taputapu whatunga te tumanako i nga whanonga ararere noa puta noa i nga hua katoa, ka taea te whakamahi ano i nga hanganga whakamatautau, te whakamaarama i te whakawhanaketanga rorohiko whakahaere, me te whakapumau i te mahi tahi.

Ae ra, ka taea te whakamahi P4 ki te tuhi i nga kaupapa e whakaahua ana i nga huarahi hou mo te ararere. Hei tauira, ka whakamahia nuitia te P4 mo te waea me te ine i roto i nga pokapū raraunga, hinonga me nga whatunga kaiwhakarato ratonga.

Kua piki ake ano te hapori rangahau. He maha nga roopu rangahau whatunga matauranga kua whakaputa i nga tono hou whakahihiri i runga i nga kaupapa P4, tae atu ki te whakataurite kawenga, nga kawa whakaae, me te keteroki uara matua. Kei te hangahia he tauira hotaka hou, kei te neke nga mahi hou mai i te taputapu ki te rorohiko, ka taea e te maha o nga whakaaro ohorere, hou me nga whakaaro mohio ki te puta mai.

He nui nga takoha a te hapori kaiwhakawhanake ki te whanaketanga waehere, tae atu ki nga kaikoipi, pipeline, tauira whanonga, API, anga whakamatautau, tono, me etahi atu. Ko nga kamupene penei i a Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, me ZTE kua whakatapua nga kaihanga; mai i nga whare wananga tae atu ki te BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, me USI; me nga kaupapa puna tuwhera tae atu ki te CORD, FD.io, OpenDaylight, ONOS, OvS, SAI me Stratum e whakaatu ana ko te P4 he kaupapa hapori motuhake.

Whakatupuranga angamaheni o nga kaiwhakahaere mo te reo P4:

P4 reo whakahōtaka

Nga tumanakohanga tono

P4 reo whakahōtaka
I te mea ko te reo te tikanga mo nga tono ararere, he rereke te rarangi o nga whakaritenga me nga whiringa hoahoa ki te whakataurite ki nga reo hotaka kaupapa whanui. Ko nga ahuatanga matua o te reo ko:

  1. Te mana motuhake mai i te whakatinanatanga o te whaainga;
  2. Te motuhake o te (ng) kawa i whakamahia;
  3. Te whirihora ano o te mara.

Te mana motuhake mai i te whakatinanatanga o te whaainga

Ko nga kaupapa P4 he mea hanga motuhake hei whakatinanatanga, te tikanga ka taea te whakahiato mo nga momo miihini mahi maha, penei i nga kaiwhakatikatika kaupapa-whanui, nga FPGA, nga punaha-i-kirikiri, nga kaiwhakatika whatunga, me nga ASIC. Ko enei momo momo miihini e mohiotia ana ko nga whaainga P4, a, ka hiahiatia e ia whaainga he kaikoipi hei huri i te waehere puna P4 ki roto i te tauira whakawhiti whaainga. Ka taea te hanga i te kaitoi ki roto i te taputapu whaainga, te rorohiko o waho, me te ratonga kapua ranei. Na te mea ko te nuinga o nga whaainga taketake mo nga kaupapa P4 mo te whakawhiti paatete ngawari, he mea noa te rongo i te kupu "P4 switch" ahakoa he tika ake te "P4 target".

Te motuhake o nga kawa i whakamahia

He kawa motuhake a P4. Ko te tikanga karekau he tautoko taketake o te reo mo nga tikanga noa penei i te IP, Ethernet, TCP, VxLAN, MPLS ranei. Engari, ka whakaahuahia e te kaitoha P4 nga whakatakotoranga pane me nga ingoa mara o nga kawa e hiahiatia ana i roto i te hotaka, ka whakamaoritia, ka tukatukahia e te hotaka kua whakahiato me te taputapu whaainga.

Te whirihora ano o te mara

Ko te motuhake o te kawa me te tauira reo waitara ka taea te whirihora ano—me ahei nga taumata P4 ki te huri i te tukatuka paatete i muri i te tukunga o te punaha. Ko tenei kaha kua honoa ki te ararere ma roto i nga kaitukatuka kaupapa-whanui, i nga kaitukatuka whatunga ranei, kaua ki nga iahiko whakauru-mau.

Ahakoa karekau he mea i roto i te reo hei aukati i te arotautanga o te mahinga o tetahi huinga kawa, kare e kitea e te kaituhi reo enei arotautanga, a ka taea te whakaiti i te ngawari o te punaha me nga whaainga me o raatau whakatikatika.

Ko enei ahuatanga o te reo i whakatakoto tuatahitia e ona kaihanga me te aro nui ki tona whakamahinga whanui i roto i nga hanganga whatunga.

Kua whakamahia kētia te reo i roto i ngā kamupene maha:

1) Pokapū raraunga nui;

Ko te kamupene Hainamana Tencent te kamupene haumi nui rawa atu i te ao me tetahi o nga umanga whakapaipai nui rawa atu. Ko nga apiti a Tencent, i Haina me etahi atu whenua huri noa i te ao, he mea motuhake ki nga waahi o te umanga hangarau-nui, tae atu ki nga momo ratonga Ipurangi, nga whanaketanga i roto i te waahi o te matauranga hangai me te whakangahau hiko.

Ko te P4 me te ararere ka taea te whakarite he hangarau matatau e whakamahia ana i roto i te hoahoanga whatunga a te kamupene.

Ko tetahi o nga kaihanga, kei te whakapehapeha a Google ki te kite i te tere o te tangohanga o P4 i roto i te umanga whatunga me te hoahoa hoahoanga pokapū raraunga.

2) Nga kamupene hokohoko;

Ka whai hua a Goldman Sachs ki te mahi tahi me te hapori tuwhera me te whakawhanake i nga paerewa noa me nga otinga hei whakahou i nga hanganga whatunga me te whakarato otinga pai ake mo nga kaihoko.

3) Whakaputa;

Ka whai hua te ahumahi whatunga katoa mai i te reo penei i te P4 e tautuhi ana i te whanonga whakamua. E whakapono ana hoki a Cisco ki te whakawhiti i ana rarangi hua ki te whakamahi i tenei reo.

Kua whakauruhia e Juniper Networks te P4 me te P4 Runtime i roto i te maha o nga hua, me te whakarato i te uru ki te rorohiko whakauru Juniper me tana waehere rorohiko.

He tino tautoko a Ruijie Networks i te P4 me nga painga ka kawea mai e ia ki nga whatunga. Ma te P4, ka taea e te kamupene te hanga me te tuku otinga pai-i roto i te akomanga ki te tini o nga kaihoko.

4) Nga kaiwhakarato waea;

Ko AT&T tetahi o nga tangata tuatahi ki te whakamahi i te P4 ki te tautuhi i te whanonga e hiahia ana ia ki te kite i roto i ana whatunga, me te whakamahi i nga taputapu whakamua P4 i runga i tana whatunga.

I Deutsche Telekom, ka whakamahia te reo ki te tauira i nga mahi whatunga matua hei waahanga o te kaupapa Access 4.0.

5) Te ahumahi Semiconductor;

Na te reo i taea ai e Barefoot te whakatinana i tetahi tauira hou mo te tuku i nga kaha rorohiko ki te rererangi ararere whatunga.

Ko Xilinx tetahi o nga kaihanga o P4.org me te whai kaha ki te whakawhanaketanga o te reo P4 me te whakatinana ki roto i nga papaaho-whakatakataka-a-FPGA mo te taputapu SmartNIC me te NFV, ka tukuna tetahi o nga kaitoi P416 tuatahi hei waahanga o te hoahoa SDNet.

6) Pūmanawa.

E whakapono ana a VMware ka hangaia e te P4 te kaha nui, te auaha me te hapori e akiaki ana i nga huringa whai kiko me te tika i roto i te whatunga. Ko VMware tetahi waahanga o tenei kaupapa ahumahi mai i te timatanga, i te mea he ngaru hou o te mahi hou e akiakihia ana e nga huarahi rorohiko-rorohiko e whakawhānui ana i nga kaha o te hanganga me te whakatinana i roto i nga hua hou.

No reira, ko te P4 he reo whakahiato-motuhake me te kawa-motuhake e whakamahia ana e te ahumahi me te whare wananga ki te tautuhi ahurei te whanonga ararere paatete hei kaupapa, ka taea te whakahiato mo nga whaainga maha. I tenei ra, ko nga whaainga ko nga taputapu me nga taputapu rorohiko, nga huringa hypervisor, nga NPU, nga GPU, nga FPGA, nga SmartNIC me nga ASIC.

Ko nga ahuatanga matua o te reo ka tino whakawhānui ake i te whānuitanga o tana tono me te whakarite i tana whakatinanatanga tere i roto i nga hoahoanga whatunga.

Getting Started

He kaupapa tuwhera a P4, kei te paetukutuku nga korero e tika ana P4.org

Hononga putunga https://github.com/p4lang, ka taea e koe te tiki tauira waehere puna me nga akoranga.

Tuhinga mo Eclipse me te tautoko P4, engari ka taea e matou te taunaki P4 Studio mai i te Karekau.

P4 reo whakahōtaka

Me titiro ki nga tangohanga matua o te kernel:

Te Tautuhi Pane — me ta raatau awhina, ka whakatauhia nga pane kawa.

Ko te whakamāramatanga pane e whakapūtā ana:

  • whakaahuatanga o nga whakatakotoranga paatete me nga ingoa apure pane
  • kua whakaritea nga mara kua whakaaetia

Hei tauira

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

Nga Parsers — ko ta raatau mahi he whakamaarama i nga kupu matua.

Ko te tauira parser e whai ake nei ka whakatau i te whakawhitinga o te ahua whakamutunga o te miihini mai i tetahi ahuatanga tuatahi ki tetahi o nga ahuatanga whakamutunga e rua:

P4 reo whakahōtaka

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

Ripanga — kei roto nga miihini miihini e hono ana i nga taviri kaiwhakamahi me nga mahi. Nga mahi — he whakaahuatanga me pehea te raweke i te kete.

Kei roto i nga ripanga nga ahuatanga (kua tautuhia ki te taumata whakahaere) mo te tuku paanui, whakaahuahia te waahanga Match-Maction

Ka whakatauritehia nga paatete ki:

  • ōrite tika
  • Whakaritenga Kupumua Roa (LPM)
  • Taurite toru (whakaahua)

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

Ko nga mahi katoa ka taea me tautuhi i nga ripanga i mua.

Ko nga mahi he waehere me nga raraunga. Ka ahu mai nga raraunga i te taumata whakahaere (hei tauira, nga wahitau IP/tau tauranga). Ko etahi o nga mea tuatahi, karekau-kore ka taea te tautuhi tika i roto i te mahi, engari me matapae te maha o nga tohutohu. Na reira, kaore e taea e nga hohenga te whakauru i nga kapiti, nga korero here ranei.

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

Kōwae Whakaōrite-Mahi — mahi ki te hanga i te matua rapu, rapu i roto i te ripanga, mahi mahi.

Ka whakaatuhia he tauira angamaheni o te kōwae i te ahua:

P4 reo whakahōtaka

Whakahaere rere — tohu i te raupapa e whakamahia ana nga waahanga Match-Maction. He kaupapa whakahirahira tenei e tautuhi ana i te arorau taumata teitei me te raupapa Match-Maction. Ko te rere mana e hono ana i nga mea katoa ma te tautuhi i te taumata mana.

Nga taonga o waho he mea motuhake me te hoahoanga me nga hononga API. Hei tauira, te tatau kaute, rehita, porotiti, porotiti, aha atu.

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 — nga hanganga raraunga e hono ana ki ia kete.

E rua nga momo metadata:

  Ritenga metadata (hanganga kau mo nga kohinga katoa)
    Ka taea e koe te whakatakoto i nga mea e hiahia ana koe ki konei
    E waatea ana puta noa i te paipa
    he watea mo te whakamahi mo o ake kaupapa, hei tauira, mo te penapena i te riipene kete

  Metadata o roto - na te hoahoanga
    Tauranga whakauru, tauranga putanga kua tautuhia i konei
    Waitohu wā i te wā i tūtiratia te pākete, te hōhonutanga o te tūtira
    multicast hash / multicast tūtira
    Mōkī matua, mōkihi hiranga
    Tauranga tauranga putanga (hei tauira, te rarangi whakaputa)

P4 whakahiato

Ko te whakahiato P4 (P4C) ka whakaputa:

  1. Wā whakahaere rererangi Raraunga
  2. API mo te whakahaere i te ahua miihini i roto i te rererangi raraunga

P4 reo whakahōtaka

He tauira o te whakawhiti rorohiko i te reo P4

Ka taea te tango i nga waehere puna mai i te putunga.

p4lang/p4c-bm: hanga whirihoranga JSON mo bmv2
p4lang/bmv2: he huringa rorohiko e mohio ana ki nga whirihoranga JSON putanga bmv2

Ko te ahua e whakaatu ana i te hoahoa whakahiato kaupapa:

P4 reo whakahōtaka

Raweketanga me nga ripanga, rehita panui, porotiti:

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


Kei roto i te waehere puna te kaupapa simple_switch_CLI mo te whakamahi pai o te API whakawhiti rorohiko.

Ka taea e koe te tango i tenei me etahi atu tauira mai i te putunga.

P4 reo whakahōtaka

PS I te timatanga o tenei raumati, i hainatia e Intel tetahi whakaaetanga ki te whiwhi Barefoot Networks i roto i te kaha ki te whakatutuki tere i nga hiahia o nga kaiwhakamahi Hyperscale Cloud. I kii a Navin Shenoy (te perehitini tuarua me te kaiwhakahaere matua o te Roopu Raraunga Raraunga i Intel Corporation), ma tenei ka tuku a Intel ki te whakarato i nga kawenga mahi nui ake, me te maha atu o nga waahi mo nga kaihoko pokapū raraunga.

Ki taku ake whakaaro, kaua tatou e wareware he kaihautu a Intel mo te hanga maramara FPGA, a he pai te taiao Quartus. Ko te tikanga ka taea e tatou te tumanako me te taenga mai o Intel, kaore a Barefoot e whakawhānui noa i tana raina hua, engari ka whiwhi ano hoki a Quartus me P4 Studio i nga whakahoutanga nui me nga taapiri ki te raina Toffino me Toffino 2.

He mema whai mana o te hapori P4 - kamupene Rōpū take.

Source: will.com

Tāpiri i te kōrero