P4 gagana polokalame

P4 gagana polokalame
O le P4 o se gagana fa'apolokalame ua fa'atulaga e fa'apolokalame ai tulafono fa'aalaala. E le pei o se gagana fa'apitoa e pei ole C po'o le Python, o le P4 ose gagana fa'apitoa ma le tele o fa'ata'ita'iga ua fa'amanino mo le fa'aogaina o feso'otaiga.

O le P4 ose gagana tatala fa'apogai ua laiseneina ma tausia e se fa'alapotopotoga e leai ni tupe mama e ta'ua o le P4 Language Consortium. E lagolagoina foi e le Open Networking Foundation (ONF) ma le Linux Foundation (LF), e lua o faʻalapotopotoga faʻamalu tele mo poloketi fesoʻotaʻiga fesoʻotaiga.
O le gagana na muai faia i le 2013 ma faʻamatalaina i le 2014 SIGCOMM CCR pepa faʻaigoaina "Protocol Independent, Packet Routing Processor Programming."

Talu mai lona amataga, ua tupu aʻe ma faʻateleina le P4, ua vave ona avea ma faʻataʻitaʻiga mo le faʻamatalaina o le tuʻuina atu o pusa e ala i masini fesoʻotaʻiga, e aofia ai fesoʻotaʻiga fesoʻotaʻiga, suiga, ma alalaupapa.

"Ua suia e le SDN le alamanuia networking, ma o le P4 e ave le SDN i le isi tulaga e ala i le aumaia o polokalame i le auala," o le tala lea a Guru Parulkar, faatonu sili o le Open Networking Foundation.

O le gagana P4 na faia muamua e se vaega o inisinia ma tagata suʻesuʻe mai Google, Intel, Microsoft Research, Barefoot, Princeton ma Stanford. Sa faigofie le sini: fatuina se gagana faigofie e mafai ona aʻoaʻoina e se tagata faʻapipiʻi polokalame i se aso ma faʻaoga e faʻamatala saʻo ai pe faʻafefea ona lafo atu pusa i luga o fesoʻotaʻiga.

Mai lava i le amataga, na fuafuaina le P4 e tutoʻatasi tutoʻatasi (e pei o se polokalame tusia i le P4 e mafai ona tuʻufaʻatasia e le suia e faʻatautaia i luga o le tele o sini e pei o ASICs, FPGAs, CPUs, NPUs, ma GPUs).

