Ede siseto P4

Ede siseto P4
P4 jẹ ede siseto ti a ṣe apẹrẹ lati ṣe eto awọn ofin ipa ọna. Ko dabi ede idi-gbogbo gẹgẹbi C tabi Python, P4 jẹ ede kan pato-ašẹ pẹlu nọmba awọn apẹrẹ ti a ṣe iṣapeye fun ipa-ọna nẹtiwọki.

P4 jẹ ede orisun ṣiṣi ti o ni iwe-aṣẹ ati itọju nipasẹ ajọ ti kii ṣe ere ti a pe ni Consortium Ede P4. O tun ṣe atilẹyin nipasẹ Open Networking Foundation (ONF) ati Linux Foundation (LF), meji ninu awọn ẹgbẹ agboorun ti o tobi julọ fun awọn iṣẹ akanṣe orisun orisun.
Ede naa jẹ ipilẹṣẹ ni akọkọ ni ọdun 2013 ati ṣapejuwe ninu iwe 2014 SIGCOMM CCR kan ti o ni ẹtọ ni “Independent Protocol, Packet Processor Processor.”

Lati ibẹrẹ rẹ, P4 ti dagba ati ti dagbasoke ni iwọn, ni kiakia di boṣewa fun apejuwe gbigbe awọn apo-iwe nipasẹ awọn ẹrọ nẹtiwọọki, pẹlu awọn oluyipada nẹtiwọọki, awọn iyipada, ati awọn olulana.

"SDN ti yi ile-iṣẹ nẹtiwọki pada, ati P4 gba SDN si ipele ti o tẹle nipa gbigbe eto eto si ipa-ọna," Guru Parulkar, oludari oludari ti Open Networking Foundation sọ.

Ede P4 jẹ ipilẹṣẹ nipasẹ ẹgbẹ kan ti awọn onimọ-ẹrọ ati awọn oniwadi lati Google, Intel, Microsoft Research, Barefoot, Princeton ati Stanford. Ibi-afẹde naa rọrun: ṣẹda ede ti o rọrun-si-lilo ti olupilẹṣẹ sọfitiwia le kọ ẹkọ ni ọjọ kan ati lo lati ṣapejuwe deede bi awọn apo-iwe ṣe firanṣẹ kọja awọn nẹtiwọọki.

Lati ibere pepe, P4 ti ṣe apẹrẹ lati jẹ ominira ibi-afẹde (ie eto ti a kọ sinu P4 le ṣe akopọ ko yipada lati ṣiṣẹ lori ọpọlọpọ awọn ibi-afẹde bii ASICs, FPGAs, CPUs, NPUs, ati GPUs).

Ede naa tun jẹ ominira ilana (ie, eto P4 kan le ṣe apejuwe awọn ilana boṣewa ti o wa tẹlẹ tabi ṣee lo lati pato awọn ipo adirẹsi aṣa tuntun).

Ni ile-iṣẹ, P4 ti lo fun siseto ẹrọ. Boya ni ojo iwaju Internet-RFC ati awọn ajohunše IEEE yoo tun pẹlu sipesifikesonu P4.

P4 le ṣee lo fun siseto mejeeji ati awọn ẹrọ iṣẹ ti o wa titi. Fún àpẹrẹ, a lò ó láti ṣàkọsílẹ̀ ìhùwàsí ìhùwàsí òpópónà yípo lọ́nà pípéye nínú Àṣàmúlò Yipada Abstraction (SAI) API ti a lò nipasẹ orisun ìmọ SOniC yipada OS. P4 tun lo ninu iṣẹ akanṣe ONF Stratum lati ṣe apejuwe ihuwasi iyipada kọja ọpọlọpọ awọn ẹrọ ti o wa titi ati eto.

Fun igba akọkọ, ti n ṣalaye ihuwasi ti yipada ati awọn oluyipada nẹtiwọọki n gba ọ laaye lati ṣẹda awoṣe ṣiṣe deede ti gbogbo nẹtiwọọki ṣaaju imuṣiṣẹ. Awọn olupese awọsanma nla le ṣe idanwo ati ṣatunṣe nẹtiwọọki patapata nipa lilo sọfitiwia, ni pataki idinku akoko ati idiyele ti idanwo interoperability ninu laabu laisi nilo ohun elo gbowolori.

