Top Banner
midonet deep dive Taku Fukushima
32

Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Jul 19, 2015

Download

Technology

MidoNet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

midonet deep dive

Taku Fukushima

Page 2: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Agenda1. MidoNet components (revisited)

2. Midolman deep dive

3. Getting started with coding

4. Wrap-up

Page 3: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidoNet components

Page 4: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

NSDB NSDB

NSDB

Open vSwitch Datapath

IF IFInterfaces on the host

IF

VM VM VM Midolman(MidoNet

agent)

Network

Flow Table

MidoNet APINova API

Horizon MidoNet CLI

Watch/modify

Add/remove flows

Neutron API

MidoNet Plugin

Host

Cache+

local state

Store virtual topology

information

Clients / Users

Nova compute

Page 5: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Midolman (MidoNet agent)

NSDB NSDB

NSDB

Open vSwitch Datapath

IF IFInterfaces on the host

IF

VM VM VM Midolman(MidoNet

agent)

Network

Flow Table

MidoNet APINova API

Horizon MidoNet CLI

Watch/modify

Add/remove flows

Neutron API

MidoNet Plugin

Host

Cache+

local state

Store virtual topology

information

Clients / Users

Nova compute

Page 6: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Midolman deep dive

Page 7: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Foundations• Java and Scala

• Java 8 migration is coming

• Guava and Guice

• Akka Actor

• Future and RxJava

• Jackson → Protocol Buffer

• Disruptor

Page 8: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Upcall Lifecycle1. Input stage

• Get upcalls with packets from the datapath

2. Packet processing stage

1. Deduplicate and queue packets

2. Simulate packets on the virtual topology

3. Deal with the wildcard flows

4. Determine the egress physical port

3. Output stage

• Emit packets and install flows based on the sims

Page 9: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Module diagrams

Page 10: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

Midolman.java

Page 11: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

1. Input stage

Select Loop

Page 12: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

2. Packet processing stage

PacketContext

PacketContextPacketContextPacketContext

PacketContext

PacketContext

Routing by hashing with FlowKey

Page 13: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

2. Packet processing stage

Retrieve virtual resources

Virtual Resource

Virtual Resource

Virtual Resource

Future • Completed • NotYetException

Page 14: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

2. Packet processing stage

Manage virtual to local and physical mapping• Interface name to UUID • UUID to local port number • Which host has the interface • …

Page 15: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

2. Packet processing stage

PacketContextPacketContextPacketContext

PacketContext

PacketContext

PacketContext

Simulation

Page 16: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

2. Packet processing stage

Local datapath management

• Create local datapath ports • Track UUID to port # mapping • Manage overlay tunnels

PacketContext

Page 17: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

2. Packet processing stage

Flow

Flow

Flow

Flow

Query statistics

Invalidate flows

PacketContext

Page 18: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

MidolmanActorsService

Datapath Controller

Flow Controller

PacketsEntryPoint

RoutingManagerActor

DatapathReady

VirtualTopologyActor

VirtualToPhysicalMapper

HealthMonitor

NetlinkCallbackDispatcher

MtuIncreaser

DeduplicationActor

PacketWorkflow

UpcallDatapathConnectionManager

NSDB NSDB

NSDB

One-to-ManyOne-to-One

HTB

DisruptorRing Buffer

Supended Packets

WaitingRoom

(NetlinkInputChannel)

NetlinkChannel

(NetlinkOutputChannel)

DatapathChannel

Fast Path

State Management

Open vSwitch Datapath

Flow Table

Open vSwitch Datapath

Flow Table

DatapathReady

WildcardFlow

Upcall

Flow Invalidationby Tag

Packet

Virtual TopologyState data / Messages

Packet

Flow

Wildcard Flows

DatapathReady

Datapath portoperations

FlowManagement

3. Output stage

Select Loop

Page 19: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura
Page 20: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

https://github.com/midonet/midonet/blob/master/docs/

“Read the docs.”

Page 21: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Getting started with coding

Page 22: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Prerequisites• JDK7

• JDK8 is coming

• protoc (Protocol Buffer >= 2.6.0)

!

• build-essential (for packaging deb packages)

• rpm (for packaging RPM packages)

• fpm (for packaging)

Page 23: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Dev environment (recommended)• JDK 7 (required)

• JDK8 is coming

• Protocol Buffers >= 2.6.0 (required)

• IntelliJ IDEA 14 community edition (OSS!) (optional)

• Scala plugin + protoc plugin

• Nice displays and keyboards

Page 24: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Building MidoNet

Page 25: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Building IDEA project

and modules

Page 26: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Importing MidoNet project

Page 27: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura
Page 28: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura
Page 29: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura
Page 30: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Wrap-up

Page 31: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

Midolman deep dive• Upcall lifecycle

1. Input stage

2. Packet processing stage

3. Output stage

• Fast path and state management

• Read the docs

• Getting started with coding

Page 32: Technical Deep Dive into MidoNet - Taku Fukushima, Developer at Midokura

The end of slides. Any Questions?