O le gagana e tuto'atasi fo'i (o lona uiga, o se polokalame P4 e mafai ona fa'amatala fa'asologa masani o lo'o iai pe fa'aaoga e fa'amanino ai tu ma aga masani fou).

I alamanuia, P4 e faʻaaogaina mo polokalame masini. Masalo i le lumanaʻi Initaneti-RFC ma IEEE tulaga faʻapitoa o le a aofia ai foʻi le faʻamatalaga P4.

E mafai ona fa'aogaina le P4 mo masini fa'apipi'i ma fa'amautu. Mo se fa'ata'ita'iga, o lo'o fa'aaogaina e fa'amaumau sa'o ai le amio paipa sui i totonu ole Switch Abstraction Interface (SAI) API o lo'o fa'aogaina e le puna tatala SONiC switch OS. O lo'o fa'aogaina fo'i le P4 ile poloketi ONF Stratum e fa'amatala ai le fesuia'iga o amio ile tele o masini mautu ma fa'apolokalameina.

Mo le taimi muamua, faʻamatalaina le amio a le ki ma fesoʻotaʻiga fesoʻotaʻiga e mafai ai ona e faia se faʻataʻitaʻiga saʻo faʻatinoina o le fesoʻotaʻiga atoa aʻo leʻi faʻapipiʻiina. E mafai ona fa'ata'ita'i ma fa'apipi'i e 'aufaigaluega lapopo'a le feso'ota'iga i le fa'aaogaina o polokalama faakomepiuta, e fa'aitiitia ai le taimi ma le tau o su'ega felagolagoma'i i totonu o le fale su'esu'e e aunoa ma le mana'omia o meafaigaluega taugata.

I le fa'aogaina o le P4, e mafai e le au fa'atau meafaigaluega feso'ota'iga ona fa'amoemoe e masani ai le ta'avale i totonu o oloa uma, fa'atagaina le toe fa'aogaina o atina'e su'ega, fa'afaigofie le atina'eina o polokalama faakomepiuta, ma fa'amautinoaina le felagolagoma'i.

O le mea moni, e mafai ona fa'aoga le P4 e tusi ai polokalame e fa'amatala atoatoa ai auala fou o le ta'avale. Mo se faʻataʻitaʻiga, o le P4 e faʻaaogaina lautele mo le telemetry ma fuataga i nofoaga autu o faʻamatalaga, atinaʻe ma fesoʻotaʻiga tuʻuina atu auaunaga.

Ua laa foi i luga le sosaiete su'esu'e. E tele vaega o su'esu'ega fa'akomepiuta fa'aa'oa'oga ua fa'asalalauina ni tusi fa'afiafia fou e fa'atatau i polokalame P4, e aofia ai le paleni o uta, fa'asalalauga fa'atasi, ma le fa'amauina o tau taua. O lo'o fa'atupuina se fa'ata'ita'iga fa'apolokalame fou, o lo'o fa'agasolo mai mea fou mai masini i masini komepiuta, ma fa'atagaina ai le tele o manatu e le'i fa'amoemoeina, fou ma atamai e tula'i mai.

O le fa'alapotopotoga fa'atupuina ua faia ni sao taua i le atina'eina o tulafono, e aofia ai le tu'ufa'atasia, paipa, fa'ata'ita'iga amio, APIs, fa'ata'ita'iga o su'ega, talosaga, ma isi mea. Kamupani e pei o Alibaba, AT & T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, ma le ZTE ua faʻamaonia tagata atiae; mai iunivesite e aofia ai BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, ma USI; ma galuega fa'avae tatala e aofia ai CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ma Stratum o lo'o fa'amamafaina ai le mea moni o le P4 o se poloketi tuto'atasi a le nu'u.

Fa'atupuina masani o fa'atonu mo le gagana P4:

P4 gagana polokalame

Fa'amoemoega talosaga

P4 gagana polokalame
Talu ai o le gagana e faʻamoemoe mo le faʻaogaina o talosaga, o le lisi o manaʻoga ma filifiliga filifiliga e ese pe a faʻatusatusa i gagana faʻatulagaina lautele. O uiga autu o le gagana o:

  1. Tuto'atasi mai fa'atinoga fa'atatau;
  2. Tuto'atasi o le (s) fa'aogaina;
  3. Toe fetuutuunai fanua.

Tuto'atasi mai fa'atinoga fa'atatau

O polokalame P4 ua mamanuina ina ia faʻatinoina tutoatasi, o lona uiga e mafai ona tuʻufaʻatasia mo le tele o ituaiga eseese o masini faʻatinoina, e pei o faʻaogaina lautele, FPGAs, system-on-chips, network processors, ma ASICs. O nei ituaiga masini eseese e taʻua o P4 sini, ma o sini taʻitasi e manaʻomia ai se tagata faʻapipiʻi e faʻaliliu le P4 source code i se faʻataʻitaʻiga ki sui. E mafai ona fausia le compiler i totonu o le masini sini, polokalama fafo, po o se auaunaga ao. Talu ai o le tele o ulua'i fa'amoemoe mo polokalame P4 sa fa'afaigofie ona fesuia'i pepa, e masani lava ona fa'alogoina le fa'aupuga "P4 switch" e ui lava o le "P4 target" e sili atu le sa'o.

Tuto'atasi o (s) fa'aogaina

O le P4 e tuto'atasi le protocol. O lona uiga o le gagana e leai se lagolago fa'ale-aganu'u mo tulafono masani e pei ole IP, Ethernet, TCP, VxLAN po'o le MPLS. Nai lo lena, o le P4 programmer o loʻo faʻamatalaina le faʻasologa o ulutala ma igoa ole fanua o faʻamaumauga manaʻomia i totonu o le polokalame, lea e faʻamatalaina ma faʻatautaia e le polokalame tuʻufaʻatasia ma le masini faʻatatau.

Toe fetuutuunai fanua

O le fa'ata'ita'iga tuto'atasi ma le fa'ata'ita'iga o le gagana fa'apitoa e fa'ataga ai le toe fa'atulagaina—o sini P4 e tatau ona mafai ona suia le fa'agaioiina o pepa pe a mae'a ona fa'atino le faiga. O lenei agava'a e masani ona feso'ota'i ma ta'avale e ala i masini fa'apitoa po'o feso'ota'iga feso'ota'iga nai lo feso'ota'iga tu'ufa'atasi.

E ui lava e leai se mea i totonu o le gagana e taofia ai le faʻaogaina o le faʻatinoga o se seti o faʻasalalauga faʻapitoa, o nei faʻataʻitaʻiga e le o vaʻaia e le tusitala o le gagana ma e mafai ona faʻaitiitia ai le fetuutuunai o le faiga ma sini ma lo latou toe faʻaleleia.

O nei uiga o le gagana na muai fa'ata'atia e ona tagata na faia ma le fa'atatau i lona fa'aogaina lautele i atina'e feso'otaiga.

O le gagana ua uma ona faʻaaogaina i le tele o kamupani:

1) Hyperscale nofoaga autu o faamatalaga;

