Intel har åbnet værktøjet, der gør det muligt at skabe brugerdefinerede applikationer til pakkehåndtering i de programmerbare Ethernet-switscher Tofino-serien. Under Apache 2.0-licensen er koden til backend'en til kompilatoren p4c samt komponenter fra udviklingsmiljøet Intel P4 Studio blevet gjort tilgængelig, herunder drivere, simuleringsmodellen for switchet, server og klient til BF Runtime-protokollen. For at skabe applikationer anvendes det domæne-specifikke programmeringssprog P4 (Programming Protocol-independent Packet Processors), som er beregnet til at definere logikken for pakkehåndtering i netværksenheder som netværkskort, switche, routere og firewalls.
Den offentliggjorte backend muliggør oversættelse af programmer skrevet i P4 til repræsentationer, der kan installeres på switche i Intel Tofino-serien. Dette gør det muligt for brugerne af switche at skabe applikationer, der udvider standardfunktionen, ændrer logikken for drift eller tilpasser enheden til de specifikke krav i deres netværk.
Programmer skrevet i P4 kompileres til repræsentationer for målplatforme, som kan være både hardwarebaserede (FPGA, programmerbare ASIC'er) og softwarebaserede (x86, BPF). Sammen med koden til installation på de målrettede systemer genererer kompilatoren runtime til at styre applikationen ved hjælp af Protobuf/gRPC-protokoller og P4Runtime API.
Den typiske logik i programmerne omfatter klassifikation af pakker baseret på deres overskrifter og udførelse af handlinger på indkommende pakker, såsom omdirigering, kassering, ændring af TTL og erstatning af felter. Sproget er ikke bundet til netværksprotokoller og giver udviklere mulighed for at definere enhver protokol i relation til de kompilrede applikationer (udvikleren knytter en beskrivelse af formaterne for overskrifter og protokollens felter).

Udover den offentliggjorte backend til switche fra Intel Tofino tilbyder P4-projektet også en backend til kompilering af P4-applikationer til kode skrevet i C, som derefter kan kompilere til et format, der er egnet til udførelse i virtuelle maskiner eBPF i Linux-kernen. Projektet udvikler også en åben simulator til switch, som kan bruges til at udføre eksperimenter i det virtuelle netværk Mininet, samt en backend til kompilering af P4-programmer til simulatoren.
Kilde: opennet.ru
