libVNF: building VNFs made easy
Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru
- Dept. of Computer Science and Engineering
Indian Institute of Technology, Bombay
SoCC’18 11th October, 2018
libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal - - PowerPoint PPT Presentation
libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering Indian Institute of Technology, Bombay SoCC18 11 th October, 2018 NFV ecosystem Orchestrator Firewall
Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru
Indian Institute of Technology, Bombay
SoCC’18 11th October, 2018
Network address translator Router Load balancer Firewall
VM VNF VM VNF VM VNF VM VNF Hypervisor
Orchestrator NFV: Network Function Virtualization VNF: Virtual Network Function
2
Network address translator Router Load balancer Firewall
VM VNF VM VNF VM VNF VM VNF Hypervisor
performance ?
3
NFV: Network Function Virtualization VNF: Virtual Network Function Orchestrator
VNF code developed by VNF developer
4
VNF code developed by VNF developer
4
38% EPC code → read/write packets
CORD Intel EPC: https://gerrit.opencord.org/ngic
VNF code developed by VNF developer VNF Processing logic VNF Framework
4
38% EPC code → read/write packets
CORD Intel EPC: https://gerrit.opencord.org/ngic
VNF Processing logic VNF Framework netbricks OpenNF VPP StatelessNF
4
VNF Processing logic VNF Framework netbricks OpenNF VPP StatelessNF
4
What is missing in these frameworks?
5
6
Layer 3 VNFs
Network address translator Layer 3 Load balancer 7
Layer 3 VNFs
N/W layer Data link layer Header manipulations
Network address translator Layer 3 Load balancer 7
Layer 3 VNFs
N/W layer Data link layer Header manipulations
Network address translator Layer 3 Load balancer
Frameworks: netbricks, YANFF
7
Layer 3 VNFs
N/W layer Data link layer Header manipulations
Network address translator Layer 3 Load balancer
Frameworks: netbricks, YANFF
vEPC internet
Transport Layer VNFs
7
Layer 3 VNFs
N/W layer Data link layer Header manipulations
Network address translator Layer 3 Load balancer
Frameworks: netbricks, YANFF
vEPC internet
Transport Layer VNFs
N/W layer Transport Layer Data link layer Request processing Connection termination Connection initiation
7
Layer 3 VNFs
N/W layer Data link layer Header manipulations
Network address translator Layer 3 Load balancer
Frameworks: netbricks, YANFF
vEPC internet
Transport Layer VNFs
N/W layer Transport Layer Data link layer Request processing Connection termination Connection initiation
Frameworks: mTCP, TLDK
7
Netbricks: Taking the v out of nfv. In Proc. of OSDI’16 YANFF: https://www.openhub.net/p/yanff mTCP: A highly scalable user-level tcp stack for multicore systems. In Proc. of NSDI’14 TLDK: https://wiki.fd.io/view/TLDK
Layer 3 VNFs
N/W layer Data link layer Header manipulations
Network address translator Layer 3 Load balancer
Frameworks: netbricks, YANFF
vEPC internet
Transport Layer VNFs
N/W layer Transport Layer Data link layer Request processing Connection termination Connection initiation
Frameworks: mTCP, TLDK
7
Netbricks: Taking the v out of nfv. In Proc. of OSDI’16 YANFF: https://www.openhub.net/p/yanff mTCP: A highly scalable user-level tcp stack for multicore systems. In Proc. of NSDI’14 TLDK: https://wiki.fd.io/view/TLDK
Are these frameworks enough?
8
Existing transport-layer frameworks are event-driven
Pros:
8
Existing transport-layer frameworks are event-driven
Pros:
8
Existing transport-layer frameworks are event-driven
Pros:
8
Existing transport-layer frameworks are event-driven
Pros:
Cons:
8
Existing transport-layer frameworks are event-driven
Pros:
Cons:
8
Existing transport-layer frameworks are event-driven
Need to maintain request state
A B C
1 2 3 4 9
Need to maintain request state
State at B to process A’s request
A B C
1 2 3 4 A’s request C’s reply Connection identifiers 9
Need to maintain request state
DPDK and netmap layer (packet) network stack (mTCP) (connection) VNF processing layer (abstraction ?)
State at B to process A’s request
A B C
1 2 3 4 A’s request C’s reply Connection identifiers 9
Need to maintain request state
DPDK and netmap layer (packet) network stack (mTCP) (connection) VNF processing layer (abstraction ?)
State at B to process A’s request
A B C
1 2 3 4 A’s request C’s reply Connection identifiers 9
Existing frameworks do not provide this support
10
vNIC Kernel network stack Application VNF
Kernel Stack
11
vNIC DPDK/netmap Application VNF + userspace stack vNIC Kernel network stack Application VNF
Kernel Stack Kernel Bypass Stack
11
vNIC DPDK/netmap Application VNF + userspace stack vNIC Kernel network stack Application VNF
Kernel Stack Kernel Bypass Stack
11
Easy switch between stacks
12
VM VNF 1 VM VNF 2 VM VNF 2 VM VNF 3 Hypervisor
Orchestrator
13
VNF 2 VNF 2
13
State Synchronization
VNF 2 VNF 2
State Migration
split/merge
13
State Synchronization
VNF 2 VNF 2
State Migration
split/merge Data Store Remote store statelessNF
13
State Synchronization
Stateless network functions: Breaking the tight coupling of state and processing. In Proc. of NSDI’17 Split/merge: System support for elastic execution in virtual middleboxes. In Proc. of NSDI’13 Opennf: Enabling innovation in network function control. In Proc. of SIGCOMM’14
VNF 2 VNF 2
State Migration
split/merge Data Store Remote store statelessNF
13
State Synchronization
None of above support transport layer VNFs
Stateless network functions: Breaking the tight coupling of state and processing. In Proc. of NSDI’17 Split/merge: System support for elastic execution in virtual middleboxes. In Proc. of NSDI’13 Opennf: Enabling innovation in network function control. In Proc. of SIGCOMM’14
Requirement/ Framework netbricks Flick StatelessNF Split-Merge/ OpenNF libVNF Layer 3 + App- layer support no yes no no yes Flexibility of network stack no no no no yes Distributed State Management no no yes yes yes
14
Netbricks: Taking the v out of nfv. In Proc. of OSDI’16 Flick: Developing and running application-specific network services. In Proc. of USENIX ATC’16 Stateless network functions: Breaking the tight coupling of state and processing. In Proc. of NSDI’17 Split/merge: System support for elastic execution in virtual middleboxes. In Proc. of NSDI’13 Opennf: Enabling innovation in network function control. In Proc. of SIGCOMM’14
libVNF Design Goals
Flexibility of network stack Support for network and transport layer VNF Distributed State Management VNF processing logic Handled by VNF developer Handled by libVNF R3 R2 R1 R: Requirement
15
VNF code libVNF API API Calls
16
mTCP+ netmap/DPDK initialization Kernel stack initialization VNF code libVNF API API Calls Stack initialization
16
mTCP+ netmap/DPDK initialization Kernel stack initialization VNF code libVNF API API Calls Stack initialization
16
Per-core threads
mTCP+ netmap/DPDK initialization Kernel stack initialization VNF code libVNF API API Calls Per-core data structures Stack initialization
16
Per-core threads
libVNF API Communication State Management Request state
libVNF API
17
libVNF API State Management Request state
libVNF API
18
libVNF API State Management Request state
libVNF API
18
Communication
VNF code libVNF API Per-core packet pool Per-core data structures
19
Pre-allocated memory pools (Per-core packet pools)
VNF code libVNF API registerCallback(socket, fn) Per-core packet pool Per-core data structures Store mapping
19
Pre-allocated memory pools (Per-core packet pools)
VNF code libVNF API registerCallback(socket, fn) Per-core packet pool Per-core data structures Store mapping
19
Packet arrives on socket fn(packet) Pre-allocated memory pools (Per-core packet pools)
VNF code libVNF API Per-core packet pool Per-core data structures getPktBuf
19
Pre-allocated memory pools (Per-core packet pools)
VNF code libVNF API Per-core packet pool Per-core data structures getPktBuf Buffer to write packet
19
Pre-allocated memory pools (Per-core packet pools)
VNF Design Requirements Communication State Management
libVNF API
20
VNF Design Requirements Communication State Management
libVNF API
20
Request state
(abstraction ?)
Need for request state
DPDK and netmap layer (packet) network stack (mTCP) (connection) VNF processing layer (abstraction ?)
State at B to process A’s request
A B C
1 2 3 4 A’s request C’s reply Connection identifiers 21
(abstraction ?)
Need for request state
DPDK and netmap layer (packet) network stack (mTCP) (connection) VNF processing layer REQUEST OBJECT
State at B to process A’s request
A B C
1 2 3 4 A’s request C’s reply Connection identifiers 22
Request object
A B C
1 2 3 4
libVNF API Per-core request pool
23
A B C
1 2 3 4
libVNF API Per-core request pool allocReqObj(A connection_id) Allocate request
request
23 A’s request C’s reply Connection identifiers
A B C
1 2 3 4
libVNF API Per-core request pool allocReqObj(A connection_id) Allocate request
request
23 A’s request C’s reply Connection identifiers
Per-core packet pool
A B C
1 2 3 4
libVNF API Per-core request pool linkReqObj(C connection_id) Link to the existing A request object
23 A’s request C’s reply Connection identifiers
Per-core packet pool
VNF Design Requirements Communication Request state
libVNF API
24
VNF Design Requirements Communication Request state
libVNF API
24
State Management
VNF code libVNF API
25
VNF code libVNF API Local data store pool
25
VNF code libVNF API Local data store pool setData( ) LOCAL Store in local datastore
25
VNF code libVNF API Local data store pool libVNF data store wrapper Redis KV store Remote Data store setData( ) LOCAL Store in local datastore
25
VNF code libVNF API Local data store pool libVNF data store wrapper Redis KV store Remote Data store setData( ) REMOTE Cache locally Store in remote data store
25
Evaluation
26
Setup
27
A B C
1 2 3 4
Setup
27
VNF A VNF C S/W switch (on kernel) A B C
1 2 3 4
Setup
27
VNF A VNF C S/W switch (on kernel) VNF B S/W switch (like netmap-vale)
Physical NIC NIC Queue
A B C
1 2 3 4
Setup
27
VNF A VNF C S/W switch (on kernel) VNF B S/W switch (like netmap-vale)
Physical NIC NIC Queue
A B C
1 2 3 4
VNF A, C: 4 core, 4GB RAM VNF B: 4 GB RAM, cores varied
Evaluation
28
Overhead check
29
Overhead check
29
<5% overhead of libVNF DPDK~ netmap performance
Evaluation
30
31
31
scales linearly with cores
Evaluation
32
Building VNFs
VNF Performance Overhead of libVNF LoC Saved IMS (IP Multimedia Subsystem) 3.4% 42% EPC (LTE-Evolved Packet Core ) 5.5% 38% Layer 3 Load Balancer 14% 52%
33
Building VNFs
VNF Performance Overhead of libVNF LoC Saved IMS (IP Multimedia Subsystem) 3.4% 42% EPC (LTE-Evolved Packet Core ) 5.5% 38% Layer 3 Load Balancer 14% 52%
33
Low overhead in app-layer VNF Higher overhead in L3 VNF
34
https://github.com/networkedsystemsIITB/libVNF ppnaik@cse.iitb.ac.in
35
Setup
36
VNF A VNF C S/W switch (on kernel) LB VNF VNF B VNF B Data store VM S/W switch (vale on netmap)
Physical NIC NIC Queue
A B C
1 2 3 4
Setup
36
VNF A VNF C S/W switch (on kernel) LB VNF VNF B VNF B Data store VM S/W switch (vale on netmap)
Physical NIC NIC Queue
A B C
1 2 3 4
VNF A, C: 4 core, 4GB RAM VNF B: 4 GB RAM, cores varied Data Store VM: 6 core, 16GB RAM LB: 1 core, 4GB RAM