O le kamupani Saina Tencent o le kamupani sili ona tele tupe teufaafaigaluega i le lalolagi ma o se tasi o kamupani sili ona tele faʻapisinisi. O lala a Tencent, e le gata i Saina ma isi atunuu i le salafa o le lalolagi, e faʻapitoa i vaega eseese o pisinisi faʻatekonolosi, e aofia ai auaunaga eseese Initaneti, atinaʻe i le matata o le atamai faʻapitoa ma faʻafiafiaga faʻaeletoroni.

P4 ma fa'apolokalame fa'ata'ita'iga o ni tekonolosi fa'aogaina o lo'o fa'aogaina i le fausaga o feso'ota'iga a le kamupani.

I le avea ai ma se tasi na amataina, e mitamita Google e matauina le vave faʻaaogaina o le P4 i le alamanuia networking ma i totonu o faʻamaumauga faʻataʻitaʻiga faʻataʻitaʻiga faʻapitoa.

2) Kamupani fa'apisinisi;

Goldman Sachs e faʻaogaina le galulue faʻatasi ma le faʻalapotopotoga faʻapitoa ma atinaʻe tulaga masani ma fofo e faʻafouina ai atinaʻe fesoʻotaiga ma tuʻuina atu fofo sili atu mo tagata faʻatau.

3) Gaosiga;

O le a fa'amanuiaina le alamanuia 'upega tafa'ilagi mai se gagana e pei o le P4 e fa'amanino fa'apitoa ai le aga'i atu i luma. E talitonu foi Cisco i le fesiitaiga o ana laina oloa e faʻaaoga ai lenei gagana.

Juniper Networks ua aofia ai le P4 ma le P4 Runtime i le tele o oloa, ma tuʻuina atu le avanoa faʻapipiʻi i le Juniper faʻapipiʻi faʻapipiʻi ma lona code software.

O Ruijie Networks o se lagolago malosi o le P4 ma faʻamanuiaga e aumaia i fesoʻotaʻiga. Faatasi ai ma le P4, e mafai e le kamupani ona fatuina ma tuʻuina atu fofo sili ona lelei i totonu o le vasega i le tele o tagata faʻatau.

4) Kamupani tau feso'ota'iga;

AT&T ose tagata muamua na fa'aaogaina le P4, o se tasi na muamua fa'aaoga le P4 e fa'amatala ai le amio na te mana'o e va'ai i ana feso'ota'iga, ma fa'aoga P4 masini fa'apipi'i polokalame i luga o lana feso'otaiga.

I Deutsche Telekom, o lo'o fa'aogaina le gagana e fa'ata'ita'i ai galuega autu o feso'ota'iga o se vaega o le polokalame Access 4.0.

5) Alamanuia Semiconductor;

