34. 34
Design
Loose coupled modular-based design
(like a microservice architecture)
Unified configuration datastore
Configuration defined by yang
Pub/Sub-like APIs, config datastore as a
broker
Using existing routing agents
Slightly modified for APIs
High performance/extensibility dataplane
Fast path written in C + DPDK
Slow path written in go
Lagopus Router
Routing agent VRRP agent IKE agent MAT agent
Dataplane
Dataplane framework
Network
Interface
L2
(Bridging)
L3
(Routing)
IPsec
(crypto)
Config datastore
SDN controller/Orchestrator CLI
gRPC
gRPC or NETLINK
35. 35
Architecture of a dataplane module
Written in C + golang
Packet Processing
Written in C with DPDK for the performance
Module managing and Handle control packets
Written in golang
Subscribe configuration from the config datastore
Protocol handling, likely ARP, ICMP, BGP with router agens.
More details
Takanari Hayama, Using DPDK with Go, 2016 Dublin DPDK userspace
https://dpdksummit.com/Archive/pdf/2017Userspace/DPDK-Userspace2017-Day2-
11-using_dpdk_with_go.pdf
Modules that require
performance
Control in Go
Packet Processing
in C
Input
Ring
Ring Ring
References
to Output
Rings
36. 36
Config Datastore
Openconfigd
https://github.com/coreswitch/openconfigd
Commit & Rollback support configuration
system in Zebra2.0
Configuration is defined by YANG model
Automatically generates APIs
gRPC
CLI with completion/show/config
Show/Config
/Completion
Routing agentRouting agent
Router agent
gRPC
OpenConfigd
YangAuto generate
DBAPIs
CLIOrchestrator
Subscrive config subtree
with two-phase commit
Commits
/Results