libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal - - PowerPoint PPT Presentation

libvnf building vnfs made easy
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

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

slide-2
SLIDE 2

NFV ecosystem

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

slide-3
SLIDE 3

NFV ecosystem

Network address translator Router Load balancer Firewall

VM VNF VM VNF VM VNF VM VNF Hypervisor

  • Will they give good

performance ?

  • Is it easy to build them?

3

NFV: Network Function Virtualization VNF: Virtual Network Function Orchestrator

slide-4
SLIDE 4

How to build VNF?

VNF code developed by VNF developer

4

slide-5
SLIDE 5

How to build VNF?

VNF code developed by VNF developer

4

38% EPC code → read/write packets

CORD Intel EPC: https://gerrit.opencord.org/ngic

slide-6
SLIDE 6

How to build VNF?

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

slide-7
SLIDE 7

How to build VNF?

VNF Processing logic VNF Framework netbricks OpenNF VPP StatelessNF

4

slide-8
SLIDE 8

How to build VNF?

VNF Processing logic VNF Framework netbricks OpenNF VPP StatelessNF

4

What is missing in these frameworks?

slide-9
SLIDE 9

What is required from VNF frameworks?

  • Requirement 1: Support for both L3 and Transport VNF
  • Requirement 2: Flexibility of network stack
  • Requirement 3: Support for distributed state management

5

slide-10
SLIDE 10

What is required from VNF frameworks?

  • Requirement 1: Support for both L3 and Transport VNF
  • Requirement 2: Flexibility of network stack
  • Requirement 3: Support for distributed state management

6

slide-11
SLIDE 11

Support for L3 and transport VNFs

Layer 3 VNFs

Network address translator Layer 3 Load balancer 7

slide-12
SLIDE 12

Support for L3 and transport VNFs

Layer 3 VNFs

N/W layer Data link layer Header manipulations

Network address translator Layer 3 Load balancer 7

slide-13
SLIDE 13

Support for L3 and transport VNFs

Layer 3 VNFs

N/W layer Data link layer Header manipulations

Network address translator Layer 3 Load balancer

Frameworks: netbricks, YANFF

7

slide-14
SLIDE 14

Support for L3 and transport VNFs

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

slide-15
SLIDE 15

Support for L3 and transport VNFs

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

slide-16
SLIDE 16

Support for L3 and transport VNFs

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

slide-17
SLIDE 17

Support for L3 and transport VNFs

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?

slide-18
SLIDE 18

Event driven I/O

8

Existing transport-layer frameworks are event-driven

slide-19
SLIDE 19

Event driven I/O

Pros:

8

Existing transport-layer frameworks are event-driven

slide-20
SLIDE 20

Event driven I/O

Pros:

  • Efficient for multi-core scalability

8

Existing transport-layer frameworks are event-driven

slide-21
SLIDE 21

Event driven I/O

Pros:

  • Efficient for multi-core scalability

8

Existing transport-layer frameworks are event-driven

slide-22
SLIDE 22

Event driven I/O

Pros:

  • Efficient for multi-core scalability

Cons:

8

Existing transport-layer frameworks are event-driven

slide-23
SLIDE 23

Event driven I/O

Pros:

  • Efficient for multi-core scalability

Cons:

  • Needs explicit request state storage

8

Existing transport-layer frameworks are event-driven

slide-24
SLIDE 24

Need to maintain request state

A B C

1 2 3 4 9

slide-25
SLIDE 25

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

slide-26
SLIDE 26

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

slide-27
SLIDE 27

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

slide-28
SLIDE 28

What is required from VNF frameworks?

  • Requirement 1: Support for both Layer 3 and Transport VNF
  • Requirement 2: Flexibility of network stack
  • Requirement 3: Support for distributed state management

10

slide-29
SLIDE 29

Flexibility of network stack

vNIC Kernel network stack Application VNF

Kernel Stack

11

slide-30
SLIDE 30

Flexibility of network stack

vNIC DPDK/netmap Application VNF + userspace stack vNIC Kernel network stack Application VNF

Kernel Stack Kernel Bypass Stack

11

slide-31
SLIDE 31

Flexibility of network stack

vNIC DPDK/netmap Application VNF + userspace stack vNIC Kernel network stack Application VNF

Kernel Stack Kernel Bypass Stack

11

Easy switch between stacks

slide-32
SLIDE 32

What is required from VNF frameworks?

  • Requirement 1: Support for both L3 and Transport VNF
  • Requirement 2: Flexibility of network stack
  • Requirement 3: Support for distributed state management

12

slide-33
SLIDE 33

Support for distributed state management

VM VNF 1 VM VNF 2 VM VNF 2 VM VNF 3 Hypervisor

Orchestrator

13

slide-34
SLIDE 34

Support for distributed state management

VNF 2 VNF 2

13

State Synchronization

slide-35
SLIDE 35

Support for distributed state management

VNF 2 VNF 2

State Migration

  • penNF,

split/merge

13

State Synchronization

