84
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 11 th October, 2018

libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Embed Size (px)

Citation preview

Page 1: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF: building VNFs made easyPriyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru

Dept. of Computer Science and EngineeringIndian Institute of Technology, Bombay

SoCC’18 11th October, 2018

Page 2: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 3: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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?

�3NFV: Network Function Virtualization VNF: Virtual Network Function

Orchestrator

Page 4: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

How to build VNF?

VNF code developed by VNF developer

�4

Page 5: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 6: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 7: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

How to build VNF?

VNF Processing logic

VNF Frameworknetbricks

OpenNF VPP

StatelessNF

�4

Page 8: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

How to build VNF?

VNF Processing logic

VNF Frameworknetbricks

OpenNF VPP

StatelessNF

�4

What is missing in these frameworks?

Page 9: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 10: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 11: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 3 VNFs

Network address translator

Layer 3 Load balancer

�7

Page 12: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 3 VNFs

N/W layer

Data link layer

Header manipulations

Network address translator

Layer 3 Load balancer

�7

Page 13: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 3 VNFs

N/W layer

Data link layer

Header manipulations

Network address translator

Layer 3 Load balancer

Frameworks: netbricks, YANFF

�7

Page 14: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 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

Page 15: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 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

Page 16: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 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

�7Netbricks: 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

Page 17: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for L3 and transport VNFsLayer 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

�7Netbricks: 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?

Page 18: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Event driven I/O

�8

Existing transport-layer frameworks are event-driven

Page 19: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Event driven I/O

Pros:

�8

Existing transport-layer frameworks are event-driven

Page 20: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Event driven I/O

Pros:

● Efficient for multi-core scalability

�8

Existing transport-layer frameworks are event-driven

Page 21: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Event driven I/O

Pros:

● Efficient for multi-core scalability

�8

Existing transport-layer frameworks are event-driven

Page 22: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Event driven I/O

Pros:

● Efficient for multi-core scalability

Cons:

�8

Existing transport-layer frameworks are event-driven

Page 23: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Event driven I/O

Pros:

● Efficient for multi-core scalability

Cons:

● Needs explicit request state storage

�8

Existing transport-layer frameworks are event-driven

Page 24: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Need to maintain request state

A B C1 2

34

�9

Page 25: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Need to maintain request state

State at B to process A’s request

A B C1 2

34

A’s request

C’s reply

Connection identifiers

�9

Page 26: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 C1 2

34

A’s request

C’s reply

Connection identifiers

�9

Page 27: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 C1 2

34

A’s request

C’s reply

Connection identifiers

�9

Existing frameworks do not provide this support

Page 28: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 29: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Flexibility of network stack

vNIC

Kernel network stack

Application VNF

Kernel Stack

�11

Page 30: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Flexibility of network stack

vNIC

DPDK/netmap

Application VNF + userspace stack

vNIC

Kernel network stack

Application VNF

Kernel Stack Kernel Bypass Stack

�11

Page 31: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 32: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 33: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for distributed state management

VM

VNF 1

VM

VNF 2

VM

VNF 2

VM

VNF 3

Hypervisor

Orchestrator

�13

Page 34: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for distributed state management

VNF 2

VNF 2

�13

State Synchronization

Page 35: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for distributed state management

VNF 2

VNF 2

State Migration openNF, split/merge

�13

State Synchronization

Page 36: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for distributed state management

VNF 2

VNF 2

State Migration openNF, split/merge

Data StoreRemote 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

Page 37: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Support for distributed state management

VNF 2

VNF 2

State Migration openNF, split/merge

Data StoreRemote 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

Page 38: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Summary of VNF FrameworksRequirement/

Framework netbricks Flick StatelessNF Split-Merge/

OpenNFlibVNF

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

Page 39: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 40: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF overviewVNF code

libVNF APIAPI Calls

�16

Page 41: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF overview

mTCP+ netmap/DPDK initialization

Kernel stack initialization

VNF code

libVNF APIAPI Calls

Stack initialization

�16

Page 42: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF overview

mTCP+ netmap/DPDK initialization

Kernel stack initialization

VNF code

libVNF APIAPI Calls

Stack initialization

