IPDK 23.01 Release
We are delighted to announce the second release of IPDK, version 23.01, created to help developers working on Programmable Infrastructure to rapidly port their applications to open source enabled dataplanes running on CPUs, IPUs, DPUs & switches. This release includes:
- Updates & Improvements to the Infrastructure-as-a-Service Virtual Networking Recipe
- Updates & Improvement to the Infrastructure-as-a-Service Virtual Block Storage Recipe
- Initial Release of the Kubernetes Networking Infrastructure Offload Recipe
- Design Preview of the Inline IPsec Recipe
- Updates & Improvements to the P4 DPDK as an IPDK Target Dataplane from p4.org
We’re excited for you to try out the code and have packaged it to run on programmable hardware targets, software targets, and even a laptop for evaluation. We are integrating new applications to reduce the overall time it takes for developers to program and take advantage of available targets.
On June 21st, the Linux Foundation announced the Open Programmable Infrastructure (OPI) project and IPDK joined OPI as a sub-project. We look forward to furthering OPI’s objective of an open ecosystem for next generation architectures and frameworks and having the open source development of IPDK.io as part of OPI with common governance.
IPDK 23.01 In More Detail
The IPDK Github repository for networking related Recipes has been reorganized into separate repos:
- Networking Recipe : ipdk-io/networking-recipe
- Kubernetes Networking Infrastructure Offload Recipe : ipdk-io/k8s-infra-offload
- Inline IPsec Design Preview Recipe : ipdk-io/ipsec-recipe
- Storage Recipe : Remains in ipdk-io/ipdk
The Target Abstraction Interface (TAI) is a multi-platform abstraction enabling both software and hardware targets to be able to support the Recipes enabled inside the release. The Infrastructure Application Interface (InfraApp) is a collection of RPCs that enables SDN orchestration and management of the infrastructure, including the support to program the infrastructure using P4.
The included software target leverages KVM and vhost-user to support virtual ports (virtio-net) and virtual disks (virtio-blk) for VM-based Infrastructure-as-a-Service. The semantics for adding and deleting virtual devices from KVM is extended to TAI-compatible hardware targets to support IaaS bare metal hosting. This provides a common interface between VM hosted instances running on software-based infrastructure and bare metal hosting IaaS based on an IPU, DPU or switch, and enables instances to share virtual networks and to move virtual disks between each other. The Table Driven Interface from p4.org provides an object model driven abstraction at the TAI layer to enable application requirements to be declared and compiled against the capabilities of the underlying programmable targets. Developers looking to port new targets can start with the open source p4-dpdk-target backend as a reference to connect into the set of Recipes supported in the release.
Virtual networking is set up and configured using OVS, which has been patched to support a programmable p4 dataplane and packaged into a networking container for convenience. These patches are intended for consideration back into openvswitch.org and are not intended as a permanent fork that is maintained. The integration of OVS and P4 also includes integration with the Linux kernel dataplane, enabling multiple Linux-based control planes such as routing, teaming, and tunneling to run simultaneously with SDN applications connecting over P4Runtime. Virtual Block storage is set up and configured using SPDK, which is used as a sample application to demonstrate the virtual device management attached to a storage protocol, in this case NVMe-over-TCP. SPDK is also packaged into a container to make it easier to reproduce the setup.