  Software Defined Networks offer flexible and intelligent network operations
by splitting a traditional network into a centralized control plane and a
programmable data plane. The intelligent control plane is responsible for
providing flow paths to switches and optimizes network performance. The
controller in the control plane is the fundamental element used for all
operations of data plane management. Hence, the performance and capabilities of
the controller itself are extremely important. Furthermore, the tools used to
benchmark their performance must be accurate and effective in measuring
different evaluation parameters. There are dozens of controller proposals
available in existing literature. However, there is no quantitative comparative
analysis for them. In this article, we present a comprehensive qualitative
comparison of different SDN controllers, along with a quantitative analysis of
their performance in different network scenarios. More specifically, we
categorize and classify 34 controllers based on their capabilities, and present
a qualitative comparison of their properties. We also discuss in-depth
capabilities of benchmarking tools used for SDN controllers, along with best
practices for quantitative controller evaluation. This work uses three
benchmarking tools to compare nine controllers against multiple criteria.
Finally, we discuss detailed research findings on the performance, benchmarking
criteria, and evaluation testbeds for SDN controllers.