O le gagana na mafai ai e Barefoot ona fa'atino se fa'ata'ita'iga fou mo le tu'uina atu o tomai fa'akomepiuta i le va'alele fa'aola feso'ota'iga.

O Xilinx o se tasi na faavaeina le P4.org ma sa auai malosi i le atinaʻeina o le gagana P4 ma faʻatinoina i totonu o FPGA-faʻavae polokalame faʻapipiʻi mo masini SmartNIC ma NFV, faʻamalolo se tasi o uluai P416 tuʻufaʻatasia o se vaega o le mamanu SDNet.

6) Polokalama.

E talitonu VMware o le P4 e fa'atupuina ai le malosi tele, fa'afouga ma fa'alapotopotoga o lo'o fa'aosoina suiga anoa ma mana'omia ile feso'otaiga. O le VMware o se vaega o lenei gaioiga faʻapisinisi talu mai le amataga, ona o se galu fou o faʻafouga o loʻo faʻauluina e ala i polokalame faʻavae e faʻalauteleina ai gafatia tetele ma faʻaaogaina i oloa fou.

O le mea lea, o le P4 o se gagana fa'apolokalame tuto'atasi ma fa'apolokalame e fa'aogaina e alamanuia ma a'oga e fa'auiga tulaga ese ai amioga fa'ata'avaleina o se polokalame, lea e mafai ona tu'ufa'atasia mo le tele o sini. I aso nei, o sini e aofia ai masini ma masini komepiuta, suiga o le hypervisor, NPUs, GPUs, FPGAs, SmartNICs ma ASICs.

O uiga autu o le gagana e matua faʻalauteleina ai le lautele o lona faʻaogaina ma faʻamautinoa lona faʻatinoina vave i fausaga fesoʻotaʻiga.

O fea e amata ai

P4 o se poloketi tatala, o faʻamatalaga talafeagai uma o loʻo i luga o le upega tafaʻilagi P4.org

So'oga faleteuoloa https://github.com/p4lang, lea e mafai ona e maua ai faʻataʻitaʻiga faʻailoga punaʻoa ma aʻoaʻoga.

Sulu i totonu mo Eclipse ma le lagolago P4, ae mafai ona matou fautuaina P4 Studio mai Fa'ato'a seevae.

P4 gagana polokalame

Sei o tatou vaʻavaʻai i faʻamatalaga autu o le kernel:

Fa'amatala Ulutala — faatasi ai ma la latou fesoasoani, ua fuafuaina ulutala o le protocol.

O le fa'amatalaga ulutala e fa'amaoti mai:

  • fa'amatalaga o fa'asologa o pepa ma fa'auluulu igoa fanua
  • fanua tumau ma fesuia'i faatagaina

Mo se faʻataʻitaʻiga

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

Fa'asalalau - o la latou galuega o le fa'avasegaina o ulutala.

O le faʻataʻitaʻiga faʻataʻitaʻiga o loʻo i lalo o le a fuafua ai le suiga o le tulaga mulimuli o le masini mai le tasi tulaga muamua i le tasi o le lua setete mulimuli:

P4 gagana polokalame

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

Laulau - o lo'o iai fa'amatalaga masini e feso'ota'i ai ki fa'aoga ma gaioiga. Gaioiga - o se faʻamatalaga o le auala e tatau ona faʻaogaina ai le afifi.

O laulau o loʻo i ai setete (faʻamatalaina i le pulega tulaga) mo le faʻafeiloaʻi o pusa, faʻamatala le iunite Match-Action

O afifi e fetaui ma:

  • fetaui tonu
  • Fa'afetauiga Ulua'i Umi (LPM)
  • Fa'atusa faatolu (ufiufi)

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

O gaioiga uma e mafai e tatau ona faʻamalamalamaina i laulau i luma atu.

O gaioiga e aofia ai le code ma faʻamaumauga. O fa'amaumauga e sau mai le tulaga tau pulega (fa'ata'ita'iga tuatusi IP/numera uafu). E mafai ona fa'amaoti sa'o i le fa'agaioiga, ae o le numera o fa'atonuga e tatau ona va'aia. O le mea lea, o gaioiga e le mafai ona aofia ai soʻo se faʻaoga poʻo ni faʻamatalaga faʻapitoa.

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 - gaioiga e fai ai se ki su'esu'e, su'e i se laulau, fa'atino gaioiga.

