Using DPDK with Go

[Pages:25]Technology Consulting Company Research, Development & Global Standard

Using DPDK with Go

Takanari Hayama taki@igel.co.jp

Technology Consulting Company IGEL Co.,Ltd.

1

BACKGROUND

2017/9/26,27

DPDK Summit Userspace 2017

2

Background

? Lagopus ()

? Open Source OpenFlow 1.3 Software Switch ? DPDK or Raw Socket ?C

? Lagopus2 ()

? OpenSource Software Router (VLAN, IPsec, Match-Action) ? DPDK Only ? Go + C

2017/9/26,27

DPDK Summit Userspace 2017

3

Goals of Lagopus2

? Performance ? Maintainability + Extensibility

2017/9/26,27

DPDK Summit Userspace 2017

4

Goals of Lagopus2

? Performance DPDK + C ? Maintainability + Extensibility Go

2017/9/26,27

DPDK Summit Userspace 2017

5

What is Go?

Open Source Programming Language ? Simple ? Strong Type System ? Statically Typed with Flexibility ? Concurrency ? Garbage Collection ? Compiled Language ? Can use C Library via CGo

2017/9/26,27

DPDK Summit Userspace 2017

6

Go vs C

Complexity Performance Key-Value Data Type Concurrency Memory Management Compiled Language Build System

Go Simple by Design Moderate Yes (Map) Yes (channel and go func) Yes (Garbage Collection) Yes Built-in

C Can Become Complex Very Fast No (requires other library) No (requires other tools) No Yes Your Choice

2017/9/26,27

DPDK Summit Userspace 2017

7

Performance

Goal ? Data Plane shall run fast ? Control Plane can be slow ? Control Plane shall not disturb Data Plane

Design ? Use C + DPDK directly where we need performance ? Let C to focus on packet processing ? Complicated tasks to be offloaded to Go ? Use DPDK Ring for communication between C and Go codes ? Make lock-free where possible

2017/9/26,27

DPDK Summit Userspace 2017

8

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download