�16

Per-core threads

Page 43: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF overview

mTCP+ netmap/DPDK initialization

Kernel stack initialization

VNF code

libVNF APIAPI Calls

Per-core data structures

Stack initialization

�16

Per-core threads

● Lock-free ● Cache optimized

Page 44: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF API

Communication State ManagementRequest state

libVNF API

�17

Page 45: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF API

State ManagementRequest state

libVNF API

�18

Page 46: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

libVNF API

State ManagementRequest state

libVNF API

�18

Communication

Page 47: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Communication APIVNF code

libVNF API

Per-core packet pool

Per-core data structures

�19

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

Page 48: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Communication APIVNF code

libVNF APIregisterCallback(socket, fn)

Per-core packet pool

Per-core data structures

Store mapping

�19

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

Page 49: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Communication APIVNF code

libVNF APIregisterCallback(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)

Page 50: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Communication APIVNF code

libVNF API

Per-core packet pool

Per-core data structures

getPktBuf

�19

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

Page 51: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Communication APIVNF 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)

Page 52: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

VNF Design Requirements

Communication State Management

libVNF API

�20

Page 53: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

VNF Design Requirements

Communication State Management

libVNF API

�20

Request state

Page 54: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

(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 C1 2

34

A’s request

C’s reply

Connection identifiers

�21

Page 55: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

(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 C1 2

34

A’s request

C’s reply

Connection identifiers

�22

Request object

Page 56: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Request Object API

A B C1 2

34

libVNF API

Per-core request pool

�23

Page 57: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Request Object API

A B C1 2

34

libVNF API

Per-core request pool

allocReqObj(A connection_id)

Allocate request object block for A’s

request

�23

A’s request

C’s reply

Connection identifiers

Page 58: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Request Object API

A B C1 2

34

libVNF API

Per-core request pool

allocReqObj(A connection_id)

Allocate request object block for A’s

request

�23

A’s request

C’s reply

Connection identifiers

Per-core packet pool

Page 59: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Request Object API

A B C1 2

34

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

Page 60: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

VNF Design Requirements

Communication Request state

libVNF API

�24

Page 61: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

VNF Design Requirements

Communication Request state

libVNF API

�24

State Management

Page 62: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

State Management APIVNF code

libVNF API

�25

Page 63: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

State Management APIVNF code

libVNF API

Local data store pool

�25

Page 64: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

State Management APIVNF code

libVNF API

Local data store pool

setData( )LOCAL

Store in local datastore

�25

Page 65: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

State Management APIVNF code

libVNF API

Local data store pool

libVNF data store wrapper

Redis KV storeRemote Data store

setData( )LOCAL

Store in local datastore

�25

Page 66: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

State Management APIVNF code

libVNF API

Local data store pool

libVNF data store wrapper

Redis KV storeRemote Data store

setData( )REMOTE

Cache locally

Store in remote data store

�25

Page 67: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Evaluation

● Overhead of libVNF

● Scalability with cores

● Benefits of libVNF

�26

Page 68: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Setup

�27

A B C1 2

34

Page 69: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Setup

�27

VNF A VNF C

S/W switch (on kernel)

A B C1 2

34

Page 70: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 C1 2

34

Page 71: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 C1 2

34

VNF A, C: 4 core, 4GB RAM VNF B: 4 GB RAM, cores varied

Page 72: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Evaluation

● Overhead of libVNF

● Scalability with cores

● Benefits of libVNF

�28

Page 73: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Overhead check

�29

Page 74: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Overhead check

�29

<5% overhead of libVNF DPDK~ netmap performance

Page 75: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Evaluation

● Overhead of libVNF

● Scalability with cores

● Benefits of libVNF

�30

Page 76: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Core scalability

�31

Page 77: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Core scalability

�31scales linearly with cores

Page 78: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

Evaluation

● Overhead of libVNF

● Scalability with cores

● Benefits of libVNF

�32

Page 79: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 80: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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

Page 81: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 [email protected]

Page 82: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

�35

Thank You

Page 83: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 C1 2

34

Page 84: libVNF: building VNFs made easy - acmsocc.github.io · libVNF: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering

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 C1 2

34

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