Nipa lilo P4, awọn olutaja ohun elo nẹtiwọọki le nireti ihuwasi ipa ọna ti o wọpọ kọja gbogbo awọn ọja, gbigba ilotunlo awọn amayederun idanwo, irọrun idagbasoke sọfitiwia iṣakoso, ati nikẹhin aridaju interoperability.

Nitoribẹẹ, P4 le ṣee lo lati kọ awọn eto ti o ṣapejuwe awọn ọna ipa-ọna tuntun patapata. Fun apẹẹrẹ, P4 jẹ lilo pupọ fun telemetry ati awọn wiwọn ni awọn ile-iṣẹ data, ile-iṣẹ ati awọn nẹtiwọọki olupese iṣẹ.

Agbegbe iwadi tun ti gbe soke. Ọpọlọpọ awọn ẹgbẹ iwadii Nẹtiwọọki ti ile-ẹkọ giga ti ṣe atẹjade awọn ohun elo tuntun moriwu ti o da lori awọn eto P4, pẹlu iwọntunwọnsi fifuye, awọn ilana adehun, ati fifipamọ iye bọtini. Ilana siseto tuntun ti wa ni ipilẹṣẹ, ĭdàsĭlẹ ti wa ni gbigbe lati hardware si software, gbigba ọpọlọpọ awọn airotẹlẹ, titun ati awọn imọran imọran lati farahan.

Agbegbe Olùgbéejáde ti ṣe awọn ifunni pataki si idagbasoke koodu, pẹlu awọn akopọ, awọn opo gigun ti epo, awọn awoṣe ihuwasi, APIs, awọn ilana idanwo, awọn ohun elo, ati diẹ sii. Awọn ile-iṣẹ bii Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, ati ZTE ni awọn olupilẹṣẹ igbẹhin; lati awọn ile-ẹkọ giga pẹlu BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, ati USI; ati awọn iṣẹ orisun ṣiṣi pẹlu CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ati Stratum ṣe afihan otitọ pe P4 jẹ iṣẹ akanṣe agbegbe ominira.

Iran aṣoju ti awọn oludari fun ede P4:

Ede siseto P4

Ohun elo asesewa

Ede siseto P4
Niwọn bi a ti pinnu ede fun awọn ohun elo ipa-ọna, atokọ awọn ibeere ati awọn aṣayan apẹrẹ yatọ si akawe si awọn ede siseto gbogboogbo. Awọn ẹya akọkọ ti ede naa ni:

  1. Ominira lati imuse afojusun;
  2. Ominira ti ilana (s) ti a lo;
  3. Atunto aaye.

Ominira lati imuse afojusun

Awọn eto P4 jẹ apẹrẹ lati jẹ imuse ominira, afipamo pe wọn le ṣe akopọ fun ọpọlọpọ awọn oriṣi awọn ẹrọ ipaniyan, gẹgẹ bi awọn olutọpa idi gbogbogbo, FPGA, awọn eto-lori-awọn eerun, awọn olutọpa nẹtiwọọki, ati awọn ASICs. Awọn iru ẹrọ oriṣiriṣi wọnyi ni a mọ bi awọn ibi-afẹde P4, ati pe ibi-afẹde kọọkan nilo alakojọ lati yi koodu orisun P4 pada si awoṣe iyipada ibi-afẹde. Awọn alakojo le ti wa ni itumọ ti sinu awọn afojusun ẹrọ, ita software, tabi paapa a awọsanma iṣẹ. Nitoripe ọpọlọpọ awọn ibi-afẹde atilẹba fun awọn eto P4 jẹ fun iyipada soso ti o rọrun, o wọpọ pupọ lati gbọ ọrọ naa “P4 yipada” botilẹjẹpe “P4 afojusun” jẹ deede diẹ sii.

Ominira ti ilana (awọn) ti a lo

P4 jẹ ominira ilana. Eyi tumọ si pe ede ko ni atilẹyin abinibi fun awọn ilana ti o wọpọ gẹgẹbi IP, Ethernet, TCP, VxLAN tabi MPLS. Dipo, olupilẹṣẹ P4 ṣe apejuwe awọn ọna kika akọsori ati awọn orukọ aaye ti awọn ilana ti o nilo ninu eto naa, eyiti o tumọ ati ṣiṣe nipasẹ eto ti a ṣajọpọ ati ẹrọ ibi-afẹde.

Atunto aaye

