fundamental technologies to work
play

fundamental technologies to work on for cloud-native networking - PowerPoint PPT Presentation

fundamental technologies to work on for cloud-native networking Magnus Karlsson, Intel Cloud-Native Network Functions My View Many small network functions App App App App Runs in containers / processes Routing / Switching


  1. fundamental technologies to work on for cloud-native networking Magnus Karlsson, Intel

  2. Cloud-Native Network Functions – My View Many small network functions • App App App App Runs in containers / processes • Routing / Switching High availability • Server Automatic scalability • Secure • Packets Deployable at scale • Load Really simple Balancer • Load-balancing • Routing and/or switching • Best performance NOT a main • Server Server Server driver Cloud-Native systems using the Linux stack is NOT a focus of this presentation Network Platforms Group 2

  3. Properties Needed Requirements Properties Many small network functions HW agnostic – Linux APIs only • • Runs in containers / processes Fault isolation • • High availability Restartability • • Automatic scalability Multiple SW versions • • Secure Upgradeable during run-time • • Deployable at scale Many processes per core • • Really simple • Power save • Load-balancing • All security features working • Routing and/or switching • Debuggable & observeable • Good enough performance • Routing/switching in kernel • Binary compatibility • Works on any standard Linux • Network Platforms Group 3

  4. Desired System App App App App App App App App User App App App App App App App App App Packet App = Access Linux with Routing / Switching Library Core 1 Core 2 Core 3 Core 4 Raw Packets All drivers in the Linux kernel the key to solving the problem Network Platforms Group 4

  5. Goal for Cloud-Native Dataplane Dead-simple, out-of-the-box cloud-native • networking for network functions App App App App With the properties outlines previously • Linux with XDP Supported by all major distributions • NIC Binary backward and forward compatibilty • With good enough performance • Network Platforms Group 5

  6. Features We Cannot Use DESIRED NOT AN OPTION HW agnostic – Linux APIs only SR-IOV • • Fault isolation User-space drivers • • Restartability Pinned cores & memory • • Multiple SW versions Busy-polling • • Upgradeable during run-time Huge pages • • Many processes per core Shared memory • • Power save 1-to-1 virtual to physical mappings • • All security features working >1 crossing user/kernel-space • • Debuggable & observeable Monolithic SW • • Routing/Switching in kernel Custom kernel modules • • Binary compatibility Complete kernel bypass • • Works on any standard Linux Hard-coded platform • • Network Platforms Group 6

  7. Linux NIC features << Features of HW NIC In Linux we need to develop: Metadata and offloadning support for XDP & AF_XDP • Supporting accelerators • Making it easy to orchestrate and control • Managing both the fast path and the slow path (Linux networking stack) using the • Linux stack control plane Slicing up a netdev with real HW queues • Preallocating AF_XDP memory for the containers using Kubernetes • Queue management • For deployment at scale • Packet access library designed for cloud-native and Linux • Network Platforms Group 7

  8. Metadata and Offloading struct metadata { SW u64 rx_timestamp; BTF u16 ipv4_hdr; }; struct metadata { Binary: Compiler u16 ipv4_hdr; movq $0x2061,(%rsi) u8 pad[32]; mov 0x24(%rdi),%eax u64 rx_timestamp; movl $0x50035,0x8(%rsi) struct metadata { }; movq $0x100f,0x20(%rsi) u64 rx_timestamp; HW u16 ipv4_hdr; u16 ipv6_hdr; bool udp_chk_sum; }; No mbuf or skbuf needed. Access metadata directly • Only pay for the metadata you use • XDP has a JIT, so can be done in run-time • AF_XDP needs to dynamically link at bind() time or use an offset table • Accelerators probably will use io_uring. How to support metadata there? • Network Platforms Group 8

  9. Controlling the Fast Path from Linux xdp_action xdp_program() { Slow Fast ip_src = extract_ipv4_src_addr(); Path Path ip_dst = extract_ipv4_dst_addr(); : Stack XDP bpf_route_lookup(ip_src, ip_dst,...); route_to_dst(); Linux }; NIC Linux control path sets up actions in HW and/or XDP • XDP when HW does not support the action • All packets pass XDP • Use helpers in XDP • Reads kernel state or metadata from NIC • But not many of these exists today • Network Platforms Group 9

  10. Facilitating Kubernetes Orchestration netdev Pod netdev netdev Linux netdev netdev AF_XDP needs a netdev with real HW queues • How to create one of those? • Use Macvlan with add_station support? • Pod needs to have all AF_XDP memory areas preallocated • Launch a ”pre - process” that then forks off a child that becomes the pod • Network Platforms Group 10

  11. Queue Management: The Focus 16 Q PFs 64 Q 16 Q 48 Q 16 Q VF Queues VFs PF VF VF PF Linux XDP AF_XDP 48 Q 48 Q stack app app PF netdev netdev Two problems: Splitting up queues between PFs and VFs in a device Allocating and freeing queues within a netdev Network Platforms Group 11

  12. Queue Management: The Focus 16 Q PFs 64 Q 16 Q 48 Q 16 Q VF Queues VFs PF VF VF PF Linux XDP AF_XDP 48 Q 48 Q stack app app PF netdev netdev Two problems: Splitting up queues between PFs and VFs in a device Allocating and freeing queues within a netdev Network Platforms Group 12

  13. Kernel Design Overview AF_XDP / Libbpf / NETLINK Ethtool Linux Stack Queue Manager XDP Device Drivers New alloc and free ndo:s in driver needed • Tie into existing interfaces, e.g. netif_set_real_num_rx_queues() • Qids can be decided by driver • For backwards compatibility and encoding queue types • When used in conjunction with netdev slicing => custom netdevs • Network Platforms Group 13

  14. Cloud-Native Packet Access Library App pkt access Important properties: mempool crypto All drivers in kernel space • AF_XDP Io_uring Virtio-net Set of small shared libraries • Linux No HW exposed to user space • NIC + Accelerators Does not force a platform on the users • No config, launch, or run-time environment in libraries • Works in both processes and threads in any configuration • No mbuf or the likes exposed to the application • Applications cannot crash each other • Debugability, observability and testability from day one • First optimized for ease-of-use and the right functionality, then optimize for • performance Network Platforms Group 14

  15. Conclusions Cloud- native ≠ appliance or virtual machine • Most of the challenges solved by having all drivers in the kernel • But Linux is not ready for this: • Metadata and offloading • Controlling the data plane from the Linux stack • Orchestration support: splitting up netdevs • Queue management • New requirements on packet access libraries • Do we evolve DPDK or do we need a new packet library? • Network Platforms Group 15

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend