Tuesday, December 10, 2013

CoNEXT'13: Optimizing the “One Big Switch” Abstraction in Software-Defined Networks

Presenter: Nanxi Kang
Co-authors: Zhenming Liu, Jennifer Rexford, and David Walker

Many controller platforms today force applications to manage the network at the level of individual switches by representing a high-level policy in terms of the rules installed in each switch. Instead, this work argues that SDN application programmers should define high-level policies and have the controller platform manage the placement of rules on switches.

The main challenge is ensuring rule space constraints (i.e., switches today can only have a few thousand rules in the TCAM) are respected while implementing application specific end-end policies. The main contribution of the paper is an efficient rule placement algorithm, that takes as input the topology of the network, end-end policies and routing policies, and outputs an efficient distribution of rules across all the switches. They argue that as compared to prior work e.g., Niciria, DIFANE their rule placement algorithm takes as input both the end-end policy and routing policy. As compared to Palette, it produces a more efficient distribution of rules across all the switches.

In their evaluations, they use complexity bounds and real and synthetic policies, and evaluate their algorithm in terms of (i) rule-space overhead, (ii) running time, and (iii) resources consumed by unwanted traffic. They show the overhead in installing rules is low, most unwanted traffic is dropped at the edge and computation overhead of the algorithm is really small (at most 8s for tested cases).

Q: Why are you trying to minimize the number of rules in a switch? Does it matter if the number of rules in each switch is close to its capacity?
A: We are considering cases where the network is dense and rules space is constrained.

Q: You are using linear programming for rule allocation, how does this LP scale?

A: We use the observation that our rule-space allocation depends primarily on the total amount of space allocated to a path, rather than the portion of that space allocated to each switch.