Towards a More Programmable and Performance-Optimized Virtual Switch @ EuroP4 '21
This presentation discusses the development of a more programmable and performance-optimized virtual switch at EuroP4 '21. It covers topics such as P4 with OVS, challenges in OVS hardware offload, P4 enhanced Open vSwitch, P4 components in OVS, stacked pipelines, and various control and data planes for programming P4 targets. The session also explores Packet Control P4-OVS components and provides useful links and code repositories for further exploration.
Uploaded on Sep 22, 2024 | 0 Views
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
Towards a more programmable and performance- optimized virtual switch @EuroP4 '21 Debashis Chatterjee Namrata Limaye
EuroP4 '21 Agenda SDN/Local Controller (e.g., K8S CNI) 1. Why P4 with OVS OVS HW Offload Challenges 2. P4 Enhanced Open vSwitch 3. P4 Components in OVS (P4Runtime, OpenConfig) 4. Stacked Pipelines 5. IPDK.io, Useful Links, github and Wrap Up FRR ovsdb teamd etc. P4Runtime OpenConfig Linux Kernel Kernel Link P4Runtime OpenConfig Server P4 OVS Table API Target Backend P4 Target Kernel P4 Program OVS & SDN Program eBPF P4 Target Ports DPDK P4 Target P4 Prog. Switch P4 Target P4 Prog. NIC Ports Ports
EuroP4 '21 Open vSwitch(OvS) Needed for virtual networking Virtual Switch implemented in software Flexible Controller in User-Space, fast Datapath in Kernel or HW Manages packets as flows 3
EuroP4 '21 P4 Enhanced Open vSwitch Control planes: OVS Maps OVS configuration to P4 Tables ( E.g. Vxlan) P4Runtime + Openconfig Configures P4 tables explicitly (E.g. Container load-balancing) Kernel Maps Kernel configurations (via SAI) to P4 Tables (E.g. ECMP w/ FRR) All three control planes can used to program the same P4 target. Multiple P4Runtime clients can connect and program different P4 pipelines Data Planes: Physical NICs (Tofino, Intel P4 NICs etc) P4-DPDK (userspace) P4-ebpf (kernel)
EuroP4 '21 Packet Control P4-OVS Components Table API Common programming IF for P4Runtime/Openconfig/SAI SDN Controller (P4Runtime/Openconfig Clients) ovs-p4ctl Config Mapper P4Runtime & Openconfig Server Example Dataplane P4- DPDK programmed by either of the 3 control planes SAI OVS Table API TAP for passing control packets to OVS P4-Target (ovs.p4, linux_networking.p4 netlink TAP Netlink for receiving configurations from kernel userspace kernel FRR/ECM P/Lag TAP for OVS control pks openvswitch.ko ARP/DHCP Openflow to P4 Mapper VFIO ARP/DHCP
EuroP4 '21 Code https://github.com/ipdk-io/ovs -b ovs-with-p4 Ovs with P4 howto - https://github.com/ipdk- io/ipdk/blob/main/build/IPDK_Container/ovs- with-p4-howto
EuroP4 '21 IPDK Container https://github.com/ipdk-io/ipdk/tree/main/build/IPDK_Container IPDK Container setup howto - https://github.com/ipdk- io/ipdk/blob/main/build/IPDK_Container/README Dockerfile Application/Device Consumer VM Application/Device Consumer VM - https://github.com/ipdk- io/ipdk/blob/main/build/IPDK_Container/Dockerfile ovs-with-p4 container build scripts Virtio Block/Eth Virtio Block/Eth - https://github.com/ipdk- io/ipdk/tree/main/build/IPDK_Container/scripts P4 file vHost vHost IPDK - Reference App (P4-OVS/Storage) Container https://github.com/ipdk- io/ipdk/blob/main/build/IPDK_Container/examples/s imple_l3/simple_l3.p4 IPDK Stack (P4-DPDK-target)
EuroP4 '21 Current and Future
EuroP4 '21 Thank You Reference Links: https://github.com/ipdk-io https://github.com/ipdk-io/ipdk/tree/main/build/IPDK_Container https://github.com/ipdk-io/ipdk/blob/main/build/IPDK_Container/ovs-with-p4_howto https://github.com/ipdk-io/ovs https://github.com/p4lang/p4-dpdk-target Contacts: Namrata Limaye (namrata.limaye@intel.com) Debashis Chatterjee (deb.chatterjee@intel.com) Dan Daly (dan.daly@intel.com) Venkata Suresh (venkata.suresh.kumar@intel.com)