basa pemrograman P4

basa pemrograman P4
P4 minangka basa pamrograman sing dirancang kanggo ngatur aturan rute paket. Ora kaya basa tujuan umum kayata C utawa Python, P4 minangka basa khusus domain kanthi sawetara desain sing dioptimalake kanggo nuntun jaringan.

P4 minangka basa open source sing dilisensi lan dikelola dening organisasi nirlaba sing diarani P4 Language Consortium. Iki uga didhukung dening Open Networking Foundation (ONF) lan Linux Foundation (LF), loro organisasi payung paling gedhe kanggo proyek jaringan open source.
Basa kasebut wiwitane diciptakake ing 2013 lan diterangake ing kertas SIGCOMM CCR 2014 kanthi judhul "Protocol Independent, Packet Routing Processor Programming."

Wiwit diwiwiti, P4 wis berkembang lan berkembang kanthi cepet, kanthi cepet dadi standar kanggo njlentrehake transmisi paket dening piranti jaringan, kalebu adaptor jaringan, switch, lan router.

"SDN wis ngowahi industri jaringan, lan P4 njupuk SDN menyang tingkat sabanjure kanthi nggawa programmabilitas kanggo nuntun," ujare Guru Parulkar, direktur eksekutif Open Networking Foundation.

Basa P4 wiwitane digawe dening klompok insinyur lan peneliti saka Google, Intel, Microsoft Research, Barefoot, Princeton lan Stanford. Tujuane gampang: nggawe basa sing gampang digunakake sing bisa disinaoni dening pangembang piranti lunak sajrone sedina lan digunakake kanggo njlèntrèhaké kanthi akurat cara paket dikirim ing jaringan.

Wiwit wiwitan, P4 dirancang kanggo dadi target independen (yaiku program sing ditulis ing P4 bisa dikompilasi ora diganti supaya bisa digunakake ing macem-macem target kayata ASIC, FPGA, CPU, NPU, lan GPU).

Basa kasebut uga minangka protokol independen (yaiku, program P4 bisa njlèntrèhaké protokol standar sing wis ana utawa digunakake kanggo nemtokake mode alamat khusus anyar).

Ing industri, P4 digunakake kanggo program piranti. Mungkin ing mangsa ngarep standar Internet-RFC lan IEEE uga bakal kalebu spesifikasi P4.

P4 bisa digunakake kanggo piranti fungsi sing bisa diprogram lan tetep. Contone, digunakake kanggo ngrekam prilaku pipa switch kanthi akurat ing API Switch Abstraction Interface (SAI) sing digunakake dening open source SONiC switch OS. P4 uga digunakake ing proyek ONF Stratum kanggo njlèntrèhaké prilaku ngoper ing macem-macem piranti tetep lan programmable.

Kanggo pisanan, njlèntrèhaké prilaku switch lan adaptor jaringan ngijini sampeyan kanggo nggawe model eksekusi akurat saka kabeh jaringan sadurunge panyebaran. Panyedhiya awan gedhe bisa nyoba lan debug jaringan kanthi nggunakake piranti lunak, kanthi nyata nyuda wektu lan biaya tes interoperabilitas ing lab tanpa mbutuhake hardware sing larang.

Kanthi nggunakake P4, vendor peralatan jaringan bisa nyana prilaku nuntun ndasari umum ing kabeh produk, ngijini maneh saka prasarana test, simplifying pembangunan piranti lunak manajemen, lan wekasanipun njamin interoperabilitas.

Mesthi, P4 bisa digunakake kanggo nulis program sing njlèntrèhaké cara anyar nuntun. Contone, P4 akeh digunakake kanggo telemetri lan pangukuran ing pusat data, perusahaan lan jaringan panyedhiya layanan.

Komunitas riset uga mundhak. Sawetara klompok riset jaringan akademik sing misuwur wis nerbitake aplikasi anyar sing nyenengake adhedhasar program P4, kalebu keseimbangan beban, protokol konsensus, lan cache nilai kunci. Paradigma pemrograman anyar lagi digawe, inovasi pindhah saka hardware menyang piranti lunak, ngidini akeh gagasan anyar sing ora dikarepke, anyar lan akale muncul.