O se faʻataʻitaʻiga masani o se module o loʻo faʻaalia i le ata:

P4 gagana polokalame

Pulea le tafe — fa'ailoa mai ai le fa'atonuga o lo'o fa'aogaina ai le fa'aogaina o le Match-Action modules. O se polokalame taua tele lea e faʻamatalaina ai le maualuga maualuga le faʻaogaina ma le Match-Action sequence. O le tafega fa'atonutonu e feso'ota'i mea uma e ala i le fa'amalamalamaina o le maualuga o le fa'atonuga.

Mea i fafo o ni mea fa'apitoa fa'atasi ma se fa'ata'ita'iga fa'amalamalama manino ma feso'ota'iga API. Mo se faʻataʻitaʻiga, faʻatusatusaga siaki, resitala, faʻatau, faʻatau, ma isi.

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 - fa'asologa o fa'amaumauga e feso'ota'i ma afifi ta'itasi.

E 2 ituaiga o metadata:

  Metadata fa'apitoa (fa'atulagaina gaogao mo afifi uma)
    E mafai ona e tuʻuina soʻo se mea e te manaʻo ai iinei
    E maua i le paipa atoa
    faigofie mo le faʻaaogaina mo au lava faʻamoemoega, mo se faʻataʻitaʻiga, mo le teuina o se afifi hash

  Metadata totonu - saunia e le fausaga
    O lo'o fa'amatalaina iinei
    Fa'ailoga taimi pe a tu'u le afifi, loloto o le laina
    telecast hash/multicast laina
    Fa'amuamua afifi, taua o le afifi
    Fa'amatalaga o le taulaga o mea e fai (fa'ata'ita'iga o le laina fa'atino)

P4 tu'ufa'atasi

O le P4 compiler (P4C) e gaosia:

  1. Taimi fa'asologa o vaalele
  2. API mo le puleaina o le tulaga o masini i le vaalele faʻamatalaga

P4 gagana polokalame

Fa'ata'ita'iga o le suiga ole polokalame ile gagana P4

Source codes e mafai ona la'uina mai le fale teu oloa.

p4lang/p4c-bm: faia le faatulagaga JSON mo bmv2
p4lang/bmv2: o se komipiuta sui e malamalama i le bmv2 version JSON configurations

O le ata o loʻo faʻaalia ai le faʻasologa o galuega faatino:

P4 gagana polokalame

Fa'atonuga i laulau, tusi resitala faitau, fa'atau:

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


O le source code o lo'o i ai le polokalame simple_switch_CLI mo le fa'aoga faigofie o le API sui polokalama.

E mafai ona e siiina lenei mea ma isi faʻataʻitaʻiga mai le fale teu oloa.

P4 gagana polokalame

SALA I le amataga o lenei taumafanafana, na sainia ai e Intel se maliliega e maua ai Barefoot Networks e vave faʻafetaui manaoga o tagata faʻaoga Hyperscale Cloud. E pei ona taʻua e Navin Shenoy (pule pule ma pule sili o le Data Center Group i le Intel Corporation), o le a mafai ai e Intel ona tuʻuina atu galuega tetele ma sili atu avanoa mo tagata faʻatau nofoaga autu.

I loʻu lava manatu, e le tatau ona galo ia i tatou o Intel o se taʻitaʻi i le gaosiga o meataalo FPGA ma o loʻo i ai se siosiomaga sili ona lelei Quartus. O lona uiga e mafai ona tatou faʻamoemoe o le taunuu mai o Intel, Barefoot o le a le gata ina faʻalauteleina lana laina oloa, ae faʻapea foi Quartus ma P4 Studio o le a maua ni faʻafouga ogaoga ma faʻaopoopoga i le Toffino ma Toffino 2 laina.

Sui aloa'ia o le P4 community - kamupani Vaega fa'apitoa.

puna: www.habr.com

Faaopoopo i ai se faamatalaga