How intel/ipu-opi-plugins works
IPU OPI Plugins expose IPU offload capabilities to Kubernetes. The principal workflow starts at the plugin command, which configures bridge and P4 clients and runs the plugin manager; lifecycle and network-function services then manage interfaces, bridges, and forwarding rules. The repository also includes P4 runtime pod provisioning, firewall configuration, and a sample packet-forwarding network function. Some manager wiring and deployment details are unsampled, so those links are limited to documented or directly visible interactions.
Main entry points: rootcmd.go Plugin command · lifecycleservice.go Lifecycle service · ipuplugin.go Bridge controller · networkfunctionservice.go Network function API
Components 19
Plugin control
- Plugin command
ipu-plugin/ipuplugin/cmd/rootcmd.go - Executable entry
ipu-plugin/ipuplugin/main.go - Plugin manager
ipu-plugin/pkg/ipuplugin/ipuplugin.go
Offload services
- Lifecycle service
ipu-plugin/pkg/ipuplugin/lifecycleservice.go - Network function API
ipu-plugin/pkg/ipuplugin/networkfunctionservice.go - Bridge controller
ipu-plugin/pkg/ipuplugin/ipuplugin.go - Linux bridge
ipu-plugin/pkg/ipuplugin/linuxbridge.go - OVS bridge
ipu-plugin/pkg/ipuplugin/ovsbridge.go - Linux P4 client
ipu-plugin/pkg/p4rtclient/p4rtclient.go - Red Hat P4 client
ipu-plugin/pkg/p4rtclient/rh_p4client.go - Host firewall
ipu-plugin/pkg/firewall/firewall.go
Runtime provisioning
- P4 runtime pod manager
ipu-plugin/pkg/infrapod/infrapod.go - Resource renderer
ipu-plugin/pkg/k8s/render/render.go - Pod manifests
ipu-plugin/pkg/infrapod/bindata
Packet datapath
- Packet forwarder
network_function/nf.c
Other components
- Cluster operator
- Kubernetes API
- P4 runtime
- IPU host
Connections 26
- Cluster operator → Executable entry: starts
- Executable entry → Plugin command: executes
- Plugin command → Plugin manager: creates and runs
- Plugin manager → Lifecycle service: coordinates
- Plugin manager → Network function API: coordinates
- Plugin manager → P4 runtime pod manager: manages runtime
- Plugin command → Bridge controller: selects bridge
- Plugin command → Linux P4 client: selects Linux client
- Plugin command → Red Hat P4 client: selects Red Hat client
- Bridge controller → Linux bridge: uses
- Bridge controller → OVS bridge: uses
- Lifecycle service → Bridge controller: configures ports
- Lifecycle service → Linux P4 client: programs rules
- Lifecycle service → Red Hat P4 client: programs rules
- Lifecycle service → IPU host: configures interfaces
- Network function API → Bridge controller: adds and deletes ports
- Network function API → Linux P4 client: programs rules
- Network function API → Red Hat P4 client: programs rules
- Linux P4 client → P4 runtime: writes rules
- Red Hat P4 client → P4 runtime: writes rules
- P4 runtime pod manager → Resource renderer: renders resources
- P4 runtime pod manager → Kubernetes API: creates and monitors
- Resource renderer → Pod manifests: reads templates
- Resource renderer → Kubernetes API: applies resources
- Host firewall → IPU host: configures firewalld
- Packet forwarder → IPU host: forwards packets