Komunitas pangembang wis menehi kontribusi sing signifikan kanggo pangembangan kode, kalebu kompiler, saluran pipa, model prilaku, API, kerangka uji coba, aplikasi, lan liya-liyane. Perusahaan kayata Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, lan ZTE duwe pangembang khusus; saka universitas kalebu BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, lan USI; lan proyek open source kalebu CORD, FD.io, OpenDaylight, ONOS, OvS, SAI lan Stratum nyorot kasunyatan manawa P4 minangka proyek komunitas independen.

Generasi pengontrol umum kanggo basa P4:

basa pemrograman P4

Prospek aplikasi

basa pemrograman P4
Amarga basa kasebut ditrapake kanggo aplikasi rute, dhaptar syarat lan pilihan desain beda dibandhingake karo basa pamrograman tujuan umum. Fitur utama basa yaiku:

  1. Kamardikan saka implementasi target;
  2. Kamardikan saka protokol sing digunakake;
  3. Konfigurasi ulang lapangan.

Kamardikan saka implementasine target

Program P4 dirancang kanggo implementasine independen, tegese bisa dikompilasi kanggo macem-macem jinis mesin eksekusi, kayata pemroses tujuan umum, FPGA, sistem-on-chip, prosesor jaringan, lan ASIC. Iki macem-macem jinis mesin dikenal minangka target P4, lan saben target mbutuhake compiler kanggo ngowahi kode sumber P4 menyang model ngalih target. Compiler bisa dibangun ing piranti target, piranti lunak eksternal, utawa malah layanan maya. Amarga akeh target asli kanggo program P4 yaiku kanggo ngoper paket sing prasaja, umume krungu istilah "ngalih P4" sanajan "target P4" luwih akurat.

Kamardikan saka protokol (s) digunakake

P4 minangka protokol independen. Iki tegese basa kasebut ora duwe dhukungan asli kanggo protokol umum kayata IP, Ethernet, TCP, VxLAN utawa MPLS. Nanging, programmer P4 njlèntrèhaké format header lan jeneng lapangan saka protokol sing dibutuhake ing program kasebut, sing banjur diinterpretasikake lan diproses dening program sing disusun lan piranti target.

Konfigurasi ulang lapangan

Kamardikan protokol lan model basa abstrak ngidini kanggo reconfigurability-target P4 kudu bisa ngganti Processing paket sawise sistem iki disebarake. Kapabilitas iki biasane digandhengake karo nuntun liwat pemroses umum utawa pemroses jaringan tinimbang sirkuit terpadu kanthi fungsi tetep.

Sanajan ora ana apa-apa ing basa sing bakal nyegah optimasi kinerja protokol tartamtu, optimasi kasebut ora katon kanggo penulis basa lan pungkasane bisa nyuda keluwesan sistem lan tujuane lan bisa dikonfigurasi ulang.

Ciri-ciri basa kasebut wiwitane ditata dening pangripta kanthi fokus marang panggunaan sing nyebar ing infrastruktur jaringan.

Basa kasebut wis digunakake ing pirang-pirang perusahaan:

1) Pusat data hiperskala;

Perusahaan China Tencent minangka perusahaan investasi paling gedhe ing donya lan salah sawijining perusahaan modal ventura paling gedhe. Anak perusahaan Tencent, ing China lan ing negara liya ing saindenging jagad, khusus ing macem-macem bidang bisnis teknologi tinggi, kalebu macem-macem layanan Internet, pangembangan ing bidang intelijen buatan lan hiburan elektronik.

P4 lan nuntun sing bisa diprogram minangka teknologi canggih sing digunakake ing arsitektur jaringan perusahaan.

Minangka salah sawijining pemula, Google bangga nyathet adopsi P4 kanthi cepet ing industri jaringan lan khususe ing desain arsitektur pusat data.

