I. Introduction
In recent years, data centers have become the cornerstones of modern computing infrastructure. Many distributed processing applications (e.g., search, social collaboration, highperformance computing) are routinely run in large-scale data centers that contain upwards of 100,000 servers. Because of the inherently distributed nature of computation, the network fabric that connects these different servers becomes critical in determining the performance of these applications, which translates to user satisfaction and ultimately money for the data center operator.