  Recent years have seen an evolution of SDN control plane architectures,
starting from simple monolithic controllers, over modular monolithic
controllers, to distributed controllers. We observe, however, that today's
distributed controllers still exhibit inflexibility with respect to the
distribution of control logic. Therefore, we propose a novel architecture of a
distributed SDN controller in this paper, providing maximum flexibility with
respect to distribution.
  Our architecture splits control logic into light-weight control modules,
called controllets, based on a micro-kernel approach, reducing common
controllet functionality to a bare minimum and factoring out all higher-level
functionality. Light-weight controllets also allow for pushing control logic
onto switches to minimize latency and communication overhead. Controllets are
interconnected through a message bus supporting the publish/subscribe
communication paradigm with specific extensions for content-based OpenFlow
message filtering. Publish/subscribe allows for complete decoupling of
controllets to further facilitate control plane distribution.
