basa programming P4

basa programming P4
P4 mangrupikeun basa pamrograman anu dirancang pikeun ngaprogram aturan rute pakét. Beda sareng basa tujuan umum sapertos C atanapi Python, P4 mangrupikeun basa khusus domain sareng sababaraha desain anu dioptimalkeun pikeun rute jaringan.

P4 mangrupikeun basa open source anu dilisensikeun sareng dijaga ku organisasi nirlaba anu disebut P4 Language Consortium. Éta ogé dirojong ku Open Networking Foundation (ONF) sareng Linux Foundation (LF), dua organisasi payung panggedéna pikeun proyék jaringan open source.
Basa ieu mimitina diciptakeun dina 2013 sareng dijelaskeun dina kertas SIGCOMM CCR 2014 anu judulna "Protocol Independent, Packet Routing Processor Programming."

Saprak mimitina, P4 geus tumuwuh sarta mekar sacara éksponénsial, gancang jadi standar pikeun ngajéntrékeun pangiriman pakét ku alat jaringan, kaasup adapters jaringan, switch, jeung routers.

"SDN geus robah industri jaringan, sarta P4 nyandak SDN ka tingkat salajengna ku bringing programmability mun routing," ceuk Guru Parulkar, diréktur eksekutif tina Open Networking Foundation.

Basa P4 asalna dijieun ku grup insinyur sarta peneliti ti Google, Intel, Microsoft Research, Barefoot, Princeton jeung Stanford. Tujuanana basajan: nyiptakeun basa anu gampang dianggo anu tiasa diajar ku pamekar software dina sadinten sareng dianggo pikeun ngajelaskeun sacara akurat kumaha pakét dikirim ka jaringan.

Ti mimiti pisan, P4 dirancang pikeun jadi target bebas (ie program ditulis dina P4 bisa disusun unchanged pikeun ngajalankeun dina rupa-rupa target kayaning ASICs, FPGAs, CPUs, NPUs, sarta GPUs).

Basana ogé bebas protokol (nyaéta, program P4 tiasa ngajelaskeun protokol standar anu tos aya atanapi dianggo pikeun nangtukeun modeu alamat khusus).

Dina industri, P4 dipaké pikeun programming alat. Panginten dina standar Internet-RFC sareng IEEE ogé bakal kalebet spésifikasi P4.

P4 tiasa dianggo pikeun alat fungsi anu tiasa diprogram sareng tetep. Contona, dipaké pikeun akurat ngarekam paripolah pipa switch dina Switch Abstraction Interface (SAI) API dipaké ku open source SONiC switch OS. P4 ogé dipaké dina proyék ONF Stratum pikeun ngajelaskeun paripolah switching dina rupa-rupa alat tetep sarta programmable.

Pikeun kahiji kalina, ngajéntrékeun paripolah switch jeung jaringan adapters ngidinan Anjeun pikeun nyieun hiji model laksana akurat sakabéh jaringan saméméh deployment. Panyadia awan ageung tiasa nguji sareng nga-debug jaringan sapinuhna nganggo parangkat lunak, sacara signifikan ngirangan waktos sareng biaya tés interoperabilitas di lab tanpa meryogikeun hardware anu mahal.

Ku ngagunakeun P4, nu ngical paralatan jaringan bisa ngaharepkeun kabiasaan routing umum dina sakabéh produk, sahingga pamakéan ulang infrastruktur test, nyederhanakeun ngembangkeun software manajemén, sarta pamustunganana mastikeun interoperability.

Tangtu, P4 bisa dipaké pikeun nulis program nu ngajelaskeun cara lengkep anyar routing. Salaku conto, P4 seueur dianggo pikeun telemétri sareng pangukuran di pusat data, perusahaan sareng jaringan panyadia jasa.

Komunitas panalungtikan ogé geus stepped up. Sababaraha grup panalungtikan jejaring akademik ngarah parantos nyebarkeun aplikasi anyar anu pikaresepeun dumasar kana program P4, kalebet kasaimbangan beban, protokol konsensus, sareng cache nilai konci. Paradigma programming anyar keur dijieun, inovasi geus pindah ti hardware ka software, sahingga loba teu kaduga, gagasan anyar jeung akalna mun muncul.

