A Intel abriu uma ferramenta que permite criar aplicações próprias para processamento de pacotes em switches Ethernet programáveis da série Tofino. Sob a licença Apache 2.0, o código-fonte do backend para o compilador p4c e os componentes do ambiente de desenvolvimento Intel P4 Studio, como drivers, modelo de simulação do switch, servidor e cliente para o protocolo BF Runtime, foram disponibilizados. Para criar aplicações, é utilizado a linguagem de programação orientada a objetos P4 (Programming Protocol-independent Packet Processors), destinada a definir a lógica de processamento de pacotes em dispositivos de rede, como placas de rede, switches, roteadores e firewalls.
O backend publicado permite traduzir programas escritos na linguagem P4 para uma representação adequada à instalação em switches da série Intel Tofino. Graças a isso, os usuários dos switches podem criar aplicações que estendem a funcionalidade padrão, alteram a lógica de operação ou adaptam o dispositivo às especificidades de suas redes.
Os programas na linguagem P4 são compilados para representações de plataformas-alvo, que podem ser tanto de hardware (FPGA, ASIC programáveis) quanto de software (x86, BPF). Juntamente com o código para instalação em sistemas-alvo, o compilador gera o runtime para gerenciar a aplicação utilizando protocolos Protobuf/gRPC e API P4Runtime.
A lógica típica de funcionamento dos programas se resume à classificação de pacotes com base em seus cabeçalhos e à execução de ações sobre os pacotes de entrada, como redirecionamento, descarte, alteração de TTL e substituição de campos. A linguagem não está atrelada a protocolos de rede e, ao invés de suporte embutido para protocolos padrão, como IP, Ethernet, TCP e VxLAN, oferece aos desenvolvedores a possibilidade de definir quaisquer protocolos em relação às aplicações compiladas (o desenvolvedor anexa a descrição dos formatos de cabeçalhos e campos do protocolo).

Além do backend publicado para switches Intel Tofino, o projeto P4 fornece um backend para compilar aplicações P4 em código na linguagem C, que pode ser então compilado em um formato adequado para execução em máquina virtual eBPF dentro do núcleo do Linux. O projeto também está desenvolvendo um simulador de switch aberto, que pode ser usado para realizar experimentos na rede virtual Mininet, e um backend para compilar programas P4 para o simulador.
Fonte: opennet.ru
