A potential problem in computer networks is the existence of loops, which are cyclical paths through the network’s switches that can cause some packets to never leave the network. We present a dynamic algorithm built on the Header Space Analysis of Kazemian et. al. [1] which allows the detection of loops in software defined networks — such as ones created using OpenFlow [3]— over a sequence of rule insertions and deletions on the network’s switches. A key ingredient in our algorithm is a dynamic strongly connected component algorithm by Roddity and Zwick [5]. After a polynomial time pre-processing stage on the network description, our algorithm detects if the insertion or removal of a particular rule in a software defined network will cause some collection of headers to loop in the network. We present a theoretical and experimental analysis of our algorithm, and conclude that in densely connected networks (i.e. much more highly connected than in practice), it can detect negative network behaviour while sustaining a reasonable amount of rule insertions per second, as long as the rule insertions are batched.
[1]
Robert E. Tarjan,et al.
Depth-First Search and Linear Graph Algorithms
,
1972,
SIAM J. Comput..
[2]
Jan van Leeuwen,et al.
Worst-case Analysis of Set Union Algorithms
,
1984,
JACM.
[3]
Robert E. Tarjan,et al.
Fast Algorithms for Finding Nearest Common Ancestors
,
1984,
SIAM J. Comput..
[4]
Daniele Frigioni,et al.
An Experimental Study of Dynamic Algorithms for Transitive Closure
,
2001,
JEAL.
[5]
Liam Roditty,et al.
A faster and simpler fully dynamic transitive closure
,
2003,
SODA '03.
[6]
Uri Zwick,et al.
A fully dynamic reachability algorithm for directed graphs with an almost linear update time
,
2004,
STOC '04.
[7]
George Varghese,et al.
Header Space Analysis: Static Checking for Networks
,
2012,
NSDI.