Komunitas pamekar geus nyieun kontribusi signifikan pikeun ngembangkeun kode, kaasup compiler, pipelines, model behavioral, API, frameworks test, aplikasi, sarta leuwih. Perusahaan sapertos Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, sareng ZTE gaduh pamekar khusus; ti universitas kaasup BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass, jeung USI; sareng proyék open source kalebet CORD, FD.io, OpenDaylight, ONOS, OvS, SAI sareng Stratum nyorot kanyataan yén P4 mangrupikeun proyék komunitas mandiri.

Generasi pangendali umum pikeun basa P4:

basa programming P4

Prospék aplikasi

basa programming P4
Kusabab basa dimaksudkeun pikeun aplikasi routing, daptar syarat sareng pilihan desain béda dibandingkeun sareng basa program tujuan umum. Fitur utama basa nyaéta:

  1. Kamerdikaan tina palaksanaan target;
  2. Kamerdikaan protokol (s) dipaké;
  3. Reconfigurability widang.

Kamerdikaan tina palaksanaan target

Program P4 dirancang pikeun palaksanaan bebas, hartina maranéhna bisa disusun pikeun loba tipena béda mesin palaksanaan, kayaning prosesor tujuan umum, FPGAs, sistem-on-chip, prosesor jaringan, sarta ASICs. Ieu tipena béda mesin katelah target P4, sarta unggal udagan merlukeun compiler pikeun ngarobah kodeu sumber P4 kana model switch target. Kompiler tiasa diwangun kana alat target, parangkat lunak éksternal, atanapi bahkan jasa awan. Kusabab loba target aslina keur program P4 nya éta pikeun packet switching basajan, éta pisan umum uninga istilah "P4 switch" sanajan "target P4" leuwih akurat.

Kamerdikaan protokol (s) dipaké

P4 nyaéta protokol bebas. Ieu ngandung harti yén basa éta henteu gaduh dukungan asli pikeun protokol umum sapertos IP, Ethernet, TCP, VxLAN atanapi MPLS. Gantina, programmer P4 ngajelaskeun format lulugu jeung ngaran widang tina protokol diperlukeun dina program, anu dina gilirannana diinterpretasi sarta diolah ku program disusun jeung alat target.

Reconfigurability widang

Kamerdikaan protokol jeung modél basa abstrak ngamungkinkeun pikeun reconfigurability-target P4 kudu bisa ngarobah processing pakét sanggeus sistem ieu deployed. Kamampuhan ieu sacara tradisional dikaitkeun sareng routing ngaliwatan prosesor tujuan umum atanapi prosesor jaringan tinimbang sirkuit terpadu fungsi tetep.

Sanajan aya nanaon dina basa anu bakal nyegah optimasi kinerja set tinangtu protokol, optimizations ieu halimunan ku pangarang basa sarta pamustunganana bisa ngurangan kalenturan tina sistem jeung tujuan sarta reconfigurability maranéhna.

Karakteristik basa ieu mimitina ditetepkeun ku panyiptana kalayan fokus kana pamakean anu nyebar dina infrastruktur jaringan.

Basa éta parantos dianggo di seueur perusahaan:

1) puseur data hyperscale;

Perusahaan Cina Tencent mangrupikeun perusahaan investasi panggedéna di dunya sareng salah sahiji perusahaan modal usaha panggedéna. Anak perusahaan Tencent, boh di Cina sareng di nagara-nagara sanés di sakumna dunya, ngahususkeun dina sagala rupa daérah bisnis téknologi tinggi, kalebet rupa-rupa jasa Internét, pamekaran dina widang intelijen buatan sareng hiburan éléktronik.

P4 sareng programmable routing mangrupikeun téknologi canggih anu dianggo dina arsitéktur jaringan perusahaan.

Salaku salah sahiji pamula, Google reueus nyatet nyoko gancang P4 dina industri jaringan sareng khususna dina desain arsitéktur pusat data.

2) Pausahaan komérsial;

