Skip to content

Releases: ipdk-io/k8s-infra-offload

IPDK v24.01 Release

18 Jan 08:35
Compare
Choose a tag to compare

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

19 Jul 16:00
0e71ec1
Compare
Choose a tag to compare

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.