FlowBlaze is an abstraction for designing the data plane of high-performance stateful network functions.

An abstraction based on Finite State Machines

FlowBlaze extends the well known Match-Action table pipeline abstraction, e.g., the one used by OpenFlow, Open vSwitch, P4, etc., to introduce pipeline's elements that can describe a Finite State Machine (FSM). That is, in a pipeline that includes FlowBlaze one or more Match-Action Tables are replaced with an FSM that describes the behavior to handle network packets. In FlowBlaze's terminology, a Match-Action table is a stateless pipeline's element, while an FSM is a stateful element.

The FSM implemented by FlowBlaze are formally called extended FSMs (EFSMs), since they include external memory and operations on such memory. Using EFSMs, one can describe complex programs without facing the state explosion problem that usually plagues the description of behaviors with FSMs. More details are presented in our recent USENIX NSDI'19 publication.

Implementations

FlowBlaze comes with both hardware and software implementations. The hardware implementations are based on FPGA's IP cores, while the software implementations target GNU/Linux systems. Check our GitHub repository for continuous updates and releases.