Goldman Sachs ngamangpaatkeun gawé bareng komunitas open source sarta ngamekarkeun standar umum jeung solusi pikeun innovate infrastruktur jaringan sarta nyadiakeun solusi hadé pikeun klien.

3) Produksi;

Sakabéh industri jaringan bakal nguntungkeun tina basa sapertos P4 anu sacara unik ngahartikeun paripolah neraskeun. Cisco ogé yakin dina mindahkeun garis produk na ngagunakeun basa ieu.

Juniper Jaringan geus kaasup P4 na P4 Runtime dina jumlah produk, jeung nyadiakeun aksés programmatic kana Juniper embedded processor jeung kode software na.

Ruijie Networks mangrupikeun pendukung anu kuat pikeun P4 sareng kauntungan anu aya dina jaringan. Kalayan P4, perusahaan tiasa nyiptakeun sareng nganteurkeun solusi kelas pangsaéna pikeun sajumlah palanggan.

4) Panyadia Télékomunikasi;

AT&T mangrupikeun pangadopsi awal P4, salah sahiji anu pangheulana ngagunakeun P4 pikeun ngartikeun paripolah anu hoyong ditingali dina jaringanna, sareng nganggo alat neraskeun anu tiasa diprogram P4 dina jaringanna.

Di Deutsche Telekom, basa dipaké pikeun prototipe fungsi jaringan konci salaku bagian tina program Access 4.0.

5) Industri semikonduktor;

Basa éta ngamungkinkeun Barefoot pikeun nerapkeun paradigma énggal pikeun nganteurkeun kamampuan parangkat lunak kana pesawat routing jaringan.

Xilinx mangrupikeun salah sahiji pendiri P4.org sareng aktip aub dina pamekaran basa P4 sareng dilaksanakeun kana platform programmable basis FPGA pikeun hardware SmartNIC sareng NFV, ngaluarkeun salah sahiji kompiler P416 munggaran salaku bagian tina desain SDNet.

6) Parangkat lunak.

VMware percaya yén P4 nyiptakeun énergi anu luar biasa, inovasi sareng komunitas anu nyetir transformasi anu penting sareng dipikabutuh dina jaringan. VMware parantos janten bagian tina gerakan industri ieu ti mimiti, sabab gelombang inovasi anyar didorong ku pendekatan berbasis software anu manjangkeun kamampuan infrastruktur sareng ngalaksanakeunana dina produk panganyarna.

Ku kituna, P4 mangrupakeun basa programming target-bebas jeung protokol-bebas anu dipaké ku industri jeung akademisi pikeun uniquely nangtukeun kabiasaan packet routing salaku program, anu dina gilirannana bisa disusun pikeun sababaraha target. Kiwari, target kalebet saklar hardware sareng software, saklar hypervisor, NPU, GPU, FPGA, SmartNIC sareng ASIC.

Fitur utama basa sacara signifikan ngalegaan ruang lingkup aplikasina sareng mastikeun palaksanaan gancangna dina arsitéktur jaringan.

Ngalalanyahan

P4 mangrupikeun proyék kabuka, sadaya inpormasi anu aya dina halaman wéb P4.org

Tumbu gudang https://github.com/p4lang, dimana anjeun tiasa kéngingkeun conto kode sumber sareng tutorial.

Plugin pikeun Eclipse kalayan dukungan P4, tapi urang tiasa nyarankeun Studio P4 ti Barefoot.

basa programming P4

Hayu urang tingali abstraksi utama kernel:

Nangtukeun Headers - kalawan pitulung maranéhanana, headers protokol ditangtukeun.

Definisi lulugu nangtukeun:

  • pedaran format pakét jeung ngaran widang lulugu
  • sawah dibereskeun sarta variabel diwenangkeun

contona

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 - tugas maranéhna pikeun parse headline.

Conto parser di handap ieu bakal nangtukeun transisi kaayaan ahir mesin tina hiji kaayaan awal ka salah sahiji dua nagara bagian ahir:

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

Tables - ngandung kaayaan mesin anu ngaitkeun konci pangguna sareng tindakan. lampah - pedaran kumaha pakét kudu dimanipulasi.

