Overview - UofG-netlab/BPFabric GitHub Wiki
What is BPFabric
BPFabric aims to provide direct programmability in the network data plane through an SDN framework. The programmability is provided through a set of functions installed on a BPFabric compatible switch orchestrated by a centralised controller. Using this approach the network can be centrally orchestrated while the operation and processing is still fully distributed.
Using BPFabric you can program your network data plane by dynamically adding, removing or updating the packet processing pipeline of a data plane. The original paper BPFabric: Data Plane Programmability for Software Defined Networks provide an overview of the motivations for BPFabric.
BPFabric is designed around three main components:
- Switch: a BPFabric switch is a network switch capable of communicating with the controller and allow functions to be installed in its data plane packet pipeline. On reception of a packet, it should execute each function in the pipeline until a forwarding decision is made or the packet is dropped.
- Function: a Function is a single stage in the data plane pipeline. It's a program compiled in eBPF that accepts the incoming a packet and can update its lookup tables, notify the controller of events and make a forwarding decision.
- Controller: the Controller is a centralised application that establishes a connection to the switches in the network. The controller can add, remove and update functions from the switches. It can also inspect and update the lookup table of the network functions as well as receive and process events raised by the functions.