Ominira ilana ati awoṣe ede ede ti o gba laaye fun atunto-awọn ibi-afẹde P4 yẹ ki o ni anfani lati yi sisẹ soso lẹhin ti o ti gbe eto naa lọ. Agbara yii ti ni nkan ṣe pẹlu aṣa atọwọdọwọ nipasẹ awọn olutọsọna idi gbogbogbo tabi awọn olutọsọna nẹtiwọọki dipo awọn iyika iṣọpọ iṣẹ ṣiṣe ti o wa titi.

Botilẹjẹpe ko si nkankan ninu ede ti yoo ṣe idiwọ iṣapeye ti iṣẹ ṣiṣe ti awọn ilana ilana kan pato, awọn iṣapeye wọnyi jẹ alaihan si onkọwe ede ati nikẹhin le dinku irọrun ti eto ati awọn ibi-afẹde ati atunto wọn.

Awọn abuda ede wọnyi ni ipilẹṣẹ ni ipilẹṣẹ nipasẹ awọn olupilẹṣẹ rẹ pẹlu idojukọ lori lilo rẹ ni ibigbogbo ni awọn amayederun nẹtiwọọki.

Ede ti wa ni lilo tẹlẹ ni ọpọlọpọ awọn ile-iṣẹ:

1) Awọn ile-iṣẹ data hyperscale;

Ile-iṣẹ Kannada Tencent jẹ ile-iṣẹ idoko-owo ti o tobi julọ ni agbaye ati ọkan ninu awọn ile-iṣẹ olu iṣowo ti o tobi julọ. Awọn oniranlọwọ Tencent, mejeeji ni Ilu China ati ni awọn orilẹ-ede miiran ni ayika agbaye, ṣe amọja ni ọpọlọpọ awọn agbegbe ti iṣowo imọ-ẹrọ giga, pẹlu ọpọlọpọ awọn iṣẹ Intanẹẹti, awọn idagbasoke ni aaye ti oye atọwọda ati ere idaraya itanna.

P4 ati ipa ọna siseto jẹ awọn imọ-ẹrọ ilọsiwaju ti o lo ninu faaji nẹtiwọọki ti ile-iṣẹ naa.

Gẹgẹbi ọkan ninu awọn olupilẹṣẹ, Google ni igberaga lati ṣe akiyesi isọdọmọ iyara ti P4 ni ile-iṣẹ netiwọki ati ni apẹrẹ ayaworan ile-iṣẹ data ni pataki.

2) Awọn ile-iṣẹ iṣowo;

Goldman Sachs lo anfani ti ṣiṣẹ pẹlu agbegbe orisun ṣiṣi ati idagbasoke awọn iṣedede ti o wọpọ ati awọn solusan lati ṣe inudidun awọn amayederun nẹtiwọọki ati pese awọn solusan to dara julọ fun awọn alabara.

3) iṣelọpọ;

Gbogbo ile-iṣẹ nẹtiwọki nẹtiwọọki yoo ni anfani lati ede kan bii P4 ti o ṣalaye ni iyasọtọ ihuwasi fifiranšẹ. Cisco tun gbagbọ ni gbigbe awọn laini ọja rẹ lati lo ede yii.

Awọn Nẹtiwọọki Juniper ti pẹlu P4 ati P4 Runtime ni nọmba awọn ọja, ati pese iraye si eto si ero isise Juniper ti a fi sii ati koodu sọfitiwia rẹ.

Awọn nẹtiwọki Ruijie jẹ alatilẹyin ti o lagbara ti P4 ati awọn anfani ti o mu wa si awọn nẹtiwọọki. Pẹlu P4, ile-iṣẹ le ṣẹda ati firanṣẹ awọn solusan-ni-kilasi ti o dara julọ si ọpọlọpọ awọn alabara.

4) Awọn olupese ibaraẹnisọrọ;

AT&T jẹ olutẹtisi ibẹrẹ ti P4, ọkan ninu akọkọ lati lo P4 lati ṣalaye ihuwasi ti o fẹ lati rii ninu awọn nẹtiwọọki rẹ, ati lati lo awọn ẹrọ fifiranšẹ eto P4 lori nẹtiwọọki rẹ.

Ni Deutsche Telekom, ede naa ni a lo lati ṣe apẹrẹ awọn iṣẹ nẹtiwọọki bọtini gẹgẹbi apakan ti eto Access 4.0.

5) Ile-iṣẹ Semikondokito;

