L'azienda Intel ha aperto un toolkit che consente di creare applicazioni personalizzate per l'elaborazione dei pacchetti negli switch Ethernet programmabili della serie Tofino. Sotto licenza Apache 2.0, è stato pubblicato il codice sorgente del backend per il compilatore p4c e dei componenti dell'ambiente di sviluppo Intel P4 Studio, come driver, modello di simulazione dello switch, server e client per il protocollo BF Runtime. Per la creazione di applicazioni viene utilizzato il linguaggio di programmazione orientato agli oggetti P4 (Programming Protocol-independent Packet Processors), progettato per definire la logica di elaborazione dei pacchetti nei dispositivi di rete, come schede di rete, switch, router e firewall.
Il backend pubblicato consente di tradurre i programmi in linguaggio P4 in una rappresentazione adatta per l'installazione sugli switch della serie Intel Tofino. Grazie a questo, gli utenti degli switch possono creare applicazioni che estendono la funzionalità di base, modificano la logica operativa o adattano il dispositivo alle specifiche delle proprie reti.
I programmi in linguaggio P4 vengono compilati in rappresentazioni per piattaforme target, che possono essere sia hardware (FPGA, ASIC programmabili) sia software (x86, BPF). Insieme al codice per l'installazione sui sistemi target, il compilatore genera il runtime per gestire l'applicazione utilizzando i protocolli Protobuf/gRPC e l'API P4Runtime.
La logica di base del funzionamento dei programmi consiste nella classificazione dei pacchetti in base alle loro intestazioni ed esecuzione di azioni sui pacchetti in ingresso, come reindirizzamento, scarto, modifica del TTL e sostituzione di campi. Il linguaggio non è vincolato ai protocolli di rete e, invece di supportare nativamente protocolli standard come IP, Ethernet, TCP e VxLAN, offre agli sviluppatori la possibilità di definire qualsiasi protocollo in relazione alle applicazioni compilabili (lo sviluppatore allega la descrizione dei formati delle intestazioni e dei campi del protocollo).

Oltre al backend pubblicato per gli switch Intel Tofino, il progetto P4 fornisce un backend per la compilazione delle applicazioni P4 in codice C, che può poi essere compilato in un formato adatto per l'esecuzione. macchina virtuale eBPF all'interno del kernel Linux. Il progetto sviluppa anche un simulatore di switch open-source, che può essere utilizzato per esperimenti in una rete virtuale Mininet, e un backend per la compilazione di programmi P4 per il simulatore.
Fonte: opennet.ru
