NOSIX: A Lightweight Portability Layer for the SDN OS

By: 
M. Raju, A. Wundsam, M. Yu
Appears in: 
CCR April 2014

In spite of the standardization of the OpenFlow API, it is very difficult to write an SDN controller application that is portable (i.e., guarantees correct packet processing over a wide range of switches) and achieves good performance (i.e., fully leverages switch capabilities). This is because the switch landscape is fundamentally diverse in performance, feature set and supported APIs. We propose to address this challenge via a lightweight portability layer that acts as a rendezvous point between the requirements of controller application and the vendor knowledge of switch implementations. Above, applications specify rules in virtual flow tables annotated with semantic intents and expectations. Below, vendor specific drivers map them to optimized switch-specific rule sets. NOSIX represents a first step towards achieving both portability and good performance across a diverse set of switches.

Public Review By: 
Hitesh Ballani

OpenFlow is the prevalent API to the data plane in software-defined networks (SDNs). Despite OpenFlow evolution, there remains a significant gap between the API and actual capabilities of switches. Consequently, it is hard to write high-performant, platform-independent programs for SDNs. While recent proposals like ONIX and Frenetic propose abstractions for SDN programs that can then be compiled into OpenFlow messages, this paper takes a different tact - it proposes a portability layer called NOSIX. The basic idea is that control applications are written as a pipeline of “Virtual Flow Tables” that are transformed by vendor supplied drivers into switch configuration. Programmers can provide optional metadata as hints about the intended use of virtual tables to aid the translation from the virtual to physical pipeline. The paper uses two strawman examples to illustrate the benefits of NOSIX having some application knowledge and understanding switch design. Apart from SDNs being in vogue, the reviewers (all with extensive OpenFlow experience) agreed that the mismatch between idealized OpenFlow-style programming and hardware realities needs to be addressed. As with any short paper, many important details remain to be worked out. In particular, rather than a concrete single API, this paper proposes a new point in the design space for controller-switch programming. This is expected to foster discussion to better address the limitations that real-world SDN engineers face, especially when programming currently available hardware with all its quirks and limitations. When fleshed out, NOSIX could be a compelling design point in the rapidly evolving SDN space.