slide-36
SLIDE 36

Support for distributed state management

VNF 2 VNF 2

State Migration

  • penNF,

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

slide-37
SLIDE 37

Support for distributed state management

VNF 2 VNF 2

State Migration

  • penNF,

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

slide-38
SLIDE 38

Summary of VNF Frameworks

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

slide-39
SLIDE 39

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

slide-40
SLIDE 40

libVNF overview

VNF code libVNF API API Calls

16

slide-41
SLIDE 41

libVNF overview

mTCP+ netmap/DPDK initialization Kernel stack initialization VNF code libVNF API API Calls Stack initialization

16

slide-42
SLIDE 42

libVNF overview

mTCP+ netmap/DPDK initialization Kernel stack initialization VNF code libVNF API API Calls Stack initialization

16

Per-core threads

slide-43
SLIDE 43

libVNF overview

mTCP+ netmap/DPDK initialization Kernel stack initialization VNF code libVNF API API Calls Per-core data structures Stack initialization

16

Per-core threads

  • Lock-free
  • Cache optimized
slide-44
SLIDE 44

libVNF API Communication State Management Request state

libVNF API

17

slide-45
SLIDE 45

libVNF API State Management Request state

libVNF API

18

slide-46
SLIDE 46

libVNF API State Management Request state

libVNF API

18

Communication

slide-47
SLIDE 47

Communication API

VNF code libVNF API Per-core packet pool Per-core data structures

19

Pre-allocated memory pools (Per-core packet pools)

slide-48
SLIDE 48

Communication API

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)

slide-49
SLIDE 49

Communication API

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)

slide-50
SLIDE 50

Communication API

VNF code libVNF API Per-core packet pool Per-core data structures getPktBuf

19

Pre-allocated memory pools (Per-core packet pools)

slide-51
SLIDE 51

Communication API

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)

slide-52
SLIDE 52

VNF Design Requirements Communication State Management

libVNF API

20

slide-53
SLIDE 53

VNF Design Requirements Communication State Management

libVNF API

20

Request state

slide-54
SLIDE 54

(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

slide-55
SLIDE 55

(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

slide-56
SLIDE 56

Request Object API

A B C

1 2 3 4

libVNF API Per-core request pool

23

slide-57
SLIDE 57

Request Object API

A B C

1 2 3 4

libVNF API Per-core request pool allocReqObj(A connection_id) Allocate request

  • bject block for A’s

request

23 A’s request C’s reply Connection identifiers

slide-58
SLIDE 58

Request Object API

A B C

1 2 3 4

libVNF API Per-core request pool allocReqObj(A connection_id) Allocate request

  • bject block for A’s

request

23 A’s request C’s reply Connection identifiers

Per-core packet pool

slide-59
SLIDE 59

Request Object API

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

slide-60
SLIDE 60

VNF Design Requirements Communication Request state

libVNF API

24

slide-61
SLIDE 61

VNF Design Requirements Communication Request state

libVNF API

24

State Management

slide-62
SLIDE 62

State Management API

VNF code libVNF API

25

slide-63
SLIDE 63

State Management API

VNF code libVNF API Local data store pool

25

slide-64
SLIDE 64

State Management API

VNF code libVNF API Local data store pool setData( ) LOCAL Store in local datastore

25

slide-65
SLIDE 65

State Management API

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

slide-66
SLIDE 66

State Management API

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

slide-67
SLIDE 67

Evaluation

  • Overhead of libVNF
  • Scalability with cores
  • Benefits of libVNF

26

slide-68
SLIDE 68

Setup

27

A B C

1 2 3 4

slide-69
SLIDE 69

Setup

27

VNF A VNF C S/W switch (on kernel) A B C

1 2 3 4

slide-70
SLIDE 70

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

slide-71
SLIDE 71

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

slide-72
SLIDE 72

Evaluation

  • Overhead of libVNF
  • Scalability with cores
  • Benefits of libVNF

28

slide-73
SLIDE 73

Overhead check

29

slide-74
SLIDE 74

Overhead check

29

<5% overhead of libVNF DPDK~ netmap performance

slide-75
SLIDE 75

Evaluation

  • Overhead of libVNF
  • Scalability with cores
  • Benefits of libVNF

30

slide-76
SLIDE 76

Core scalability

31

slide-77
SLIDE 77

Core scalability

31

scales linearly with cores

slide-78
SLIDE 78

Evaluation

  • Overhead of libVNF
  • Scalability with cores
  • Benefits of libVNF

32

slide-79
SLIDE 79

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

slide-80
SLIDE 80

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

slide-81
SLIDE 81

Summary

  • Library to ease building of VNFs
  • Expressive to build L3 and App-layer VNF
  • Supports multiple network stacks
  • Low performance overhead

34

https://github.com/networkedsystemsIITB/libVNF ppnaik@cse.iitb.ac.in

slide-82
SLIDE 82

35

Thank You

slide-83
SLIDE 83

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

slide-84
SLIDE 84

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