Ede naa jẹ ki Barefoot ṣiṣẹ lati ṣe ilana tuntun kan fun jiṣẹ awọn agbara sọfitiwia lọ si ọkọ ofurufu ipa ọna nẹtiwọki.

Xilinx jẹ ọkan ninu awọn oludasilẹ ti P4.org ati pe o ni ipa ninu idagbasoke ti ede P4 o si ṣe imuse rẹ sinu awọn iru ẹrọ ti o da lori FPGA fun SmartNIC ati ohun elo NFV, ti o tu ọkan ninu awọn olupilẹṣẹ P416 akọkọ gẹgẹbi apakan ti apẹrẹ SDNet.

6) Software.

VMware gbagbọ pe P4 ṣẹda agbara nla, ĭdàsĭlẹ ati agbegbe ti o n ṣe awakọ itumọ ati iyipada pataki ninu nẹtiwọki. VMware ti jẹ apakan ti iṣipopada ile-iṣẹ yii lati ibẹrẹ, bi igbi tuntun ti ĭdàsĭlẹ ti wa ni idari nipasẹ awọn ọna ti o da lori sọfitiwia ti o fa awọn agbara amayederun ati imuse ni awọn ọja tuntun.

Nitorinaa, P4 jẹ olominira ibi-afẹde ati ede siseto ominira-ila-ilana ti o jẹ lilo nipasẹ ile-iṣẹ ati ile-ẹkọ giga lati ṣalaye ni iyasọtọ ihuwasi ipa-ọna soso gẹgẹbi eto kan, eyiti o le ṣe akopọ fun awọn ibi-afẹde pupọ. Loni, awọn ibi-afẹde pẹlu hardware ati awọn iyipada sọfitiwia, awọn iyipada hypervisor, NPUs, GPUs, FPGAs, SmartNICs ati ASICs.

Awọn ẹya akọkọ ti ede ni pataki faagun ipari ti ohun elo rẹ ati rii daju imuse iyara rẹ ni awọn faaji nẹtiwọọki.

Ibi ti lati bẹrẹ

P4 jẹ iṣẹ akanṣe ṣiṣi, gbogbo alaye ti o yẹ wa lori oju opo wẹẹbu P4.org

ọna asopọ ibi ipamọ https://github.com/p4lang, nibi ti o ti le gba apẹẹrẹ koodu orisun ati awọn olukọni.

Pulọọgi ninu fun Eclipse pẹlu atilẹyin P4, ṣugbọn a le ṣeduro P4 Studio lati igboro ẹsẹ.

Ede siseto P4

Jẹ ki a wo awọn abstraction akọkọ ti ekuro:

Awọn akọle asọye - pẹlu iranlọwọ wọn, awọn akọle ilana ti pinnu.

Itumọ akọsori ni pato:

  • apejuwe awọn ọna kika apo ati awọn orukọ aaye akọsori
  • ti o wa titi ati ki o ayípadà laaye oko

Fun apẹẹrẹ

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

Awọn olutọpa - iṣẹ-ṣiṣe wọn ni lati ṣagbeye awọn akọle.

Apeere parser atẹle yoo pinnu iyipada ti ipo ikẹhin ti ẹrọ lati ipo ibẹrẹ kan si ọkan ninu awọn ipinlẹ ipari meji:

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

Awọn tabili - ni awọn ipinlẹ ẹrọ ti o so awọn bọtini olumulo pọ pẹlu awọn iṣe. Яействия - apejuwe bi o ṣe yẹ ki a lo package naa.

Awọn tabili ni awọn ipinlẹ (ti a ṣalaye ni ipele iṣakoso) fun fifiranšẹ siwaju soso, ṣapejuwe ẹyọ-Iṣe-iṣere.

Awọn idii jẹ ibamu nipasẹ:

  • Ibamu gangan
  • Ibamu Ipele ti o gunjulo (LPM)
  • Ibadọgba mẹtta (fiboju)

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

Gbogbo awọn iṣe ti o ṣeeṣe gbọdọ wa ni asọye ni awọn tabili ni ilosiwaju.

Awọn iṣe ni koodu ati data. Data naa wa lati ipele iṣakoso (fun apẹẹrẹ awọn adirẹsi IP/awọn nọmba ibudo). Ni pato, awọn alakoko ti ko ni lupu le jẹ pato taara ninu iṣe, ṣugbọn nọmba awọn ilana gbọdọ jẹ asọtẹlẹ. Nitorinaa, awọn iṣe ko le ni eyikeyi awọn yipo tabi awọn alaye ipo ninu.

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

