Session

Linux kernel networking acceleration using P4–OVS on IPU

Speakers

Sandeep Nagapattinam
Nupur Uttarwar
Venkata Suresh Kumar
Namrata Limaye

Label

Moonshot

Session Type

Talk

Contents

Description

Topic: Linux kernel networking acceleration using P4-OVS on Intel IPU

This talk demonstrates the linux kernel network stack acceleration use case using VxLAN, L2 forward and routing tables via P4. Since P4-OVS is open-sourced, this solution can be used by the community to create a similar P4 pipeline and control plane architecture to enable linux kernel acceleration on Intel IPU or their Smart NICs/IPUs.

We will demonstrate the kernel acceleration into the IPU including L2 forwarding, Routing and VxLAN via P4 by programming the ‘linux_networking’ P4 pipeline on to the Intel IPU. The P4 tables in pipeline will be programmed by kernel configurations/tables and we will demonstrate traffic flowing (ICMP) successfully through that pipeline on IPU. The demo will use current P4-OVS [Refer 2] on IPDK [Refer 1].

The ‘linux_networking’ pipeline supports L2 forward, Tunnel, Routing functionality and ECMP [Refer 3, 4]. The VxLAN tunnel will be configured on OVS/kernel and will be propagated to the P4 tables by registering into kernel netlink messages and programmed on the Intel IPU target using P4-OVS/P4proto and target driven interface (TDI). The demo will also show the ARP packets being sent to OVS (Open Virtual Switch) for control path processing using the IPU kernel driver netdev control ports and VLAN port representors. P4Runtime(ovs-p4ctl) is used to populate the control flow rules in the pipeline. In the talk, we will go over the ‘linux_networking’ Tx and Rx P4 pipeline and topology, how P4 tables are dynamically programmed using netlink in IPU target via kernel, control and data packet flow.

Reference

  1. IPDK - https://github.com/ipdk-io/ipdk
  2. OVS with P4 - https://github.com/ipdk-io/ovs
  3. Linux Networking Readme - https://github.com/ipdk-io/ovs/blob/ovs-with-p4/p4proto/kctrl/README.md
  4. Linux networking P4 File - https://github.com/ipdk-io/ovs/blob/ovs-with-p4/p4proto/p4src/linux_networking/linux_networking.p4