fundamental technologies to work
- n for cloud-native networking
Magnus Karlsson, Intel
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
Magnus Karlsson, Intel
Network Platforms Group
Cloud-Native Network Functions – My View
driver
2
App Server Routing / Switching App App App Server Server Server Load Balancer Packets Cloud-Native systems using the Linux stack is NOT a focus of this presentation
Network Platforms Group
Properties Needed
3
Requirements Properties
Network Platforms Group
App App App
Desired System
4
App Core 1 Linux with Routing / Switching Core 2 Core 3 Core 4 App App App App App App App App App App App App User App Packet Access Library App = Raw Packets All drivers in the Linux kernel the key to solving the problem
Network Platforms Group
Goal for Cloud-Native Dataplane
networking for network functions
5
App NIC Linux with XDP App App App
Network Platforms Group
Features We Cannot Use
6
DESIRED NOT AN OPTION
Network Platforms Group
Linux NIC features << Features of HW NIC
In Linux we need to develop:
Linux stack control plane
7
Network Platforms Group
Metadata and Offloading
8
struct metadata { u64 rx_timestamp; u16 ipv4_hdr; u16 ipv6_hdr; bool udp_chk_sum; }; struct metadata { u64 rx_timestamp; u16 ipv4_hdr; };
SW HW
struct metadata { u16 ipv4_hdr; u8 pad[32]; u64 rx_timestamp; };
BTF
Binary: movq $0x2061,(%rsi) mov 0x24(%rdi),%eax movl $0x50035,0x8(%rsi) movq $0x100f,0x20(%rsi)
Compiler
Network Platforms Group
Controlling the Fast Path from Linux
9
Slow Path NIC Linux
Stack XDP
Fast Path
xdp_action xdp_program() { ip_src = extract_ipv4_src_addr(); ip_dst = extract_ipv4_dst_addr(); : bpf_route_lookup(ip_src, ip_dst,...); route_to_dst(); };
Network Platforms Group
Linux
Facilitating Kubernetes Orchestration
10
netdev netdev netdev netdev
Pod
netdev
Network Platforms Group
Queue Management: The Focus
11
Two problems: Splitting up queues between PFs and VFs in a device Allocating and freeing queues within a netdev
Queues VFs PFs PF VF VF 64 Q 16 Q 16 Q PF 48 Q VF 16 Q PF 48 Q netdev 48 Q netdev Linux stack XDP app AF_XDP app
Network Platforms Group
Queue Management: The Focus
12
Two problems: Splitting up queues between PFs and VFs in a device Allocating and freeing queues within a netdev
Queues VFs PFs PF VF VF 64 Q 16 Q 16 Q PF 48 Q VF 16 Q PF 48 Q netdev 48 Q netdev Linux stack XDP app AF_XDP app
Network Platforms Group
Kernel Design Overview
13
Queue Manager Device Drivers Linux Stack XDP AF_XDP / Libbpf / Ethtool NETLINK
Network Platforms Group
Cloud-Native Packet Access Library
Important properties:
performance
14
App NIC + Accelerators Linux
AF_XDP Io_uring Virtio-net mempool pkt access crypto
Network Platforms Group
Conclusions
15