2) Perusahaan komersial;

Goldman Sachs njupuk kauntungan saka nggarap komunitas open source lan ngembangake standar lan solusi umum kanggo nginovasi infrastruktur jaringan lan menehi solusi sing luwih apik kanggo klien.

3) Produksi;

Industri jaringan kabeh bakal entuk manfaat saka basa kaya P4 sing nemtokake prilaku penerusan kanthi unik. Cisco uga pracaya ing transfer baris produk kanggo nggunakake basa iki.

Juniper Networks wis klebu P4 lan P4 Runtime ing sawetara produk, lan menehi akses programmatic kanggo Juniper ditempelake prosesor lan kode lunak.

Ruijie Networks minangka panyengkuyung kuat P4 lan keuntungan sing digawa menyang jaringan. Kanthi P4, perusahaan bisa nggawe lan ngirim solusi paling apik ing kelas kanggo macem-macem pelanggan.

4) Panyedhiya telekomunikasi;

AT&T minangka pangguna awal P4, salah siji sing pisanan nggunakake P4 kanggo nemtokake prilaku sing pengin dideleng ing jaringan, lan nggunakake piranti sing bisa diprogram P4 ing jaringan.

Ing Deutsche Telekom, basa iki digunakake kanggo prototipe fungsi jaringan kunci minangka bagéan saka program Access 4.0.

5) Industri semikonduktor;

Basa kasebut ngidini Barefoot ngleksanakake paradigma anyar kanggo ngirim kemampuan piranti lunak menyang bidang nuntun jaringan.

Xilinx minangka salah sawijining pendiri P4.org lan melu aktif ing pangembangan basa P4 lan dileksanakake ing platform programmable basis FPGA kanggo hardware SmartNIC lan NFV, ngeculake salah siji kompiler P416 pisanan minangka bagéan saka desain SDNet.

6) Piranti lunak.

VMware percaya yen P4 nggawe energi, inovasi lan komunitas sing luar biasa sing nyopir transformasi sing migunani lan perlu ing jaringan kasebut. VMware wis dadi bagian saka gerakan industri iki wiwit wiwitan, amarga gelombang inovasi anyar didorong dening pendekatan basis piranti lunak sing ngluwihi kemampuan infrastruktur lan ngetrapake ing produk paling anyar.

Mangkono, P4 minangka basa pamrograman target-independen lan protokol-independen sing digunakake dening industri lan akademisi kanggo nemtokake prilaku rute paket kanthi unik minangka program, sing bisa dikompilasi kanggo macem-macem target. Saiki, target kalebu switch hardware lan software, switch hypervisor, NPU, GPU, FPGA, SmartNIC lan ASIC.

Fitur utama basa kasebut kanthi signifikan nggedhekake ruang lingkup aplikasi lan njamin implementasine kanthi cepet ing arsitektur jaringan.

Miwiti

P4 minangka proyek sing mbukak, kabeh informasi sing relevan ana ing situs web P4.org

Link gudang https://github.com/p4lang, ngendi sampeyan bisa njaluk conto kode sumber lan tutorial.

Plugin kanggo Eclipse karo support P4, nanging kita bisa menehi rekomendasi Studio P4 Kab saka Barefoot.

basa pemrograman P4

Ayo ndeleng abstraksi utama kernel:

Nemtokake Header - kanthi bantuan, header protokol ditemtokake.

Definisi header nemtokake:

  • deskripsi format paket lan jeneng kolom header
  • lapangan tetep lan variabel diijini

Contone

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

Parser - tugase kanggo ngurai judhul.

Conto parser ing ngisor iki bakal nemtokake transisi kahanan pungkasan mesin saka siji negara wiwitan menyang salah siji saka rong negara pungkasan:

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

Tabel - ngemot negara mesin sing ngubungake tombol pangguna karo tumindak. Tindakan - gambaran carane paket kudu diapusi.

