4. NSDB NSDB
NSDB
Open vSwitch Datapath
IF IF
Interfaces 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
5. Midolman (MidoNet agent)
NSDB NSDB
NSDB
Open vSwitch Datapath
IF IF
Interfaces on the host
IF
VM VM VM Midolman
(MidoNet
agent)
Network
Flow Table
Watch/modify
Add/remove flows
Host
Cache
+
local state
Store virtual
topology
information
Nova compute
7. Foundations
• Java and Scala
• Java 8 migration is coming
• Guava and Guice
• Akka Actor
• Future and RxJava
• Jackson → Protocol Buffer
• Disruptor
8. Upcall Lifecycle
1. 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
31. 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