Releases: ipdk-io/k8s-infra-offload
Releases · ipdk-io/k8s-infra-offload
IPDK v24.01 Release
Kubernetes Infrastructure Offload Recipe
Features and enhancements
- Service Load Balancing: Support for K8s Service of type ClusterIP.
Kubeproxy implementation is now offloaded to hardware.
TCP and UDP services can be created and are dynamically distributed to
endpoints. The first packet of each flow goes through load balancing logic,
and the result is cached in hardware auto-add table for treatment of
subsequent packets, resulting in increased efficiency. - Support for Go version 1.21.4
- Support for log level configuration from config files for infraagent
- SRIOV support for Intel IPU E2100
- Bug fixes
Limitations
- The setup_infra.sh automation script, works with the default configuration
for certificate paths and artifact paths. Any changes in these paths will
render the script unusable.
User may need to manually configure and execute instructions mentioned in
the script. - SRIOV is an experimental feature. The setup_infra_sriov.sh script doesn't
support the -r option for remote IP for host IP on ACC. Host mode is
supported for this release as an engineering preview. - Max supported CDQ interfaces are 254 as max vport for host. The default
max vport in the cdq use case cp_init file has been provided as 50 which
can be configured. - RSS configuration in P4 isn't present and hence SRIOV throughput is seen
slightly lower. - Service Load Balancing for TCP has few random session resets. Known issue
and bugfix to be available in a future minor release.
IPDK v23.07 Release
Kubernetes Networking Infrastructure Offload
- Support for Kubernetes Container Network Interface (CNI) to enable pods to
send/receive traffic. - Intra Node L3 Forwarding to enable pod to pod communication, on the same node,
via CNI interfaces. - Service Load Balancing within the node to allow multiple pods on same node to
act as end points providing any application service. - Bi-directional Auto Learning and Flow Pinning (a.k.a Connection Tracking),
used with load balancing, to allow consistent end point pod selection, once it
has been selected for the first packet. - DNS service provided by Core DNS pods to other pods.
- Support for TLS traffic between DNS server pods and Kube API.
K8s Infra Components
The following are the main components of K8s Infra Offload software.
K8s Infra Manager
- The Infra Manager is deployed as a core kube-system pod along with other
kube-system pods. - This components acts as a gRPC server for K8s Infra Agent and receives K8s
configurations from the Infra Agent over the gRPC channel. - It acts as a client for the P4 Runtime Server (infrap4d) and updates the
K8s Pipeline tables (Data Plane), over another gRPC channel, to apply K8s
configurations.
K8s Infra Agent
- The Infra Agent is also deployed as a core kube-system pod along with other
kube-system pods. - It receives all CNI requests from the Calico plug-in, configures pod system
files and adds interaces to be pods. And finally, it relays these
configurations to the Infra Manager. - It also acts as a K8s client for K8s API server and receives all configuration
changes and passes them on to the Infra Manager component. - It interacts with Infra Manager over gRPC channel to pass all the
configurations.
K8s P4 Pipeline
- The K8s P4 pipeline is a pre-built component that can be loaded on the P4-DPDK
dataplane. - It comes along with the source P4 code for user to understand the packet
processing pipeline. - Offloading kube-proxy functionality, providing pod to pod L3 connectivity,
local node gateway routing, load balancing & connection tracking, is all
implemented within this pipeline. - It exposes p4 tables that can be modified at runtime with packet processing
rules. These rules are for managing pkt forwarding, service groups, service
end points, etc.