Baramu-Action modulu - awọn iṣe lati ṣẹda bọtini wiwa, wa ninu tabili kan, ṣe awọn iṣe.

Apeere aṣoju ti module kan han ninu eeya:

Ede siseto P4

Ṣiṣan iṣakoso - tọkasi awọn ibere ninu eyi ti baramu-Action modulu ti wa ni lilo. Eyi jẹ eto pataki kan ti o ṣalaye ọgbọn ipele giga ati ilana-iṣe-iṣere. Ṣiṣan iṣakoso n ṣopọ gbogbo awọn nkan nipa asọye ipele ti iṣakoso.

Awọn nkan ita jẹ awọn ohun kan pato pẹlu faaji ti a ti ṣalaye kedere ati awọn atọkun API. Fun apẹẹrẹ, iṣiro checksum, awọn iforukọsilẹ, awọn iṣiro, awọn oniṣiro, ati bẹbẹ lọ.

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 - awọn ẹya data ti o ni nkan ṣe pẹlu package kọọkan.

Awọn oriṣi meji ti metadata wa:

  Metadata ti aṣa (igbekalẹ ṣofo fun gbogbo awọn idii)
    O le fi ohunkohun ti o fẹ nibi
    Wa jakejado opo gigun ti epo
    rọrun fun lilo fun awọn idi tirẹ, fun apẹẹrẹ, fun titoju hash package kan

  Awọn metadata inu - ti a pese nipasẹ faaji
    Ibudo titẹ sii, ibudo ti njade ni asọye nibi
    Timestamp nigbati awọn soso ti a ti isinyi, isinyi ijinle
    multicast elile / multicast isinyi
    Ni ayo package, pataki package
    Sipesifikesonu ibudo ti njade (fun apẹẹrẹ isinyi jade)

P4 alakojo

Olupilẹṣẹ P4 (P4C) n ṣe ipilẹṣẹ:

  1. Data ofurufu asiko isise
  2. API fun iṣakoso ipo ẹrọ ni ọkọ ofurufu data

Ede siseto P4

Apẹẹrẹ ti sọfitiwia yipada ni ede P4

Awọn koodu orisun le ṣe igbasilẹ lati ibi ipamọ.

p4lang/p4c-bm: ṣẹda JSON iṣeto ni fun bmv2
p4lang/bmv2: sọfitiwia yipada ti o loye awọn atunto ẹya bmv2 JSON

Nọmba naa fihan aworan akojọpọ iṣẹ akanṣe:

Ede siseto P4

Awọn ifọwọyi pẹlu awọn tabili, awọn iforukọsilẹ kika, awọn iṣiro:

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


Koodu orisun naa ni eto simple_switch_CLI fun irọrun lilo API sọfitiwia naa.

O le ṣe igbasilẹ eyi ati awọn apẹẹrẹ miiran lati ibi ipamọ.

Ede siseto P4

PS Ni kutukutu igba ooru yii, Intel fowo si adehun kan lati gba Awọn Nẹtiwọọki bata ẹsẹ ni igbiyanju lati yara pade awọn iwulo ti awọn olumulo Hyperscale Cloud. Gẹgẹbi Navin Shenoy (igbakeji alaṣẹ ati oludari gbogbogbo ti Ẹgbẹ Ile-iṣẹ Data ni Intel Corporation) sọ, eyi yoo gba Intel laaye lati pese awọn iṣẹ ṣiṣe ti o tobi ati awọn aye diẹ sii fun awọn alabara ile-iṣẹ data.

Ninu ero ti ara ẹni, a ko gbọdọ gbagbe pe Intel jẹ oludari ni iṣelọpọ ti awọn eerun FPGA ati pe o ni agbegbe Quartus ti o dara julọ. Eyi tumọ si pe a le nireti pe pẹlu dide ti Intel, Barefoot kii yoo faagun laini ọja rẹ nikan, ṣugbọn Quartus ati P4 Studio yoo gba awọn imudojuiwọn to ṣe pataki ati awọn afikun si laini Toffino ati Toffino 2.

Ọmọ ẹgbẹ osise ti agbegbe P4 - ile-iṣẹ Ẹgbẹ ifosiwewe.

orisun: www.habr.com

Fi ọrọìwòye kun