Tabel kasebut ngemot status (ditetepake ing tingkat manajemen) kanggo nerusake paket, njlèntrèhaké unit Match-Action.

Paket dicocogake dening:

  • Pertandhingan sing tepat
  • Cocokake Awalan Paling Lama (LPM)
  • Triple matching (masking)

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

Kabeh tumindak sing bisa ditindakake kudu ditetepake ing tabel sadurunge.

Tumindak kalebu kode lan data. Data kasebut asale saka tingkat manajemen (contone, alamat IP/nomer port). Primitif tartamtu, bebas loop bisa ditemtokake langsung ing tumindak, nanging jumlah instruksi kudu bisa diprediksi. Mulane, tumindak ora bisa ngemot puteran utawa statement kondisional.

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

Modul Cocokake-Tindakan - tumindak kanggo nggawe kunci telusuran, telusuran ing tabel, nindakake tumindak.

Conto khas modul ditampilake ing gambar:

basa pemrograman P4

Kontrol aliran — nuduhake urutan modul Cocokake-Tindakan digunakake. Iki minangka program imperatif sing nemtokake logika tingkat dhuwur lan urutan Match-Action. Aliran kontrol nyambungake kabeh obyek kanthi nemtokake tingkat kontrol.

Objek njaba iku obyek tartamtu karo arsitektur ditetepake cetha lan antarmuka API. Contone, pitungan checksum, register, 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 - struktur data sing digandhengake karo saben paket.

Ana 2 jinis metadata:

  Metadata khusus (struktur kosong kanggo kabeh paket)
    Sampeyan bisa nyelehake apa wae sing dikarepake ing kene
    Kasedhiya ing saindhenging pipa
    trep kanggo digunakake kanggo tujuan sampeyan dhewe, contone, kanggo nyimpen hash paket

  Metadata internal - diwenehake dening arsitektur
    Port input, port output ditetepake ing kene
    Timestamp nalika paket wis antri, ambane antrian
    multicast hash / antrian multicast
    Paket prioritas, paket penting
    Spesifikasi port output (contone, antrian output)

P4 kompiler

Compiler P4 (P4C) ngasilake:

  1. Runtime bidang data
  2. API kanggo ngatur negara mesin ing bidang data

basa pemrograman P4

Conto ngalih piranti lunak ing basa P4

Kode sumber bisa diundhuh saka gudang.

p4lang/p4c-bm: nggawe konfigurasi JSON kanggo bmv2
p4lang / bmv2: switch piranti lunak sing ngerti konfigurasi JSON versi bmv2

Gambar kasebut nuduhake diagram kompilasi proyek:

basa pemrograman P4

Manipulasi karo tabel, register maca, counter:

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


Kode sumber ngemot program simple_switch_CLI kanggo nggunakake API ngalih piranti lunak.

Sampeyan bisa ndownload iki lan conto liyane saka repositori.

basa pemrograman P4

PS Awal musim panas iki, Intel mlebu persetujuan kanggo ndarbeni Barefoot Networks minangka upaya kanggo nyukupi kabutuhan pangguna Cloud Hyperscale kanthi cepet. Minangka Navin Shenoy (wakil presiden eksekutif lan general manager saka Data Center Group ing Intel Corporation) ngandika, iki bakal ngidini Intel kanggo nyedhiyani beban kerja sing luwih gedhe lan luwih akeh kesempatan kanggo pelanggan pusat data.

Ing mratelakake panemume pribadi, kita kudu ora lali yen Intel minangka pimpinan ing produksi Kripik FPGA lan nduweni lingkungan Quartus sing apik banget. Iki tegese kita bisa nyana yen karo rawuh saka Intel, Barefoot ora mung nggedhekake baris produk, nanging uga Quartus lan P4 Studio bakal nampa nganyari serius lan tambahan kanggo Toffino lan Toffino 2 baris.

Anggota resmi komunitas P4 - perusahaan Kelompok faktor.

Source: www.habr.com

Add a comment