\subsection{Properties of the SDN Ecosystem}
Software-Defined Networking separates the network control logic from the switches and centralizes it, therefore failure of the controller or controller services significantly impacts the network.  
%
Figure~\ref{f:generic_controller} illustrates the layers in a canonical SDN control platform. We note that in platforms such as NoX~\cite{nox:hotnets09} and \floodlight~\cite{floodlight}, failures of any component in the stack renders the control plane unavailable.  Perhaps surprisingly, in a \floodlight deployment, Figure~\ref{f:floodlight_deployment}, an un-handled exception in one application will result in the failure of other applications and the controller itself.  Similarly, a segment-fault in a NoX controller application takes down both the controller and application.  The applications have a disastrous effect on the entire platform because of a lack of isolation.  Unsurprisingly, the failure of either the server, O.S, or controller platform will also render the control plane unavailable.

\begin{figure}[h]
\begin{minipage}[t]{0.2\textwidth}
\begin{center}
	\includegraphics[height=.9in]{figs/ModelControllerStack.eps}
	\caption{Generic Controller Stack}
	\label{f:generic_controller}
\end{center}
\end{minipage}
\begin{minipage}[t]{0.2\textwidth}
\begin{center}
	\includegraphics[height=.9in]{figs/FloodLightStack.eps}
	\captionof{figure}{FloodLight Stack	}
\label{f:floodlight_deployment}
\end{center}
\end{minipage}
\end{figure}

While certain companies, such as BigSwitch~\cite{bigswitch}, aim to provide this entire stack a single vertical-monolithic bundle, most of the popular controller platforms are released as open-source software precisely to decouple the stack and to promote the creation a rich ecosystem of third-party applications. For example, \floodlight~\cite{floodlight}, a Java controller platform released by BigSwitch, boasts a large array of applications ranging from performance enhancing~\cite{routeflow:hotsdn12,flowscal,stratos}, to security enforcement~\cite{stratos,varmour}.  In Table~\ref{t:floodlightapps}, we present a small list of \floodlight applications, their purpose, and indicate whether they are third-party applications or applications developed by the developers of the controller.


This table reinforces the notion that the SDN ecosystem embodies an a la carte system, where-in different portions of the stack are developed by different entities. Furthermore, we expect the diversity at each layer to only increase as \SDN grows in popularity. In fact, movements such as the OpenDayLight Consortium~\cite{opendaylight} and the SDN-hackathons hosted by SDN-Hub are already promoting this diversity.

\theo{there's a point missing above --- need to discuss bugs in opensource or third party application}

Unfortunately, given the novelty of these applications, many lack public support forums or a public facing bug tracker.  Luckily, we were able to find a public bug-track for FlowScale~\cite{flowscale_bugs}. Upon examination of this bug-tracker, we discovered that 16\% of the reported bugs resulted in catastrophic exceptions. Furthermore, careful analysis showed that even now, at the submission of this paper, one of these bugs remains unclosed.  While these numbers do not generalize to other \SDN applications, we note that extensive studies on software engineering practice show that bugs are prevalent in most application and even worst most bugs in production quality code do not have fixes~\cite{}.


\begin{table}[h]
	\begin{center}
	\begin{tabular}{|c|c|c|}
		\hline
		Application &  Developer  & Purpose\\ \hline
		RouteFlow~\cite{routeflow:hotsdn12} &  Third-Party & Routing \\  \hline
		FlowScale~\cite{flowscale} &  Third-Party& Traffic Engineering \\ \hline
		BigTap~\cite{bigtap} & BigSwitch & Security \\ \hline
%		Defense4All~\cite{} & Third-party & Security \\
%SDSec & Third-party & Security \\
		Stratos~\cite{stratos} & Third-party & Cloud Provisioning \\ \hline
	\end{tabular}
	\caption{Survey of Popular SDN Applications}
\label{t:floodlightapps}
\end{center}
\end{table}

\theo{do we need more apps in this table? can we find more?}


\comments{
\begin{table*}[h]

	\begin{tabular}{cccc}
		Application & Controller Platform & Developer  & Purpose\\
		RouteFlow & POX, Floodlight, RYU & Third-Party & Traffic Engineering \\
		FortNox & NoX & Third-Party & Security (Middleboxes) \\
		FlowScale & Beacon & Third-Party& Traffic Engineering \\
		CloudNaaS & NoX & Third-Party & Cloud Provisioning \\
		SNAC & NoX & Third-Party & Enterprise Provisioning \\
		BigTap & Floodlight & Vertical & Security \\
		&Floodlight, OpenDayLight & Third-party & Security \\
		VTN & OpenDayLight & Third-party & Cloud Provisioning \\
	\end{tabular}
	\caption{Survey of Popular SDN Applications}

\end{table*}
}
