Intel on avanud tööriistakomplekti, mis võimaldab luua oma rakendusi pakettide töötlemiseks programmeeritavates Ethernet-lülitites seerias Tofino. Apache 2.0 litsentsi all on avatud koodi tagumine osa P4C kompilaatorile ja Intel P4 Studio arenduskeskkonna komponentide, näiteks draiverite, lüliti simulatsiooni mudeli, BF Runtime protokolli serveri ja kliendi jaoks. Rakenduste loomisel kasutatakse domeenispetsiifilist programmeerimiskeelt P4 (Programming Protocol-independent Packet Processors), mis on mõeldud pakettide töötlemise loogika määratlemiseks võrguseadmetes, nagu võrgukaardid, lülitid, marsruuterid ja tulemüürid.
Avaldatud tagumine osa võimaldab P4 keeles kirjutatud programme konverteerida esituseks, mis on sobiv Intel Tofino seeria lülititele. Tänu sellele saavad lülitite kasutajad luua rakendusi, mis laiendavad vahelduvaid funktsioone, muudavad tööloogikat või kohandavad seadet oma võrkude spetsiifikale.
P4 keeles kirjutatud programmid kompileeritakse sihtplatvormide esitusteks, mis võivad olla nii riistvaraliselt (FPGA, programmeeritavad ASIC) kui ka tarkvaraliselt (x86, BPF). Koos sihtsüsteemidele installimiseks mõeldud koodiga genereerib kompilaator rakenduse haldamiseks talletuse protokollidele Protobuf/gRPC ja P4Runtime API.
Programmi tüüpiline tööloogika seisneb pakettide klassifitseerimises nende peade põhjal ning sisenevatele pakettidele toimingute, nagu suunamine, tagasilükkamine, TTL muutmine ja väljade asendamine, tegemises. Keel ei ole seotud võrguprotokollidega ning sisse ehitatud toetuse asemel tüüpilistele protokollidele, nagu IP, Ethernet, TCP ja VxLAN, annab arendajatele võimaluse määratleda igasuguseid protokolle kompileeritavate rakenduste kontekstis (arendaja lisab peaformaatide ja protokolliväljade kirjeldused).

Lisaks Intel Tofino lülitite jaoks avaldatud tagumisele osale pakub P4 projekt tagumist osa P4 rakenduste kompileerimiseks C keeles, mida saab seejärel kompileerida vormingusse, mis on sobivaks käitamiseks virtuaalses masinas eBPF Linuxi tuumas. Projekt arendab ka avatud lüliti simulaatorit, mida saab kasutada katsetamiseks virtuaalses võrgus Mininet, ning tagumist osa P4 programmide kompileerimiseks simulaatorile.
Allikas: opennet.ru
