Pro našeho významného zákazníka v síťovém segmentu jsme se podíleli na návrhu a vývoji jádra P4 pro FPGA. Systém byl navržen tak, aby zkompiloval konfiguraci z jazyka P4 a sestavil firmware pro FPGA, který realizoval směrování paketů nebo jinou požadovanou funkci.
Zadání a výzva
Parametrizovatelné, nezávislé na dodavateli FPGA
P4 je programovací jazyk a znamená Programming Protocol-independent Packet Processor. Na rozdíl od jazyka C nebo Python je to jazyk určený pro doménu síťových zařízení (přepínače, síťové karty, směrovače, filtry atd.).
P4 je optimalizován pro předávání síťových dat. Umožňuje vývojářům sítě navrhovat komplexní konfigurace směrování sítě bez rozsáhlé znalosti standardních programovacích jazyků. Mezi běžně používané funkce patří filtrování paketů, směrování paketů, změny záhlaví, izolace klienta, vyrovnávání zatížení, řízení toku, telemetrie v pásmu nebo seznam řízení přístupu. Je podporován všemi velkými hráči v oblasti sítí, jako je Google nebo Intel.
Naším úkolem bylo analyzovat stávající systém a navrhnout novou parametrizovatelnou ALU (Arithmetic —Logic Unit) a parametrizovatelný řadič paměti pro QDR a DDR RAM. Tyto komponenty byly použity kompilátorem P4 jako stavební kameny k vytvoření požadované cesty zpracování paketů v FPGA.
Řešení
Komponenty FPGA s vysokou datovou propustností.
Vytvořili jsme parametrizovatelné IP bloky, které podporují různé síťové funkce používané kompilátorem jazyka P4. Bylo použito několik úrovní abstrakce a nejpokročilejší konstrukce jazyka SystemVerilog, aby byly bloky parametrizovatelné a syntetizovatelné.
Hodnota pro zákazníka
Snadno programovatelné síťové zařízení
Vytvořením parametrizovatelných a syntetizovatelných IP bloků, které lze použít v překladači P4, získal zákazník sadu stavebních bloků, které mohou vytvořit optimální cestu směrování paketů v FPGA pro nejrychlejší zpracování paketů. Úroveň složitosti a parametrizace obsažená v kódu HDL umožnila vytvořit zjednodušený překladač P4.
Jak probíhal vývoj
SystémVerilog HDL
Všechny IP bloky byly navrženy v jazyce SystemVerilog a využívaly nejnovější podporované syntetizovatelné konstrukce tohoto jazyka, které umožnily přenést břemeno abstrakce a parametrizace ze SW na HW. Vývoj byl o něco delší ve srovnání s dobou čistého kódování v SW. Nicméně úkolem bylo navrhnout bloky, které umožní co nejrychlejší zpracování paketů, a to je možné pouze tehdy, když jsou pakety zpracovávány v hardwaru (FPGA).
Klient
Zákazník v síťovém segmentu
V roce 2019 jsme vytvořili několik parametrizovaných FPGA komponent v SystemVerilog používaných kompilátorem P4, které realizovaly různé síťové funkce.
Další řešení
Od založení společnosti Consilia v roce 2004 jsme dokončili a podpořili desítky projektů.