Tabél ngandung kaayaan (ditetepkeun dina tingkat manajemén) pikeun diteruskeun pakét, ngajelaskeun unit Match-Action.

Paket dicocogkeun ku:

  • Cocog persis
  • Cocog Awalan Pangpanjangna (LPM)
  • Triple matching (masking)

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

Sadaya tindakan anu mungkin kedah ditetepkeun dina tabel sateuacanna.

Aksi diwangun ku kode jeung data. Data asalna tina tingkat manajemén (misalna alamat IP/nomer port). Tangtu, primitif bébas loop bisa dieusian langsung dina aksi, tapi jumlah parentah kudu bisa diprediksi. Ku alatan éta, tindakan henteu tiasa ngandung puteran atanapi pernyataan 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 cocok-Aksi - lampah pikeun nyieun konci pilarian, milarian dina tabel, ngalakukeun tindakan.

Hiji conto has modul ditémbongkeun dina gambar:

basa programming P4

Aliran kontrol - nunjukkeun urutan nu modul Cocog-Aksi dipaké. Ieu mangrupikeun program imperatif anu ngahartikeun logika tingkat luhur sareng urutan Match-Action. Aliran kontrol ngahubungkeun sadaya objék ku netepkeun tingkat kontrol.

objék éksternal mangrupakeun objék husus kalawan arsitektur diartikeun jelas tur interfaces API. Contona, itungan checksum, registers, counters, counters, jsb.

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
}

Métadata - struktur data pakait sareng unggal pakét.

Aya 2 jinis metadata:

  Metadata khusus (struktur kosong pikeun sadaya bungkusan)
    Anjeun tiasa nempatkeun naon waé anu anjeun pikahoyong di dieu
    Sadia sapanjang pipa
    merenah pikeun pamakéan pikeun kaperluan sorangan, contona, pikeun nyimpen hiji Hash pakét

  Metadata internal - disadiakeun ku arsitéktur
    Port input, port output diartikeun di dieu
    Timestamp nalika pakét ieu antrian, jero antrian
    multicast Hash / antrian multicast
    Prioritas pakét, pentingna pakét
    spésifikasi port kaluaran (misalna antrian kaluaran)

P4 kompiler

The P4 compiler (P4C) ngahasilkeun:

  1. Runtime pesawat data
  2. API pikeun ngatur kaayaan mesin dina pesawat data

basa programming P4

Conto switch software dina basa P4

Kodeu sumber tiasa diunduh tina gudang.

p4lang / p4c-bm: nyiptakeun konfigurasi JSON pikeun bmv2
p4lang / bmv2: switch software nu understands bmv2 versi JSON konfigurasi

Gambar nunjukkeun diagram kompilasi proyék:

basa programming P4

Manipulasi sareng tabel, register bacaan, konter:

  • 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 ngandung program simple_switch_CLI pikeun pamakéan merenah tina software switch API.

Anjeun tiasa ngaunduh ieu sareng conto sanésna tina gudang.

basa programming P4

PS Awal usum panas ieu, Intel nandatanganan kasapukan pikeun acquire Barefoot Networks dina usaha pikeun gancang minuhan kabutuhan pamaké Hyperscale Cloud. Sakumaha ceuk Navin Shenoy (Wapres eksekutif sareng manajer umum Data Center Group di Intel Corporation), ieu bakal ngamungkinkeun Intel nyayogikeun beban kerja anu langkung ageung sareng langkung seueur kasempetan pikeun palanggan pusat data.

Dina pendapat pribadi kuring, urang teu kedah hilap yén Intel mangrupikeun pamimpin dina produksi chip FPGA sareng gaduh lingkungan Quartus anu saé. Ieu ngandung harti yén urang bisa ngaharepkeun yén kalawan datangna Intel, Barefoot moal ukur dilegakeun garis produk na, tapi ogé Quartus na P4 Studio bakal nampa apdet serius tur tambahan kana Toffino na Toffino 2 garis.

anggota resmi masarakat P4 - pausahaan Grup faktor.

sumber: www.habr.com

Tambahkeun komentar